Bài giảng Công nghệ phần mềm - Chương 1: Giới thiệu Công nghệ phần mềm - Nguyễn Thanh Bình

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ꢇ  
• Dꢈ án lꢉn  
• không chuyên nghiꢁp  
•ꢏ1ꢏngưꢐi làm  
• chuyên nghiꢁp  
• nhiꢃu ngưꢐi làm  
•ꢏngưꢐi sꢆ dꢊng = ngưꢐi phát triꢇn • khách hàng & nhà cung cꢌp  
• 1 sꢉn phꢒm = mã nguꢘn  
• nhiꢃu sꢉn phꢒm  
• tiꢖn trình phát triꢇn ñơn giꢉn  
• tiꢖn trình phát triꢇn phꢓc tꢎp  
ꢀ
1968, 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ý  
• hꢍp ñꢘng không rꢝ ràng, không chꢚt chꢞ  
Nhân lꢛc  
• ñà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  
phꢀc tꢁp, bꢂn vꢃng và chꢄt 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)  
ꢁ
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  
ꢀ
ꢀ
Tính tái sꢆ dꢊng (reusability)  
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)  
ꢁ
dꢣ hiꢇu ñꢟi vꢀi ngưꢐi sꢆ dꢊng cũng như ñꢟi  
vꢀi ngưꢐi phát triꢇn  
ꢀ
Tính hꢍp tác (interoperability)  
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  
pdf 13 trang baolam 16660 Free
Bạn đang xem tài liệu "Bài giảng Công nghệ phần mềm - Chương 1: Giới thiệu Công nghệ phần mềm - Nguyễn Thanh Bình", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_cong_nghe_phan_mem_chuong_1_gioi_thieu_cong_nghe_p.pdf