Bộ môn Công nghệ phần mềm- Khoa CNTT- ĐHCNEmail: vynv@coltech.vnu.vn
Kỹ nghệ phần mềm
Software Engeneering
Trang 2NguyễnVănVỵ
Nội dung
Bài 2: Kỹ nghệ phần mềm
Định nghĩa vμ khái niệm Lịch sử phát triển
Trang 3NguyễnVănVỵ
TÀI LiỆU THAM KHẢO
1.Nguyễn Văn Vỵ, Nguyễn Việt Hà Giỏo trỡnh kỹ nghệ phần
mềm Nhà xuất bản Đại học Quốc gia Hà nội, 2008
2.Grady Booch, James Rumbaugh, Ivar Jacobson The Unified
Modeling language User Guid Addison-Wesley, 1998.
3.M Ould Managing Software Quality and Business Risk, John
Wiley and Sons, 1999.
4.Roger S.Pressman, Software Engineering, a Practitioner’s
Approach Fifth Edition, McGraw Hill, 2001.
5.Ian Sommerville, Software Engineering Sixth Edition,
Addison-Wasley, 2001.
6.Nguyễn Văn Vỵ Phõn tớch thiết kế hệ thống thụng tin hiện đại
Hướng cấu trỳc và hướng đối tượng, NXB Thống kờ, 2002, Hà
Trang 4NguyễnVănVỵ
Các định nghĩa kỹ nghệ phần mềm
SE lμthiết lập và sử dụng các nguyên lý công nghệ đúng đắnđể đ−ợ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 (Bauer [1969])
SE lμ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
phần mềm (Sommerville [1995])
Trang 5NguyễnVănVỵ
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
Trang 6NguyễnVănVỵ
Lịch sử của kỹ nghệ phần mềm
Đề 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 sơ đồ khối, lập trình top-downLập trình có cấu trúc (Dijkstra)
ph−ơng pháp chia mơdun một ch−ơng trình
Trang 7NguyễnVănVỵ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 (biểu đồ luồng, )
ắ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, kiểm thử
các ngơn ngữ bậc cao
ắBắt đầu quan tâm đến quản lý
Các độ do phần mềm
Quản lý theo thống kê
Trang 8NguyễnVănVỵ
Lịch sử của kỹ nghệ phần mềm
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 triển khai, chuẩn hóa
CASE hoμn thiện, đạt mức tự động hóa cao
Ngơn ngữ thế hệ 4 ra đời (LIPS, PROLOG, )
Công nghệ h−ớng đối t−ợng bắt đầu phát triển:Quy trình RUP, UML, Các cơng cụ đầy đủ (ROSE, JIBULDER, )
Trang 9NguyễnVănVỵ
Lịch sử của kỹ nghệ phần mềm
Phát triển (từ giữa 80s)
ắPhát triển công nghệ đối t−ợng
Kho dữ liệu, CSDL đối t−ợng, đa ph−ơng tiện
Định h−ớng sử dụng lại: thμnh phần, mẫu, Framework
Công nghệ Web: web services
ắPhát triển các mơ hình quản lý
Trang 10NguyễnVănVỵCác yếu tố cơ bản của - SETổng hợp: Kỹ nghệ phần mềm Lμ một q trình kỹ nghệ tích hợp:yThủ tục (procedures)yPh−ơng pháp (methods)yCông cụ (tools)
Trang 11NguyễnVănVỵ
Các thủ tục -Procedures
Qui trình phát triển vμ quản lý:
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ẩn đ−a ra (theo các chuẩn)
ắCó thể ở mức chung cho nhiều dự án
Trang 12NguyễnVănVỵ
Các ph−ơng pháp -methods
Cách lμm cụ thể để xây dựng phần mềm
Mỗi cơng đoạn có ph−ơng pháp riêng:
• Phân tích (xác định, đặc tả yêu cầu)
• Thiết kế(đặc tả kiến trúc, giao diện, dữ liêu, thủ tục)
• Lập trình (cấu trúc, h−ớng đối t−ợng)
• Kiểm thử (hộp đen, hộp trắng, áp lực, hồi quy, luồn sợi)
Trang 13NguyễnVănVỵ
Nội dung ph−ơng pháp th−ờng bao gồm:
yCác phân tử mơ hình: mô tả khái niệmyCác ký pháp: đặc tả phần tử
yCác quy tắc: liên kết các phân tử mơ hìnhyQuy trình xây dựng: trình tự tạo 1 mơ hình
yLời khun, cách dùng: cho mơ hình tốt vμ dùng nó
Trang 14NguyễnVănVỵluồng dữ liệukho dữ liệutiến trình Vẽ luồng dữ liệu mức 0 từ mơ hình nghiệp vụ Vẽ biểu đồ mức i: từ mỗi tiến trình mức i-1 ch−a làcơ sở- Tiến trình l là duy nhất- Các luồng vào 1 tiến
trình phải # các luồng ra
Trang 15NguyễnVănVỵ
Ví dụ: Biểu đồ luồng dữ liệu mức 0 bμi tốn trơng gửi xe 0HệthốngKháchDS thực thểa xxxxb xxxxc xxxxd xxxxe xxxxf xxxxabcdef1 RCURC2 RRUC3 RR01233.0giải quyết sựcốt.t xe
nét đỏ lμ phần thay thế hay thêm vμo
2.0trả xekháchvé xe"không g.q."
phiếu chibiên bản
Trang 16NguyễnVănVỵ
Các công cụ -tools
Trợ giúp tự động/bán tự động ph−ơng pháp
Computer Aided Software Engineering CASE
các công cụ trợ giúp các công đoạn khác nhau tiến trình phát triển phần mềm
Các ngơn ngữ lập trình
cơng cụ sinh giao diện (C Builder, )
hỗ trợ phân tích, thiết kế (Rwin, Modeler(Oracle Designer, Rational Rose, )
trợ giúp lập trình: compiler, debugger
trợ giúp quản lý: project management
Trang 17NguyễnVănVỵ
Các công cụ -tools
Trang 18NguyễnVănVỵ
Vòng đời phát triển hệ thống phần mềm
(systems development life cycle - SDCL)
Lμ các hoạt độngtừ khi đ−ợc đặt hàng, phát triển, sử dụng đến khi bị loại bỏ nó
Vịng đời chia thμnh các giai đoạn chính :
ắ xác định yêu cầu,ắ triển khai,
ắ kiểm thử,
ắ Vận hành, bảo trì và lặp lại
Trang 19NguyễnVănVỵ
Vịng đời phát triển phần mềm
Tùy mơ hình áp dụng, phân chia các pha, các
b−ớc có thể khác nhau : từ 3đến 20b−ớc
Xác định yêu cầuTriền khaiKiểm thử
Vận hành - Bảo trì
Trang 20NguyễnVănVỵ
Các b−ớc chung nhất phát triển
Trang 21NguyễnVănVỵXác định yêu cầuXác định: Hệ thống lμm gi?Những rμng buộc gì nó cần tn thủ? Phân tích hệ thống vai trị phần mềm trong hệ thống phác hoạ & chọn ph−ơng án khả thi
Lập kế hoạch
−ớc l−ợng, lập lịch, tổ chức, b−ớc đi, sản phẩm
Phân tích yêu cầu
cácyêu cầu cụ thể (chức năng, rμng buộc)
Trang 22NguyễnVănVỵ
Phát triển
Tạo ra phần mềm nh− thế nào?
Thiết kế (design)
dịch yêu cầu thμnh bản thiết kế HT nh− nó tồn tại
(mơi tr−ờng, kiến trúc, dữ liệu, xử lý, giao diện)
M∙ hóa (coding)
Chuyển thiết kế thμnh ch−ơng trình (của1 ngơn ngữ)
Kiểm thử (testing)
sửa lỗi, hoμn thiện ch−ơng trình (kiểm thử đơn vị, tích hợp,
Trang 23NguyễnVănVỵ
Vận hμnh, bảo trì
Hịan thiện hệ thống sau khi đ−a vào hoạt động?
Sửa lỗi: để vận hμnh thơng suốt
Thích nghi: với môi tr−ờng (kỹ thuật, nghiệp vụ) đã thay đổi để hoạt động hiệu quả
Nâng cao: Hoμn thiện chức năng, phát triển dựphịng
Trang 24NguyễnVănVỵ
Tiến trình phần mềm
Tiến trình phần mềm (software process) lμ một tập các hoạt động có cấu trúc nhằm phát triển vμ tiến hóa 1 phần mềm
Một tiến trình cụ thể phải trả lời đ−ợc các câu hỏi: lμm gì? khi nμo? ai lμm? nh− thế nμo? bằng gì? ở đâu? kết quả? tiêu chí đánh giá?
Đặc tr−ng
Gắn với mỗi dự án
Có cấu trúc xác định (cơng việc, trình tự, cơng cụ,
Trang 25NguyễnVănVỵ
Tiến trình phần mềm
Các hoạt động chínhcủa mọi tiến trình
Xác định yêu cầu:định rõ yêu cầu sản phẩm
Phát triển:tạo ra sản phẩm
Thẩm định:phần mềm đáp ứng đ−ợc yêu cầu khơng?
Tiến hóa phần mềm:thay đổi nhằm đáp ứng u cầu thay đổi (người dùng, môi trường)
Trang 26NguyễnVănVỵ
Tiến trình phần mềm
1.Xác định yêu cầu (Requirements)
Trang 29NguyễnVănVỵ
4.Tiến hóa phần mềm (Evolution)
đội phát triểnThẩm địnhHệ thống phần mềm đáp ứng yêu cầufile.exefile.comHệ thống phần mềm đ−ợc tiến hóafile.exefile.comfile.com
mơi tr−ờng thay đổi
Trang 30NguyễnVănVỵ
Mơ hình tiến trình phần mềm
Mơ hình tiến trình (software process model) lμ
cách biểu diễn trừu t−ợng tiến trình phần mềm theo cách nhìn cụ thể.Cơng việc 1Cơng việc 2Cụng việc 1.1.1Công việc 1.1Cụng việc 1.2Cụng việc 2.1Cụng việc 2.1.1TIẾN TRèNH CỤ THỂ
Giai đoạn 1Giai đoạn 2Giai đoạn 3
Trang 31NguyễnVănVỵ
Chi phí của kỹ nghệ phần mềm
ắ Chi phí kỹ nghệ phần mềm:lμ các
khoản chi liên quan đến toμn bộ sự phát triển
ắ Chi phí phụ thuộc:
Loại hệ thống (đơn giản, phức tạp)
Yêu cầu đặt ra (nhiều, ít, cao, thấp)
Mức độ hoμn thiện (hiệu năng, độ tin cây, an toμn, )
Năng lực của tổ chức (nhân lực, cơng nghệ, cơng cụ, kỹ năng có đ−ợc)
Trang 32NguyễnVănVỵ
Chi phí của kỹ nghệ phần mềm
Chi phớ phỏt triển tiến húa
đặc tảthiết kếphỏt triểnkiểm thử tớch hợp
0255075100
Phõn bố chi phớ phỏt triển (nói chung)
262338
13
đặc tảphỏt triển tiến húakiểm thử hệ thống
0255075100
Trang 33NguyễnVănVỵ
Chi phí của kỹ nghệ phần mềm
Chi phí hệ có vịng đời dμi
phỏt triển hệ thốngtiến húa hệ thống
0255075100
2575
đặc tảphỏt triểnkiểm thử hệ thống
0255075100
chi phớ phỏt triển sản phẩm trực tuyến
3557
Trang 34NguyễnVănVỵQuy mơ phần mềmKích cỡ phần mềm ảnh h−ởng lớn đến chi phíKích cỡ th−ờng đo bằng số dịng lệnhKích cỡ phần mềm phụ thuộc:• Bμi tốn• Thiết kế• Ngơn ngữ lập trình (& trình độ ng−ời lập)
Trang 37NguyễnVănVỵ
Tính bảo trì đ−ợc
Kiến trúc tốt: kết dính chặt, ghép nối lỏng (dễ đọc, dễ
sửa, dễ phát triển, ảnh h−ởng cục bộ)
cμi đặt bằng ngôn ngữ bậc cao (dễ đọc, viết nhanh)
tμi liệu đầy đủ, tốt (dễ theo dõi, dễ hiểu, có cơ sở sửa, )
Có tuổi thọ cao, phụ vụ nhiều
Chi phí bảo trì thấp ặ cho hiệu quả
"Phần mềm ln có u cầu sửa đổi“
Trang 38NguyễnVănVỵ
Đáng tin cậy
Đáp ứng đ−ợc nhu cầu ng−ời sử dụng
Đảm bảo các chức năng cần
Ôn định, thời gian lμm việc không lỗi lớn Cho kết quả xác đáng
Phần mềm có ít khiếm khuyết về: lỗi lập trình
Trang 39NguyễnVănVỵ
Tính hiệu quả
Khơng sử dụng lãng phí tμi ngun phần cứng
Để tối −u hóa cần:
Đòi hỏi bộ nhớ lớn Đòi hỏi tốc độ cao
Chiếm không gian đĩa lớn,
dùng ngôn ngữ bậc thấp
truy cập trực tiếp đến thiết bị sử dụng thuật toán viết gọn
Cần tối ưu hợp lý
Trang 40NguyễnVănVỵ
Tiện dụng, tinh vi
Giao diện phù hợp với trình độ của ng−ời dùng
Học nhanh, nhớ lâu, dễ thao tác
Có đủ tμi liệu & nhiều tiện ích, trợ giúp thông minh
Trang 41NguyễnVănVỵ
Cần cân đối, thỏa hiệp giữa các u cầu
•Khó tối −u đồng thời các thuộc tính
giá cả, hiệu quả>>> <<<dễ bảo trì, sử dụng, sự tinh viChi phí cho tối −u khơng tuyến tính (lμ hμm mũ)
Trang 42NguyễnVănVỵ
Kỹ nghệ hệ thống(System Engineering)
Kỹ nghệ hệ thốnglμ toμn bộ công việcphát triển hệthống dựa trên máy tính (computer based system):
Trang 43NguyễnVănVỵ
Kỹ nghệ hệ thống
Đặc tính nổi trội của hệ thống dựa trên máy tính
• Thuộc tính chức năng: điều khiển 1 hệ
• Thuộc tính phi chức năng: độ tin cậy, an toμn
Mμ:
từng bộ pbận khơng thể có đ−ợc
quyết định đến toμn hệ thống
Kỹ nghệ hệ thốngliên quan đến:
• áp dụng các ngun lý tích hợp
Trang 44NguyễnVănVỵ
Kỹ nghệ hệ thống
Trang 45NguyễnVănVỵ
Khái niệm liên quan - Khoa học máy tính
(Computer Sience)
ắ Khoa học máy tínhliên quan đến những vấn đề lý thuyết vμ nền tảng cho máy tính vμ phần mềm
ắ Kỹ nghệ phần mềmliên quan đến thực tiễn của việc phát triển vμ xuất ra các phần mềm hiệu quả
Trang 46NguyễnVănVỵKiến trúc vμphần cứng máy tínhHạ tầng các hệ thốngcông nghệvμ ph pháp phần mềmCác công nghệ ứng dụngtơ chức vμcác HTTTCác lĩnh vực tính tốn
(computing curricula 11/2004 -ACM, AIS, IEEE)
Lý thuyết, ứng dung
SE
CS
Trang 47NguyễnVănVỵ
Mỗi lĩnh vực tínnh tốn đ−ợc giới hạn bằng một vùng với biên có màu sau:
Trang 48NguyễnVănVỵ
Câu hỏi ôn tập
1)Định nghĩa kỹ nghệ phần mềm -SE?
2)Các giai đoạn lịch sử phát triển SE? đặc tr−ng của mỗi giai đoạn (sản phẩm, ph−ơng pháp, công cụ, quản lý vμ tổ chức lμm việc)?
3)Giải thích nội dung các yếu tố cơ bản trong SE? Lấy ví dụ minh hoạ về ph−ơng pháp, cơng cụ?
4)Tiến trình phần mềm lμ cái gì? Các b−ớc chung nhất của tiến trình lμ gì?
Trang 49NguyễnVănVỵ
Câu hỏi ơn tập
6)Trình bμy một số mơ hình tiến trình cơ bản (nội dung, −u, nh−ợc, thích hợp khi nμo)?
7)Chi phí của SE gồm những thμnh phần nμo? nó phụ thuộc vμo những cái gì?
8)Kỹ nghệ hệ thống lμ gì? Quan hệ với kỹ nghệ phần mềm ra sao?
9)Các thuộc tính của phần mềm đ−ợc kỹ nghệ tốt?
Trang 50NguyễnVănVỵ