Giáo trình Kỹ nghệ phần mềm - Bài 1: Giới thiệu về công nghệ phần mềm
Kinh tế của tất cả các nước phát triển đang phụ thuộc
vào phần mềm
– Airbus A380 có “buồng lái không giấy”, hàng triệu dòng
lệnh
• Phần mềm ngày càng điều khiển nhiều hệ thống máy móc, thiết bị
• CNPM là lý thuyết, phương pháp, và công cụ để làm
phần mềm chuyên nghiệp
• Chi phí cho phần mềm chiếm một phần lớn trong tổng
sản phầm quốc dân (GNP) ở tất cả các nước phát
Bài 1 Giới thiệu về Công nghệ Phần mềm Mục tiêu • Giới thiệu về CNPM và tầm quan trọng của nó • Trả lời các câu hỏi quan trọng về CNPM • Giới thiệu các vấn đề đạo đức và nghề nghiệp – Giải thích tại sao chúng lại liên quan đến người làm phần mềm Nội dung • FAQs về CNPM • Trách nhiệm và đạo đức nghề nghiệp CNPM • Kinh tế của tất cả các nước phát triển đang phụ thuộc vào phần mềm – Airbus A380 có “buồng lái không giấy”, hàng triệu dòng lệnh • Phần mềm ngày càng điều khiển nhiều hệ thống máy móc, thiết bị • CNPM là lý thuyết, phương pháp, và công cụ để làm phần mềm chuyên nghiệp • Chi phí cho phần mềm chiếm một phần lớn trong tổng sản phầm quốc dân (GNP) ở tất cả các nước phát Chi phí phần mềm • Chi phí phần mềm chiếm phần lớn trong các hệ thống máy tính. – Chi phí phần mềm cho PC thường lớn hơn chi phí phần cứng • Chi phí để bảo trì phần mềm lớn hơn chi phí phát triển nó. – Với hệ thống chạy lâu dài chi phí bảo trì có thể gấp vào lần chi phí phát triển nó • CNPM phải tính đến việc phát triển phần mềm với chi phí hiệu quả Một số câu hỏi thường gặp (FAQ) • Phần mềm là gì? • CNPM là gì? • CNPM khác gì với KHMT (computer science)? • CNPM khác gì với công nghệ hệ thống (system engineering)? • Qui trình phần mềm là gì? • Mô hình qui trình phần mềm là gì? Một số câu hỏi thường gặp (FAQ) • CNPM có những chi phí gì? • Phương pháp CNPM là gì? • CASE (Computer-Aided Software Engineering) là gì? • Đặc tính của một phần mềm tốt là gì? • Những thách thức chính của CNPM là gì? Phần mềm là gì? • Chương trình máy tính và tài liệu kèm theo như tài liệu yêu cầu, mô hình thiết kế, tài liệu hướng dẫn sử dụng • Sản phẩm phần mềm có thể làm theo yêu cầu, hoặc làm cho một thị trường chung – Theo yêu cầu - phát triển cho một khách hàng theo đặc tả của họ – Tổng quát - phát triển để bán cho nhiều khách hàng khác nhau, như Excel or Word. • Phần mềm có thể được làm từ – Chương trình mới – Cấu hình hệ thống phần mềm tổng quát – Sử dụng lại các phần mềm đã có CNPM là gì? • CNPM là một ngành công nghệ liên quan đến tất cả các khía cạnh của sản suất phần mềm • Kỹ sư phần mềm cần phải – vận dụng một phương pháp có tổ chức, có hệ thống trong quá trình làm việc và – sử dụng các công cụ và kỹ thuật thích hợp tùy theo • vấn đề phải giải quyết, • các ràng buộc phát triển và • tài nguyên đã cho Khác biệt giữa CNPM và KHMT • KHMT liên quan đến lý thuyết và nền tảng; CNPM liên quan đến thực tế phát triển và triển khai các phần mềm có ích • Các lý thuyết của KHMT chưa đủ để làm trụ cột cho CNPM (không giống vật lý, hoặc kỹ thuật điện) Khác biệt giữa CNPM và KNHT (system engineering) • Kỹ nghệ Hệ thống (KNHT) liên quan đến tất cả các khía cạnh của việc phát triển các hệ thống dựa trên máy tính gồm – Phần cứng, phần mềm và qui trình • CNPM là một phần của KNHT liên quan đến việc phát triển hạ tầng, điểu khiển, ứng dụng, và cơ sở dữ liệu trong hệ thống. • Kỹ sư hệ thống tham gia vào đặc tả hệ thống, thiết kế kiến trúc, tích hợp, và triển khai Qui trình phần mềm • Một tập các hoạt động với mục tiêu là phát triển hoặc tiến hóa phần mềm • Các hoạt động phổ biến là: – Đặc tả - hệ thống phải làm gì và các ràng buộc phát triển – Phát triển - làm ra hệ thống phần mềm – Kiểm định - kiểm tra phần mềm có làm đúng những gì khách hàng muốn – Tiến hóa - thay đổi phần mềm để đáp ứng những yêu cầu mới Mô hình qui trình phần mềm • Một biểu diễn đơn giản của một qui trình phần mềm, theo một góc nhìn (perspective) cụ thể • Ví dụ của góc nhìn qui trình – Luồng công việc – dãy các hoạt động; – Luồng dữ liệu – luồng thông tin; – Vai trò/hành động – ai làm gì. • Mô hình qui trình phổ biến – Thác nước; – Phát triển lặp (iterative); – Công nghệ phần mềm dựa trên thành phần (component- based). Làm một phần mềm cần chi phí gì? • Khoảng 60% là chi phí phát triển, 40% là chi phí kiểm thử. – Phần mềm may đo thì chi phí nâng cấp, cải tiến lớn hơn chi phí phát triển • Phân bổ chi phí khác nhau tùy theo yêu cầu về mặt phi chức năng (tốc độ, độ an toàn,..) • Phân bổ chi phí cũng phụ thuộc vào qui trình phát triển phần mềm Phân bố chi phí của các hoạt động Các chi phí phát triển một sản phẩm Phương pháp CNPM • Các tiếp cận có cấu trúc để phát triển phần mềm bao gồm –Mô hình hệ thống • Mô tả của các sơ đồ hình vẽ cần có – Nguyên tắc • Ràng buộc của các mô hình – Các lời khuyên thiết kế • Rút ra từ kinh nghiệm quí về thiết kế – Hướng dẫn qui trình • Bước tiếp theo phải làm là gì. CASE là gì? • Hệ thống phần mềm cung cấp hỗ trợ tự động cho các hoạt động phần mềm • Các hệ thống CASE thường được sử dụng để hỗ trợ phương pháp CASE mức cao• – Công cụ hỗ trợ các hoạt động ở giai đoạn đầu: yêu cầu, thiết kế • CASE mức thấp – Công cụ hỗ trợ hoạt động ở giai đoạn sau như lập trình, gỡ lỗi, kiểm thử Thuộc tính của phần mềm tốt • Đạt chức năng và chất lượng theo yêu cầu người sử dụng và dễ bảo trì, đáng tin cậy và chấp nhận được • Dễ bảo trì – Có thể cải tiến để đáp ứng các yêu cầu mới • Đáng tin (dependability) – Phải chạy đúng và đáng tin • Hiệu quả – Không sử dụng lãng phí tài nguyên hệ thống • Chấp nhận được (acceptability) – Được người sử dụng chấp nhận, có nghĩa nó phải có thể hiểu được, có thể sử dụng được, và tương thích với hệ thống khác Thách thức của CNPM • Tính đa dạng, tính tin cậy, dễ phân phối • Tính đa dạng – Kỹ thuật phát triển để xây dựng phần mềm phải đáp ứng được nhiều nền tảng và môi trường thực thi hỗn hợp (heterogeneous) • Đáng tin cậy – Kỹ thuật phát triển để tạo ra sản phẩm mà người sử dụng có thể tin cậy được • Phân phối – Kỹ thuật phát triển để cho phép phân phối phần mềm nhanh hơn Trách nhiệm đạo đức và nghề nghiệp • Trách nhiệm trong CNPM lớn hơn là việc áp dụng các kỹ năng • Kỹ sư phần mềm phải hành sử có đạo đức, trung thực nếu muốn được tôn trọng và được coi là chuyên nghiệp (pro) • Cư sử có đạo đức không phải chỉ đơn giản là tuân thủ pháp luật Trách nhiệm nghề nghiệp • Giữ bí mật – Phải giữ bí mật thông tin của nhà tuyển dụng và khách hàng ngay cả khi không ký cam kết nào • Trung thực về khả năng – Không thể hiện sai năng lực – Không nhận việc nằm ngoài khả năng Trách nhiệm nghề nghiệp (2) • Quyền sở hữu trí tuệ – Cần có hiểu biết về luật pháp địa phương về việc sử dụng tài sản trí tuệ như bằng phát minh, bản quyền, v.v. – Cẩn thận để đảm bảo tài sản trí tuệ của người tuyển dụng và khách hàng được bảo vệ • Sử dụng máy tính sai trái – Không sử dụng kỹ năng của mình để lạm dụng máy tính của người khác – Lạm dụng có thể ở mức đơn giản như chơi trò chơi, hay ở mức nghiêm trọng như phát tán virus Đạo đức nghề nghiệp (1) • Công chúng – Người làm phần mềm hành động theo lợi ích của công chúng. • Khách hàng, người tuyển dụng – Người làm phần mềm phải hành động theo lợi ích khách hàng, người tuyển dụng và nhất quán với lợi ích của công chúng. • Sản phẩm – Người làm phần mềm phải đảm bảo sản phẩm của họ và những sửa đổi đáp ứng chuẩn mực cao nhất có thể. Đạo đức nghề nghiệp • Phán quyết – Người làm phần mềm có chính kiến và độc lập • Quản lý – Người lãnh đạo làm phần mềm phải tuân thủ và khuyến khích đạo đức nghề nghiệp. • Chuyên nghiệp – Người làm phần mềm phải nâng cao trọng trách nghề nghiệp nhất quán với lợi ích công chúng Đạo đức nghề nghiệp • Đồng nghiệp – Người làm phần mềm phải công bằng và có tinh thần giúp đỡ nhau trong công việc • Bản thân – Người làm phần mềm phải học hỏi liên tục trong quá trình hành nghề và tuyền truyền cách hành nghề có đạo đức. Mẫu thuẫn đạo đức nghề nghiệp • Nguyên tắc trái với các chính sách của lãnh đạo • Người tuyển dụng bàn giao sản phẩm (safety- critical) nhưng chưa kiểm thử xong • Tham gia vào các dự án phát triển các hệ thống vũ khí cho quân đội Các điểm chính • CNPM là một ngành học thuật về làm ra sản phẩm phần mềm • Sản phẩm phần mềm gồm các chương trình và các tài liệu đi kèm. • Bên cạnh chức năng, phần mềm có thuộc tính phi chức năng: an toàn, hiệu quả, dễ bảo trì, v.v. • Qui trình phần mềm gồm các hoạt động liên quan đến phát triển sản phẩm phần mềm. – Hoạt động cơ bản gồm đặc tả, phát triển, kiểm tra, tiến hóa • Các phương pháp là các cách có tổ chức để làm ra phần mềm. – Chúng gồm các đề xuất để thực hiện theo qui trình, các ký pháp, qui tắc mô tả hệ thống và các hướng dẫn. Các điểm chính • Công cụ CASE là các phần mềm được thiết kế để hỗ trợ các hoạt động thường xuyên trong qui trình phần mềm như soạn thảo các sơ đồ thiết kế, kiểm tra tính nhất quán của sơ đồ, theo dõi quá trình kiểm thử, v.v. • Người làm phần mềm có trách nhiệm với nghề của mình và với xã hội. – Chỉ quan tâm đến kỹ thuật chưa đủ. Câu chuyện về làm phần mềm Bài tập về nhà • Đọc về – Lịch sử phát triển của phần mềm – Phân loại phần mềm • Liệt kê các hoạt động (công việc) để làm ra một phần mềm
File đính kèm:
- Giáo trình Kỹ nghệ phần mềm - Bài 1 Giới thiệu về công nghệ phần mềm.pdf