Đại học Đông Á<br />
<br />
Bài giảng môn Công nghệ Phần mềm<br />
<br />
BỘ GIÁO DỤC VÀ ĐÀO TẠO<br />
TRƯỜNG ĐẠI HỌC ĐÔNG Á<br />
<br />
BÀI GIẢNG MÔN HỌC<br />
MÔN: CÔNG NGHỆ PHẦN MỀM<br />
<br />
Đà Nẵng 2011<br />
<br />
Đại học Đông Á<br />
<br />
Bài giảng môn Công nghệ Phần mềm<br />
<br />
Lời nói đầu<br />
Nhập môn Công Nghệ Phần Mềm là môn học nhằm giúp cho sinh viên có<br />
kiến thức cơ bản nhất trong lĩnh vực công nghệ phần mềm. Qua môn học này<br />
sinh viên có cái nhìn khái quát về qui trình phát triển phần mềm, hiểu biết và<br />
thực hiện các giai đoạn trong qui trình trên một phần mềm cụ thể dựa trên những<br />
phương pháp, kỹ thuật trong quá trình thu thập yêu cầu, phân tích, thiết kế và cài<br />
đặt, viết tài liệu đã được minh họa cụ thể trong giáo trình. Mục tiêu giáo trình<br />
là sinh viên có thể hiểu được những yêu cầu công việc cần phải làm ở mỗi giai<br />
đoạn của qui trình, để có thể đảm trách công việc ở một trong các giai đoạn làm<br />
phần mềm trong những nhóm dự án.<br />
<br />
Đại học Đông Á<br />
<br />
Bài giảng môn Công nghệ Phần mềm<br />
<br />
Mục lục<br />
Lời nói đầu ................................................................................................................. 2<br />
Mục lục....................................................................................................................... 3<br />
Danh mục hình vẽ ..................................................................................................... 6<br />
Danh mục bảng biểu ................................................................................................. 8<br />
Chương 1: Tổng quan về Công nghệ Phần mềm ................................................... 9<br />
1.1 Mở đầu............................................................................................................ 9<br />
1.2 Định nghĩa và đặc tính của sản phẩm phần mềm ........................................... 9<br />
1.2.1 Định nghĩa phần mềm ........................................................................... 9<br />
1.2.2 Phân loại và đặc tính của sản phẩm phần mềm. ................................... 9<br />
1.3 Định nghĩa và các đặc trưng của Công nghệ phần mềm .............................. 12<br />
1.3.1 Định nghĩa Công nghệ phần mềm ...................................................... 12<br />
1.3.1 Các đặc trưng của Công nghệ phần mềm ........................................... 12<br />
1.3.2 Nội dung công việc của một kỹ sư phần mềm.................................... 13<br />
1.3.3 Lịch sử ngành công nghệ phần mềm .................................................. 13<br />
1.4 Mô hình phát triển phần mềm ...................................................................... 14<br />
1.4.1 Các công đoạn trong phát triển phần mềm ......................................... 14<br />
1.4.2 Các mô hình phát triển phần mềm ...................................................... 15<br />
1.4.3 Mô hình tuần tự tuyến tính WaterFall – Sequency model .................. 16<br />
1.4.4 Mô hình bản mẫu Prototype Model .................................................... 16<br />
1.4.5 Mô hình xoắn ốc Boehm’s Spiral Model ............................................ 17<br />
1.4.6 Mô hình RAD ..................................................................................... 19<br />
1.5 Các tiêu chuẩn dùng trong ngành Công nghiệp phần mềm ......................... 19<br />
Chương 2: Quản lý dự án phần mềm ................................................................... 23<br />
2.1 Dự án phần mềm và sự cần thiết việc quản lý dự án phần mềm .................. 23<br />
2.1.1 Định nghĩa dự án và quản lý dự án ..................................................... 23<br />
2.1.2 Sự cần thiết của Quản lý dự án phần mềm. ........................................ 23<br />
2.2 Các thành phần trong mô hình làm việc của một dự án phần mềm ............. 23<br />
2.2.1 Vai trò và nhiệm vụ của các nhóm trong dự án phần mềm ................ 24<br />
2.2.2 Các nhân sự khác trong dự án ............................................................. 28<br />
2.2.3 Các yếu tố ảnh hưởng đến các nhóm trong dự án .............................. 28<br />
2.3 Ước lượng dự án........................................................................................... 29<br />
2.3.1 Độ đo................................................................................................... 29<br />
2.3.2 Độ đo LOC - Metric hướng quy mô phần mềm ................................. 30<br />
2.3.3 Điểm chức năng Function Point – Metric hướng chức năng .............. 30<br />
<br />
Đại học Đông Á<br />
<br />
Bài giảng môn Công nghệ Phần mềm<br />
<br />
2.3.4 Mô hình ước lượng thực nghiệm ........................................................ 32<br />
2.3.5 Mô hình ước lượng thực nghiệm COCOMO...................................... 32<br />
2.4 Lập kế hoạch dự án ................................................................................ 33<br />
2.4.2 Cấu trúc kế hoạch thực hiện dự án: .................................................... 34<br />
2.4.3 Quy trình lập kế hoạch thực hiện dự án .............................................. 35<br />
2.4.4 Lập lịch dự án ..................................................................................... 35<br />
2.5 Quản lý rủi ro ............................................................................................... 40<br />
2.5.1 Định nghĩa rủi ro và quản lý rủi ro ..................................................... 40<br />
2.5.2 Nhận diện rủi ro .................................................................................. 40<br />
2.5.3 Quy trình quản lý rủi ro ...................................................................... 41<br />
Chương 3: Phân tích hệ thống ............................................................................... 42<br />
3.1 Mục tiêu của phân tích hệ thống .................................................................. 42<br />
3.2 Công việc và các vấn đề chính trong phân tích hệ thống ............................. 42<br />
3.3 Qui trình phân tích hệ thống ......................................................................... 42<br />
3.4 Phân thích hệ thống hướng cấu trúc ............................................................. 43<br />
3.4.1 Lược đồ dòng chảy dữ liệu DFD ........................................................ 45<br />
3.4.2 Lược đồ dịch chuyển trạng thái STD .................................................. 47<br />
3.4.3 Lược đồ quan hệ thực thể ERD .......................................................... 47<br />
3.4.4 Từ điển dữ liệu .................................................................................... 48<br />
3.5 Phân tích hệ thống hướng đối tượng ............................................................ 49<br />
3.5.1 Giới thiệu USE CASE ........................................................................ 50<br />
3.5.2 Sự cần thiết phải có USE CASE ......................................................... 51<br />
3.5.3 Mô hình hóa USE CASE .................................................................... 51<br />
3.5.4 Lược đồ USE CASE ........................................................................... 53<br />
3.5.5 Xây dựng mô hình Use Case .............................................................. 56<br />
3.5.6 Mô hình đối tượng .............................................................................. 57<br />
3.5.7 Tổng kết: ............................................................................................. 62<br />
Chương 4: Thiết kế phần mềm .............................................................................. 63<br />
4.1 Khái niệm về thiết kế phần mềm .................................................................. 63<br />
4.1.1 Khái niệm ............................................................................................ 63<br />
4.1.2 Tầm quan trọng ................................................................................... 63<br />
4.2 Quá trình thiết kế .......................................................................................... 63<br />
4.2.1 Các hoạt động thiết kế chính trong một hệ thống phần mềm lớn. ...... 64<br />
4.2.2 Cơ sở của thiết kế phần mềm .............................................................. 65<br />
4.3 Thiết kế giao diện người dùng ..................................................................... 65<br />
4.3.1 Tiêu chuẩn về thiết kế giao diện ......................................................... 65<br />
<br />
Đại học Đông Á<br />
<br />
Bài giảng môn Công nghệ Phần mềm<br />
<br />
4.3.2 Công cụ thiết kế giao diện .................................................................. 66<br />
4.3.3 Quy trình thiết kế giao diện ................................................................ 66<br />
4.3.4 Định hướng về thiết kế giao diện ........................................................ 66<br />
4.4 Phương pháp thiết kế hướng cấu trúc........................................................... 67<br />
4.4.1 Thiết kế phần mềm cổ điển ................................................................. 67<br />
4.4.2 Phân chia module ................................................................................ 68<br />
4.4.3 Thiết kế dữ liệu ................................................................................... 70<br />
4.5 Phương pháp thiết kế hướng đối tượng ........................................................ 70<br />
4.5.1 Khái niệm mô hình động .................................................................... 71<br />
4.5.2 Sự cộng tác – Lược đồ cộng tác.......................................................... 72<br />
4.5.3 Lược đồ tuần tự ................................................................................... 74<br />
4.5.4 Lược đồ trạng thái ............................................................................... 76<br />
4.5.5 Lược đồ hoạt động .............................................................................. 78<br />
4.5.6 Hoàn chỉnh lược đồ lớp chi tiết .......................................................... 79<br />
4.5.7 Tổng kết: ............................................................................................. 81<br />
Chương 5: Lập trình............................................................................................... 82<br />
5.1 Ngôn ngữ lập trình ....................................................................................... 82<br />
5.1.1 Đặc trưng của ngôn ngữ lập trình ....................................................... 82<br />
5.1.2 Lựa chọn ngôn ngữ lập trình ............................................................... 83<br />
5.1.3 Ngôn ngữ lập trình và và sự ảnh hưởng tới kỹ nghệ phần mềm ........ 84<br />
5.2 Phong cách lập trình ..................................................................................... 84<br />
5.2.1 Tài liệu chương trình .......................................................................... 84<br />
5.2.2 Khai báo dữ liệu .................................................................................. 85<br />
5.2.3 Xây dựng câu lệnh .............................................................................. 85<br />
5.2.4 Vào/ra .................................................................................................. 85<br />
5.3 Lập trình tránh lỗi ......................................................................................... 86<br />
5.3.1 Lập trình thứ lỗi .................................................................................. 87<br />
5.3.2 Lập trình phòng thủ............................................................................. 87<br />
5.4 Lập trình hướng hiệu quả thực hiện ............................................................. 88<br />
5.4.1 Tính hiệu quả chương trình................................................................. 88<br />
5.4.2 Hiệu quả bộ nhớ .................................................................................. 89<br />
5.4.3 Hiệu quả vào/ra ................................................................................... 89<br />
5.5 Tổng kết ........................................................................................................ 89<br />
Chương 6: Kiểm nghiệm và bảo trì phần mềm ................................................... 90<br />
6.1 Kiểm nghiệm phần mềm .............................................................................. 90<br />
6.1.1 Khái niệm kiểm nghiệm phần mềm .................................................... 90<br />
<br />