BỘ LAO ĐỘNG - THƯƠNG BINH VÀ XÃ HỘI
TRƯỜNG CAO ĐẲNG KỸ THUẬT CÔNG NGHỆ HÒA BÌNH
----------
GIÁO TRÌNH
Công nghệ phần mềm
Hà Nội, năm 2023
Giáo trình ng nghệ phần mềm.
2 | P a g e
MỤC LỤC
MỤC LỤC ................................................................................................................. 2
Bài 1: Đối tượng của Kỹ nghệ phần mềm .............................................................. 4
1.1. Mở đầu - Sự cần thiết của Kỹ nghệ phần mềm: ......................................... 4
1.2 Định nghĩa về “Kỹ nghệ phần mềm”: .......................................................... 5
1. 3. Phần mềm: ..................................................................................................... 7
1. 4. Tiến trình ..................................................................................................... 10
1.5. Về mức độ trưởng thành để thực thi tiến trình (Process maturity ): ..... 13
Bài 2: Các mô hình tiến trình PM ....................................................................... 15
2.1 Định nghĩa: .................................................................................................... 15
2.2. Các mô hình “kinh điển”: .......................................................................... 15
2.3. Các mô hình tiến hoá: ................................................................................. 19
2.4. Mô hình phát triển tương tranh): ............................................................. 23
2.5. Phát triển theo thành phần: ....................................................................... 23
Bài 3: Quản lý Dự án Phần mềm .......................................................................... 25
3.1 Quản lý dự án PM: ....................................................................................... 25
3.2. Phổ các vấn đề quản lý dự án PM: ............................................................ 30
Bài 4: Đặc tả Phần mềm ........................................................................................ 34
4.1. Đặc tả yêu cầu: ............................................................................................. 34
4.2 Kỹ nghệ tạo bản mu .................................................................................... 38
4.3 Các phương pháp và công cụ làm bản mu: .............................................. 39
4.4 Đặc tả hình thức [3]: ..................................................................................... 41
Bài 5: Phân tích và thiết kế PM ............................................................................ 46
Phần I: Phân tích hệ thống ................................................................................ 46
5.1 Các cách tiếp cận và nguyên lý phân tich ................................................... 46
5.2. Mô hình hoá việc phân tích: ...................................................................... 49
Phần II: Thiết kế phần mềm ................................................................................. 63
5.3 TK PM và KNPM: ........................................................................................ 63
5.4 Tiến trình TK: ............................................................................................... 64
5.5 Các nguyên lý thiết kế: ................................................................................. 65
5.6 Các quan điểm (cách tiếp cận) về thiết kế: ................................................ 66
5.7 Thiết kế modula hiệu quả : .......................................................................... 71
5.8 Quy tắc heuristic để TK cho mô hình modula hiệu quả: ........................ 73
5.9 Mô hình thiết kế: ........................................................................................... 75
5.10 Tài liệu thiết kế: .......................................................................................... 75
Bài 6. Lập trình và kiểm thử phần mềm .............................................................. 77
Phần I: Lập trình và ngôn ngữ lập trình .......................................................... 77
6.1 Các thuộc tính của chương trình [2] ........................................................... 77
6.2 Các cấu trúc chính của chương trình ......................................................... 78
6.3 Phân loại ngôn ngữ lập trình: ..................................................................... 79
6.4 Kỹ thuật lập trình: ........................................................................................ 81
Phần II: Kiểm thử ............................................................................................... 84
Giáo trình ng nghệ phần mềm.
3 | P a g e
6.5 Tổng quan: ..................................................................................................... 84
6.6 Kiểm thử đơn vị ............................................................................................ 84
6.7 Kiểm thử tích hợp: ........................................................................................ 85
6.8 Kiểm thử hệ thống: ...................................................................................... 87
6.9 Một số kiểm thử khác: ................................................................................. 88
6.10 Kế hoạch kiểm thử ...................................................................................... 88
6.10 Kiểm điểm .................................................................................................... 90
6.11 Thiết kế và quản lý kiểm thử ..................................................................... 90
7.1 Tiếp cận hướng đối tượng: ........................................................................... 92
7.2 Kỹ nghệ hướng đối tượng ............................................................................ 94
7.3 UML (tổng quan) .......................................................................................... 96
Giáo trình ng nghệ phần mềm.
4 | P a g e
Bài 1: Đối tượng của Kỹ nghệ phần mềm
.
1.1. Mở đầu - Sự cần thiết của Kỹ nghệ phần mềm:
Phần mềm (PM) máy tính hiện nay đóng một vai trò không thể thay thế trong công nghiệp
trong sự phát triển của xã hội nói chung, do công nghệ thông tin (CNTT) đã được ứng dụng rộng
khắp sâu sắc. Những trục trặc xảy ra trong các phần mềm thể gây ra những xáo động
quy mô rất lớn. Ví dụ về sự cố Y2K cho thấy phạm vi ảnh hưởng mà lỗi của phần mềm có thể tác
động trong nền kinh tế trong cuộc sống. đồng thời cũng cho thấy sự cần thiết phải các
hệ thống tiêu chuẩn chặt chẽ trong việc xây dựng và khai thác phần mềm để thể kiểm soát
và ứng phó với các tình huống ứng dụng một cách khoa học và hiệu quả.
Ảnh hưởng của PM đến hội văn hoá của con người rất sâu sắc. Dường như con người
hiện đại đã “đánh cược” tất cả cuộc sống của họ (công việc, tiện nghi, an toàn, sự nghỉ ngơi giải
trí, các quyết định, v.v.) vào các PM máy tính.
Nói như trong [1], khi một phần mềm thành công, tức khi nó đáp ứng được các nhu cầu của
người dùng chúng, chạy trơn tru trong một thời gian dài, dsửa chữa dễ sử dụng, th
làm cho mọi việc tốt đẹp lên. Còn với một phần mềm thất bại, tức khi người dùng không
thoả mãn, khi rất dbị sai sót, rất khó sửa chữa sdụng - mọi điều xấu đều thể xảy ra.
Ai cũng mong muốn xây dựng được những phần mềm làm cho công việc tốt lên, loại trừ các điều
xầu ẩn sau những nỗ lực bị phá hỏng. Muốn vậy, cần một kỷ luật khi thiết kế xây dựng phần
mềm, nói cách khác, cần tới một cách tiếp cận mang tính kỹ nghệ.
Do vai trò quan trọng ngày càng tăng của PM, cộng đồng PM đã liên tục phát triển các công
nghệ giúp cho việc y dựng các chương trình chất lượng cao nhanh hơn, dễ hơn, rẻ hơn. Các
công nghệ đó hoặc hướng tới các nh vực ứng dụng (như thiết kế ứng dụng Web), hoặc tập
trung vào các lĩnh vực kthuật (như hướng đối tượng), hoặc một vấn đề rộng lớn hơn (như hệ
điều hành (HĐH), thí dụ Linux). Tuy nhiên cho đến nay vẫn còn chưa phát triển được công nghệ
lập trình nào làm được tất cả các điều đó, và cũng ít có hy vọng sẽ có được nó trong tương lai.
Trong thời kỳ đầu của CNTT, “xây dựng phần mềm” tương đương với việc lập trình, mang
nhiều đặc trưng nghệ thuật sáng tạo nhân, nhiều khi rất cầu k, chỉ tác giả của mới may
ra hiểu được! c k thuật lập trình sau đó tập trung chủ yếu vào nâng cao hiệu quả của chương
trình năng suất viết chương trình. Vào những năm 70 của thế kỷ trước, D. Knuth dự định
viết bộ sách đồ sộ về “Nghệ thuật lập trình” (“The art of programming”) - gồm nhiều tập, đã ra
được 3 tập đầu1), nhằm tổng kết và hệ thống hoá những thành tựu trong lĩnh vực thuật toán và lập
trình. Chúng đã từng một trong các bộ sách “gối đầu giường” của nhiều thế hệ lập trình viên.
Tuy nhiên, hiện nay, trong công nghiệp, “kỹ sư phần mềm” đã thay thế “lập trình viên” trong danh
mục chức danh công việc. Điều này đánh dấu sự chuyển hướng nghề nghiệp rất quan trọng của
những người làm phần mềm y tính, nhấn mạnh tính kỹ nghệ trong việc phát triển phần mềm,
nhấn mạnh các phẩm chất kỹ sư của những người sáng tạo chúng.
vậy, cách tiếp cận vấn đề theo hướng kỹ nghệ vai trò thực tiễn riêng. Cách tiếp cận y
nhấn mạnh các đặc điểm sau đây của một sản phẩm phần mềm hiện đại:
Phần mềm là một sản phẩm công nghiệp,
1 Tập 1: “Các thuật toán cơ sở” , Tập 2: “ Các thuật toán nửa số”, và Tập 3: “Sắp xếp và lựa chọn”.
Giáo trình ng nghệ phần mềm.
5 | P a g e
Phần mềm - với cách sản phẩm đáp ứng các nhu cầu của cuộc sống thực tiễn
thu hút nhiều người tham gia, từ thiết kế, y dựng cả chăm chút” (bảo trì) qua
nhiều giai đoạn và trong một thời gian dài,
Phần mềm được sử dụng bởi một cộng đồng, gồm nhiều người trong nhiều bối
cảnh ứng dụng.
Tập bài giảng y trình bày tính chất nhập môn về kỹ nghệ phần mềm, nhằm cung cấp các
kiến thức cần thiết nhất, từ góc nhìn “knghệ”, về phần mềm, với cách đối tượng của k
nghệ đó, các tiến trình phần mềm - với cách các quy trình sản xuất ra chúng, cũng như các
vấn đề quản lý dự án phần mềm, và các vấn đề về đặc tả, thiết kế, đo đạc, kiểm tra chất lượng
của phần mềm.
1.2 Định nghĩa về “Kỹ nghệ phần mm”:
1.2.1 Một số định nghĩa về Kỹ nghệ phần mềm (KNPM, hay SE – software
engineering):
(R. Pressman): KNPM là việc áp dụng một cách k luật các nguyên lý, phương pháp công
cụ của toán học, của khoa học, cũng như của bản thân knghệ (engineering), nhằm sản xuất
một cách kinh tế các phần mềm có chất lượng.
(Fritz Bauer): KNPM thiết lập sử dụng các nguyên lý knghệ hợp lý để thu được, một
cách kinh tế, PM bền vững và làm việc hiệu quả trên một máy tính thực.
(IEEE): KNPM là: (1) Áp dụng một cách tiếp cận có hệ thống, có k luật, định lượng được trong
phát triển, vận hành bảo trì PM, tức áp dụng knghệ đối với PM, (2) Nghiên cứu các
cách tiếp cận nói trong (1).