Tài liệu tham khảo hỗ trợ môn học Công nghệ phần mềm

CHƯƠNG 1. TỔNG QUAN VỀ CÔNG NGHỆ PHẦN MỀM 3

1.1. ĐÔI ĐIỀU VỀ VẤN ĐỀ THUẬT NGỮ 3

1.2. CÁC ĐỊNH NGHĨA VÀ THUẬT NGỮ 3

1.3. PHẠM VI CỦA CÔNG NGHỆ PHẦN MỀM 6

CHƯƠNG 2. QUY TRÌNH LÀM PHẦN MỀM 14

2.1. MỞ ĐẦU 14

2.2. KHÁCH HÀNG, NGƯỜI PHÁT TRIỂN VÀ NGƯỜI SỬ DỤNG 14

2.3. PHA XÁC ĐỊNH YÊU CẦU 14

2.4. PHA ĐẶC TẢ (HAY PHÂN TÍCH) 15

2.5. PHA THIẾT KẾ 17

2.6. PHA CÀI ĐẶT 18

2.7. PHA TÍCH HỢP 18

2.8. PHA BẢO TRÌ 19

2.9. THÔI SỬ DỤNG 20

CHƯƠNG 3. CÁC MÔ HÌNH VÒNG ĐỜI PHẦN MỀM 21

3.1. MÔ HÌNH XÂY DỰNG-VÀ-HIỆU CHỈNH (BUILD-AND-FIX MODEL) 21

3.2. MÔ HÌNH THÁC ĐỔ (WATERFALL MODEL) 22

3.3. MÔ HÌNH BẢN MẪU (RAPID PROTOTYPING MODEL) 23

3.4. MÔ HÌNH TĂNG DẦN (INCREMENTAL MODEL) 25

3.5. MÔ HÌNH TĂNG DẦN ĐỒNG THỜI (CONCURRENT INCREMENTAL MODEL) 27

3.6. MÔ HÌNH ĐỒNG BỘ-VÀ-ỔN ĐỊNH (SYNCHRONIZE-AND-STABILIZE MODEL) 28

3.7. MÔ HÌNH XOẮN ỐC (SPIRAL MODEL) 28

3.8. MÔ HÌNH HƯỚNG ĐỐI TƯỢNG (OBJECT-ORIENTED MODEL) 31

CHƯƠNG 5. PHA XÁC ĐỊNH YÊU CẦU 32

5.1. NẮM BẮT YÊU CẦU 32

5.2. PHÂN TÍCH YÊU CẦU 33

5.3. LÀM BẢN MẪU (PROTOTYPING) 33

5.4. TÍNH THÂN THIỆN VỚI NGƯỜI DÙNG CỦA PHẦN MỀM 34

5.5. BẢN MẪU NHƯ MỘT KỸ THUẬT ĐẶC TẢ 34

5.6. CÓ NÊN SỬ DỤNG LẠI BẢN MẪU? 35

5.7. SỬ DỤNG CÁC CÔNG CỤ CASE TRONG PHA YÊU CẦU 35

5.8. CÓ KHÁI NIỆM YÊU CẦU HƯỚNG ĐỐI TƯỢNG KHÔNG? 35

5.9. TÓM TẲT CHƯƠNG 36

5.10. PHA YÊU CẦU: TÌM HIỂU VẤN ĐỀ AIR GOURMET 36

CHƯƠNG 6. PHA ĐẶC TẢ CÓ CẤU TRÚC 39

6.1. TÀI LIỆU ĐẶC TẢ 39

6.2. PHÂN TÍCH HỆ THỐNG BẰNG PHƯƠNG PHÁP CẤU TRÚC 40

6.3. PHÂN TÍCH HỆ THỐNG VỀ DỮ LIỆU 49

CHƯƠNG 7. TỔNG QUAN VỀ UML VÀ PHƯƠNG PHÁP HƯỚNG ĐỐI TƯỢNG 53

7.1. SỰ RA ĐỜI CỦA PHƯƠNG PHÁP HƯỚNG ĐỐI TƯỢNG 53

7.2. TỔNG QUAN VỀ NGÔN NGỮ UML 53

7.3. MÔ HÌNH USE-CASE 56

7.4. MÔ HÌNH LỚP 67

7.5. BIỂU ĐỒ HOẠT ĐỘNG 74

7.6. BIỂU ĐỒ TRẠNG THÁI 79

7.7. BIỂU ĐỒ TUẦN TỰ 80

7.8. BIỂU ĐỒ CỘNG TÁC 82

CHƯƠNG 8. PHA PHÂN TÍCH HƯỚNG ĐỐI TƯỢNG 83

8.1. PHÂN TÍCH HƯỚNG ĐỐI TƯỢNG 83

8.2. QUẢN LÝ THÔNG TIN VỀ CHẾ ĐỘ ĂN ĐẶC BIỆT TRÊN MÁY BAY 83

8.3. NHỮNG VẤN ĐỀ CẦN CHÚ Ý TRONG PHA PHÂN TÍCH 89

CHƯƠNG 9. PHA THIẾT KẾ 91

9.1. THIẾT KẾ VÀ SỰ TRỪU TƯỢNG HÓA (DESIGN AND ABSTRACTION) 91

9.2. THIẾT KẾ HƯỚNG HÀNH ĐỘNG 92

9.3. PHÂN TÍCH DÒNG DỮ LIỆU 92

9.4. THIẾT KẾ HƯỚNG ĐỐI TƯỢNG 94

9.5. NHỮNG THÁCH THỨC TRONG PHA THIẾT KẾ HƯỚNG ĐỐI TƯỢNG 100

9.6. THÊM MỘT SỐ GHI CHÚ VỀ VẤN ĐỀ THIẾT KẾ HƯỚNG ĐỐI TƯỢNG 100

CHƯƠNG 10. PHA CÀI ĐẶT VÀ TÍCH HỢP 101

10.1. LỰA CHỌN NGÔN NGỮ LẬP TRÌNH 101

10.2. CÁC PHƯƠNG PHÁP CÀI ĐẶT VÀ TÍCH HỢP 102

10.3. KIỂM THỬ SẢN PHẨM PHẦN MỀM 103

10.4. KIỂM THỬ CHẤP NHẬN 104

CHƯƠNG 11. PHA BẢO TRÌ 106

11.1. VÌ SAO BẢO TRÌ LÀ CẦN THIẾT? 106

11.2. BẢO TRÌ PHẦN MỀM HƯỚNG ĐỐI TƯỢNG 106

CHƯƠNG 12. CÀI ĐẶT OOD BẰNG NGÔN NGỮ LẬP TRÌNH KHÔNG HỖ TRỢ HĐT 108

12.1. MỞ ĐẦU 108

12.2. CÀI ĐẶT CÁC LỚP VÀ CÁC ĐỐI TƯỢNG ĐỘC LẬP 109

12.3. CÀI ĐẶT CÁC LỚP VÀ CÁC ĐỐI TƯỢNG CÓ TÍNH THỪA KẾ 112

12.4. ĐÔI LỜI KẾT LUẬN 113

 

 

doc111 trang | Chuyên mục: Công Nghệ Phần Mềm | Chia sẻ: dkS00TYs | Lượt xem: 2784 | Lượt tải: 4download
Tóm tắt nội dung Tài liệu tham khảo hỗ trợ môn học Công nghệ phần mềm, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
 cho các bạn hiện chưa có ai làm, nên có thể không phải đã đuợc chấp nhận ở những nơi khác. Quan điểm của tôi là: các bạn cứ học, cứ làm đi. Nếu có gì chưa ổn chúng ta sẽ hiệu chỉnh dần cho ngày một tốt hơn.
12.2. CÀI ĐẶT CÁC LỚP VÀ CÁC ĐỐI TƯỢNG ĐỘC LẬP 
Trong phân tích và thiết kế HĐT, khái niệm lớp hoặc đối tượng đóng vai trò quan trọng bậc nhất. Công việc cần thực hiện trong bước phân tích là xây dựng ba loại mô hình: 
Mô hình use-case gồm các biểu đồ use-case (use-case diagram) cung cấp một bức tranh toàn cảnh về những gì đang xảy ra trong hệ thống. Mỗi phần tử của mô hình này thường là một lớp.
Mô hình lớp gồm các biểu đồ lớp mô tả các lớp cùng với khả năng cộng tác giữa chúng. Lớp (class) chính là phần tử cơ bản để xây dựng nên biểu đồ lớp. 
Mô hình động gồm các biểu đồ tương tác (interaction diagram) biểu diễn các hành động được thực hiện bởi (tới) các lớp hoặc các lớp con, ví dụ biểu đồ trạng thái.
Như vậy khái niệm lớp tham gia ở mọi nơi trong mô hình HĐT. 
Trong các ngôn ngữ lập trình HĐT thì lớp (class) là một kiểu dữ liệu, cũng giống như kiểu thực, nguyên...nhưng lại có sự khác biệt là lớp có thể có các thành phần là dữ liệu hoặc hành động. 
Để dễ hình dung, có người nói rằng lớp là tập hợp các đối tượng, và cụm từ lớp của các đối tượng cũng hay được sử dụng. Tuy nhiên nếu đòi hỏi tính chặt chẽ thì cách nói này chưa thật chính xác. Ta không thể nói int là tập hợp các số nguyên, còn int x; là một thể hiện của lớp số nguyên, mà chỉ có thể nói int là kiểu dữ liệu nguyên, còn int x; có nghĩa là biến x có kiểu nguyên được khai báo. Vậy thì khi ta viết class V {...}; V x; thì có nghĩa là V là một kiểu dữ liệu, còn x là một biến có kiểu V. Tuy nhiên trong thực tế ta vẫn chấp nhận cách nói không hoàn toàn chính xác để vấn đề dễ hiểu hơn.
Nếu cài đặt lớp bằng ngôn ngữ lập trình HĐT và sử dụng kiểu dữ liệu class thì dĩ nhiên vấn đề khá đơn giản, ta chỉ cần thực hiện chuyển đổi từ cách mô tả sang các dòng lệnh một cách tương ứng.
Tuy nhiên nếu cài đặt bằng một ngôn ngữ không hỗ trợ HĐT hoặc không dùng kiểu dữ liệu class thì sẽ khó khăn hơn. Trước hết ta cần làm rõ khái niệm lớp trong mô hình UML. 
Trong các mô hình UML thì lớp được hiểu là phần tử đại diện không xác định rõ của một tập hợp các đối tượng có chung một số đặc trưng nào đó, các đặc trưng này có thể là thuộc tính hoặc hành động. Như vậy đối tượng chính là một thể hiện của lớp. 
Giả sử ta có lớp Hàng với các thành phần được mô tả trong bảng sau (cột thứ 2 là giải thích):
Hàng
Tên lớp
MAH
TENHANG
NOICC
SOLUONG
DONGIA
Mã hàng
Tên hàng
Nơi cung cấp
Số lượng còn trong kho chưa bán
Đơn giá
TimKiem()
NhapMoi()
Xoa()
Save()
Tìm kiếm hàng
Nhập mặt hàng mới
Xóa mặt hàng
Lưu dữ liệu
Như cách hiểu trên đây thì có thể hiểu lớp Hàng là một bảng gồm các thuộc tính và hàm như trên nhưng chưa có giá trị, còn đối tượng là bảng đó nhưng đã nhận giá trị cụ thể:
Hàng
Hàng
MAH:
TENHANG:
NOICC:
SOLUONG:
DONGIA:
MAH: VT
TENHANG: Máy vi tính
NOICC: Công ty FPT
SOLUONG: 21
DONGIA: 6 000 000
TimKiem()
NhapMoi()
Xoa()
Save()
TimKiem()
NhapMoi()
Xoa()
Save()
	a) Lớp Hàng	b) Đối tượng Máy vi tính của lớp Hàng
Nếu bạn đã làm quen với đối tượng Form trong Access thì bạn có thể thấy rằng Form nhập dữ liệu có dạng như sau là một cài đặt hợp lý của lớp Hàng:
	a) Lớp Hàng	b) Đối tượng Máy vi tính của lớp Hàng
	Hình 12.1. Dùng Form để cài đặt lớp và đối tượng
Chúng ta có thể thấy rằng nếu thuộc tính thường thay đổi từ đối tượng này sang đối tượng khác thì hàm lại không như vậy. Thường thì các hàm là như nhau với các đối tượng khác nhau, nghĩa là các hàm thành phần của lớp được xác định ngay khi xây dựng lớp và không thay đổi với các đối tượng khác nhau.
Tương tự, chúng ta có thể thấy rằng một số công cụ khác như đối tượng Report cũng có thể dùng để cài đặt các lớp trong mô hình UML.
Dữ liệu trong thực tế thường không nằm ngay bên trong đối tượng, mà được lưu trong bảng dữ liệu. Dữ liệu trong đối tượng chỉ là bản ghi hiện thời, hoặc là dữ liệu tạm thời trước khi đưa vào tệp. Khi form nhập dữ liệu có nhiều bản ghi (tức là khi dữ liệu được hiện lên theo chiều ngang) thì form có thể được xem là đối tượng ứng với bản ghi hiện thời. 
Trong VF hoặc VB có rất nhiều kiểu biến đối tượng được định nghĩa sẵn (tức là các lớp) như các lớp Form, CommandButton, ToolBar... và bạn nên tận dụng các lớp này để tạo các đối tượng mới.
Phần quan trọng thể hiện sự tương tác thực sự giữa các lớp trong một OOD là mô hình động. Trong mô hình này các đối tượng đóng vai trò chủ đạo, ví dụ như trong biểu đồ tuần tự, biểu đồ cộng tác. Khi cài đặt chương trình thì ranh giới giữa lớp và đối tượng đôi khi không thật rõ ràng, và nhiều khi bạn cũng không cần bận tâm quá đó là lớp hay đối tượng.
Với lớp Hàng nói trên, nếu ngôn ngữ bạn lựa chọn chỉ có thể tạo được các hàm thì bạn có thể lập trình để tạo ra biểu nhập dữ liệu cùng các chức năng đi kèm như tìm kiếm, nhập mới, xóa, lưu trữ. Tất cả các hàm này được đưa vào một module riêng (ví dụ một tệp chương trình chẳng hạn) có tên như tên lớp. Về sau này khi dùng lại cho phần mềm khác thì bạn chuyển cả module này sang phần mềm mới. 
Tóm lại, trong những ngôn ngữ lập trình có các đối tượng thì bạn có thể dùng các đối tượng này để cài đặt lớp và đối tượng trong các mô hình UML mà không cần đưa ra một kiểu dữ liệu mới giống như class. Còn trong ngôn ngữ lập trình không hỗ trợ hướng đối tượng thì bạn có thể dùng nhóm các hàm và các hàm con để biểu diễn lớp và đối tượng.
12.3. CÀI ĐẶT CÁC LỚP VÀ CÁC ĐỐI TƯỢNG CÓ TÍNH THỪA KẾ 
Giả sử ta phải cài đặt lớp báo cáo và hai lớp thừa kế từ nó là báo cáo nhân sự và báo cáo thu nhập. Lớp báo cáo chỉ có hai thuộc tính là từ ngày và đến ngày, dều có kiểu ngày tháng (Date). Hai lớp con không chứa các thuộc tính này (tất nhiên là mỗi lớp có thể có nhiều thuộct tính riêng) mà sử dụng luôn các thuộc tính của lớp cha.
Báo cáo hàng
Báo cáo nhân sự
Báo cáo thu nhập
	Hình 12.1. Tính thừa kế trong mô hình UML
Nếu trong một ngôn ngữ lập trình HĐT có hỗ trợ tính thừa kế thì các lớp được cài đặt đúng như tính chất của thừa kế : hai lớp con được sử dụng các thành phần của lớp cha, chỉ cần bổ sung thêm các thuộc tính mới. Với ngôn ngữ lập trình không hỗ trợ tính thừa kế thì chúng ta cài đặt cả ba lớp một cách độc lập và cả ba đều có các thuộc tính từ ngày và đến ngày. Tuy nhiên các dữ liệu thành phần này chỉ nhập trong lớp cha (lớp báo cáo), còn trong lớp con thì luôn luôn nhận giá trị từ lớp cha. Ví dụ mỗi lần gọi đối tượng báo cáo nhân sự thì đối tượng này gọi đến đối tượng tương ứng thuộc lớp cha (lớp báo cáo) và lấy thông tin từ ngày, đến ngày trong lớp cha để cập nhật cho các thuộc tính từ ngày, đến ngày của chính nó. Thực ra cài đặt kiểu như thế này thì mới đúng với thực tế. Thật vậy, giả sử anh Quang được thừa hưởng từ ông nội mái tóc xoăn tít và vàng hoe. Rõ ràng mái tóc của anh Quang giống hệt mái tóc của ông, nhưng là mái tóc của riêng anh ta (chứ không dùng chung mái tóc với ông như định nghĩa thừa kế trong ngôn ngữ lập trình HĐT). Có thể một đôi lần nghe theo bạn bè anh ta nhuộm thành tóc đen, nhưng khi làm công việc họ đương như tập trung để giỗ chạp gì đó, anh ta lại muốn chứng tỏ mình đúng là giòng giống của ông nội nên lại làm lại tóc theo đúng hình mẫu tóc của ông. 
Trở lại ví dụ trên đây, các bạn có thể làm một form để nhập thông tin từ ngày, đến ngày. Mỗi lần làm báo cáo nhân sự hay báo cáo thu nhập bạn sẽ gọi tới form này để nhập thông tin từ ngày, đến ngày cho báo cáo.
12.4. ĐÔI LỜI KẾT LUẬN
Tóm lại, nếu bạn có một công cụ lập trình HĐT mà bạn hiểu rõ, thì bạn nên dùng nó để cài đặt OOD. Ví dụ nay mai học ngôn ngữ lập trình Java thì bạn hãy thử cài đặt xem. Còn nếu không có ngôn ngữ lập trình như vậy thì bạn cũng đừng vì thế mà nao núng. Bạn có thể dùng một ngôn ngữ lập trình bất kỳ để cài đặt OOD. 
MỘT SỐ THUẬT NGỮ VÀ CÁCH VIẾT TẮT
Viết tắt
Nghĩa tiếng Anh
Nghĩa tiếng Việt
Test case
Số liệu dùng để thử phần mềm, ví dụ input và output mẫu.
Software developer
Người xây dựng phần mềm
CASE
Computer aided software engineering
Công nghệ phần mềm sử dụng trợ giúp của máy tính
COTS software
Commercial-off-the-shelf software
Shrink-wrapped software
Click-wrapped software
Phần mềm đóng gói
DFD
Data flow diagram
Biểu đồ dòng dữ liệu
ERM
Entity-relationship modeling
Mô hình thực thể-liên kết
FD
Functional diagram
Biểu đồ phân cấp chức năng
IEEE
Institute of Electrical and Electronic Engineers
MIS
Management information system
Hệ thông tin quản lý
OOA
Object-oriented analysis
Phân tích hướng đối tượng
OOD
Object-oriented design
Thíet kế hướng đối tượng
PDL
Program description language
Ngôn ngữ mô tả chương trình (mã giả)
P-spec
Process specification
Đặc tả chức năng
RDM
Rerational database model
Mô hình cơ sở dữ liệu quan hệ
RFP
RFT
Requirement for proposal
Requirement for tender
Yêu cầu về hồ sơ mời thầu
SA
Structured analysis
Phân tích có cấu trúc
SPMP
Software project management plan
kế hoạch quản lý dự án phần mềm
SPMP
Software project management plan
Kế hoạch quản lý dự án phần mềm
SQA group
Software quality assurance group
Nhóm bảo đảm chất lượng phần mềm
UML
Unified modeling laguage
Ngôn ngữ mô hình hóa thống nhất
Black-box testing: Khi ta kiểm thử đặc tả, ta xem chương trình như một hộp đen (che kín những gì có bên trong hộp), nghĩa là ta không quan tâm đến chương trình được viết như thế nào mà chỉ quan tâm xem nó làm được cái gì. Vì vậy phép thử như thế này gọi là phép thử hộp đen.
White-box testing: Khi ta kiểm thử các lệnh (code), ta cần xem cấu trúc bên trong chương trình. Như vậy nếu xem chương trình là một chiếc hộp thì hộp này phải trong suốt để có thể nhìn thấy. Người ta gọi phép thử như thế này là phép thử hộp trắng, để đối lại với hộp đen. Có tác giả gọi là phép thử hộp thủy tinh (glass-box testing) cho sát nghĩa hơn.
Regression testing: Dùng các dữ liệu mẫu cũ để thử lại các chức năng không liên quan đến phần chương trình vừa sửa đổi được gọi là phép thử lùi lại hay phép thử hồi qu

File đính kèm:

  • docTài liệu tham khảo hỗ trợ môn học Công nghệ phần mềm.doc