Đăng ký Đăng nhập

Tài liệu Công nghệ phần mềm

.PDF
263
297
146

Mô tả:

Công nghệ phần mềm (0) Nguyễn Thanh Bình Khoa Công nghệ Thông tin Trường ðại học Bách khoa ðại học ðà Nẵng Mục ñích  Hiểu và nắm ñược      Khái niệm công nghệ phần mềm Các mô hình phát triển phần mềm Các hoạt ñộng phát triển phần mềm Các kỹ thuật và phương pháp cơ bản trong phát triển phần mềm Áp dụng công nghệ phần mềm trong phát triển phần mềm 2 1 Nội dung  Chương 1: Giới thiệu Công nghệ phần mềm  Chương 2: Các mô hình phát triển phần mềm  Chương 3: Phân tích và ñặc tả yêu cầu  Chương 4: Các kỹ thuật ñặc tả  Chương 5: Thiết kế  Chương 6: Lập trình và ngôn ngữ lập trình  Chương 7: Kiểm thử  Chương 8: Quản trị dự án phần mềm 3 Tài liệu tham khảo         Ian Sommerville, Software Engineering, 7th edition, Pearson Education, 2004. M. Gaudel, B. Marre, F. Schlienger, G. Bernot, Précis de génie logiciel, Masson, 2001. Stephen R. Schach, Classical and Object-Oriented Software Engineering, NXB IRWIN, 1996. Ronald Leach, Introduction to Software Engineering, CRC Press, 1999. G. Booch, J. Rumbaugh, I. Jacobson, The Unified Modeling Language User Guide, Addision-Wesley, 1999. Craig Larman, Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, Third Edition, Addision-Wesley, 2004. Glenford J. Myers, The art of software testing, Wiley, 2004. Boris Beizer, Software Testing Techniques, Second Edition. 4 2 Giới thiệu công nghệ phần mềm (1) Nguyễn Thanh Bình Khoa Công nghệ Thông tin Trường ðại học Bách khoa ðại học ðà Nẵng Nội dung Lịch sử phát triển phần mềm và khủng hoảng phần mềm ?  Công nghệ phần mềm  Khái niệm  Mục ñích  Nguyên tắc  Chất lượng phần mềm  Phân loại phần mềm  2 1 Lịch sử phát triển phần mềm  1946, máy tính ñiện tử ra ñời  1950, máy tính ñược thương mại hóa   Phần mềm bắt ñầu ñược phát triển Những năm 1960  những thất bại về phát triển phần mềm • sản phẩm phần mềm phức tạp • nhiều lỗi • tổ chức sản xuất: giá thành, tiến ñộ, ...  Người ta nói ñến “Khủng hoảng phần mềm” 3 Lịch sử phát triển phần mềm  Từ thủ công ñến công nghệ • Chương trình nhỏ • không chuyên nghiệp • 1 người làm • người sử dụng = người phát triển • 1 sản phẩm = mã nguồn • tiến trình phát triển ñơn giản 1968, • Dự án lớn • chuyên nghiệp • nhiều người làm • khách hàng & nhà cung cấp • nhiều sản phẩm • tiến trình phát triển phức tạp hội thảo khoa học ñầu tiên về “Công nghệ phần mềm” 4 2 Khủng hoảng phần mềm  Về mặt sản phẩm  chất lượng sản phẩm phần mềm • • • • • không ñáp ứng yêu cầu thực tế khó sử dụng không tin cậy khó bảo trì khách hàng không hài lòng 5 Khủng hoảng phần mềm  Về mặt quản lý  Kế hoạch • không ñánh giá ñúng giá thành • không ñúng tiến ñộ • chi phí phát triển / chi phí bảo trì  Về mặt pháp lý  Nhân lực • hợp ñồng không rỏ ràng, không chặt chẽ • ñào tạo • giao tiếp   Thiếu tiêu chuẩn ñánh giá sản phẩm Thiếu quy trình quản lý 6 3 Khủng hoảng phần mềm  ðiều tra của General Acounting Office (1982) trên nhiều sự án với tổng vốn ñầu tư $68.000.000      Không giao sản phẩm: 29% Không ñược sử dụng: 47% Bỏ cuộc: 19% ðược sử dụng sau khi ñã chỉnh sửa: 3% Tốt: 2% 7 Khủng hoảng phần mềm 8 4 Công nghệ phần mềm Khái niệm  Công nghệ phần mềm  nghiên cứu và phát triển các phương pháp, kĩ thuật và công cụ nhằm xây dựng các phần mềm một cách kinh tế, có ñộ tin cậy cao và hoạt ñộng hiệu quả  thiết kế, xây dựng, và bảo trì các phần mềm phc tp, bn vng và cht lưng 9 Công nghệ phần mềm Mục ñích  Mục ñích  áp dụng thực tế • • • •  các kiến thức khoa học, các nguyên tắc kinh tế, các nguyên tắc quản lí, các kỹ thuật và công cụ thích hợp ñể sản xuất và bảo trì các phần mềm nhằm bảo ñảm 4 yêu cầu (FQCD): • phần mềm tạo ra phải ñáp ứng ñược yêu cầu người sử dụng • phần mềm phải ñạt ñược các tiêu chuẩn về chất lượng • giá thành phải nằm trong giới hạn ñặt ra • tiến ñộ xây dựng phần mềm phải ñảm bảo 10 5 Công nghệ phần mềm Nguyên tắc  Các nguyên tắc cơ bản        Chặt chẽ (rigor and formality) Chia nhỏ (separation of concerns) Mô-ñun hóa (modularity) Trừu tượng (abstraction) Phòng ngừa sự thay ñổi (anticipation of change) Tổng quát hóa (generality) Giải quyết từng bước (incrementality) 11 Công nghệ phần mềm Nguyên tắc  Chặt chẽ (rigor and formality)  sử dụng mô hình lý thuyết và toán học  áp dụng cho tất cả các bước, tất cả các sản phẩm  Ví dụ • “chọn z là giá trị lớn nhất của x và y” • z = max(x, y) 12 6 Công nghệ phần mềm Nguyên tắc  Chia nhỏ (separation of concerns)  Làm chủ ñộ phức tạp • chỉ tập trung một lĩnh vực cùng một lúc  Chia vấn ñề thành các phần nhỏ hơn • Giải quyết một phần nhỏ sẽ ñơn giản hơn • “chia ñể trị” (divide and conquer)  Có thể chia nhỏ theo • thời gian: lập kế hoạch • khái niệm: giao diện / thuật toán • xử lý: chia các xử lý con 13 Công nghệ phần mềm Nguyên tắc  Mô-ñun hóa (modularity)  Chia nhỏ ñộ phức tạp • dễ hiểu • dễ quản lý các hệ thống phức tạp  Quan hệ mật thiết với nguyên tắc “chia nhỏ”  Các phương pháp mô-ñun hóa • chiến lược từ trên xuống (top-down) • chiến lược từ dưới lên (bottom-up)  Chất lượng của mô-ñun hóa • liên kết lỏng lẻo (low coupling) • kết cố cao (high cohesion) 14 7 Công nghệ phần mềm Nguyên tắc  Trừu tượng (abstraction)  Loại bỏ những gì không quan trọng Chỉ xem xét các yếu tố quan trọng  Sử dụng các mô hình  • mô hình cho người sử dụng • mô hình cho ngưới phát triển  Ví dụ • ngôn ngữ lập trình / cấu trúc phần cứng • xây dựng tài liệu • ñặc tả bới ñiều kiện trước và sau 15 Công nghệ phần mềm Nguyên tắc  Phòng ngừa sự thay ñổi (anticipation of change)  phần mềm là sản phẩm thường xuyên phải thay ñổi  dự báo các yếu tố có thể thay ñổi • ảnh hưởng có thể  các thay ñổi thường gặp • trong ñặc tả yêu cầu • trong ngữ cảnh sử dụng • khả năng về công nghệ 16 8 Công nghệ phần mềm Nguyên tắc  Tổng quát hóa (generality)  xem xét vấn ñề trong ngữ cảnh tổng quát giải quyết vấn ñề lớn hơn  mục ñích  • tái sử dụng dễ dàng • có thể sử dụng các công cụ có sẵn • sử dụng design patterns • chi phí có thể tăng cao 17 Công nghệ phần mềm Nguyên tắc  Giải quyết từng bước (incrementality)  Nguyên tắc • • • •  xác ñịnh một phần (tập con) phát triển ñánh giá bắt ñầu lại Áp dụng cho • phát triển một sản phẩm • mô ñặc tả / một kiến trúc / ... • mô hình phát triển • mô hình lặp 18 9 Chất lượng phần mềm  Tính ñúng ñắn (correctness)  thực hiện ñúng các ñặc tả về chức năng (functional specification)  Tính tin cậy (reliability)  ñáp ứng ñược những yêu cầu ñặt ra  Tính bền vững (robustness)  hoạt ñộng tốt trong những ñiều kiện sử dụng khác nhau 19 Chất lượng phần mềm  Tính hiệu quả (efficiency)  sử dụng hiệu quả các nguồn tài nguyên (bộ nhớ, CPU, ...)  Tính thân thiện (user friendlyness)  dễ sử dụng  Tính dễ kiểm tra (verifiability)  dễ kiểm tra chất lượng 20 10 Chất lượng phần mềm  Tính dễ bảo trì (maintainability)    Tính tái sử dụng (reusability)   dễ xác ñịnh và sửa lỗi dễ tạo ra những phiên bản mới khi có sự mở rộng dễ tái sử dụng trong những phần mềm mới Tính khả chuyển (portability)  dễ sử dụng trong các môi trường mới 21 Chất lượng phần mềm  Tính dễ hiểu (understandability)   Tính hợp tác (interoperability)   dễ hiểu ñối với người sử dụng cũng như ñối với người phát triển dễ hợp tác với các phần mềm khác Sản xuất hiệu quả (productivity)  tiến trình sản xuất phần mềm phải hiệu quả 22 11 Chất lượng phần mềm  Khả năng giao sản phẩm ñúng hạn (timeliness)  giao sản phẩm theo từng gói  Tính trong suốt (visibility)  ñối với người phát triển/người quản lý • hiểu rỏ tiến ñộ phát triển • hiểu rỏ ảnh hưởng của các quyết ñịnh  ñối với khách hàng • hiểu rỏ tiến ñộ phát triển • hiểu rỏ ảnh hưởng của các quyết ñịnh 23 Chất lượng phần mềm  Sự thỏa hiệp giữa các tiêu chuẩn chất lượng tính thân thiện / tính bền vững  tính khả chuyển / tính hiệu quả  24 12 Phân loại phần mềm  Các hệ thống thông tin (Information Systems)  quản lý thông tin  cơ sở dữ liệu + giao tác  Các hệ thống thời gian thực (Real-Time System)  các hệ thống khi hoạt ñộng cần phải trả lời các sự kiện với một thời gian ñược quy ñịnh nghiêm ngặt 25 Phân loại phần mềm  Các hệ thống phân tán (Distributed Systems)  mạng máy tính  phân tán dữ liệu  phân tán xử lí  Các hệ thống nhúng (Emmbedded Systems)  giao tiếp với các hệ thống/mạch ñiện tử 26 13 Mô hình phát triển (2) Nguyễn Thanh Bình Khoa Công nghệ Thông tin Trường ðại học Bách khoa ðại học ðà Nẵng Nội dung Các hoạt ñộng phát triển phần mềm  Các mô hình phát triển phần mềm  2 1 Các hoạt ñộng phát triển phần mềm  Phân tích tính khả thi  Phân tích và ñặc tả yêu cầu  Thiết kế  Mã hóa  Kiểm thử  Bảo trì 3 Các hoạt ñộng phát triển phần mềm  Phân tích tính khả thi   xác ñịnh vấn ñề cần giải quyết, xem xét các giải pháp và kĩ thuật khác nhau • thuận lợi • bất lợi  ñánh giá về thời gian, giá thành, nguồn tài nguyên cần thiết  Sản phẩm: tài liệu phân tích 4 2 Các hoạt ñộng phát triển phần mềm  Phân tích và ñặc tả yêu cầu (1)  xác ñịnh nhu cầu của khách hàng/người sử dụng • xác ñịnh bài toán, chứ không phải là giải pháp  khó khăn • khách hàng không biết rỏ cái họ cần • khách hàng không trình bày rỏ cái họ muốn • các thay ñổi  Sản phẩm: tài liệu ñặc tả yêu cầu 5 Các hoạt ñộng phát triển phần mềm  Phân tích và ñặc tả yêu cầu (2)  các bước • • • • khảo sát, tổng hợp yêu cầu phân tích yêu cầu ñặc tả yêu cầu hợp thức hóa yêu cầu 6 3 Các hoạt ñộng phát triển phần mềm  Phân tích và ñặc tả yêu cầu (3) Tổng hợp và phân tích yêu cầu ðặc tả yêu cầu Hợp thức hóa yêu cầu Mô hình hệ thống Yêu cầu hệ thống của người sử dụng Tài liệu ñặc tả yêu cầu 7 Các hoạt ñộng phát triển phần mềm  Thiết kế (1)  chuyển từ tài liệu ñặc tả yêu cầu thành cấu trúc lô-gíc có thể cài ñặt ñược giải pháp cho vấn ñề ñã ñược ñặc tả  thiết kế kiến trúc  • các moñun và giao diện của các mô-ñun  thiết kế giao diện  thiết kế các mô-ñun • cấu trúc dữ liệu • thuật toán  Sản phẩm: tài liệu thiết kế 8 4 Các hoạt ñộng phát triển phần mềm  Thiết kế (2) Thiết kế kiến trúc Thiết kế giao diện ñặc tả kiến trúc ñặc tả giao diện Thiết kế mô-ñun ñặc tả mô-ñun Thiết kế cấu trúc dữ liệu ñặc tả cấu trúc dữ liệu 9 Thiết kế thuật toán ñặc tả thuật toán Các hoạt ñộng phát triển phần mềm  Thiết kế (3)  các phương pháp thiết kế • hướng chức năng • hướng ñối tượng 10 5
- Xem thêm -

Tài liệu liên quan