PHẦN MỀM
Software
Slide 2
Các đặctính củaSWvà HW
HW
¾
Vật“cứng”
¾
Kim loại
¾
Vậtchất
¾
Hữuhình
¾
Sảnxuất công nghiệpbởi máy móc là chính
¾
Định lượng là chính
¾
Hỏng hóc, hao mòn
SW
¾
Vật“mềm”
¾
Kỹ thuậtsử dụng
¾
Trừutượng
¾
Vô hình
¾
Sảnxuấtbởicon người là chính
¾
Định tính là chính
¾
Không hao mòn
Slide 3
Định nghĩa 1: Phầnmềmlà
¾
Các lệnh (chương trình máy tính) khi đượcthựchiện thì cung cấpnhững
chứcnăng và kếtquả mong muốn
¾
Các cấutrúcdữ liệu làm cho chương trình thao tác thông tin thích hợp
¾
Các tư liệumôtả thao tác và cách sử dụng chương trình
Slide 4
SW đốinghĩavớiHW
¾
Vai trò SW ngày càng thể hiệntrội
¾
Máy tính là . . . chiếchộp không có SW
¾
Ngày nay, SW quyết định chấtlượng mộthệ thống máy tính (HTMT), là chủđề
cốt lõi, trung tâm củaHTMT
¾
Hệ thống máy tính gồmHW vàSW
Slide 5
SW theo nghĩarộng
¾
Không chỉ SW cơ bảnvàSW ứng dụng
¾
Phảigồmcả khả năng, kinh nghiệmthựctiễnvàkỹ năng củakỹ sư (ngườichế
ra phầnmềm): Know-how of Software Engineer
¾
Là tấtcả các kỹ thuật làm cho sử dụng phầncứng máy tính đạthiệuquả cao
Slide 6
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
Slide 7
Nhóm các kỹ thuật, phương pháp luận
¾
Các khái niệmvàtrìnhtự cụ thể hóa mộthệ thống
¾
Các phương pháp tiếpcậngiảiquyếtvấn đề
¾
Các trình tự thiếtkế và phát triển đượcchuẩn hóa
¾
Các phương pháp đặctả yêu cầu, thiếtkế hệ thống, thiếtkế chương trình, kiểm
thử, toàn bộ quy trình quản lý phát triểnphầnmềm
Slide 8
¾
Là phầngiaodiệnvớiphầncứng, tạothànhtừ các nhóm lệnh chỉ thị cho máy
tính biếttrìnhtự thao tác xử lý dữ liệu
¾
Phầnmềmcơ bản: vớichứcnăng cung cấpmôitrường thao tác dễ dàng cho
ngườisử dụng nhằmtăng hiệunăng xử lý củaphầncứng (ví dụ như OS là
chương trình hệ thống)
¾
Phầnmềm ứng dụng: dùng để xử lý nghiệpvụ thích hợpnàođó(quảnlý, kế
toán, . . .), phầnmềm đóng gói, phầnmềmcủangười dùng, . . .
Nhómcácchương trình
Slide 9
Kiếntrúcphầnmềm
Phầnmềmnhìntừ cấutrúcphâncấp:
¾
Cấutrúcphầnmềm: cấutrúcphâncấp (hierarchical structure): mứctrên
là hệ thống (system), dưới là các hệ thống con (subsystems)
¾
Dướihệ thống con là các chương trình
¾
Dướichương trình là các Modules hoặcSubroutines với các đốisố
(arguments)
Slide 10
Phầnmềm nhìn từ cấutrúcvàthủ tục
¾
Hai yếutố cấuthànhcủaphầnmềm
Phương diệncấutrúc
Phương diệnthủ tục
¾
Cấutrúcphầnmềm: biểuthị kiến trúc các chứcnăng mà phầnmềm đócó
và điềukiệnphâncấp các chứcnăng (thiếtkế cấutrúc)
¾
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)
Slide 11
Các khái niệm
(Software concepts)
¾
Khái niệm tính môđun (modularity concept)
¾
Khái niệmchi tiếthóadầntừng bước (stepwise refinement concept)
¾
Khái niệmtrừutượng hóa (abstraction concept): về thủ tục, điều khiển, dữ liệu
¾
Khái niệmchegiấu thông tin (information hiding concept)
¾
Khái niệmhướng đốitượng (object oriented)
Slide 12
Từ phương phápluậnphầnmềmsangkỹ thuậtphần
mề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
Slide 13
Tính môđun (Modularity)
¾
Khả năng phân chia phầnmềm thành các môđun ứng với các chứcnăng,
đồng thời cho phép quảnlýtổng thể: khái niệm phân chia và trộn(partion
and merge)
¾
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ằmngang): môđun phụ thuộcdần
¾
Quan hệ giữa các môđun: qua các đốisố (arguments)
Slide 14
Chuẩn phân chia môđun
Tính độc
lậpkém
dần
Điều khiển
phứctạp
dần
SW
Phân chia chiềurộng
Phânchiachiềusâu
C
ấ
u
t
r
ú
c
t
r
u
n
g
g
i
a
n
t
ố
i
ư
u
h
ó
a
Cấutrúcrộng chiều ngang
Cấutrúcsâuchiềuđứng
Điều khiển
phứctạp
dần
SW
Cấutrúcsâuchiềuđứng
Slide 15
Chi tiếthóatừ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ớibênngoài
Đặctả yêu cầu
Trừutượng hóa mức cao:
Thế giới bên ngoài,
trạng thái chưarõràng
Trừutượng hóa mứctrunggian:
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đó
Slide 16
KháiniệmTrừutượng hóa
¾
Abstraction cho phép tậptrungvấn đề ở mứctổng quát, gạt đinhững chi tiết
mứcthấpítliênquan
¾
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ảđốitượng dữ liệunàođó
Trừutượng điềukhiển: Cơ chếđiềukhiểnchương trình không cần đặctả
những chi tiếtbêntrong
Slide 17
Đặctính chung củaphầnmềm
¾
Là hàng hóa vô hình, không nhìn thấy được
¾
Chấtlượng phầnmềm: không mòn đimàcóxuhướng tốtlênsaumỗilầncó
lỗi (error/bug) được phát hiệnvàsửa
¾
Phầnmềmvốnchứalỗitiềm tàng, theo quy mô càng lớnthìkhả năng chứa
lỗi càng cao
¾
Lỗiphầnmềmdễđượcpháthiệnbởingườingoài
Slide 18
Đặctính chung củaphầnmềm (t. theo)
¾
Chứcnăng củaphầnmềmthường biếnhóa, thayđổitheothờigian(theonơisử
dụng)
¾
Hiệu ứng làn sóng trong thay đổiphầnmềm
¾
Phầnmềmvốnchứaý tưởng và sáng tạocủatácgiả/nhóm làm ra nó
¾
Cầnkhả năng “tư duy nhị phân” trong xây dựng, phát triểnphầnmềm
¾
Có thể saochéprất đơngiản
Slide 19
Thế nàolà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
Slide 20
Cácchỉ tiêu cơ bản
¾
Phảnánhđúng yêu cầungười dùng (tính hiệuquả - effectiveness)
¾
Chứaítlỗitiềmtàng
¾
Giá thành không vượt quá giá ướclượng ban đầu
¾
Dễ vậnhành, sử dụng
¾
Tính an toàn và độ tin cậy cao
Slide 21
Hiusutx lý cao
ắ
Hiusutthigiantt (efficiency):
phctptớnhtoỏnthp (Time complexity)
Thi gian quay vũng ngn (Turn Around Time: TAT)
Thigianhi ỏp nhanh (Response time)
ắ
S dng ti nguyờn huhiu: CPU, RAM, HDD, Internet resources,...
Slide 22
Tớnh d hiu
ắ
Kintrỳcvcutrỳcthitk d hiu
ắ
D kimtra, kimth, kimchng
ắ
D botrỡ
ắ
Cú ti liu(mụt yờu cu, iukinkimth, vn hnh, bo trỡ, FAQ, . .
.) vichtlng cao
Tớnh d hiu: ch tiờu ngy cng quan trng
Slide 23
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
Slide 24
So sỏnh chi phớ cho cỏc giai on
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ểmthửtíchhợp7%
Bảo tr ì 67%
Slide 25
Những khó khăntrong
sảnxuấtphầnmềm
(1) Không có phương pháp mô tả rõ ràng định nghĩayêucầucủangười
dùng (khách hàng) => sau khi bàn giao sảnphẩmdễ phát sinh những
trụctrặc (troubles)
(2) Vớinhững phầnmềm quy mô lớn, tư liệu đặctảđãcốđịnh thờigiandài
=> do vậykhóđáp ứng nhu cầuthayđổicủangười dùng một cách kịp
thờitrongthờigianđó
Slide 26
Những vấn đề trong sảnxuấtphầnmềm (tiếp)
(3) Nếu không có Phương pháp luậnthiếtkế nhất quán mà thiếtkế theo cách
riêng (của công ty, nhóm), thì sẽ dẫn đếnsuygiảmchấtlượng phần
mềm (do phụ thuộc quá nhiều vào con người)
(4) Nếu không có chuẩnvề làm tư liệuquytrìnhsảnxuấtphầnmềm, thì
những đặctả không rõ ràng sẽ làm giảmchấtlượng phầnmềm
Slide 27
Những vấn đề trong sảnxuấtphầnmềm (tiếp)
(5) Nếu không kiểmthử tính đúng đắncủaphầnmềm ở từng giai đoạnmàchỉ
kiểm ở giai đoạncuối và phát hiệnralỗi, thì thường bàn giao sảnphẩm
không đúng hạn
(6) Nếucoitrọng việclậptrìnhhơnkhâuthiếtkế thì thường dẫn đếnlàmgiảm
chấtlượng phầnmềm
(7) Nếucoithường việctáisử dụng phầnmềm(software reuse), thìnăng su
ất
lao động sẽ giảm
Slide 28
Hình tháisả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(máytínhhóatừng phần)
Tổng hợp, hệ thống hóa cho từng loạicôngcụ
(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