Công Nghệ Phần Mềm 7Phần mềm Software • Phần mềm là một sản phẩm Dùng cho tính toán Tạo, quản lý, thu nhận, biến đổi, thể hiện hay là truyền thông tin • Phần mềm là một phương tiện t
Trang 1Công Nghệ Phần Mềm 1
Tài liệu tham khảo
• Software Engineering - A practitioner’s approach, R.S Pressman, McGraw-Hill (ebook)
• Ian Sommerville’s , “Software Engineering 7th Ed.”
• Nhập môn kỹ nghệ phần mềm; Ngô Trung Việt,
Nguyễn kim Ánh; NXB Khoa học và kỹ thuật
Trang 2Kế hoạch học
• Thời gian: 45 tiết (15 tuần)
• Kiểm tra
Kiểm tra giữa kỳ: tuần thứ 8
Kiểm tra cuối kỳ: sau khi kết thúc
Đề tài
Trang 3Công Nghệ Phần Mềm 3
Yêu cầu
• Có kiến thức về ngôn ngữ lập trình và đã từng lập trình các ứng dụng cơ bản
• Có khả năng áp dụng những cấu trúc dữ liệu và
giải thuật.
• Có hiểu biết về kiến trúc máy tính, mạng máy tính.
Trang 4MÔN HỌC
CÔNG NGHỆ PHẦN MỀM
Chương 1 Tổng quan
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM
Trang 5Công Nghệ Phần Mềm 5
1.1 Một số khái niệm: Giới thiệu
• Khái niệm về Công nghệ phần mềm được đưa ra
lần đầu tiên vào năm 1968 tại hội nghị thảo luận về khủng hoảng phần mềm
• Công nghệ phần mềm đề cập tới các lý thuyết,
phương pháp và công cụ để xây dựng phần mềm chuyên nghiệp, mang lại lợi nhuận cao.
• Quy trình xây dựng phần mềm đòi hỏi phải tuân
thủ các nguyên tắc vô cùng chặt chẽ
Trang 6• Công nghệ cho sản xuất phần mềm?
• Công nghệ phần mềm sẽ như thế nào khi sản xuất phần mềm là hoạt động sản xuất “đặc biệt”?
Trang 7Công Nghệ Phần Mềm 7
Phần mềm (Software)
• Phần mềm là một sản phẩm
Dùng cho tính toán
Tạo, quản lý, thu nhận, biến đổi, thể hiện hay là
truyền thông tin
• Phần mềm là một phương tiện tạo sản phẩm
Hỗ trợ hay cung cấp trực tiếp chức năng hệ thống
Điều khiển những chương trình khác (hđh)
Thực hiện truyền thông (pm mạng)
Giúp cho việc tạo các chương trình khác (tool)
Trang 10Lỗi theo thời gian
idealized curve
change
actual curve
Failure rate
Time
increased failure rate due to side effects
Trang 11Công Nghệ Phần Mềm 11
Hai loại phần mềm
Sản phẩm đại trà (Generic Product)
Sản phẩm theo đơn đặt hàng (Bespoke Product
hoặc Customised Product)
triển các chương trình mới, thay đổi và điều chỉnh các hệthống phần mềm đại trà hoặc tái sử dụng lại các phần
mềm đã tồn tại…
Trang 12Phần mềm
1 Phần mềm học tập
2 Phần mềm thi trắc nghiệm, xếp lịch
3 Phần mềm trò chơi trực tuyến
4 Phần mềm kế toán, nhân sự, ATM
5 Website thương mại
6 Quản lý công việc cá nhân : chi tiêu, tìm đường
7 Quản lý phòng NET, Bida
8 Phần mềm tìm kiếm, tra cứu, tự điển
9 Phần mềm phòng chống Virus, tường lửa, bảo mật
10 Phần mềm tìm kiếm thông tin
11 Phần mềm hỗ trợ công việc, xếp lịch
12 Phần mềm khai thác thông tin trên mạng…
Trang 14Phần mềm mới
• Tính toán mọi nơi - wireless networks
• Tài nguyên mạng - computing engine
• Mã nguồn mở - có thể chứa những tai họa
Trang 15Công Nghệ Phần Mềm 15
• Công Nghệ Phần Mềm (software engineering): là
sự áp dụng có hệ thống và kỷ luật những phương pháp có thể định lượng được trong các khâu phát phát triển, vận hành và bảo trì phần mềm Tức áp dụng những qui tắc của công nghệ vào phần mềm (theo IEEE)
• Qui trình (process) Phải thực hiện những công
việc gì?
• Phương pháp (method) Chỉ ra cách thực hiện
những công việc cụ thể (“how to”)
Trang 16Công nghệ phần mềm
• Gồm 3 giai đoạn
Giai đoạn xác định: Phân tích hệ thống (system
engineering), Hoạch định dự án (software project management), Phân tích yêu cầu (requirement
analysis).
Giai đoạn phát triển: Thiết kế phần mềm (software design), sinh mã (code generation), kiểm tra phần mềm (software testing)
Giai đoạn bảo trì: Sửa lỗi (correction), thay đổi môi trường thực thi (adaptation), tăng cường
(enhancement)
Trang 17Công Nghệ Phần Mềm 17
Trang 18Những FAQ về software engineering
• What is software?
• What is software engineering?
• What is the difference between software engineering and computer science?
• What is the difference between software engineering and system engineering?
• What is a software process?
• What is a software process model?
• What are the costs of software engineering?
• What are software engineering methods?
• What is CASE (Computer-Aided Software Engineering)
• What are the attributes of good software?
• What are the key challenges facing software
engineering?
Trang 19Công Nghệ Phần Mềm 19
CNPM, Khoa học máy tính, Công nghệ hệ thống
• Khoa học máy tính đề cập tới lý thuyết và những vấn
đề cơ bản; còn công nghệ phần mềm đề cập tới các hoạt động xây dựng và đưa ra một phần mềm hữu
ích.
• Khi sự phát triển của phần mềm trở lên mạnh mẽ thì các lý thuyết của khoa học máy tính vẫn không đủ để đóng vai trò là nền tảng hoàn thiện cho công nghệ
phần mềm.
• Công nghệ hệ thống (hay còn gọi là Kỹ nghệ hệ
thống) liên quan tới tất cả các khía cạnh của quá
trình phát triển hệ thống dựa máy tính bao gồm:
phần cứng, phần mềm, và công nghệ xử lý
• Công nghệ phần mềm chỉ là một phần của Công nghệ
hệ thống, nó có liên quan tới việc phát triển hạ tầng phần mềm (software infrastructure), việc điều khiển, các ứng dụng và cơ sở dữ liệu trong hệ thống.
Trang 20Quy trình phần mềm
• Quy trình (xây dựng) phần mềm gồm một tập hợp các hoạt động được tổ chức mà mục đích của nó
là xây dựng và phát triển phần mềm.
• Quy trình phần mềm xác định một bộ khung và tiêu chuẩn để triển khai công nghệ phần mềm
• Qui trình phần mềm bao gồm những hoạt động
Những hoạt động cơ bản là đặc tả (specification), triển khai, thẩm định (validation) và tiến hóa
(evolution)
Trang 21• Mô hình quy trình phát triển phần mềm là một thể
hiện cô đọng của một quy trình phần mềm, và nó
được biểu diễn từ một góc độ cụ thể.
• Một số mô hình quy trình cũng được đề xuất như:
Mô hình thác nước (waterfall)
Mô hình phát triển lặp lại (Iterative development)
Mô hình xoắn ốc (spiral)…
Trang 22• Đối với những hệ thống hoạt động trong thời gian
dài, thì chi phí bảo trì thường lớn gấp nhiều lần so
với chi phí xây dựng.
• Quan hệ giữa chi phí xây dựng và chi kiểm thử: 60%
là chi phí xây dựng và 40% là chi phí kiểm thử
• Đối với một số phần mềm làm theo yêu cầu của
khách hàng, chi phí hoàn thiện vượt quá chi phí xây dựng.
Trang 23Công Nghệ Phần Mềm 23
• Việc phân bổ chi phí cũng phụ thuộc vào mô hình phát triển hệ thống được sử dụng
Mô hình thác nước: Chi phí của các pha đặc tả,
thiết kế, cài đặt, tích hợp và kiểm thử được xác
định một cách riêng rẽ.
Trang 24Chi phí phần mềm
Mô hình phát triển lặp lại: Chi phí đặc tả giảm
• Chi phí cải tiến phần mềm thay đổi phụ thuộc vào từng loại phần mềm.
Trang 25hệ thống; phương pháp hướng đối tượng - tập
trung vào việc định nghĩa các đối tượng và sự cộng tác giữa chúng
• CASE : Computer Aided Software Engneering Các công cụ CASE thường được sử dụng để hỗ trợ các hoạt động trong quy trình xây dựng phần mềm Có hai loại công cụ CASE:
Upper-CASE: công cụ để hỗ trợ các hoạt động đầu tiên như đặc tả yêu cầu và thiết kế
Lower-CASE: công cụ để hỗ trợ các hoạt động sau như lập trình, gỡ lỗi và kiểm thử.
Trang 26Hạn chế của CASE
• Công nghệ phần mềm đòi hỏi khả năng suy nghĩ
sáng tạo điều này hầu như không thể được tạo tự động
• Công nghệ phần mềm là hoạt động nhóm tốn thời gian trong những tương tác nhóm mà kỹ thuật
CASE không thể hỗ trợ tốt
Trang 27Công Nghệ Phần Mềm 27
Tools, workbenches, environments
Trang 28Những yêu cầu đối với phần mềm
• Phần mềm phải đáp ứng
Khả năng bảo trì (Maintainability): phần mềm co thể duy trì hoạt động, có thể điều chỉnh và mở rộng để thoả mãn những yêu cầu luôn thay đổi
Mức độ tin cậy (Reliability) : phần mềm phải được tin cậy, bảo mật và chính xác.
Hiệu quả (Maintainability): phần mềm không nên
sử dụng lãng phí tài nguyên của hệ thống
Khả năng được chấp nhận: người sử dụng phải chấp nhận phần mềm Điều đó có nghĩa là nó phải dễ
hiểu, sử dụng được và tương thích với các hệ
thống khác.
Trang 29Công Nghệ Phần Mềm 29
Các nhân tố chất lượng
Trang 30Chất lượng và Stakeholder
QUALITY SOFTWARE
Development manager:
sells more and pleases customers while costing less
to develop and maintain
Trang 31môi trường thực hiện và cơ sở hạ tầng
Chuyển giao: phát triển các kỹ thuật cho phép việc chuyển giao phần mềm tới người sử dụng nhanh hơn
Độ tin cậy: phát triển các kỹ thuật để phần mềm ít sai sót và được người sử dụng tin tưởng.
Trang 32Những thách thức đối với CNPM
Cứ 6 đề án triển khai thì có 2 bị huỷ bỏ
Trung bình thời gian thực hiện thực tế bị kéo dài 50% (cá biệt 200-300%)
Các đề án lớn dễ thất bại
3/4 các hệ thống lớn có lỗi khi thực thi
Quá trình phân tích yêu cầu (5% công sức): để lại 55% lỗi, có 18% phát hiện được
Quá trình thiết kế (25% công sức): để lại 30% lỗi,
có 10% phát hiện được
Quá trình mã hoá, kiểm tra và bảo trì: để lại 15% lỗi, có 72% phát hiện được
Trang 34Ariane5
Trang 35Công Nghệ Phần Mềm 35
1.2 Kỹ sư phần mềm
• Các kỹ sư phần mềm nên tuân theo một phương
pháp luận có hệ thống và có tổ chức trong công
việc của họ Đồng thời, họ nên sử dụng các công
cụ và kỹ thuật thích hợp với vấn đề cần giải quyết, các ràng buộc và tài nguyên sẵn có.
Trang 365 Lựa chọn ngôn ngữ và phát triển chương trình
6 Kiểm tra chương trình (testing)
7 Lựa chọn và sử dụng kỹ thuật bảo trì phần mềm
8 Đánh giá và quyết định khi nào loại bỏ và nâng
cấp các ứng dụng
Trang 39Công Nghệ Phần Mềm 39
Những sai lầm
• Tôi dễ dàng biến đổi phần mềm
Thực tế: Những thay đổi yêu cầu là nguyên nhân chính làm giảm giá trị phần mềm
• Tôi có thể giải quyết vấn đề lịch biểu bằng cách
thêm người
Thực tế: Nó có thể gia tăng nỗ lực phối hợp là
giảm hiệu suất
• Chỉ cần xem xét sơ lược các yêu cầu, chúng tôi có thể bắt đầu viết code
Thực tế: đó thường là nguyên nhân chính gây ra lỗi
Trang 41Công Nghệ Phần Mềm 41
Những sai lầm
• Phần quan tâm hầu như duy nhất là mã
Tài liệu, thông tin kiểm thử và cấu hình phần mềm cũng là những phần then chốt trong việc chuyển giao
• Lập trình giỏi thì hầu như là sẽ tạo được phần mềm chất lượng
Những dự án phần mềm được hoàn tất bởi những nhóm, không phải cá nhân, để thành công cần
nhiều hơn là tạo mã
• Tạo mã là công việc nặng nhọc nhất
Tạo mã: ít hơn 10% công sức
Trang 42Những điểm chính
quan đến tất cả diện mạo của việc sản phần mềm
Những thuộc tính quan trọng: (tính dễ bảo trì)
maintainability, (tính tin cậu được) dependability, (hiệu quả) efficiency và tiện dụng (usability)
hoạt động cơ bản là đặc tả (specification), triển khai, thẩm định (validation) và tiến hóa (evolution)
mềm Nó bao gồm những đề xuất cho qui trình, những ký hiệu được dùng, những luật cho mô tả hệ thống và hướng dẫn thiết kế
toàn vẹn của biểu đồ, giữ vết cho những bài kiểm tra (test) chương trình mà đã thực thi…