9/4/2011
1
Nhập môn
Công nghệ học Phần mềm
(Introduction to Software Engineering)
Department of Software Engineering
Faculty of Information Technology
Hanoi University of Technology
TEL: 04-8682595 FAX: 04-8692906
Email: cnpm@it-hut.edu.vn
HUT, Falt. of IT Dept. of SE, 2001 SE-I.1
Cấu trúc môn học
45 tiết + 1 Đồ án môn học
Cần những kiến thức căn bản về CNTT
Cung cấp những nguyên chung về Công
nghệ học Phần mềm (CNHPM)
Cung cấp kiến thức để học các môn chuyên
ngành hẹp như Phân tích thiết kế phần mềm,
Xây dựng đánh giá phần mềm, Quản trị dự
án phần mm,...
HUT, Falt. of IT Dept. of SE, 2001 SE-I.2
Cấu trúc môn học (tiếp)
Nội dung: gồm 6 phần với 11 chương
Giới thiệu chung về CNHPM (3 buổi)
Quản dự án PM (2b)
Yêu cầu người dùng (1b)
Thiết kế lập trình (2b)
Kiểm th bảo t (2b)
Chủ đề nâng cao tổng kết (1b+1b)
Đánh giá: Thi hết môn + Đồ án môn học
HUT, Falt. of IT Dept. of SE, 2001 SE-I.3
Tài liệu tham khảo
R. Pressman, Software Engineering: APractioner’s
Approach. 5th Ed., McGraw-Hill, 2001
R. Pressman, Kỹ ngh phần mềm. Tập 1, 2, 3. NXB
Giáo dục, Nội, 1997 (Người dịch: Ngô Trung Việt)
I. Sommerville, Software Engineering. 5th Ed.,
Addison-Wesley, 1995
K. Kawamura, Nhập môn Công nghệ học Phần mềm.
NXB Kinki-Kagaku, Tokyo, 2001 (Tiếng Nhật)
HUT, Falt. of IT Dept. of SE, 2001 SE-I.4
Phần I
Giới thiệu chung về CNHPM
Chương 1: Bản chất phần mềm
1.1 Định nghĩa chung về phần mềm
1.2 Kiến trúc phần mềm
1.3 Các khái niệm
1.4 Đặc tính chung của phần mềm
1.5 Thế nào phần mềm tốt ?
1.6 Các ứng dụng phần mềm
HUT, Falt. of IT Dept. of SE, 2001 SE-I.5
1.1. Định nghĩa chung về phần mềm
Phn mm (Software -SW) như một khái niệm
đối nghĩa với phần cứng (Hardware -HW), tuy
nhiên, đây 2 khái niệm tương đối
Từ xưa, SW như thứ được cho không hoặc n
kèm theo máy (HW)
Dần dần, g thành SW ngày càng cao nay
cao hơn HW
HUT, Falt. of IT Dept. of SE, 2001 SE-I.6
CuuDuongThanCong.com https://fb.com/tailieudientucntt
9/4/2011
2
Các đặc tính của SW HW
HW
Vật “cứng”
Kim loại
Vật chất
Hữu hình
Sản xuất công nghiệp bởi
máy móc chính
Định ợng chính
Hỏng hóc, hao mòn
SW
Vật “mềm
Kỹ thuật sử dụng
Trừu tượng
hình
Sản xuất bởi con người
chính
Định tính chính
Không hao mòn
HUT, Falt. of IT Dept. of SE, 2001 SE-I.7
Định nghĩa 1: Phần mềm
Các lệnh (chương trình y nh) khi được thực
hiện thì cung cấp những chức năng kết quả
mong muốn
Các cấu trúc dữ liệu làm cho chương trình thao
tác thông tin thích hợp
Các liệu tả thao tác cách sử dụng
chương trình
HUT, Falt. of IT Dept. of SE, 2001 SE-I.8
SW đối nghĩa với HW
Vai trò SW ngày càng thể hiện trội
Máy tính . . . chiếc hộp không SW
Ngày nay, SW quyết đnh cht lưng mt hệ
thống y tính (HTMT), chủ đề cốt lõi,
trung tâm của HTMT
Hệ thống y tính gồm HW SW
HUT, Falt. of IT Dept. of SE, 2001 SE-I.9
Định nghĩa 2
Trong một hệ thống máy tính, nếu tr bỏ đi các thiết bị
các loại ph kiện thì phần còn lại chính phần
mềm (SW)
Nghĩa hẹp: SW dịch vụ chương trình để tăng khả
năng xử của phần cứng của máy nh (như hệ điều
hành -OS)
Nghĩa rộng: SW tất cả các kỹ thuật ứng dụng để
thực hiện nhng dịch vụ chức năng cho mục đích nào
đó bằng phần cứng
HUT, Falt. of IT Dept. of SE, 2001 SE-I.10
SW theo nghĩa rộng
Không chỉ SW bản SW ứng dụng
Phải gồm cả khả năng, kinh nghiệm thực tiễn
kỹ năng của kỹ (người chế ra phần
mềm): Know-how of Software Engineer
tất cả các kỹ thuật làm cho sử dụng phần
cứng máy tính đạt hiệu quả cao
HUT, Falt. of IT Dept. of SE, 2001 SE-I.11
Phần mềm ?
HUT, Falt. of IT Dept. of SE, 2001 SE-I.12
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
liệu
Kinh nghiệm kỹ ,
know-how
CuuDuongThanCong.com https://fb.com/tailieudientucntt
9/4/2011
3
Nhóm các kỹ thuật, phương pháp luận
Các khái niệm trình tự cụ th hóa một hệ thống
Các phương pháp tiếp cận giải quyết vấn đề
Các trình tự thiết kế phát triển được chuẩn hóa
Các phương pháp đặc tả yêu cầu, thiết kế hệ thống,
thiết kế chương trình, kiểm th, toàn bộ quy trình
quản phát triển phần mềm
HUT, Falt. of IT Dept. of SE, 2001 SE-I.13
Nhóm các chương trình
phần giao diện với phần cứ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ử dữ
liệu
Phần mềm bản: với chức năng cung cấp môi trường
thao tác dễ dàng cho người sử dụng nhằm tăng hiệu năng
xử của phần cứng ( dụ như OS chương trình hệ
thống)
Phần mềm ứng dụng: dùng để xử nghiệp vụ thích hợp
o đó (quản , kế toán, . . .), phần mềm đóng gói, phần
mềm của người dùng, . . .
HUT, Falt. of IT Dept. of SE, 2001 SE-I.14
Nhóm các liệu
Những liệu hữu ích, giá trị cao rất cần
thiết để phát triển, vận hành bảo trì phần
mềm
Để chế ra phần mềm với độ tin cậy cao cần tạo
ra các liệu chất lượng cao: đặc tả yêu cầu,
tả thiết kế từng loại, điều kiện kiểm th, thủ
tục vận hành, hướng dẫn thao tác
HUT, Falt. of IT Dept. of SE, 2001 SE-I.15
Những yếu tố khác
Sản xuất phần mềm phụ thuộc rất nhiều vào con người
(kỹ phần mềm). Khả năng hệ thống hóa trừu ợng,
kh năng lập trình, kỹ năng công nghệ, kinh nghiệm
làm việc, tầm bao quát, . . .: khác nhau từng người
Phần mềm phụ thuộc nhiều vào ý tưởng (idea) kỹ
năng (know-how) của người/nhóm tác giả
HUT, Falt. of IT Dept. of SE, 2001 SE-I.16
1.2 Kiến trúc phần mềm
1.2.1 Phần mềm nhìn từ cấu trúc phân cấp
Cấu trúc phần mềm cấu trúc phân cấp (hierarchical
structure): mức trên hệ thống (system), dưới các
hệ thống con (subsystems)
Dưới hệ thống con các chương trình
Dưới chương trình các Modules hoặc Subroutines
với các đối số (arguments)
HUT, Falt. of IT Dept. of SE, 2001 SE-I.17
Kiến trúc phần mềm
HUT, Falt. of IT Dept. of SE, 2001 SE-I.18
System
Subsystem Subsystem
Program Program
Module Module Subroutine
Master files
Temporary
files
Arguments Arguments
Job unit
Jobstep unit
Member unit
Common Module
CuuDuongThanCong.com https://fb.com/tailieudientucntt
9/4/2011
4
1.2.2 Phần mm nhìn từ cấu trúc th tục
Hai yếu tố cấu thành của phần mềm
Phương diện cấu trúc
Phương diện thủ tục
Cấu trúc phần mềm: biểu thị kiến trúc các chức
năng phần mềm đó điều kiện phân cấp
các chức năng (thiết kế cấu trúc)
Thiết kế chức năng: theo chiều đứng (càng sâu
càng phức tạp) chiều ngang (càng rộng càng
nhiều chức năng, qui càng lớn)
HUT, Falt. of IT Dept. of SE, 2001 SE-I.19
Cấu trúc phần mềm
HUT, Falt. of IT Dept. of SE, 2001 SE-I.20
Fuction A
Function B Function C
Function D Function E Function F
Cấu trúc chiều ngang
(Horizontal structure)
Cấu trúc chiều đứng
(Vertical structure)
Thủ tục (procedure) phần mềm
những quan hệ giữa các trình tự phần mềm đó
Thuật toán với nhng phép lặp, rẽ nhánh, điều khiển
luồng xử (quay lui hay bỏ qua)
cấu trúc lôgic biểu th từng chức năng trong
phần mềm trình tự thực hiện chúng
Thiết kế cấu trúc trước rồi sang chức năng
HUT, Falt. of IT Dept. of SE, 2001 SE-I.21
1.3 Các khái niệm
Khi chế tác phần mềm cần nhiều kỹ thuật
Phương pháp luận (Methodology): những chun mực bản
để chế tạo phn mm vi các ch tiêu định tính
Các phương pháp kỹ thut (Techniques): những trình tự cụ
thể để chế tạo phần mềm cách tiếp cận khoa học mang
tính định lượng
Từ phương pháp luận triển khai đến kỹ thuật
HUT, Falt. of IT Dept. of SE, 2001 SE-I.22
Các khái niệm
(Software concepts)
Khái niệm nh môđun (modularity concept)
Khái niệm chi tiết hóa dần từng bước (stepwise
refinement concept)
Khái niệm trừu tượng hóa (abstraction concept):
về thủ tục, điều khiển, dữ liệu
Khái niệm che giấu thông tin (information hiding
concept)
Khái niệm hướng đối tượng (object oriented)
HUT, Falt. of IT Dept. of SE, 2001 SE-I.23
Từ phương pháp luận phần mềm sang
kỹ thuật phần mềm
HUT, Falt. of IT Dept. of SE, 2001 SE-I.24
Tính Môđun
Chi tiết hóa dn
Trừu tượng hóa
(Che giấu t.tin)
Phân tích cấu trúc
Thiết kế cấu trúc
Lập trình cấu trúc
Dữ liệu trừu tượng
Hướng đối tượng
Khái niệm phn mềm
CuuDuongThanCong.com https://fb.com/tailieudientucntt
9/4/2011
5
1.3.1 Tính môđun (Modularity)
khả năng phân chia phần mềm thành các môđun
ứng với các chức năng, đồng thời cho phép quản
tổng th: khái niệm phân chia trộn (partion and
merge)
Hai phương pháp phân chia môđun theo chiều
u (depth, thẳng đứng): điều khiển phức tạp dần
rộng (width, nằm ngang): môđun phụ thuộc dần
Quan hệ giữa các môđun: qua các đối số (arguments)
HUT, Falt. of IT Dept. of SE, 2001 SE-I.25
Chuẩn phân chia môđun
HUT, Falt. of IT Dept. of SE, 2001 SE-I.26
Tính độc
lập kém
dần
Điều khiển
phức tạp
dần
SW Phân chia chiều rộng
Phân chia chi ều sâu
Cấu trúc rộng chiều ngang
Cấu trúc sâu chiu đứng
1.3.2 Chi tiết hóa từng bước
Cách tiếp cận từ trên xuống (top-down approach)
HUT, Falt. of IT Dept. of SE, 2001 SE-I.27
Ngôn ngữ
chương trình
Chi
tiết
hóa
từng
bước
Thế giới bên ngoài
Đặc tả yêu cầu
Tru tưng hóa mc cao:
Thế gii n ngi,
trng thái chưa ràng
Trừu tượng hóa mức trung gian:
Xác định yêu cầu đặc tả
nhng định nghĩa u cầu
Trừu tượng hóa mức thấp:
Từng lệnh của chương trình được
viết bởi ngôn ngữ th tục nào đó
dụ: Trình tự giải quyết vấn đề từ mức thiết kế
chương trình đến mức lập trình
Bài toán: từ một nhóm Nsố khác nhau tăng
dần, hãy tìm số giá trị bằng K(nhập từ ngoài
vào) in ra vị t ca
Gii tng bưc từ khái nim đến chi tiết hóa
từng câu lệnh bởi ngôn ngữ lập trình nào đó
Chọn giải thuật tìm kiếm nhị phân (pp nhị
phân)
HUT, Falt. of IT Dept. of SE, 2001 SE-I.28
Cụ thể hóa thủ tục qua các chức năng
HUT, Falt. of IT Dept. of SE, 2001 SE-I.29
Bài toán đã cho Nhập giá trị K
Nhận giá trị nhóm Nsố
Tìm kiếm giá trị (pp nhị phân)
In ra vị trí (nếu )
Cụ thể hóa bước tiếp theo
HUT, Falt. of IT Dept. of SE, 2001 SE-I.30
Tìm kiếm giá trị
(pp nhị phân)Xác lập phạm vi mảng số
Lặp lại xử m kiếm giá trị K
trong phạm vi tìm kiếm
Tìm vị trí giữa phân đôi mảng
So sánh K với giá trị giữa
Đặt lại phạm vi m kiếm
Lặp lại m kiếm K
trong phạm vi tìmkiếm
CuuDuongThanCong.com https://fb.com/tailieudientucntt