Bài Giảng
à ả
Công Nghệ Phần Mềm
g g ệ
Software Engineering
Giới thiệu môn học
ệ
ọ
Nội dung môn học
Giới thiệu các khái niệm cơ bản về công nghệ phần mềm
Mục tiêu của sản xuất phần mềm và công nghệ phần mềm
Các mô hình sản xuất phần mềm
Quy trình sản xuất và quản lý dự án phần mềm
Tài liệu tham khảo
Introduction to Software Engineering – Ronald J. Leach – CRC Press
(Thư viện
A2 MS: 9075802004)
Software Engineering – Ian Sommerville – Fifth edition (Thư viện A3 MS: 200032)
g
g
(
ệ
)
Software Engineering – A Practitioner’s Approach – Roger S. Pressman – Fifth
Edition
Hình thức kiểm tra
Giữa kỳ (20%) + Cuối kỳ (60%) + Bài tập (20%)
Hình thức kiểm tra: trắc nghiệm khách quan – open book
g
q
g
p
y
Đánh giá kêt quả: tương đối - phi tuyến
Trường Đại Học Bách Khoa - Khoa Công Nghệ Thông Tin
Copyright 2004 – Th.S Nguyễn Cao Trí –
[email protected]
2
???????? & !!!!!!!!
Công Nghiệp & Công Nghệ
Công Nghiệp Phần Mềm (CNpPM)
ầ
ề
Công Nghệ Phần Mềm (CNPM)
Công nghiệp phần mềm & các công nghiệp khác
Giống
Khác
Có hay không (những) công nghệ cho sản xuất phần
mềm?
Có cần thiết phải có công nghệ cho sản xuất phần
mềm không, khi sản xuất phần mềm là hoạt động sản
ề
ấ
ầ
ề
xuất “đặc biệt” vì không thể nói làm một phần mềm
như sản xuất một lon coca.
Trường Đại Học Bách Khoa - Khoa Công Nghệ Thông Tin
Copyright 2004 – Th.S Nguyễn Cao Trí –
[email protected]
3
Đặc tính của sản phẩm phần mềm
ặ
p
p
Software = Program
Software product = Program + Document + Support
Loại sản phẩm phần mềm
Generic Product: là sản phẩm đóng gói và bán rộng rãi trên thị trường.
Bespoke P d t là sản phẩm đ
B
k Product:
ả hẩ được phát t iể th yêu cầu đặ thù của
hát triển theo ê ầ đặc
ủ
từng khách hàng.
Các đặc tính quan trọng của sản phẩm phần mềm
Maintainability: hầ
M i i bili phần mềm có thể thay đổi thuận tiện theo yêu cầu của
ề
ó hể h
h ậ iệ h
ê ầ ủ
người dùng
Dependability: tính ổn định, bảo mật và an toàn của phần mềm. Không
gây tổn hại về vật chất hay kinh tế cho hệ thống
thống.
Efficiency: Sử dụng hiệu quả tài nguyên của hệ thống cho công việc
Usability: giao diện và phương thức phải phù hợp với người dùng đồng
thời đáp ứng đúng yêu cầu của người dùng
Trường Đại Học Bách Khoa - Khoa Công Nghệ Thông Tin
Copyright 2004 – Th.S Nguyễn Cao Trí –
[email protected]
4
Software - Đủ hay Thiếu?
y
Phần mềm được viết ngay từ khi có những máy tính
programable đầu tiên. Được quan tâm và phát triền từ
ầ
ề
rất sớm
Có rất nhiều phần mềm đã được viết
Không thiếu phần mềm
Thực tế việc sản xuất phần mềm không đáp ứng kịp
ự
ệ
p
g
p
g ịp
yêu cầu của người sử dụng:
Không đủ về số lượng
Thiếu về chất lượng
Không kịp về thời gian
Phần mềm không đáp ứng đủ cho người dùng
Trường Đại Học Bách Khoa - Khoa Công Nghệ Thông Tin
Copyright 2004 – Th.S Nguyễn Cao Trí –
[email protected]
5
Nguyên nhân khách quan
g y
q
Số lượng phần mềm phải được hiểu là số đầu/loại phần mềm
được sử dụng cho từng mục tiêu ứng dụng
dụng.
Nhu cầu sử dụng phần mềm là rất lớn
Nhiều ngành nghề cần dùng phần mềm máy tính
Mỗi ngành nghề cần nhiều loại phần mềm khác nhau
Mội loại phần mềm cần nhiều cấp độ khác nhau theo trình độ người dùng
Chất lượng phần mềm cũng chưa đáp ứng tốt hoàn toàn người
g
sử dụng:
Tính customize rất cao của sản phẩm phần mềm.
Trình độ sử dụng khác nhau và điều kiện hạ tầng ứng dụng khác nhau
Nhu cầu phần mềm thường rất cấp bách
Tầm nhìn và chiến lược chưa đầy đủ của người sử dụng
Không có kế hoạch lâu dài
Phải thay đổi theo từng đối tượng người dùng
Trường Đại Học Bách Khoa - Khoa Công Nghệ Thông Tin
Copyright 2004 – Th.S Nguyễn Cao Trí –
[email protected]
6
Nguyên nhân chủ quan
g y
q
Tính chuyên nghiệp trong sản xuất phần mềm chưa
cao
Các dữ liệu quan sát được
Cứ 6 đề án triển khai thì có 2 bị huỷ bỏ
Trung bình thời gian thực hiện thực tế bị kéo dài 50 % (cá biệt 200300%)
Các đề án lớn dễ thất bại
3/4 các hệ thống lớn có lỗi khi thực thi
Quá trình phân tích yêu cầu (5 % công sức): để lại 55 % lỗi, có 18
% phát hiện được
Quá trình thiết kế (25 % công sức): để lại 30 % lỗi, có 10 % phát
ế ế
ể
ỗ
hiện được
Quá trình mã hoá, kiểm tra và bảo trì: để lại 15 % lỗi, có 72 % phát
hiện được
Trường Đại Học Bách Khoa - Khoa Công Nghệ Thông Tin
Copyright 2004 – Th.S Nguyễn Cao Trí –
[email protected]
7
Nguyên nhân chủ quan (tt)
g y
q
( )
Lý do của những hệ quả trên
Phát triển phần mềm giống như một “nghệ thuật”, chưa được xem
ể
ầ
ề
ố
như một ngành khoa học
Quy trình phát triển phần mềm chưa được thống nhất
Phải viết l i s/w mỗi khi có sự th đổi về ngôn ngữ, h/ h ặ o/s
iết lại /
ỗi
ó thay
ề ô
ữ h/w hoặc /
Chưa đạt được 1 chuẩn cho việc đo lường hiệu suất và sản phẩm
Độ phức tạp của phần mềm quá cao đối với 1 “kiến trúc sư”
Kỹ thuật đ tả để l i sự nhập nhằng trong các yêu cầu phần mềm
h ậ đặc ả lại
hậ hằ
á ê ầ hầ
ề
Làm việc nhóm không đúng kỷ luật gây ra các lỗi
CẦN PHẢI CÓ MỘT/NHIỀU CHUẨN QUY TRÌNH TRONG SẢN
Ầ
Ả Ó Ộ
Ề
Ẩ
Ì
Ả
XUẤT PHẦN MỀM ĐỂ NÂNG CAO TÍNH CHUYÊN NGHIỆP
CỦA NỀN SẢN XUẤT ĐẶC BIỆT NÀY
CẦN CÔNG NGHỆ CHO CÔNG NGHIỆP PHẦN MỀM
Trường Đại Học Bách Khoa - Khoa Công Nghệ Thông Tin
Copyright 2004 – Th.S Nguyễn Cao Trí –
[email protected]
8
Định nghĩa “Công nghệ phần mềm”
ị
g
g g ệp
Công Nghệ Phần Mềm là sự thiết lập và sử dụng các
nguyên
ng ên tắc khoa học nhằm m c đích tạo ra các phần
mục
mềm một cách kinh tế mà các phần mềm đó hoạt động
hiệu quả và tin cậy trên các máy tính.
Công nghệ phần mềm là một quy trình có hệ thống
ợ
ụ g
gq
p
,
, ệ
được sử dụng trong quá trình phân tích, thiết kế, hiện
thực, kiểm tra và bảo trì để bảo đảm các sản phẩm
phần mềm được sản xuất và hoạt động: hiệu quả, tin
cậy, hữu dụng, nâng cấp dễ dàng (modificable), khả
chuyển (portable), khả kiểm tra (testable), cộng tác
được với các hệ thống khác (interoperable) và vận
hành đúng (correct).
Trường Đại Học Bách Khoa - Khoa Công Nghệ Thông Tin
Copyright 2004 – Th.S Nguyễn Cao Trí –
[email protected]
9
Cụ thể
ụ
Efficiency: Phần mềm được sản xuất trong thời gian và điều kiện vừa phải. Phần
mềm vận hành đúng mức độ yêu cầu về công việc và thời gian.
Reliablity: Phần mềm vận hành ổn định và tương tác được với các hệ thống ứng
dụng
Usability: Phần mềm có thể dùng được bởi người sử dụng và với môi trường mà
người sử dụng đang có. Chú ý tới giao diện, điều kiện hệ thống,…
Modifiability: Phần mềm có thể được thay đổi dể dàng, nhanh chóng khi yêu cầu
của người sử dụng thay đổi.
Portability: Phần mềm có thể chuyển đổi dễ dàng sang các hệ thống khác mà
không cần phải điều chỉnh lớn. Chỉ cần recompile nều cần thiết là tốt nhất.
Testability: Phầ mềm có thể đ
Phần ề
ó
được kiể t dễ dà
kiểm tra
dàng. Tốt nhất là đ
hất được modul hó
d l hóa.
Reusability: Phần mềm hay một phần có thể được tái sử dụng cho các ứng dụng
khác. Các modul có thiết kế tốt, độc lập và giao tiến đơn giản, cả về tình tương thích
công nghệ phát triển
Trường Đại Học Bách Khoa - Khoa Công Nghệ Thông Tin
Copyright 2004 – Th.S Nguyễn Cao Trí –
[email protected]
10
Cụ thể ( )
ụ
(tt)
Maintainability: thiết kế của phần mềm có thể được hiểu dễ dàng cũng như
chuyển giao th ậ tiệ cho người khá t
h ể i thuận tiện h
ời khác trong quá t ì h điề chỉnh, nâng cấp h
á trình điều hỉ h â
ấ hay
thay đổi theo yêu cầu.
Interoperability: Phần mềm vận hành ổn định và đúng như mong đợi. Trên hệ
thống nhiều người dùng (multi users) phần mềm vẫn hoạt động được với các vận
hành khác của hệ thống.
Correctness: Phần mềm phải tính toán đúng và tạo ra kết quả đúng và đúng
với mục tiêu ứng dụng của người dùng
dùng.
Các yêu cầu khác:
Đúng tiến độ
Sử dụng hợp lý nguồn nhân lực phát triển
Chi phí phát triển thấp nhất
Trường Đại Học Bách Khoa - Khoa Công Nghệ Thông Tin
Copyright 2004 – Th.S Nguyễn Cao Trí –
[email protected]
11
What is “Engineering”?
g
g
The profession in which
a k
knowledge of the mathematical and natural sciences gained b study,
l d
f h
h
l d
l
i d by
d
experience, and practice
is applied with judgment
to develop
t d l ways t utilize, economically, th materials and f
to tili
i ll the
t i l
d forces of nature
f t
for the benefit of mankind
-- Accreditation Board for Engineering and Technology
Science
Si
Trường Đại Học Bách Khoa - Khoa Công Nghệ Thông Tin
Copyright 2004 – Th.S Nguyễn Cao Trí –
[email protected]
12
12
Engineers in Society
g
y
ACM Code of Ethics and Professional Conduct
1.1 Contribute to society and human well-being.
1.2 Avoid harm to others.
1.3 Be honest and trustworthy.
1.4 Be fair and take action not to discriminate.
1.5 Honor property rights including copyrights and patent.
1.6 Give
1 6 Gi proper credit f i t ll t l property.
dit for intellectual
t
1.7 Respect the privacy of others.
1.8 Honor confidentiality.
Trường Đại Học Bách Khoa - Khoa Công Nghệ Thông Tin
Copyright 2004 – Th.S Nguyễn Cao Trí –
[email protected]
13
13
Nội dung công việc của Software Engineering
ộ
g
g ệ
g
g
Công việc của software engineering bao gồm:
Phân tích hệ thống/vấn
đề
Xác định các yêu cầu
Thiết kế phần mềm
Viết phần mềm (coding)
Kiểm tra và tích hợp hệ
ể
thống
Cài đặt và chuyển giao
phần mềm
hầ
ề
Lập tài liệu
Bảo trì
Trường Đại Học Bách Khoa - Khoa Công Nghệ Thông Tin
Copyright 2004 – Th.S Nguyễn Cao Trí –
[email protected]
Quản lý chất lượng
Huấn luyện
Dự đoán tài nguyên
Quản trị dự án
14
Một định nghĩa khác của CNPM
ộ ị
g
CNPM là các quy trình đúng kỷ luật và có định lượng
được áp dụng cho sự phát triển, thực thi và bảo trì các
ể
hệ thống thiên về phần mềm
Tập trung vào quy trình sự đo lường sản phẩm tính
trình,
lường,
phẩm,
đúng thời gian và chất lượng
Qui trình
Đo lường
Tiêu h ẩ
Tiê chuẩn
Trường Đại Học Bách Khoa - Khoa Công Nghệ Thông Tin
Copyright 2004 – Th.S Nguyễn Cao Trí –
[email protected]
Thời gian
Quản lý
Chất lượng
Dịch vụ
15
Mô hình phát triển phần mềm
p
p
Các công đoạn chính tổng quát bao gồm 4 giai đoạn
Giai đoạn đặc tả: xác định các tính năng và điều kiện
ạ ộ g
ệ
g (
ập y
p
hoạt động của hệ thống. (thu thập yêu cầu và phân
tích)
Giai đoạn phát triển: Thiết kế phần mềm (software
design),
design) viết code (code generation
Giai đoạn kiểm tra: kiểm tra phần mềm (software
testing), kiểm tra tính hợp lý của phần mềm.
Giai đoạn bảo trì: Sửa lỗi (correction), thay đổi môi
ả
ử ỗ
ổ
trường
thực
thi
(adaptation),
tăng
cường
(enhancement)
Trường Đại Học Bách Khoa - Khoa Công Nghệ Thông Tin
Copyright 2004 – Th.S Nguyễn Cao Trí –
[email protected]
16
Các mô hình sản xuất phần mềm
p
Tùy theo quy mô và công nghệ phát triển, có các mô hình
sản xuất khác nhau.
ấ
Mô hình tuần tự tuyến tính- waterfall
Mô hình Prototyping - Evolutionary Development
Mô hình xoắn ốc – Boehm’s Spiral Model
Mô hình RAD – Rapid Application Development
MÔ HÌNH NÀO TỐT HƠN
Mỗi mô hình phù hợp với trình độ phát triển, quy mô sản
phẩm và yêu cầu ràng buộc cụ thể về thời gian và tính
chất của hệ thống
thống.
Trường Đại Học Bách Khoa - Khoa Công Nghệ Thông Tin
Copyright 2004 – Th.S Nguyễn Cao Trí –
[email protected]
17
Mô hình WaterFall – Sequency model
q
y
Mô hình phát triển phần mềm đầu tiên
Các công việc tiếp nối nhau một cách tuần tự
ế ố
ầ
Đặt nền móng cho các phương pháp phân tích, thiết kế, kiểm
tra…
Phân tích
yêu cầu
Thiết kế hệ thống
ệ
g
& phần mềm
Hiện thức và
kiểm tra moduls
Tích hợ à kiểm
Tí h hợp và kiể
tra tổng thể
Chuyển giao
và Bảo trì
Trường Đại Học Bách Khoa - Khoa Công Nghệ Thông Tin
Copyright 2004 – Th.S Nguyễn Cao Trí –
[email protected]
18
Mô hình WaterFall – Sequency model (tt)
q
y
( )
Bộc lộ một số khuyết điểm
Bản chất của phát triển phần mềm là quá trình lặp đi
ấ
ể
ầ
ề
lặp lại chứ không phải tuần tự
ự
g
ệ
Các bước thực chất không tách biệt hoàn toàn mà có
chồng lấn và tham khảo lại
Bắt buộc khách hàng đặc tả tất cả yêu cầu một cách
chính xác và đầy đủ ngay từ ban đầu
Khách hàng thường phải chờ đợi rất lâu để thấy được
phiên bản đầu tiên của sản phẩm
Tồn tại “delay” tích lũy trong nhóm làm việc -> dự án
ồ
thường bị trể.
p
ợp
ự
,
g
Chỉ phù hợp cho dự án nhỏ, đơn giản.
Trường Đại Học Bách Khoa - Khoa Công Nghệ Thông Tin
Copyright 2004 – Th.S Nguyễn Cao Trí –
[email protected]
19
Mô Hình Prototype
yp
Hoạt động sản xuất
Bản prototype
Đặc tả
Mô tả sơ lược
của khá h hà
ủ khách hàng
Phát triển
Các bản trung
gian
Kiểm thử
Bản cuối cùng
Trường Đại Học Bách Khoa - Khoa Công Nghệ Thông Tin
Copyright 2004 – Th.S Nguyễn Cao Trí –
[email protected]
20