Untitled NỘI DUNG ÔN TẬP MÔN CÔNG NGHỆ PHẦN MỀM Câu hỏi 1 Anh (chị) hãy nêu khái niệm về công nghệ phần mềm Trình bày quá trình phát triển phần mềm theo mô hình thác nước Đánh giá ưu, nhược điểm của m.
Trang 1NỘI DUNG ÔN TẬP MÔN CÔNG NGHỆ PHẦN MỀM
Câu hỏi 1: Anh (chị) hãy nêu khái niệm về công nghệ phần mềm Trình bày
quá trình phát triển phần mềm theo mô hình thác nước Đánh giá ưu, nhượcđiểm của mô hình này Theo anh (chị), hiện nay nên phát triển phần mềm theo
mô hình nào? Tại sao?
1) Khái niệm về công nghệ phần mềm
Công nghệ phần mềm (hay còn được gọi kỹ thuật phần mềm) Đó lànhững khái niệm trong ngành công nghệ thông tin, có sự liên quan mật thiếttới các khía cạnh của quá trình sản xuất phần mềm Công nghệ được áp dụngmột cách có hệ thống cho sự phát triển, sử dụng cũng như để bảo trì các phầnmềm hệ thống
2) Quá trình phát triển phần mềm theo mô hình thác nước.
Mô hình này yêu cầu tiếp cận một cách hệ thống, tuần tự và chặt chẽ(xong bước này mới chuyển sang bước sau) đối với việc phát triển phầnmềm, bắt đầu ở mức phân tích hệ thống và tiến dần xuống phân tích,thiết kế, mã hóa, kiểm thử và bảo trì:
a Kỹ nghệ và phân tích hệ thống
Kỹ nghệ và phân tích hệ thống bao gồm việc thu thập yêu cầu ở mức hệthống với một lượng nhỏ thiết kế và phân tích ở mức đỉnh Mục đíchcủa bước này là xác định khái quát về phạm vi, yêu cầu cũng như tínhkhả thi của phần mềm
b Phân tích yêu cầu phần mềm
- Phân tích yêu cầu được tập trung việc thu thập và phân tích cácthông tin cần cho phần mềm, các chức năng cần phải thực hiện,hiệu năng cần có và các giao diện cho người sử dụng
- Kết quả của phân tích là tư liệu về yêu cầu cho hệ thống và phầnmềm (đặc tả yêu cầu)
để khách hàng duyệt lại và dùng làm tài liệu cho người phát triển
kế chi tiết các thủ tục, thiết kế giao diện và tương tác
- Lập tư liệu thiết kế (là một phần của cấu hình phần mềm) để phêduyệt
Trang 2d Mã hóa
Biểu diễn thiết kế bằng một hay một số ngôn ngữ lập trình và dịchthành mã máy thực hiện được
e Kiểm thử
Tiến trình kiểm thử bao gồm việc
i) phát hiện và sửa lỗi phần logic bên trong chương trình hay còngọi là lỗi lập trình,
ii) kiểm tra xem phần mềm có hoạt động như mong muốn không,tức là phát hiện và sửa lỗi về chức năng như thiếu hụt, sai sót vềchức năng; và kiểm tra xem phần mềm có đảm bảo tính hiệu quảtrong thực hiện hay không
iii) Bảo trì
Bao gồm các công việc sửa các lỗi phát sinh khi áp dụng chươngtrình hoặc thích ứng nó với thay đổi trong môi trường bên ngoài (hệđiều hành mới, thiết bị ngoại vi mới, yêu cầu người dùng) hoặc yêucầu bổ sung chức năng hay nâng cao hiệu năng cần có
3 Đòi hỏi khách hàng phải kiên nhẫn Bản làm việc được của chươngtrình chỉ có được vào lúc cuối của thời gian dự án Một sai sót nhỏtrong phân tích/thiết kế nếu đến khi có chương trình làm việc mới pháthiện ra, có thể sẽ là một thảm họa
• Ưu điểm
Tuy vậy, mô hình vòng đời cổ điển có một vị trí quan trọng trongcông việc về kỹ nghệ phần mềm Nó đưa ra một tiêu bản trong đó cóthể bố trí các phương pháp cho phân tích, thiết kế, mã hóa, kiểm thử
và bảo trì Vòng đời cổ điển vẫn còn là một mô hình được sử dụngrộng rãi, nhất là đối với các dự án vừa và nhỏ
Trang 3* Hiện nay nên phát triển phần mềm theo mô hình vòng đời cổ điển.
Vì đây là một mô hình tiêu bản, được sử dụng rộng rãi phù hợp với cánhân, tổ chức Tuy vẫn tồn tài một số nhược điểm nhưng nhìn chung sovới các mô hình khác thì mô hình này vẫn được ưu tiên hơn
thiết kế kết hợp với công cụ CASE đều là hướng chức năng Vô khối các hệthống đã được phát triển bằng cách sử dụng phương pháp tiếp cận hướngchức năng Các hệ thống đó sẽ được bảo trì cho một tương lai xa xôi Bởi vậythiết kế hướng chức năng vẫn sẽ còn được tiếp tục sử dụng rộng rãi
Trong thiết kế hướng chức năng, người ta dùng các biểu đồ luồng dữ liệu (mô
tả việc xử lý dữ liệu), các lược đồ cấu trúc (nó chỉ ra cấu trúc của phần mềm),
và các mô tả thiết kế chi tiết Thiết kế hướng chức năng gắn với các chi tiết
Trang 4của một thuật toán của chức năng đó nhưng các thông tin trạng thái hệ thống
là không bị che dấu
Trang 5Việc thay đổi một chức năng và cách nó sử dụng trạng thái của hệ thống cóthể gây ra những tương tác bất ngờ đối với các chức năng khác Cách tiếp cậnchức năng để thiết kế là tốt nhất khi mà khối lượng thông tin trạng thái hệthống được làm nhỏ nhất và thông tin dùng chung nhau là rõ ràng.
Trình bày nội dung của việc quản lý nhân sự trong quá trình phát triển phần mềm.
Chi phí (trả công) con người là phần chính của chi phí xây dựng phầnmềm Ngoài ra, năng lực của người phát triển phần mềm lại rất biến thiên,kéo theo sự phức tạp trong tính toán chi phí Phát triển phần mềm đượctiến hành theo nhóm Kích thước tốt của nhóm là từ 3 đến 8 ngưòi Phầnmềm lớn thường được xây dựng bởi nhiều nhóm nhỏ Một nhóm phát triển
có thể gồm các loại thành viên sau:
Người phát triển
Chuyên gia về miền ứng
dụng Người thiết kế giao
diện
Thủ thư phần mềm (quản lý cấu hình phần
mềm) Người kiểm thử
Một nhóm phát triển cần có người quản lý, và người có vai trò lãnh đạo
về mặt kĩ thuật Một đặc trưng của làm việc theo nhóm là sự trao đổi thôngtin (giao tiếp) giữa các thành viên trong nhóm Thời gian dùng cho việcgiao tiếp có thể chiếm đến nửa tổng thời gian dành cho pháp triển phầnmềm
Ngoài ra, thời gian không dùng cho phát triển sản phẩm cũng chiếm mộtphần lớn thời gian còn lại của người lập trình Một người có thể đồng thờilàm việc cho nhiều nhóm (dự án) phần mềm khác nhau Điều này làm choviệc tính toán giá thành phần mềm phức tạp Cần ghi nhớ, trong sản xuấtphần mềm thì
Năng lực của các thành viên là không đồng đều
Người tốt (nhất) có thể sản xuất hơn 5 lần trung bình, người kém có thểkhông cho kết quả gì
Một số công việc quá khó đối với mọi người
Không nên tăng số thành viên một cách vô ý thức, vì như thế chỉ làm tăng
sự phức tạp giao tiếp giữa các thành viên, khiến công việc nhiều khi chậmlại Một số việc (phức tạp, đăc thù) chỉ nên để một người làm
Câu 3: Nêu phương pháp lập trình hướng đối tượng Đánh giá ưu/nhược điểm Cho ví dụ minh họa.
Trang 6Lập trình hướng đối tượng (Object-oriented programming) là một phươngpháp sử dụng các đối tượng tương tác để giải quyết những nhiệm vụ phức tạptrong lập trình Mỗi đối tượng sẽ có những thuộc tính và hành vi khác nhau.
Chẳng hạn, bạn có thể hình dung lon sữa đặc là một đối tượng Phương pháplập trình hướng đối tượng sẽ tạo ra những lon sữa đặc có nắp khui (thuộc tính)
và chức năng tự mở nắp (hành vi) Người dùng chỉ việc yêu cầu đối tượng đóthực hiện chức năng của mình
Hai ngôn ngữ hỗ trợ lập trình hướng đối tượng nổi tiếng là Java và C++.Ngoài ra, một số ngôn ngữ khác cũng hỗ trợ hướng đối tượng, bao gồmObjective C, Perl, Python, JavaScript, Simula, Modula, Ada, Smalltalk…
2 Ưu điểm của phương pháp lập trình hướng đối tượng
Một số ưu điểm của lập trình hướng đối tượng bao gồm:
2.1 Nâng cao hiệu năng phát triển phần mềm
Ba yếu tố quan trọng của lập trình hướng đối tượng là:
Tính mô-đun: nó tách biệt các nhiệm vụ trong quá trình phát triển phần mềmdựa trên những đối tượng cụ thể Mỗi đối tượng sẽ có một nhiệm vụ khácnhau
Tính mở rộng: các đối tượng có thể được mở rộng dễ dàng, bao gồm mở rộngthuộc tính và các hành vi mới
Tính tái sử dụng: các đối tượng cũng có thể được sử dụng lại trong một ứngdụng hoặc nhiều ứng dụng khác nhau
Ba yếu tố trên của lập trình hướng đối tượng giúp hiệu năng phát triển phầnmềm cũng được cải thiện rất nhiều, so với kỹ thuật lập trình truyền thốngdựa trên thủ tục
2.2 Nâng cao khả năng bảo trì phần mềm
Chính vì những lý do nêu trên, phần mềm được lập trình theo hướng đốitượng cũng dễ bảo trì hơn Vì thiết kế là mô-đun, nên việc thay đổi một phầncủa chương trình sẽ không ảnh hưởng đến những phần còn lại Điều này rất
có lợi trong trường hợp dự án của bạn có quy mô lớn, đòi hỏi nhiều thay đổi.2.3 Phần mềm phát triển nhanh hơn
Tính tái sử dụng của lập trình hướng đối tượng cho phép phát triển phầnmềm nhanh hơn Các phần mềm được lập trình theo hướng đối tượng thường
có thư viện đối tượng phong phú, các đoạn mã được tối ưu hóa và có thể tái
sử dụng ở các dự án khác trong tương lai
2.4 Giảm thiểu chi phí phát triển
Trang 7Việc tái sử dụng phần mềm cũng làm giảm thiểu chi phí phát triển cho nhàsản xuất Thông thường, phần lớn công sức chỉ tập trung vào việc phân tíchđối tượng và thiết kế phần mềm Do đó, tổng chi phí phát triển phần mềmcũng giảm đi đáng kể.
2.5 Chất lượng phần mềm cao hơn
Thực tế, chất lượng của phần mềm phụ thuộc vào nhiều yếu tố khác nhau.Chẳng hạn, kinh nghiệm và trình độ của nhóm phát triển cũng sẽ ảnh hưởngđến sản phẩm đầu ra Tuy nhiên, phương pháp này có xu hướng tạo ra nhữngphần mềm chất lượng cao hơn
Việc phát triển phần mềm nhanh hơn, chi phí thấp hơn giúp các nhà sản xuấtdành nhiều thời gian, tài nguyên vào việc kiểm thử Điều đó đồng nghĩa rằngphần mềm cuối cùng thường ít lỗi hơn, chất lượng tốt hơn
3 Nhược điểm của phương pháp lập trình hướng đối tượng
Bên cạnh những ưu điểm nêu trên, lập trình hướng đối tượng cũng có nhữngnhược điểm như sau:
3.1 Đường cong học tập sâu
Lập trình hướng đối tượng là một phương pháp đòi hỏi khá nhiều tư duy Do
đó, nó có thể không dễ dàng với một số người, đặc biệt là những người mớivào nghề Các lập trình viên cần một khoảng thời gian để học và tập làm quenvới nó
Phương pháp này phức tạp vì phần mềm phải dựa trên sự tương tác của đốitượng Do đó, lập trình viên cần phải hiểu bản chất của những khái niệm cơbản như: lớp, đối tượng, phương thức, thuộc tính Đồng thời, ta cũng cần nắmđược bốn tính chất cơ bản của lập trình hướng đối tượng Đó là: Tính trừutượng (Abstraction), Tính đóng gói (Encapsulation), Tính kế thừa(Inheritance) và Tính đa hình (Polymorphism)
3.2 Chương trình chậm và có kích thước lớn hơn
Phần mềm được lập trình theo hướng đối tượng thường chậm hơn các phầnmềm dựa trên thủ tục Lý do là vì các phần mềm này thường yêu cầu nhiềucâu lệnh hơn để thực thi Lập trình viên phải viết ra nhiều dòng mã để đảmbảo những thuộc tính của phương pháp này Do đó, kích thước cũng chươngtrình cũng lớn hơn
3.3 Phương pháp lập trình hướng đối tượng không phù hợp với mọi loại vấn
đề Mỗi phương pháp khác nhau sẽ phù hợp với một vấn đề khác nhau Lậptrình hướng đối tượng cũng vậy
Trang 8Thực tế, có những vấn đề mặc định sẽ được giải quyết tốt hơn nếu lập trìnhviên sử dụng phương pháp lập trình chức năng (Functional Programming),lập trình logic,
Trang 9hoặc lập trình thủ tục Nếu ta áp dụng lập trình hướng đối tượng, có thể sẽkhông đem lại hiệu quả tốt.
Câu 4: Nêu khái niệm về công nghệ phần mềm Nêu nội dung của phương
pháp xây dựng phần mềm theo mô hình xoắn ốc Đánh giá ưu nhược điểm của
mô hình này Hiện nay, phát triển phần mềm, nên theo mô hình nào, tại sao?
* Phương pháp xây dựng phần mềm theo mô hình xoắn ốc.
Mô hình xoắn ốc được Boehm đưa ra năm 1988 Mô hình này đưa thêm vàoviệc phân tích yếu tố rủi ro Quá trình phát triển được chia thành nhiều bướclặp lại, mỗi bước bắt đầu bằng việc phân tích rủi ro rồi tạo bản mẫu, cải tạo vàphát triển bản mẫu, duyệt lại, và cứ thế tiếp tục (hình 1.3) Nội dung mộtbước gồm bốn hoạt động chính:
Lập kế hoạch: xác định mục tiêu, các giải pháp và ràng buộc
Phân tích rủi ro: phân tích các phương án và xác định/giải quyết
rủi ro Kỹ nghệ: phát triển sản phẩm “mức tiếp theo”
- Đánh giá: đánh giá của khách hàng về kết quả của kỹ nghệ
Với mỗi lần lặp xoắn ốc (bắt đầu từ tâm), các phiên bản được hoàn thiện dần.Nếu phân tích rủi ro chỉ ra rằng yêu cầu không chắc chắn thì bản mẫu có thểđược sử dụng trong giai đoạn kỹ nghệ; các mô hình và các mô phỏng kháccũng được dùng để làm rõ hơn vấn đề và làm mịn yêu cầu
Tại một vòng xoắn ốc, phân tích rủi ro phải đi đến quyết định “tiến hành tiếphay dừng” Nếu rủi ro quá lớn thì có thể đình chỉ dự án
Mô hình xoắn ốc cũng có một số vấn đề như khó thuyết phục những kháchhàng lớn rằng cách tiếp cận tiến hóa là kiểm soát được Nó đòi hỏi tri thứcchuyên gia đánh giá rủi ro chính xác và dựa trên tri thức chuyên gia này màđạt được thành công Mô hình xoắn ốc đòi hỏi năng lực quản lý cao, nếukhông quản lý tốt thì rất dễ rơi vào trạng thái sửa đổi cục bộ không có kếhoạch của mô hình làm bản mẫu (thăm dò) Và mô hình này còn tương đốimới và còn chưa được sử dụng rộng rãi như vòng đời hoặc làm bản mẫu Cầnphải có thêm một số năm nữa trước khi người ta có thể xác định được tínhhiệu quả của mô hình này với sự chắc chắn hoàn toàn
*Ưu điểm:
Lượng phân tích rủi ro cao Do đó việc tránh rủi ro được tăng cường
Ước lượng chi phí dễ dàng như việc hoàn thành một prototype trong mộtfragment nhỏ
Ứng dụng tốt đối với các dự án lớn và quan
trọng Kiểm soát tài liệu và phê duyệt chặt
chẽ
Chức năng bổ sung hoặc thay đổi có thể được thêm vào những giai đoạn
sau Phần mềm sẽ được sản xuất sớm trong vòng đời của phần mềm
Ứng dụng được phát triển nhanh và các tinh năng được thêm vào một cách có
hệ thống
Trang 10Luôn có thời gian cho khách hàng để phản hồi về sản phẩm.
Trang 11* Nhược điểm:
Đối với rủi ro, ở giai đoạn phân tích cần một chuyên gia có chuyên môn cao
để thực hiện việc phân tích
Không hữu ích với dự án có quy mô nhỏ
Thời gian và chi phí cho dự án có thể là vô hạn vì đặc tính xoắn ốc của môhình Tài liệu cho dự án có thể rất dài vì có các giai đoạn trung gian
Rủi ro có thể không đáp ứng được tiến độ hoặc ngân sách
Sự thành công của dự án phụ thuộc rất nhiều vào giai đoạn phân tích rủi ro
Câu 5: Nêu khái niệm về công nghệ phần mềm Nêu nội dung của phương
pháp xây dựng phần mềm theo mô hình làm bản mẫu Đánh giá ưu nhượcđiểm của mô hình này Hiện nay, phát triển phần mềm, nên theo mô hình nào,tại sao?
* Phương pháp xây dựng phần mềm theo mô hình làm bản mẫu.
Cách tiếp cận làm bản mẫu cho kỹ nghệ phần mềm là cách tiếp cận tốt nhất khi:
- Mục tiêu tổng quát cho phần mềm đã xác định,nhưng chưa xác định được input và output
toán, về thích nghi hệ điều hành hay giao diện người máy cần có
Khi đã có bản mẫu, người phát triển có thể dùng chương trình đã có hay cáccông cụ phần mềm trợ giúp để sinh ra chương trình làm việc
Làm bản mẫu là tạo ra một mô hình cho phần mềm cần xây dựng Mô hình
có thể có 3 dạng:
1 Bản mẫu trên giấy hay trên máy tính mô tả giao diện người-máy làmngười dùng hiểu
được cách các tương tác xuất hiện
2 Bản mẫu cài đặt chỉ một tập con chức năng của phần mềm mong đợi
3 Bản mẫu là một chương trình có thể thực hiện một phần hay tất cả chứcnăng mong muốn nhưng ở mức sơ lược và cần cải tiến thêm các tínhnăng khác tùy theo khả năng phát triển
Trang 12Kết thúc
Bắt đầu
Sản phẩm cuối cùng
Tập hợp Yêu cầu
Thiết kế nhanh Làm mịn
yêu cầu
Xây dựng bản mẫu Đánh giá của
khách hàng
Trước hết người phát triển và khách hàng gặp nhau và xác định mục tiêu tổngthể cho phần mềm, xác định các yêu cầu đã biết, các miền cần khảo sát thêm.Tiếp theo là giai đoạn thiết kế nhanh, tập trung vào việc biểu diễn các khíacạnh của phần mềm thấy được đối với người dùng (input và output), và xâydựng một bản mẫu
Người dùng đánh giá và làm mịn các yêu cầu cho phần mềm Tiến trình nàylặp đi lặp lại cho đến khi bản mẫu thoả mãn yêu cầu của khách hàng, đồng thờigiúp người phát triển hiểu kỹ hơn nhu cầu nào cần phải thực hiện (hình 1.2).Một biến thể của mô hình này là mô hình thăm dò, trong đó các yêu cầu đượccập nhật liên tục và bản mẫu được tiến hóa liên tục để trở thành sản phẩmcuối cùng Mô hình làm bản mẫu có một số vấn đề như:
• Do sự hoàn thiện dần (tiến hóa) của bản mẫu, phần mềm nhiều khi cótính cấu trúc không cao, dẫn đến khó kiểm soát, khó bảo trì
• Khách hàng nhiều khi thất vọng với việc phát triển phần mềm do họnhầm tưởng bản mẫu là sản phẩm cuối cùng hướng tới người sử dụng.Khách hàng cũng có thể không dành nhiều công sức vào đánh giá bảnmẫu
Hình 1.2: Mô hình làm bản mẫu.
Câu 6: Nêu phương pháp lập sơ đồ phân rã chức năng của hệ thống Cho
ví dụ minh họa