Bài giảng Nhập môn công nghệ phần mềm - Chương 1: Tổng quan về công nghệ phần mềm
1. Khoa học, kỹthuật, công nghệ
2. Phần mềm
a. Phần mềm tốt
b. Phần mềm đủhay thiếu và nguyên
nhân
c. Tiến hóa của phần mềm
d. Các loại phần mềm
3.Công nghệphần mềm (SE)
Cấu trúc ES Hệ ES 14/9/2009 10 Hệ ES Công nghệ phần mềm – định nghĩa Bauer [1969]: SE là việc thiết lập và sử dụng các nguyên lý công nghệ đúng đắn để thu được phần mềm 1 cách kinh tế vừa tin cậy vừa làm việc hiệu quả trên các máy thực. Parnas [1987]: SE là việc xây dựng phần mềm nhiều phiên bản bởi nhiều người. Sommerville [1995]: SE là một nguyên lý kỹ nghệ liên quan đến tất cả các mặt (lý thuyết, phương pháp và công cụ) của sản phần mềm Công nghệ phần mềm – định nghĩa IEEE [1993]: 1. Việc áp dụng phương pháp tiếp cận có hệ thống, bài bản và được lượng hóa trong phát triển, vận hành và bảo trì phần mềm; 2. Nghiên cứu các phương pháp tiếp cận được dùng trong (1) Pressman [1995]: SE là bộ môn tích hợp cả qui trình, các phương pháp, các công cụ để phát triển phần mềm máy tính Công nghệ phần mềm – định nghĩa Là một quá trình kỹ nghệ gồm ba mặt: Thủ tục (procedures) Phương pháp (methods) Công cụ (tools) Nhằm tạo ra phần mềm hiệu quả,với các giới hạn cho trước 14/9/2009 11 Khái niệm Thủ tục Xác định trình tự thực hiện các công việc Xác định các tài liệu, sản phẩm cần bàn giao và cách thức thực hiện Định các mốc thời gian (millestones) và sản phẩm bàn giao Khái niệm Phương pháp Cách làm cụ thể để xây dựng phần mềm Mỗi công đoạn làm phần mềm có các phương pháp riêng Phương pháp phân tích Phương pháp thiết kế Phương pháp lập trình Phương pháp kiểm thử Khái niệm Công cụ Cung cấp sự trợ giúp tự động / bán tự động cho từng phương pháp Computer Aided Software Engineering –CASE- các công cụ phần mềm được chuẩn hóa để trợ giúp các công đoạn khác nhau trong quá trình phát triển Compiler, debugger Hỗ trợ phân tích, thiết kế (Rwin,Modeler, Oracle Designer, Rational Rose,...) Cụ thể Efficiency: Phần mềm được sản xuất trong thời gian và điều kiện vừa phải. Phần mềm vận hành đúng mức độ yêu cầu về công việc và thời gian. Reliablity: Phần mềm vận hành ổn định và tương tác được với các hệ thống ứng dụng Usability: Phần mềm có thể dùng được bởi người sử dụng và với môi trường mà người sử dụng đang có. Chú ý tới giao diện, điều kiện hệ thống,… 14/9/2009 12 Cụ thể Modifiability: Phần mềm có thể được thay đổi dể dàng, nhanh chóng khi yêu cầu của người sử dụng thay đổi. Portability: Phần mềm có thể chuyển đổi dễ dàng sang các hệ thống khác mà không cần phải điều chỉnh lớn. Chỉ cần recompile nều cần thiết là tốt nhất. Testability: Phần mềm có thể được kiểm tra dễ dàng. Tốt nhất là được modul hóa. Cụ thể Reusability: Phần mềm hay một phần có thể được tái sử dụng cho các ứng dụng khác. Các modul có thiết kế tốt, độc lập và giao tiến đơn giản, cả về tình tương thích công nghệ phát triển Maintainability: thiết kế của phần mềm có thể được hiểu dễ dàng cũng như chuyển giao thuận tiện cho người khác trong quá trình điều chỉnh, nâng cấp hay thay đổi theo yêu cầu. Cụ thể Interoperability: Phần mềm vận hành ổn định và đúng như mong đợi. Trên hệ thống nhiều người dùng (multi users) phần mềm vẫn hoạt động được với các vận hành khác của hệ thống. Correctness: Phần mềm phải tính toán đúng và tạo ra kết quả đúng và đúng với mục tiêu ứng dụng của người dùng. Các yêu cầu khác: Đúng tiến độ. Sử dụng hợp lý nguồn nhân lực phát triển. Chi phí phát triển thấp nhất Lịch sử phát triển Đề xướng, hình thành (70s) Các phương pháp lập trình và cấu trúc dữ liệu Khái niệm về tính môđun Khái niệm thiết kế,lập trình top-down, chi tiết hóa từng bước (N. With) Lập trình có cấu trúc (Dijkstra) Phương pháp luận về qui trình thiết kế;phương pháp phân chia mô đun Trừu tượng hóa dữ liệu (Liskov 14/9/2009 13 Lịch sử phát triển Tăng trưởng (nửa đầu 80s) Xuất hiện các phương pháp phát triển hệ thống Công nghệ CSDL (mô hình quan hệ) Phân tích, thiết kế hướng cấu trúc Các bộ công cụ phát triển Công cụ trợ giúp phân tích thiết kế Bộ khởi tạo chương trình (biên dịch) Các ngôn ngữ bậc cao (FoxPro, SQL...) Bắt đầu quan tâm đến quản lý làm phần mềm Các độ đo phần mềm Lịch sử phát triển Phát triển (từ giữa 80s) Hoàn thiện công nghệ cấu trúc, ra đời công nghệ đối tượng Nhiều mô hình hướng cấu trúc được chuẩn hóa CASE hoàn thiện, đạt mức tự động hóa cao Công nghệ hướng đối tượng bắt đầu phát triển: Quy trình RUP Ngôn ngữ mô hình hóa thống nhất(UML) Các công cụ phần mềm đầy đủ (ROSE, JBULDER,..) Sử dụng lại chiếm vị trí quan trọng trong phát triển Lịch sử phát triển Phát triển các mô hình quản lý Chuẩn quản lý được công nhận (CMM, SO9000-03) Nhiều mô hình tổ chức làm phần mềm được đề xuất Nhiều công cụ trợ giúp quản lý dự án hoàn thiện II. Quy trình phát triển phần mềm 1. Cách giải quyết vấn đề 2. Một số mô hình 3. Các công đoạn chính 4. Các tiêu chuẩn 14/9/2009 14 Quy trình phát triển phần mềm Quy trình phát triển phần mềm (còn gọi tắt là quy trình phần mềm) là một tập hợp các hành động phải được thực hiện trong quá trình xây dựng một hệ thống phần mềm. Cách giải quyết vấn đề Từ lập trình đi lên Các tri thức liên quan đến lập trình Tri thức về cách hoạt động của công cụ xử lý thông tin (tư duy giải thuật) Tri thức về cách triển khai, giải quyết vấn đề bằng máy tính (tư duy hệ thống) Cách giải quyết vấn đề Các giai đoạn của lập trình 1. Nhận yêu cầu tính toán 2. Tìm hiểu bài toán đặt ra 3. Phát triển giải thuật giải quyết bài toán 4. Chuyển thuật toán thành chương trình máy tính 5. Chạy chương trình để kiểm tra và sửa chữa 6. Thực hiện tính toán và chuyển giao kết quả đến nơi yêu cầu Cách giải quyết vấn đề Vấn đề, giải pháp và giải quyết vấn đề Yêu cầu của khách hàng: Vấn đề hay bài toán Sản phẩm, dịch vụ giải quyết các yêu cầu: Giải pháp. Công nghệ chỉ là công cụ, phương tiện, cần có con người áp dụng để đạt được mục đích 14/9/2009 15 Cách giải quyết vấn đề Để giải quyết vấn đề, giữa khách hàng và người cung cấp phải có các văn bản pháp lý ràng buộc, dưới dạng các dự án và hợp đồng. Dự án là nổ lực giải quyết vấn đề. Phương pháp xác định ra cách tiến hành các nổ lực giải quyết vấn đề Tiến trình là việc thực hiện của phương pháp Cách giải quyết vấn đề Góc nhìn chung về giải quyết vấn đề Cách giải quyết vấn đề Góc nhìn chi tiết về giải quyết vấn đề Các nhân tố 14/9/2009 16 Một số mô hình phát triển phần mềm Mô hình thác nước Mô hình xây dựng tiến triển Công nghệ phần mềm dựa thành phần Mô hình phát triển lặp lại, tăng thêm Mô hình xoắn ốc Mô hình thác nước Mô hình Prototype Công nghệ phần mềm dựa thành phần 14/9/2009 17 Mô hình phát triển lặp lại, tăng thêm Mô hình xoắn ốc Các công đoạn chính tổng quát Giai đoạn đặc tả: xác định các tính năng và điều kiện hoạt động của hệ thống. (thu thập yêu cầu và phân tích) Giai đoạn phát triển: Thiết kế phần mềm (software design), viết code (code generation) Giai đoạn đánh giá: kiểm tra phần mềm (software testing), kiểm tra tính hợp lý của phần mềm. Giai đoạn bảo trì, cải tiến: Sửa lỗi (correction), thay đổi môi trường thực thi (adaptation), tăng cường (enhancement) Đặc tả 14/9/2009 18 Phát triển Thiết kế Viết code Đánh giá phần mềm Kiểm tra Xem xét lại Kiểm thử hệ thống Bảo trì, cải tiến Sửa lỗi Cải tiến Các tiêu chuẩn trong CNPM The capability Maturity Model (CMM) của Software Engineering Institue (SEI) - Đại học Carnegie Mellon: Chú trọng đến tính hệ thống và khả năng quản trị của các công ty phần mềm hơn là một quy trình (process) cụ thể. The process Improvement Paradigm (PIP) của Software Engineering Laboratory (SEL) – NASA’s Goddard Space Flight Center: Tương tự như CMM, chú trọng đến tính hệ thống và những hướng dẫn để tăng cường tính năng của các quá trình quản lý. 14/9/2009 19 Các tiêu chuẩn trong CNPM Các chuẩn khác của Department of Defense MIL – STD 2167A ; MIL-STD 1574A ; MIL- STD 882C The electronic Industries Association (EIA) chuẩn SEB-6-A The European ESPRIT project International Standards Organisation - ISO 9001 United Kingdom MOD 0055 Chuẩn CMM Initial (Level 1) Repeatable (Level 2) Defined (Level 3) Managed (Level 4) Optimized (Level 5) R isk C om petitiveness •Largely Ad-hoc •Phụ thuộc vào cá nhân •Bắt đầu có khả năng quản lý •Quản lý dựa vào kinh nghiệm tương tự •Xác lập các tiêu chuẩn quản lý •Các vấn đề documentation đã xác lập •Có khả năng dự đoán (Predictability) •Các quy trình quản lý và tiêu chuẩn được chi tiết hóa •Continuous Improvement •Các hệ thống quality control và qualify đã được sử dụng hiệu quả III. Nghề nghiệp kỹ sư phần mềm 1. Mục tiêu và những kỹ năng 2. Loại hình công việc Mục tiêu & những kỹ năng Mục tiêu: Sản xuất ra các sản phẩm phần mềm có chất lượng cao và phù hợp với quy trình phát triển chuẩn mực Những kỹ năng cần có: Đinh danh, đánh giá, cài đặt, lựa chọn một phương pháp luận thích hợp và các công cụ CASE Biết lựa chọn ngôn ngữ, phần cứng, phần mềm Quản lý, lập sơ đồ và kiểm soát việc phát triển tiến trình Biết cách kiểm tra chương trình sẽ áp dụng Lựa chọn và sử dụng kỹ thuật bảo trì phần mềm Đánh giá và quyết định khi nào loại bỏ hay nâng cấp 14/9/2009 20 Loại hình công việc Phát triển ứng dụng Lập trình viên Kỹ sư phần mềm (phân tích/thiết kế) Kỹ sư tri thức (KE) Hỗ trợ ứng dụng Chuyên gia ứng dụng Nhà quản trị dữ liệu Nhà quản trị CSDL (DBA) Kỹ sư trí tuệ nhân tạo Nhà tư vấn Loại hình công việc Chuyên gia kỹ thuật Phân tích thông tin Kỹ sư truyền thông Chuyên gia mạng Lập trình viên hệ thống Chuyên gia hỗ trợ phần mềm (SSP) Chuyên viên Chuyên viên bảo mật Kiểm soát viên EDP Chuyên viên đào tạo và huấn luyện Loại hình công việc Chuyên viên phát triển các chuẩn Người viết kỹ thuật Đảm bảo chất lượng (QA) Lập kế hoạch công nghệ Những người khác Hỗ trợ sản phẩm Tiếp thị sản phẩm Chuyên viên người dùng cuối
File đính kèm:
- Bài giảng Nhập môn công nghệ phần mềm - Chương 1 Tổng quan về công nghệ phần mềm.pdf