Tải bản đầy đủ (.pdf) (16 trang)

kỹ nghệ phần mềm c

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (675.64 KB, 16 trang )

1
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 1
Nhập môn
Kỹ nghệ Phần mềm
Bài giảng cho lớp K50CA và K50CB
Giảng viên: PGS.TS. Nguyễn NgọcBình
Email:
Http://www.jaist.ac.jp/~jaist
Giảng viên hỗ trợ: TS. Trương Anh Hoàng
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 2
Cấutrúcmônhọc
z 45 tiết+ Bàitậplớn+ Kiểmtra
z Cầnnhững kiếnthứccănbảnvề CNTT
z Cung cấpnhững nguyên lý chung về Kỹ
nghệ Phầnmềm(KNPM)
z Cung cấpkiếnthức để học các môn chuyên
ngành hẹpnhư Phân tích và thiếtkế phần
mềm, Xây dựng và đánh giá phầnmềm,
Quảntrị dự án phầnmềm,
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 3
Website môn học
http://10.10.0.10/courses/
z Thông báo
z Diễn đàn
z Tài liệu tham khảo
z Bài giảng
z Yêu cầu bài tập/ đề bài kiểmtra
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 4
Mụctiêumônhọc
z Truyền đạt các nguyên lý / kỹ thuật
chung để phát triển đượcphầnmềm


chấtlượng cao, giá cả hợplý
(Làm phầnmềmmột cách chuyên nghiệp,
công nghiệp)
z Tầmquantrọng củakỹ thuật này
z Định hướng cho việctiếpcậncáckiến
thức liên quan
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 5
Nội dung môn học
z Tổng quan phầnmềmvàkỹ nghệ phần
mềm
• Vai trò và tầm quan trọng củaphầnmềm
• Khó khănvàtháchthức đốivới phát triển
phầnmềm
• Tổng quan về kỹ nghệ phầnmềm
z Tiến trình và mô hình tiến trình phần
mềm
• Khái niệm
• Cácmôhìnhtiếntrìnhtổng quát, cụ thể
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 6
Nội dung môn học (tiếp)
z Quảnlýdự án phát triểnphầnmềm
• Khái niệm, vai trò, mụctiêucủaquảnlýdự án
• Các yếutố quảnlý
• Các hoạt động quảnlý(phương pháp, công
cụ hỗ trợ)
z Phân tích và đặctả yêu cầu
• Vai trò của phân tích và đặctả yêu cầu
• Các hoạt động phân tích, đặctả yêu cầu.
• Phương pháp, công cụ để phân tích, đặctả
yêu cầu.

2
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 7
Nội dung môn học (tiếp)
z Thiếtkế phầnmềm
• Khái niệm, nguyên lý, chấtlượng thiếtkế
phầnmềm
• Thiếtkế kiến trúc, thiếtkế giao diện
• Mộtsố phương pháp, công cụ thiếtkế
z Lậptrình
• Phong cách lậptrình
• Lậptrìnhtránhlỗi
• Lậptrìnhhướng hiệuquả
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 8
Nội dung môn học (tiếp)
z Kiểmthử
• Khái niệm, các loạikiểmthử
• Quy trình, công cụ trợ giúp kiểmthử
• Viếttàiliệukiểmthử
z Tích hợp, chuyểngiaovàbảotrì
• Khái niệm
• Các nguyên lý, hoạt động tích hợp
• Các hoạt động chuyển giao, bảotrì
• Cácvấnđềcủahoạtđộngbảotrì
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 9
Tài liệuthamkhảo
z http://10.10.0.10/courses/ - website môn học
z Bài giảng Kỹ nghệ phầnmềm (NguyễnViệt Hà, trên website môn
học)
z Nguyễn Văn Vỵ, Nguyễn Việt Hà, Giáo trình Kỹ nghệ phần mềm,
Khoa CNTT, ĐH Công nghệ (có tại bộ môn Công nghệ phần mềm –

Khoa Công nghệ thông tin – Trường ĐHCN)
z R. Pressman, Software Engineering: A Practioner’s Approach. 6th
Ed., McGraw-Hill, 2004
z R. Pressman, Kỹ nghệ phầnmềm. Tập 1, 2, 3. NXB Giáo dục, Hà
Nội, 1997 (Ngườidịch: Ngô Trung Việt)
z I. Sommerville, Software Engineering. 7th Ed., Addison-Wesley,
2004
z K. Kawamura, Nhập môn Công nghệ họcPhầnmềm. NXB Kinki-
Kagaku, Tokyo, 2001 (Tiếng Nhật)
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 10
Yêu cầu
z Nắm được các nguyên lý / khái niệm
cơ bảncủakỹ nghệ phầnmềm
z Vậndụng kiếnthức vào bài tập
nhóm
• Hiểuvề quá trình làm phầnmềm
• Minh họa nguyên lý / kỹ thuật
z Tìm hiểumộtsố chủ đề mở rộng
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 11
Yêu cầu
z Thường xuyên theo dõi thông tin trên
Website
z Lấyyêucầu bài tậpvànộp bài trên Website
z Xem điểm bài tậptrênWebsite
z Tham gia diễn đàn môn họctrênWebsite
z Đưacácthắcmắc, kiếnnghị về môn học
trên Website
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 12
Điểmsố, đánh giá
z Điểmthicuốikỳ (50-60%)

z Bài tậplớn theo nhóm (20-30%)
z Kiểmtragiữakỳ (20-30%)
z Xét điềukiệnthicuốikỳ
z Tính điểm chung
3
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 13
NHẬP MÔN
KỸ NGHỆ PHẦN MỀM
CHƯƠNG 1:
Bản chất phần mềm
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 14
1.1 Định nghĩa chung về phầnmềm
1.2 Kiếntrúcphầnmềm
1.3 Các khái niệm
1.4 Đặctínhchungcủaphầnmềm
1.5 Thế nàolàphầnmềmtốt?
1.6 Các ứng dụng phầnmềm
Nội dung
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 15
1.1. Định nghĩa chung về phầnmềm
z Phầnmềm (Software - SW) như một
khái niệm đối nghĩavớiphầncứng
(Hardware - HW), tuy nhiên, đây là 2
khái niệmtương đối
z Từ xưa, SW như thứ được cho không
hoặc bán kèm theo máy (HW)
z Dầndần, giá thành SW ngày càng cao
và nay cao hơnHW
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 16
Các đặctínhcủaSW vàHW

HW
z Vật“cứng”
z Kim loại
z Vậtchất
z Hữuhình
z Sảnxuất công
nghiệpbởimáymóc
là chính
z Định lượng là chính
z Hỏng hóc, hao mòn
SW
z Vật“mềm”
z Kỹ thuậtsử dụng
z Trừutượng
z Vô hình
z Sảnxuấtbởi con
người là chính
z Định tính là chính
z Không hao mòn
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 17
Định nghĩa1: Phầnmềmlà
z Các lệnh (chương trình máy tính)
khi đượcthựchiện thì cung cấp
những chứcnăng và kếtquả mong
muốn
z Các cấutrúcdữ liệulàmcho
chương trình thao tác thông tin
thích hợp
z Các tư liệumôtả thao tác và cách
sử dụng chương trình

Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 18
SW đối nghĩavớiHW
z Vai trò SW ngày càng thể hiệntrội
z Máy tính là . . . chiếchộp không có
SW
z Ngày nay, SW quyết định chất
lượng mộthệ thống máy tính
(HTMT), là chủ đề cốt lõi, trung tâm
củaHTMT
z Hệ thống máy tính gồmHW vàSW
4
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 19
Định nghĩa2
z Trong mộthệ thống máy tính, nếutrừ bỏ
đicácthiếtbị và các loạiphụ kiệnthì
phầncònlại chính là phầnmềm(SW)
z Nghĩahẹp: SW là dịch vụ chương trình
để tăng khả năng xử lý củaphầncứng
củamáytính(như hệ điều hành - OS)
z Nghĩarộng: SW là tấtcả các kỹ thuật
ứng dụng để thựchiệnnhững dịch vụ
chứcnăng cho mục đích nào đóbằng
phầncứng
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 20
SW theo nghĩarộng
z Không chỉ SW cơ bảnvàSW ứng dụng
z Phảigồmcả Khả năng, kinh nghiệm
thựctiễnvàkỹ năng củakỹ sư (người
chế ra phầnmềm): Know-how of
Software Engineer

z Là tấtcả các kỹ thuậtlàmchosử dụng
phầncứng máy tính đạthiệuquả cao
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 21
Phầnmềmlàgì?
Nhóm các
Kỹ thuật,
Phương pháp
luận
Nhóm các
chương trình
Nhóm các
tư liệu
Kinh nghiệmkỹ sư,
know-how
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 22
Nhóm các kỹ thuật, phương pháp luận
z Các khái niệmvàtrìnhtự cụ thể hóa mộthệ
thống
z Các phương pháp tiếpcậngiải quyếtvấn đề
z Các trình tự thiếtkế và phát triển được
chuẩn hóa
z Các phương pháp đặctả yêu cầu, thiếtkế hệ
thống, thiếtkế chương trình, kiểmthử, toàn
bộ quy trình quản lý phát triểnphầnmềm
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 23
Nhóm các chương trình
z Là phầngiaodiệnvớiphầncứng, tạo thành
từ các nhóm lệnh chỉ thị cho máy tính biết
trình tự thao tác xử lý dữ liệu
z Phầnmềmcơ bản: vớichứcnăng cung cấp

môi trường thao tác dễ dàng cho ngườisử
dụng nhằmtăng hiệunăng xử lý củaphần
cứng (ví dụ như OS là chương trình hệ thống)
z Phầnmềm ứng dụng: dùng để xử lý nghiệp
vụ thích hợp nào đó(quản lý, kế toán, . . .),
phầnmềm đóng gói, phầnmềmcủangười
dùng, . . .
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 24
Nhóm các tư liệu
z Những tư liệuhữu ích, có giá trị cao và
rấtcầnthiết để phát triển, vận hành và
bảotrìphầnmềm
z Để chế ra phầnmềmvới độ tin cậycao
cầntạoracáctư liệuchấtlượng cao:
đặctả yêu cầu, mô tả thiếtkế từng loại,
điềukiệnkiểmthử, thủ tụcvận hành,
hướng dẫnthaotác, …
5
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 25
Những yếutố khác
z Sảnxuấtphầnmềmphụ thuộcrất nhiều
vào con người(kỹ sư phầnmềm). Khả
năng hệ thống hóa trừutượng, khả năng
lập trình, kỹ năng công nghệ, kinh
nghiệmlàmviệc, tầm bao quát, . . .:
khác nhau ở từng người
z Phầnmềmphụ thuộcnhiềuvàoýtưởng
(idea) và kỹ năng (know-how) của
người/nhóm tác giả
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 26

1.2 Kiến trúc phần mềm
(Software Architecture)
z Có hàng chục định nghĩa khác nhau về KTPM
( />z Kiến trúc phần mềm là cấu trúc tổng thể của phần mềm và
những cách thức mà cấu trúc đó cung cấp gắn kết khái niệm
với nhau thành một hệ thống (the overall structure of the
software and the ways in which that structure provides
conceptual integrity for a system)
z Kiến trúc phần mềm là cấu trúc phân cấp của các thành phần
chương trình (mô-đun) và cách thức để những thành phần này
tương tác với nhau, cũng như những cấu trúc dữ liệu được
dùng trong các thành phần(the hierachical structure of
program components (modules), the manner in which these
components interact, the the structure of the data that are used
by the components).
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 27
Kiến trúc phần mềm
(Software Architecture)
z Software Architecture is defined as it is an
organized collection of inter-related structural
elements types for solving a software design
problem.
z Structural Elements Types:
• a) Components
• b) Connectors
• c) Configuration
• d) Constraints and
• e) Rationale
z Characteristics, Classification, and
Definations must be given for all the above.

Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 28
1.2 Kiếntrúcphầnmềm
1.2.1 Phầnmềm nhìn từ cấutrúcphâncấp
z Cấutrúcphầnmềmlàcấu trúc phân
cấp (hierarchical structure): mứctrên
là hệ thống (system), dướilàcáchệ
thống con (subsystems)
z Dướihệ thống con là các chương
trình
z Dướichương trình là các Modules
hoặc Subroutines vớicácđốisố
(arguments)
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 29
Kiếntrúcphầnmềm
System
Subsystem Subsystem
Program Program
Module Module Subroutine
Master files
Temporary
files
Arguments Arguments
Job unit
Jobstep unit
Member unit
Common Module


Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 30
1.2.2 Phầnmềm nhìn từ cấutrúcvàthủ tục

z Hai yếutố cấu thành củaphầnmềm
• Phương diệncấutrúc
• Phương diệnthủ tục
z Cấutrúcphầnmềm: biểuthị kiếntrúccác
chứcnăng mà phầnmềm đócóvàđiềukiện
phân cấpcácchứcnăng (thiếtkế cấutrúc)
z Thiếtkế chứcnăng: theo chiều đứng (càng
sâu càng phứctạp) và chiều ngang (càng
rộng càng nhiềuchứcnăng, qui mô càng lớn)
6
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 31
Cấutrúcphầnmềm
Fuction A
Function B Function C
Function D Function E
Function F
Cấutrúcchiều ngang
(Horizontal structure)
Cấutrúcchiều ứng
(Vertical structure)
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 32
Thủ tục (procedure) phầnmềm
z Là những quan hệ giữa các trình tự mà phần
mềm đócó
z Thuật toán vớinhững phép lặp, rẽ nhánh,
điềukhiểnluồng xử lý (quay lui hay bỏ qua)
z Là cấutrúclôgicbiểuthị từng chứcnăng có
trong phầnmềmvàtrìnhtự thựchiện chúng
z Thiếtkế cấutrúctrướcrồi sang chứcnăng
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 33

1.3 Các khái niệm
z Khi chế tác phầnmềmcầnnhiềukỹ
thuật
• Phương pháp luận (Methodology): những
chuẩnmựccơ bản để chế tạophầnmềm
với các chỉ tiêu định tính
• Các phương pháp kỹ thuật (Techniques):
những trình tự cụ thể để chế tạophần
mềm và là cách tiếpcậnkhoahọcmang
tính định lượng
z Từ phương pháp luậntriểnkhaiđến
kỹ thuật
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 34
Các khái niệmphầnmềm
(Software concepts)
z Khái niệm tính môđun (modularity concept)
z Khái niệm chi tiết hóa dầntừng bước
(stepwise refinement concept)
z Khái niệmtrừutượng hóa (abstraction
concept): về thủ tục, điềukhiển, dữliệu
z Khái niệm che giấu thông tin (information
hiding concept)
z Khái niệmhướng đốitượng (object oriented)
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 35
Từ phương pháp luậnphầnmềm sang kỹ
thuậtphầnmềm
Tính Môđun
Chi tiếthóadần
Trừutượng hóa
(Che giấut.tin)

Phân tích cấutrúc
Thiếtkế cấutrúc
Lậptrìnhcấutrúc
Dữ liệutrừutượng
Hướng đốitượng
Khái niệmphầnmềm
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 36
1.3.1 Tính môđun (Modularity)
z Là khả năng phân chia phầnmềm thành các
môđun ứng vớicácchứcnăng, đồng thời
cho phép quảnlýtổng thể: khái niệm phân
chia và hợp (partion and merge)
z Hai phương pháp phân chia môđun theo
chiều
• sâu (depth, thẳng đứng): điềukhiểnphứctạpdần
• rộng (width, nằm ngang): môđun phụ thuộcdần
z Quan hệ giữacácmôđun: qua các đốisố
(arguments)
7
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 37
Chuẩn phân chia môđun
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 38
1.3.2 Chi tiết hóa từng bước
Cách tiếpcậntừ trên xuống (top-down approach)
Ngôn ngữ
chương trình
Chi
tiÕt
hãa
tõng

b−íc
Thế giới bên ngoài
Đặctả yêu cầu
Trừutượng hóa mứccao:
Thế giới bên ngoài,
trạng thái chưarõràng
Trừutượng hóa mức trung gian:
Xác định yêu cầuvàđặctả
Những định nghĩayêucầu
Trừutượng hóa mứcthấp:
Từng lệnh củachương trình được
viếtbởingônngữ thủ tụcnàođó
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 39
Ví dụ: Trình tự giải quyếtvấn đề từ mức
thiếtkế chương trình đếnmứclậptrình
z Bài toán: từ một nhóm N số khác nhau
tăng dần, hãy tìm số có giá trị bằng K
(nhậptừ ngoài vào) và in ra vị trí củanó
z Giảitừng bước, từ khái niệm đến chi tiết
hóa từng câu lệnh bởi ngôn ngữ lập
trình nào đó
z Chọngiảithuật tìm kiếmnhị phân (pp
nhị phân)
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 40
Cụ thể hóa thủ tụcqua cácchứcnăng
Bài toán đãcho
Nhậpgiátrị K
Nhậngiátrị nhóm N số
Tìm kiếmgiátrị (PP nhị phân)
In ra vị trí (nếucó)

Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 41
Cụ thể hóa bướctiếptheo
Tìm kiếmgiátrị
(pp nhị phân)
Xác lậpphạmvi mảng số
Lặplạixử lý tìm kiếmgiátrị K
trong phạmvi tìmkiếm
Tìm vị trí giữa phân đôi mảng
So sánh K với giá trị giữa
Đặtlạiphạm vi tìm kiếm
Lặplạitìmkiếm K trong
phạm vi tìm kiếm
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 42
Mứcmôtả chương trình (bằng PDL)
Bắt đầu
ĐọcK
Nhậngiá trị cho mảng 1 chiều A(I), (I =1, 2, . . . ,.N)
MIN = 1
MAX = N
DO WHILE (Có giá trị bằng K không? Cho đến khi MIN > MAX)
Lấy MID = (MIN + MAX) / 2
IF A(MID) > K THEN
MAX = MID - 1
ELSE
IF A(MID) < K THEN
MIN = MID + 1
ELSE
In giá trị MID
ENDIF
ENDIF

ENDDO
Kếtthúc
8
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 43
1.3.3 Khái niệmChegiấu thông tin
z Để phân rã phầnmềm thành các môđun
mộtcáchtốtnhất, cần tuân theo nguyên
lý che giấu thông tin: “các mô
đ
un nên
đ
ược
đ
ặctrưng bởinhững quyết
đ
ịnh
thiếtkế sao cho mỗimô
đ
un ẩnkín
đ
ối
vớicácmô
đ
un khác” [Parnas1972]
z Rấthữu ích cho kiểmthử và bảotrì
phầnmềm
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 44
Khái niệmTrừutượng hóa
z Abstraction cho phép tập trung vấn đềở
mứctổng quát, gạt đinhững chi tiếtmức

thấp ít liên quan
z 3 mứctrừutượng
• Trừutượng thủ tục: dãy các chỉ thị vớichứcnăng
đặc thù và giớihạnnàođó
• Trừutượng dữ liệu: tậphợpdữ liệumôtả đối
tượng dữ liệunàođó
• Trừutượng điềukhiển: Cơ chế điềukhiển
chương trình không cần đặctả những chi tiếtbên
trong
z Ví dụ: Mở cửa. Thủ tục: Mở gồm . . .; Dữ
liệu: Cửalà. . .
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 45
1.4 Đặctínhchungcủaphầnmềm
z Là hàng hóa vô hình, không nhìn thấy được
z Chấtlượng phầnmềm: không mòn đimàcó
xu hướng tốtlênsaumỗilầncólỗi (error/bug)
được phát hiệnvàsửa
z Phầnmềmvốnchứalỗitiềm tàng, theo quy
mô càng lớnthìkhả năng chứalỗi càng cao
z Lỗiphầnmềmdễ được phát hiệnbởingười
ngoài
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 46
Đặc tính chung củaphầnmềm
z Chứcnăng củaphầnmềmthường biếnhóa,
thay đổi theo thời gian (theo nơisử dụng)
z Hiệu ứng làn sóng trong thay đổiphầnmềm
z Phầnmềmvốnchứaýtưởng và sáng tạo
của tác giả / nhóm tác giả làm ra nó
z Cầnkhả năng “tư duy nhị phân” (binary
thinking) trong xây dựng, phát triểnphần

mềm
z Có thể sao chép rất đơngiản
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 47
1.5 Thế nào là phầnmềmtốt?
Hiệusuấtxử lý
Các chỉ tiêu cơ bản
Tính dễ hiểu
Thờigian
(Phầncứng phát triển)
Yếu
tố
khái
niệm
phần
mềm
tốt
Đặc
trưng
gần
đây
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 48
1.5.1 Các chỉ tiêu cơ bản
z Phản ánh đúng yêu cầungườidùng
(tính hiệuquả - effectiveness)
z Chứaítlỗitiềm tàng
z Giá thành không vượt quá giá ước
lượng ban đầu
z Dễ vận hành, sử dụng
z Tính an toàn và độ tin cậycao
9

Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 49
1.5.2 Hiệusuấtxử lý cao
z Hiệusuấtthờigiantốt (efficiency):
• Độ phứctạptínhtoánthấp(Time
complexity)
• Thời gian quay vòng ngắn (Turn Around
Time: TAT)
• Thờigianhồi đáp nhanh (Response time)
z Sử dụng tài nguyên hữuhiệu: CPU,
RAM, HDD, Internet resources, . . .
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 50
1.5.3 Tính dễ hiểu
z Kiếntrúcvàcấutrúcthiếtkế dễ hiểu
z Dễ kiểmtra, kiểmthử, kiểmchứng
z Dễ bảotrì
z Có tài liệu(môtả yêu cầu, điềukiệnkiểm
thử, vận hành, bảo trì, FAQ, . . .) vớichất
lượng cao
Tính dễ hiểu: chỉ tiêu ngày càng quan trọng
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 51
1.6 Các ứng dụng phầnmềm
z Phầnmềmhệ thống (System SW)
z Phầnmềmthờigianthực (Real-time SW)
z Phầnmềm nghiệpvụ (Business SW)
z Phầnmềm tính toán KH&KT (Eng.&Scie. SW)
z Phầnmềm nhúng (Embedded SW)
z Phầnmềm máy cá nhân (Personal computer
SW)
z Phầnmềm trên Web (Web-based SW)
z Phầnmềmtrítuệ nhân tạo(AI SW)

Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 52
CHƯƠNG 2:
Khủng hoảng phầnmềm
(Software Crisis)
và Khái niệmKỹ nghệ phần mềm
(Software Engineering)
2.1 Khủng hoảng phầnmềmlàgì?
2.2 Những vấn đề (khó khăn) trong
sảnxuấtphầnmềm
2.3 Định nghĩa Kỹ nghệ phần mềm
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 53
2.1 Khủng hoảng phầnmềmlàgì?
z 10/1968 tạiHội nghị củaNATO cácchuyêngia
phầnmềm đã đưarathuậtngữ “Khủng hoảng
phầnmềm” (Software crisis). Qua hàng chụcnăm,
thuậtngữ này vẫn được dùng và ngày càng mang
tính cấpbách
z Khủng hoảng là gì ? [Webster’s Dict.]
• Điểm ngoặt trong tiếntrìnhcủasự vật, sự kiện nào đó;
thời điểm, giai đoạnhoặcbiếncố quyết định hay chủ chốt
• Điểm ngoặt trong quá trình diễnbiếnbệnh khi trở nên rõ
ràng bệnh nhân sẽ sống hay chết
z Trong phầnmềm: Day dứt kinh niên (chronic
affliation, by Prof. Tiechrow, Geneva, Arp. 1989)
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 54
Khủng hoảng phầnmềm là gì? (tiếp)
Là sự day dứtkinhniên(kéodàitheothờigianhoặc
thường tái diễn, liên tục không kết thúc) gặpphải trong
phát triểnphầnmềm máy tính, như
z Phảilàmthế nào vớiviệcgiảmchấtlượng và những lỗi

tiềm tàng có trong phầnmềm?
z Phảixử lý ra sao khi bảodưỡng phầnmềm đãcó?
z Phảigiải quyếtthế nào khi thiếukỹ thuậtviênphầnmềm?
z Phảichế tác phầnmềmrasaokhicóyêucầu phát triển
theo qui cách mớixuấthiện?
z Phảixử lý ra sao khi sự cố phầnmềmgâyranhững vấn
đề xã hội?
10
B mụn Cụng ngh phnmm Khoa CNTT- HCN- HQGHN K ngh phnmm Slide 55
Mts yut
z Phnmmcnglns kộotheophc
tphúavtng chi phớ phỏt trin
z i vai trũ giỏ thnh SW vs. HW
z Cụng scchobotrỡcngtng thỡ chi
phớ cho Backlog cng ln
z Nhõn lccha ỏp ng cnhucu
phnmm
z Nhng phinhcaphnmmgõyra
nhng vn xó hi
B mụn Cụng ngh phnmm Khoa CNTT- HCN- HQGHN K ngh phnmm Slide 56
So sỏnh chi phớ cho
Phncng v Phnmm
%
100
80
60
40
20
0
-

-
-
-
+
1955
+
1970
+
2000
+
1985
Phncng
Phỏt trin
Botrỡ
Phn
Mm
B mụn Cụng ngh phnmm Khoa CNTT- HCN- HQGHN K ngh phnmm Slide 57
So sỏnh chi phớ cho cỏc pha
3
3
5
7
8
7
67
Xác định yêu cầu 3%
Đặc tả 3%
Thiết kế 5%
Lập trình 7%
Kiểm thử môđun 8%

Kiểm thử tích hợp 7%
Bảo trì 67%
B mụn Cụng ngh phnmm Khoa CNTT- HCN- HQGHN K ngh phnmm Slide 58
2.2 Nhng vn (khú khn) trong
snxutphnmm
(1) Khụng cú phngphỏpmụt rừ rng
nh nghayờucucangi dựng
(khỏch hng), sau khi bn giao snphm
d phỏt sinh nhng trctrc (troubles)
(2) Vinhng phnmm quy mụ ln, t liu
ct óc nh thi gian di, do vy
khú ỏp ng nhu cu thay icangi
dựng mtcỏchkpthitrongthigianú
B mụn Cụng ngh phnmm Khoa CNTT- HCN- HQGHN K ngh phnmm Slide 59
Nhng vn trong
snxutphnmm(tip)
(3) NukhụngcúPhng phỏp lunthit
k nhtquỏnmthitk theo cỏch
riờng (ca cụng ty, nhúm), thỡ s dn
n suy gimchtlng phnmm
(do ph thuc quỏ nhiu vo con
ngi)
(4) Nukhụngcúchunv lm t liu
quy trỡnh snxutphnmm, thỡ
nhng ct khụng rừ rng s lm
gimchtlng phnmm
B mụn Cụng ngh phnmm Khoa CNTT- HCN- HQGHN K ngh phnmm Slide 60
Nhng vn trong
snxutphnmm(tip)
(5) Nu khụng kimth tớnh ỳng nca

phnmm tng giai onmch kim
giai oncui v phỏt hinrali, thỡ
thng bn giao snphm khụng ỳng
hn
(6) Nucoitrng viclptrỡnhhn khõu thit
k thỡ thng dn n lm gimchtlng
phnmm
(7) Nucoithng victỏis dng ph
nmm
(software reuse), thỡ nng sutlaong s
gim
11
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 61
Những vấn đề trong
sảnxuấtphầnmềm(tiếp)
(8) Phầnlớn trong quy trình phát triểnphần
mềm có nhiều thao tác do con ngườithực
hiện, do vậynăng suấtlaođộng thường bị
giảm
(9) Không chứng minh được tính đúng đắn
củaphầnmềm, do vậy độ tin cậycủaphần
mềmsẽ giảm
(10) Chuẩnvề mộtphầnmềmtốt không thể đo
đượcmộtcáchđịnh lượng, do vậy không
th
ể đánh giá đượcmộthệ thống đúng đắn
hay không
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 62
Những vấn đề trong
sảnxuấtphầnmềm(tiếp)

(11) Khi đầutư nhân lựclớnvàobảotrì
sẽ làm giảmhiệusuấtlaođộng của
nhân viên
(12) Công việcbảo trì kéo dài làm giảm
chấtlượng củatư liệuvàảnh hưởng
xấu đếnnhững việc khác
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 63
Những vấn đề trong
sảnxuấtphầnmềm(tiếp)
(13) Quảnlýdự án lỏng lẻokéotheoquảnlý
lịch trình cũngkhôngrõràng
(14) Khôngcótiêuchuẩn đểướclượng nhân lực
và dự toán sẽ làm kéo dài thờihạnvàvượt
kinh phí củadự án
Đây là những vấn đề phản ánh các khía cạnh khủng
hoảng phầnmềm, hãy tìmm cách nỗ lựcvượt qua
để tạoraphầnmềmtốt!
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 64
IT Challenges for Vietnam
• Lack of IT Skill Standards (ITSS). Curriculum?
• Foreign Language Skill (English, Japanese, Korean,
French, etc.)
• Practice Skill
• IT Project Managers, Leaders
• Documentations Skill
• SQA: Few qualified IT Corp. with ISO9000 (32); CMM5
(FPT); CMM4, CMMI-5 (PSV, FSOFT); CMM3 (SilkRood)
• ICT Education&Training Environment
• Lack of IT Books/Textbooks/Journals/Symposiums
• Recognition of Copyrights/IP

Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 65
Problems?
Source: VnExpress, Nov. 2004
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 66
2.3 Kỹ nghệ Phầnmềm
(Software Engineering)
z Lịch sử tiếntriểnKỹ nghệ phầnmềm
z Sự tiếntriểncủacácphương pháp thiết
kế phầnmềm
z Định nghĩaKỹ nghệ phần mềm
z Vòng đờicủaphầnmềm
12
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 67
a. Lịch sử tiếntriểncủaKNPM
z Nửa đầu 1960: ít quan tâm đếnphần
mềm, chủ yếutập trung nâng cao tính
năng và độ tin cậycủaphầncứng
z Giữanhững năm 1960: Phát triểnhệ
điều hành như phầnmềmlớn(IBM
OS/360, EC OS). Xuấthiện nhu cầuvề
quy trình phát triểnphầnmềmlớnvà
quy trình gỡ lỗi, kiểmthử trong phạmvi
giớihạn
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 68
Lịch sử tiếntriểncủa KNPM
z Năm 1968: TạiTâyĐức, Hội nghị khoa học
củaNATO đã đưaratừ “Software
Engineering”. Bắt đầu bàn luậnvề khủng
khoảng phầnmềmvàxuhướng hình thành
KNPM như một chuyên môn riêng

z Nửacuối 1960: IBM đưa ra chính sách phân
biệtgiácả giữaphầncứng và phầnmềm. Từ
đó, ý thứcvề phầnmềm ngày càng cao. Bắt
đầunhững nghiên cứucơ bảnvề phương
pháp luậnlậptrình
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 69
Lịch sử tiếntriểncủa KNPM
z Nửa đầunhững năm 1970: Nhằm nâng cao
chấtlượng phầnmềm, không chỉ có các
nghiên cứuvề lậptrình, kiểmthử, mà có cả
những nghiên cứu đảmbảo tính tin cậy trong
quy trình sảnxuấtphầnmềm. Kỹ thuật: lập
trình cấu trúc hóa, lậptrìnhmôđun, thiếtkế
cấu trúc hóa, vv
z Giữanhững năm 1970: Hội nghị quốctế đầu
tiên về KNPM đượctổ chức (1975):
International Conference on SE (ICSE)
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 70
Lịch sử tiếntriểncủa KNPM
z Nửasaunhững năm 1970: Quan tâm
đếnmọi pha trong quy trình phát triển
phầnmềm, nhưng tậptrungchínhở
những pha đầu. ICSE tổ chứclần2, 3 và
4 vào 1976, 1978 và 1979
• NhậtBảncó“Kế hoạch phát triểnkỹ thuậtsản
xuấtphầnmềm” từ năm 1981
• Cuộc “cách tân sảnxuấtphầnmềm” đãbắt
đầutrênphạmvi cácnước công nghiệp
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 71
Lịch sử tiếntriểncủa KNPM

z Nửa đầunhững năm 1980: Trình độ họcvấn
và ứng dụng KNPM được nâng cao, các
công nghệ được chuyểnvàothựctế. Xuất
hiệncácsảnphẩmphầnmềm và các công
cụ khác nhau làm tăng năng suấtsảnxuất
phầnmềm đáng kể
• ICSE tổ chứclần 5 và 6 năm 1981 và 1982 vớitrên
1000 người tham dự mỗinăm
• NhậtBản sang “Kế hoạch phát triểncáckỹ thuậtbảo
trì phầnmềm” (1981-1985)
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 72
Lịch sử tiếntriểncủa KNPM
z Nửacuốinhững năm 1980 đến nay: Từ học
vấn sang nghiệpvụ! Chấtlượng phầnmềm
tập trung chủ yếu ở tính n
ă
ng suất,
đ
ộ tin cậy
và tính bảo trì. Nghiên cứahỗ trợ tự động
hóa sảnxuấtphầnmềm
• NhậtBảncó“Kế hoạch hệ thống công nghiệp hóa sản
xuấtphầnmềm”(SIGMA: Software Industrialized
Generator & Maintenance Aids, 1985-1990)
• Nhiều trung tâm, viện nghiên cứu KNPM ra đời. Các
trường đưa vào giảng dạySE
13
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 73
Ngày nay
z Công nghiệp hóa sảnxuấtphầnmềm

bằng cách đưanhững kỹ thuật công
nghệ học (Engineering techniques)
thành cơ sở khoa họccủaKNPM
z Thể chế hóa lý luậntrongsảnxuấtphần
mềmvàứng dụng những phương pháp
luậnmộtcáchnhất quán
z Tăng cường nghiên cứuvàtạo công cụ
trợ giúp sảnxuấtphầnmềm
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 74
b. Sự tiếntriểncủacácphương
pháp thiếtkế phầnmềm
z Phương pháp luận trong KNPM: bắt đầu
từ những năm 1970
z Trong phát triểnphầnmềm: nâng cao
năng suất, độ tin cậy, giá thành - tính
năng (productivity, reliability, cost-
performance)
z Tiếntriểnphương pháp thiếtkế: Sơ khởi,
Trưởng thành, Phát triểnvàBiến đổi
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 75
Sơ khởi: nửa đầu 1970
z Khái niệmvề tính môđun, cụ thể hóa
từng bước trong phương pháp luậnthiết
kế
z N. Wirth: Chi tiết hóa từng giai đoạn.
Thiếtkế trên xuống. Lậptrìnhmôđun
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 76
Trưởng thành: nửacuối1970
z Phương pháp luậnvề quy trình thiếtkế phần
mềmvớiphương pháp phân chia môđun và

thiếtkế trong từng môđun.
z L.L. Constantine, 1974: Thiếtkế cấutrúchóa
(phân chia môđun);
z E.W. Dijkstra, 1972: Lậptrìnhcấu trúc hóa
(trong môđun) . Phương pháp M.A. Jackson
(1975) và J.D. Warnier (1974)
z Trừutượng hóa dữ liệu: B.H. Liskov
(1974);D.L. Parnas (1972)
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 77
Phát triển: nửa đầu 1980
z Triển khai các công cụ hỗ trợ phát triểnphần
mềmdựatrêncácphương pháp và kỹ thuật
đưaranhững năm 1970
z Bộ khởitạochương trình (program
generators: pre-compiler; graphics-input
editors, etc.)
z Ngôn ngữ đốithoại đơngiản (4GL, DB SQL)
z Hệ trợ giúp: Hệ trợ giúp kiểmthử; Hệ trợ
giúp quảnlýthư việnmôđun; Hệ trợ giúp tái
sử dụng
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 78
Biến đổi: nửacuối 1980 đếnnay
z Đưaracácmôitrường mớivề phát triển
phầnmềm. Triển khai mớivề kếthợpgiữa
KNPM và Kỹ nghệ Tri thức (Knowledge
Engineering)
z Triển khai những môi trường bậccaovề phát
triểnphầnmềm; Tự động hóa sảnxuấtphần
mềm; Chế phầnmềm theo kỹ thuậtchế thử
(Prototyping); Lậptrìnhhướng đốitượng -

OOP; Phầnmềmdựa theo thành phần; Hỗ
trợ phát triểnphầnmềmtừ các hệ chuyên
gia, v.v.
14
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 79
Hình thái sảnxuấtPhầnmềm
Đưaracáckỹ thuật, phương pháp luận
ứng dụng thựctế vào từng quy trình
Cải biên, biến đổivàotừng sảnphẩmvà
công cụ phầnmềm (tin họchóatừng phần)
Tổng hợp, hệ thống hóa cho từng loại công cụ
(Máy tính hóa toàn bộ quy trình sảnxuấtphầnmềm)
Hướng tớisảnxuấtphầnmềmtự động
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 80
c. Định nghĩaKỹ nghệ phần mềm
z Bauer [1969]: KNPM là việcthiếtlậpvàsử
dụng các nguyên tắc công nghệ học đúng
đắn dùng để thu đượcphầnmềmmộtcách
kinh tế vừatin cậyvừalàmviệchiệuquả
trên các máy thực
z Parnas [1987]: KNPM là việcxâydựng phần
mềm nhiềuphiênbảnbởinhiềungười
z Ghezzi [1991]: KNPM là mộtlĩnh vựccủa
khoa học máy tính, liên quan đếnxâydựng
các hệ thống phầnmềmvừalớnvừaphức
tạpbởimột hay mộtsố nhóm kỹ sư
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 81
Định nghĩa KNPM (tiếp)
z IEEE [1993]: KNPM là
• (1) việcápdụng phương pháp tiếpcậncóhệ

thống, bài bảnvàđượclượng hóa trong phát
triển, vận hành và bảotrìphầnmềm;
• (2) nghiên cứu các phương pháp tiếpcận
được dùng trong (1)
z Pressman [1995]: KNPM là bộ môn tích
hợpcả quy trình, các phương pháp, các
công cụ để phát triểnphầnmềmmáy
tính
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 82
Định nghĩa KNPM (tiếp)
z Sommerville [1995]: KNPM là lĩnh vựcliên
quan đến lý thuyết, phương pháp và công cụ
dùng cho phát triểnphầnmềm
z K. Kawamura [1995]: KNPM là lĩnh vựchọc
vấnvề các kỹ thuật, phương pháp luận công
nghệ học(lýluậnvàkỹ thuật đượchiệnthực
hóa trên những nguyên tắc, nguyên lý nào
đó) trong toàn bộ quy trình phát triểnphần
mềmnhằm nâng cao cả chấtvàlượng của
sảnxuấtphầnmềm
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 83
Tính kỹ nghệ trong KNPM ?
(1) Như các ngành kỹ nghệ khác, KNPM cũng
lấycácphương pháp khoa họclàmcơ sở
(2) Các kỹ thuậtvề thiếtkế, chế tạo, kiểmthử
và bảotrìphầnmềm đã đượchệ thống hóa
hóa thành phương pháp luận và hình thành
nên KNPM
(3) Toàn bộ quy trình quản lý phát triểnphần
mềmgắnvới khái niệm vòng đờiphầnmềm,

được mô hình hóa vớinhững kỹ thuậtvà
phương pháp luậntrở
thành các chủ đề
khác nhau trong KNPM
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 84
Tính kỹ nghệ trong KNPM ?
(4) Trong vòng đờiphầnmềm không chỉ có chế
tạo mà bao gồmcả thiếtkế, vận hành và
bảo trì (tính quan trọng củathiếtkế và bảo
trì)
(5) Trong khái niệmphầnmềm, không chỉ có
chương trình mà cả tư liệuvề phầnmềm
(6) Cách tiếpcậnkỹ nghệ (khái niệm công
nghiệp hóa) thể hiện ở chỗ nhằm nâng cao
năng suất (tính năng suất) và độ tin cậycủ
a
phầnmềm, đồng thờigiảm chi phí giá thành
15
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 85
d. Vòng đờiphầnmềm
(Software life-cycle)
z Vòng đờiphầnmềmlàthờikỳ tính từ khi
phầnmềm đượcsinh(tạo) ra cho đến
khi chết đi(từ lúc hình thành đáp ứng
yêu cầu, vận hành, bảotrìchođếnkhi
loạibỏ không đâu dùng)
z Quy trình phầnmềm (vòng đờiphần
mềm) được phân chia thành các pha
chính: phân tích, thiếtkế, chế tạo, kiểm
thử, bảo trì. Biểudiễn các pha có khác

nhau theo từng người
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 86
Mô hình vòng đờiphầnmềmcủa Boehm
(1981)
Xác định yêu
cầuhệ thống
Kiểmchứng
Xác định yêu
cầuphầnmềm
Kiểmchứng
Thiếtkế
cănbản
Kiểmchứng
Thiếtkế
chi tiết
Kiểmchứng
Lậptrình
Gỡ lỗi
Kiểmthử
Chạythử
Vậnhành
Bảotrì
Kiểmchứng
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 87
Suy nghĩ mớivề vòng đờiphầnmềm
(1) Pha xác định yêu cầuvàthiếtkế có vai trò
quyết định đếnchấtlượng phầnmềm,
chiếmphầnlớn công sứcso vớilập trình,
kiểmthử và chuyểngiaophầnmềm
(2) Pha cụ thể hóa cấutrúcphầnmềmphụ

thuộcnhiều vào suy nghĩ trên xuống (top-
down) và trừutượng hóa, cũng như chi tiết
hóa
(3) Pha thiếtkế, chế tạo thì theo trên xuống,
pha kiểmthử thì dướ
i lên (bottom-up)
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 88
Suy nghĩ mớivề vòng đờiphầnmềm
(4) Trước khi chuyển sang pha kế tiếpphải
đảmbảo pha hiện nay đã đượckiểmthử
không còn lỗi
(5) Cầncócơ chế kiểmtrachấtlượng, xét
duyệtgiữa các pha nhằm đảmbảo không
gây lỗi cho pha sau
(6) Tư liệucủamỗi pha không chỉ dùng cho
pha sau, mà chính là đốitượng quan trọng
cho kiểmtravàđảmbảochấtlượng của
từng quy trình và của chính phầnmềm
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 89
Suy nghĩ mớivề vòng đờiphầnmềm
(7) Cầnchuẩn hóa mẫubiểu, cách ghi
chép tạotư liệuchotừng pha, nhằm
đảmbảochấtlượng phầnmềm
(8) Thao tác bảotrìphầnmềmlàviệcxử lý
quay vòng trở lại các pha trong vòng
đờiphầnmềmnhằmbiến đổi, sửa
chữa, nâng cấpphầnmềm
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 90
Các phương pháp luậnvà
kỹ thuậtchotừng pha

16
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 91
Bài tậplớn: Các đề tài
1. CMM and CMMI
(www.sei.cmu.edu)
2. ISO 9001,… for SE
3. UML and RUP
4. CBSE
5. Java and JSP
6. ASP and .NET
7. PHP and MySQL
8. RAISE
9. Z-Method
10. B-Method
11. rCOS method
12. RTPA
13. COCOMO I, II
14. Oracle PM
15. Postgre-SQL
16. FreeBSD
17. Turbo Linux
18. GCC
19. CMS.NET and Related
Issues
20. Design Patterns
21. Software Metrics
22. XP (Extreme Progr.)
Bộ môn Công nghệ phầnmềm – Khoa CNTT- ĐHCN- ĐHQGHN Kỹ nghệ phầnmềm Slide 92
Bài tậplớn: cách làm
z Mỗi nhóm 3 – 5 SV, thựchiện1 đề tài, mỗi đề tài chỉ 1 nhóm

z Phân công nhóm trưởng, trách nhiệmtừng thành viên
z Thu thậptư liệu, nghiên cứu, triển khai (minh họahoặccàiđặt đơn
giản)
z Viết báo cáo đầy đủ (15 trang / 1người) và chuẩnbị PPT trình bày
trong 15-20’ một nhóm
z Đóng quyển theo quy cách báo cáo thựctập. Các thành viên ký tên.
Nộp theo CD có ghi các tệpbáocáovàtư liệu liên quan (1 CD có thể
ghi cho nhiều nhóm)
z Thờihạn: tuầnthứ 14 nộp. Thờigianvàđịa điểmcụ thể sẽ thông báo
sau
z Ghi chú: có thể đề xuất đề tài khác (ví dụ tìm hiểu yêu cầu và đặc tả hệ
thống nào đó, …), nhưng phải đượcGV đồng ý

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×