Bé m«n C«ng nghÖ phÇn mÒm- Khoa CNTT- §HCN
Email:
K ngh phn mm
Software Engeneering
B môn Công ngh phn mm – HCN
2
NguynVnV
Ni dung
Bài 2: K ngh phn mm
̈ §Þnh nghÜa vμ kh¸i niÖm
̈ LÞch sö ph¸t triÓn
̈ C¸c m« h×nh tiÕn tr×nh
B môn Công ngh phn mm – HCN
3
NguynVnV
TÀI LiU THAM KHO
1. Nguyn Vn V, Nguyn Vit Hà. Giáo trình k ngh phn
mm. Nhà xut bn i hc Quc gia Hà ni, 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. Nguyn Vn V. Phân tích thit k h thng thông tin hin đi.
Hng cu trúc và hng đi tng, NXB Thng kê, 2002, Hà
Ni.
B mụn Cụng ngh phn mm HCN
4
NguynVnV
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 lm 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])
Kỹ nghệ phần mềm Software Engineering:SE
B mụn Cụng ngh phn mm HCN
5
NguynVnV
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
tính (
Pressman [1995])
Ba mt cơ bản ca kỹ nghệ phần mềm l:
1. Quy trình/thủ tục
2. Phơng pháp
3. Công cụ
Định nghĩa SE
1
?
3
2
4
1
3
2
B mụn Cụng ngh phn mm HCN
6
NguynVnV
Lịch sử của kỹ nghệ phần mềm
Đề xớng, hình thnh (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-down
Lập trình có cấu trúc (Dijkstra)
phơng pháp chia môdun một chơng trình
Trừu tợng hóa dữ liệu (Liskov)
B mụn Cụng ngh phn mm HCN
7
NguynVnV
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ê
Lịch sử của kỹ nghệ phần mềm
B mụn Cụng ngh phn mm HCN
8
NguynVnV
Lịch sử của kỹ nghệ phần mềm
Phát triển (từ giữa 80s)
ĩHon thiện công nghệ cấu trúc, ra đời công nghệ
đối tng
Nhiều mô hình hớng cấu trúc triển khai, chuẩn hóa
CASE hon 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, )
Sử dụng lại chiếm vị trí quan trọng trong phát triển
B mụn Cụng ngh phn mm HCN
9
NguynVnV
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:
thnh phần, mẫu, Framework
Công nghệ Web: web services
ĩPhát triển các mô hình quản lý
Chuẩn quản lý đợc công nhận (CMM, IS9000-03)
Nhiều mô hình tổ chức lm phần mềm đợc đề xuất
Nhiều công cụ trợ giúp quản lý dự án hon thiện
B môn Công ngh phn mm – HCN
10
NguynVnV
C¸c yÕu tè c¬ b¶n cña - SE
̈ Tæng hîp: Kü nghÖ phÇn mÒm
Ł Lμ mét qu¸ tr×nh kü nghÖ tÝch hîp:
„ Thñ tôc (procedures)
„ Ph−¬ng ph¸p (methods)
„ C«ng cô (tools)
Ł Nh»m t¹o ra phÇn mÒm hiÖu qu¶, víi c¸c giíi h¹n
cho tr−íc
B mụn Cụng ngh phn mm HCN
11
NguynVnV
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 ti liệu, sản phẩm cần bn 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
ĩ Hay cụ thể hoá cho 1 dự án cụ thể
B mụn Cụng ngh phn mm HCN
12
NguynVnV
Các phơng pháp - methods
Cách lm 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)
Quản lý dự án (
PERT, GANTT, COCOMO)
B mụn Cụng ngh phn mm HCN
13
NguynVnV
Nội dung phơng pháp thờng bao gồm:
Các phân tử mô hình: mô tả khái niệm
Các ký pháp: đặc tả phn tử
Các quy tắc: liên kết các phân tử mô hình
Quy trình xây dựng: trình tự tạo 1 mô hình
Lời khuyên, cách dùng: cho mô hình tốt v dùng nó
Các phơng pháp - methods
B mụn Cụng ngh phn mm HCN
14
NguynVnV
luồng dữ liệu
kho dữ liệu
tiế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 cha là
cơ sở
-Tin trình l là duy nht
-Các lung vào 1 tin
trình phi # các
lung ra
-Các lung vào 1 tin
trình to ra các
lung ra
- Không có các lung
d liu sau:
Kho ồ kho
Kho ồ tác nhân
tác nhân
Quy trìnhQuy tắcKý phápKhái niệm
Các phơng pháp methods
tờn tỏc nhõn
tờn lung
tờn kho
tờn tin
trỡnh
i
Mô hình (p.pháp) luồng dữ liệu
B mụn Cụng ngh phn mm HCN
15
NguynVnV
Ví dụ: Biểu đồ luồng dữ liệu mức 0 bi toán
trông gửi xe
0
Hệ
thống
Khách
DS thực thể
a. xxxx
b. xxxx
c. xxxx
d. xxxx
e. xxxx
f. xxxx
a b c d e f
1
R C U R
C
2
R R U C
3
R R
0
1 2 3
3.0
giải
quyết sự
cố
t.t. xe
nét đỏ l phần thay thế hay thêm vo
2.0
trả xe
khách
vé
xe
"không g.q."
phiếu chi
biên bản
tt sự cố
phiếu
t.toán
phiếu t.toán
e
biên bản
f
1.0
nhận xe
khách
"hết chỗ"
vé xe
bảng giá
a
sổ xevào
c
sổ xe ra
d
vé xe
b
"vé
zả"
phiếu chi
g
Mô hình nghiệp vụ
B mụn Cụng ngh phn mm HCN
16
NguynVnV
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
Ví dụ:
B môn Công ngh phn mm – HCN
17
NguynVnV
C¸c c«ng cô - tools
Biu đ m« h×nh
B mụn Cụng ngh phn mm HCN
18
NguynVnV
Vòng đời phát triển hệ thống phần mềm
(systems development life cycle - SDCL)
L các hoạt động từ khi đợc đặt hàng,
phát triển, sử dụng đến khi bị loại bỏ nó
Vòng đời chia thnh 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
Phạm vi, thứ tự, nội dung khác nhau tùy theo
từng sản phẩm v dự án
B mụn Cụng ngh phn mm HCN
19
NguynVnV
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 20 bớc
Xác định yêu cầu Triền khai Kiểm thử
Vận hành - Bảo trì
Các pha chính của vòng đời
B mụn Cụng ngh phn mm HCN
20
NguynVnV
Các bớc chung nhất phát triển
ạ Xác định yêu cầu
phân tích hệ thống
lập kế hoạch
phân tích yêu cầu
đặc tả yêu cầu
ạ Tiến hóa
sửa lỗi
thích nghi
nâng cao
bổ sung
ạ Phát triển
Thiết kế
Mã hoá
Kiểm thử
Lm tI liệu
B mụn Cụng ngh phn mm HCN
21
NguynVnV
Xác định yêu cầu
Xác định: Hệ thống lm gi?
Nhng rng buộc gì nó cần tuân 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ác yêu cầu cụ thể (chức năng, rng buộc)
đặc tả yêu cầu (kiến trúc, giao diện, xử lý, dữ liệu)
B mụn Cụng ngh phn mm HCN
22
NguynVnV
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 thnh 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ế thnh chơng trình (của1 ngôn ngữ)
ạ Kiểm thử (testing)
sửa lỗi, hon thiện chơng trình (kiểm thử đơn vị, tích hợp,
hệ thống, chấp nhận), lm ti liệu
B mụn Cụng ngh phn mm HCN
23
NguynVnV
Vận hnh, bảo trì
Hòan thiện hệ thống sau khi đa vào hoạt động?
ạ Sửa lỗi: để vận hnh 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: Hon thiện chức năng, phát triển dự
phòng
ạ Thêm mới: thêm các chức năng mới
B mụn Cụng ngh phn mm HCN
24
NguynVnV
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: lm
gì? khi no? ai lm? nh thế no? bằng gì? ở đâu?
kết quả? tiêu chí đánh giá?
Đặc trng
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ụ,
phơng pháp
)
Sản phẩm cuối cùng l phần mềm bn giao
B mụn Cụng ngh phn mm HCN
25
NguynVnV
Tiến trình phần mềm
Các hoạt động chính của mọi tiến trình
Xác định yêu cầu:
định rõ yêu cầu sn phm
Phát triển: tạo ra sn phm
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 yêu cầu
thay đổi (ngi dùng, môi trng)
Xác định
yêu cầu
Phát
triển
Thẩm
định
Tiến
hóa
vấn đề,
mong
đợi
Phần
mềm
file.exe