ĐẠi học quốc gia hà NỘi trường Đại học Công nghệ Nguyễn Việt Hà Bài giảng



tải về 454.68 Kb.
trang1/13
Chuyển đổi dữ liệu09.09.2017
Kích454.68 Kb.
  1   2   3   4   5   6   7   8   9   ...   13
ĐẠI HỌC QUỐC GIA HÀ NỘI

Trường Đại học Công nghệ

Nguyễn Việt Hà
Bài giảng

Kỹ thuật phần mềm

MỤC LỤC


CHƯƠNG 1 1

Phần mềm và kỹ nghệ phần mềm 1

1.1 Tầm quan trọng và sự tiến hóa của phần mềm 1

1.1.1 Tiến hóa của phần mềm 1



a. Những năm đầu (từ 1950 đến 1960): 1

b. Thời kỳ trải rộng từ những năm 1960 đến giữa những năm 1970: 1

c. Thời kỳ từ giữa những năm 1970 đến đầu những năm 1990: 2

d. Thời kỳ sau 1990: 2

1.1.2 Sự ứng dụng của phần mềm 2



a. Phần mềm hệ thống 3

b. Phần mềm thời gian thực 3

c. Phần mềm nghiệp vụ 3

d. Phần mềm khoa học và công nghệ 3

e. Phần mềm nhúng 3

f. Phần mềm máy tính cá nhân 4

g. Phần mềm trí tuệ nhân tạo 4

1.2 Khó khăn, thách thức đối với phát triển phần mềm 4

1.2.1 Phần mềm và phần mềm tốt 4

1.2.2 Đặc trưng phát triển và vận hành phần mềm 5

a. Phần mềm không được chế tạo theo nghĩa cổ điển 5

b. Phần mềm không hỏng đi nhưng thoái hóa theo thời gian 6

c. Phần lớn phần mềm đều được xây dựng từ đầu, ít khi được lắp ráp từ thành phần có sẵn 6

1.2.3 Nhu cầu và độ phức tạp 6



1.3 Kỹ nghệ phần mềm 7

1.3.1 Định nghĩa 7



a. Các phương pháp 8

b. Các công cụ 8

c. Các thủ tục 8

1.3.2 Mô hình vòng đời cổ điển 8



a. Kỹ nghệ và phân tích hệ thống 8

b. Phân tích yêu cầu phần mềm 9

c. Thiết kế 9

d. Mã hóa 9

e. Kiểm thử 9

f. Bảo trì 9

1.3.3 Mô hình làm bản mẫu 10

1.3.4 Mô hình xoắn ốc 12

1.3.5 Kỹ thuật thế hệ thứ tư 13

1.3.6 Mô hình lập trình cực đoan 15

a) Tạo các ca thử nghiệm trước tiên 15

b) Lập trình đôi 15

1.3.7 Tổ hợp các mô hình 15

1.3.8 Tính khả thị của quá trình kỹ nghệ 16

1.3.9 Vấn đề giảm kích cỡ của phần mềm 16



1.4 Cái nhìn chung về kỹ nghệ phần mềm 18

Chương 2 20

Phân tích và đặc tả yêu cầu 20

2.1 Đại cương về phân tích và đặc tả 20

2.2 Nghiên cứu khả thi 21

2.3 Nền tảng của phân tích yêu cầu 23

2.3.1 Các nguyên lý phân tích 23

2.3.2 Mô hình hóa 24

2.3.3 Người phân tích 27



2.4 Xác định và đặc tả yêu cầu 27

2.4.1 Xác định yêu cầu 27

2.4.2 Đặc tả yêu cầu 28

2.4.3 Thẩm định yêu cầu 29



2.5 Làm bản mẫu trong quá trình phân tích 30

2.5.1 Các bước làm bản mẫu 30



2.6 Định dạng đặc tả yêu cầu 32

Chương 3 35

Thiết kế phần mềm 35

3.1 Khái niệm về thiết kế phần mềm 35

3.1.1 Khái niệm 35

3.1.2 Tầm quan trọng 35

3.1.3 Quá trình thiết kế 36

3.1.4 Cơ sở của thiết kế 37

3.1.5 Mô tả thiết kế 38

3.1.6 Chất lượng thiết kế 40

3.2 Thiết kế hướng chức năng 43

3.2.1 Cách tiếp cận hướng chức năng 43

3.2.2 Biểu đồ luồng dữ liệu 43

3.2.3 Lược đồ cấu trúc 43

3.2.4 Các từ điển dữ liệu 43

3.3 Thiết kế hướng đối tượng 44

3.3.1 Cách tiếp cận hướng đối tượng 44

3.3.2 Ba đặc trưng của thiết kế hướng đối tượng 44

3.3.3 Cơ sở của thiết kế hướng đối tượng 44

3.3.4 Các bước thiết kế 45

3.3.5 Ưu nhược điểm của thiết kế hướng đối tượng 46

3.3.6 Quan hệ giữa thiết kế và lập trình hướng đối tượng 46

3.3.7 Quan hệ giữa thiết kế hướng đối tượng và hướng chức năng 47



3.4 Thiết kế giao diện người sử dụng 47

3.4.1 Một số vấn đề thiết kế 49

3.4.2 Một số hướng dẫn thiết kế 50

Chương 4 52

Lập trình 52

4.1 Ngôn ngữ lập trình 52

4.1.1 Đặc trưng của ngôn ngữ lập trình 52

4.1.2 Lựa chọn ngôn ngữ lập trình 53

4.1.3 Ngôn ngữ lập trình và và sự ảnh hưởng tới kỹ nghệ phần mềm 54



4.2 Phong cách lập trình 55

4.2.1 Tài liệu chương trình 55

4.2.2 Khai báo dữ liệu 56

4.2.3 Xây dựng câu lệnh 56

4.2.4 Vào/ra 56

4.3 Lập trình tránh lỗi 57

4.3.1 Lập trình thứ lỗi 58

4.3.2 Lập trình phòng thủ 59

4.4 Lập trình hướng hiệu quả thực hiện 60

4.4.1 Tính hiệu quả chương trình 60

4.4.2 Hiệu quả bộ nhớ 60

4.4.3 Hiệu quả vào/ra 60



Chương 5 62

Xác minh và thẩm định 62

5.1 Đại cương 62

5.2 Khái niệm về phép thử 63

5.3 Thử nghiệm chức năng và thử nghiệm cấu trúc 63

5.3.1 Thử nghiệm chức năng 63

5.3.2 Thử nghiệm cấu trúc 64



5.4 Quá trình thử nghiệm 65

5.4.1 Thử nghiệm gây áp lực 66



5.5 Chiến lược thử nghiệm 66

5.5.1 Thử nghiệm dưới lên 66

5.5.2 Thử ngiệm trên xuống 67

Chương 6 68

Quản lý dự án phát triển phần mềm 68

6.1 Đại cương 68

6.2 Độ đo phần mềm 69

6.2.1 Đo kích cỡ phần mềm 69

6.2.2 Độ đo dựa trên thống kê 70

6.3 Ước lượng 70

6.4 Quản lý nhân sự 71

6.5 Quản lý cấu hình 72

6.6 Quản lý rủi ro 73

Tài liệu tham khảo 75



CHƯƠNG 1

Phần mềm và kỹ nghệ phần mềm

1.1 Tầm quan trọng và sự tiến hóa của phần mềm


Máy tính khác với các máy móc thông thường ở điểm nó có thể thực hiện các nhiệm vụ rất khác nhau bằng cách sử dụng các phần mềm khác nhau. Tức là phần mềm tạo ra sự khác biệt giữa các máy tính và cũng quyết định năng lực của máy tính. Cho đến những năm 1990, xu hướng của ngành công nghiệp máy tính là phát triển phần cứng nhằm giảm giá thành hệ thống và tăng năng lực xử lý cũng như lưu trữ dữ liệu. Do nhu cầu phần mềm tăng lên nhanh chóng, thách thức hay mục tiêu của ngành công nghiệp máy tính hiện nay là sự cải thiện chất lượng và giảm giá thành của phần mềm.

Có thể nói khả năng của phần cứng biểu thị cho tiềm năng của hệ thống còn phần mềm là một cơ chế giúp chúng ta khai thác tiềm năng này. Chúng ta hãy xem xét tầm quan trọng của phần mềm trên khía cạnh sự tiến hóa và phạm vi ứng dụng của chúng.


1.1.1 Tiến hóa của phần mềm


Sự tiến hóa của phần mềm gắn liền với sự tiến hóa của phần cứng và có thể chia làm 4 giai đoạn:

a. Những năm đầu (từ 1950 đến 1960):


- Giai đoạn này phần cứng thay đổi liên tục, số lượng máy tính rất ít và phần lớn mỗi máy đều được đặt hàng chuyên dụng cho một ứng dụng đặc biệt.

- Phương thức chính là xử lý theo lô (batch), tức là “gói” các chương trình có sử dụng kết quả của nhau lại thành một khối dể tăng tốc độ thực hiện.

- Thời kỳ này lập trình máy tính được coi là nghệ thuật “theo bản năng”, chưa có phương pháp hệ thống. Việc phát triển phần mềm chưa được quản lý.

- Môi trường lập trình có tính chất cá nhân; thiết kế, tiến trình phần mềm không tường minh, thường không có tài liệu. Sản xuất có tính đơn chiếc, theo đơn đặt hàng. Người lập trình thường là người sử dụng và kiêm cả việc bảo trì và sửa lỗi.


b. Thời kỳ trải rộng từ những năm 1960 đến giữa những năm 1970:


- Các hệ thống đa nhiệm, đa người sử dụng (ví dụ: Multics, Unix,...) xuất hiện dẫn đến khái niệm mới về tương tác người máy. Kỹ thuật này mở ra thế giới mới cho các ứng dụng và đòi hỏi mức độ tinh vi hơn cho cả phần mềm và phần cứng.

- Nhiều hệ thống thời gian thực với các đặc trưng thu thập, phân tích và biến đổi dữ liệu từ nhiều nguồn khác nhau và phản ứng (xử lý, tạo output) trong một khoảng thời gian nhất định xuất hiện.

- Tiến bộ lưu trữ trực tuyến làm xuất hiện thế hệ đầu tiên của hệ quản trị CSDL.

- Số lượng các hệ thống dựa trên máy tính phát triển, nhu cầu phân phối mở rộng, thư viện phần mềm phát triển, quy mô phần mềm ngày càng lớn làm nẩy sinh nhu cầu sửa chữa khi gặp lỗi, cần sửa đổi khi người dùng có yêu cầu hay phải thích nghi với những thay đổi của môi trường phần mềm (phần cứng, hệ điều hành, chương trình dịch mới). Công việc bảo trì phần mềm dần dần tiêu tốn nhiều công sức và tài nguyên đến mức báo động.


c. Thời kỳ từ giữa những năm 1970 đến đầu những năm 1990:


- Hệ thống phân tán (bao gồm nhiều máy tính, mỗi máy thực hiện một chức năng và liên lạc với các máy khác) xuất hiện làm tăng quy mô và độ phức tạp của phần mềm ứng dụng trên chúng.

- Mạng toàn cục và cục bộ, liên lạc số giải thông cao phát triển mạnh làm tăng nhu cầu thâm nhập dữ liệu trực tuyến, nảy sinh yêu cầu lớn phát triển phần mềm quản lý dữ liệu.

- Công nghệ chế tạo các bộ vi xử lý tiến bộ nhanh khiến cho máy tính cá nhân, máy trạm để bàn, và các thiết bị nhúng (dùng cho điều khiển trong robot, ô tô, thiết bị y tế, đồ điện gia dụng,...) phát triển mạnh khiến cho nhu cầu về phần mềm tăng nhanh.

- Thị trường phần cứng đi vào ổn định, chi phí cho phần mềm tăng nhanh và có khuynh hướng vượt chi phí mua phần cứng.


d. Thời kỳ sau 1990:


- Kỹ nghệ hướng đối tượng là cách tiếp cận mới đang nhanh chóng thay thế nhiều cách tiếp cận phát triển phần mềm truyền thống trong các lĩnh vực ứng dụng.

- Sự phát triển của Internet làm cho người dùng máy tính tăng lên nhanh chóng, nhu cầu phần mềm ngày càng lớn, quy mô và độ phức tạp của những hệ thống phần mềm mới cũng tăng đáng kể.

- Phần mềm trí tuệ nhân tạo ứng dụng các thuật toán phi số như hệ chuyên gia, mạng nơ ron nhân tạo được chuyển từ phòng thí nghiệm ra ứng dụng thực tế mở ra khả năng xử lý thông tin và nhận dạng kiểu con người.

1.1.2 Sự ứng dụng của phần mềm


Chúng ta có thể chia phần mềm theo miền ứng dụng thành 7 loại như sau:

a. Phần mềm hệ thống


- Là một tập hợp các chương trình được viết để phục vụ cho các chương trình khác

- Xử lý các cấu trúc thông tin phức tạp nhưng xác định (trình biên dịch, trình soạn thảo, tiện ích quản lý tệp)

- Đặc trưng bởi tương tác chủ yếu với phần cứng máy tính

- Phục vụ nhiều người dùng

- Cấu trúc dữ liệu phức tạp và nhiều giao diện ngoài

b. Phần mềm thời gian thực


Phần mềm điều phối, phân tích hoặc kiểm soát các sự kiện thế giới thực ngay khi chúng xuất hiện được gọi là phần mềm thời gian thực. Điển hình là các phần mềm điều khiển các thiết bị tự động. Phần mềm thời gian thực bao gồm các thành tố:

- Thành phần thu thập dữ liệu để thu và định dạng thông tin từ môi trường ngoài

- Thành phần phân tích để biến đổi thông tin theo yêu cầu của ứng dụng

- Thành phần kiểm soát hoặc đưa ra đáp ứng môi trường ngoài

- Thành phần điều phối để điều hòa các thành phần khác sao cho có thể duy trì việc đáp ứng thời gian thực

Hệ thống thời gian thực phải đáp ứng những ràng buộc thời gian chặt chẽ.


c. Phần mềm nghiệp vụ


Là các phần mềm phục vụ các hoạt động kinh doanh hay các nghiệp vụ của tổ chức, doanh nghiệp. Đây có thể coi là lĩnh vực ứng dụng phần mềm lớn nhất. Điển hình là các hệ thống thông tin quản lý gắn chặt với CSDL, các ứng dụng tương tác như xử lý giao tác cho các điểm bán hàng.

d. Phần mềm khoa học và công nghệ


- Được đặc trưng bởi các thuật toán (tính toán trên ma trận số, mô phỏng...).

- Thường đòi hỏi phần cứng có năng lực tính toán cao.


e. Phần mềm nhúng


- Nằm trong bộ nhớ chỉ đọc và được dùng để điều khiển các sản phẩm và hệ thống cho người dùng và thị trường công nghiệp.

- Có các đặc trưng của phần mềm thời gian thực và phần mềm hệ thống.


f. Phần mềm máy tính cá nhân


- Bùng nổ từ khi xuất hiện máy tính cá nhân, giải quyết các bài toán nghiệp vụ nhỏ như xử lý văn bản, trang tính, đồ họa, quản trị CSDL nhỏ...

- Yếu tố giao diện người-máy rất được chú trọng.


g. Phần mềm trí tuệ nhân tạo


- Dùng các thuật toán phi số để giải quyết các vấn đề phức tạp mà tính toán hay phân tích trực tiếp không quản lý nổi

- Các ứng dụng chính là: hệ chuyên gia (hệ cơ sở tri thức), nhận dạng (hình ảnh và tiếng nói), chứng minh định lý và chơi trò chơi, mô phỏng.

Ngoài ra, chúng ta còn có thể kể đến một dạng phần mềm đặc biệt là phần mềm phục vụ kỹ nghệ phần mềm. Đó là các phần mềm như chương trình dịch, phần mềm gỡ rối, các công cụ hỗ trợ phân tích thiết kế (CASE)... Các phần mềm này có thể xuất hiện dưới dạng phần mềm máy tính cá nhân, phần mềm hệ thống hoặc là phần mềm nghiệp vụ.




  1   2   3   4   5   6   7   8   9   ...   13


Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2019
được sử dụng cho việc quản lý

    Quê hương