Truyen2U.Net quay lại rồi đây! Các bạn truy cập Truyen2U.Com. Mong các bạn tiếp tục ủng hộ truy cập tên miền mới này nhé! Mãi yêu... ♥

Khái niệm, quy trình, quy mô PM (C1+2)

1

PHẦN MỀM

VÀ CÁC VẤN ĐỀ LIÊN QUAN

Nội dung

1.1. Một số quan điểm về phần mềm

1.2. Hai cách nhìn về cấu trúc phần mềm?

1.3. Đặc tính chung của phần mềm

1.4. Tiêu chí của một phần mềm tốt ?

1.5. Phân loại phần mềm

1.6. Một số vấn đề trong phát triển phần mềm

Trải qua một thời gian khá dài, nhận thưc về phần mềm hay nói đầy đủ hơn là phần mềm máy tính (Computer Software) đã có những thay đổi và ngày càng được thống nhất và chuẩn hoá trên phạm vi toàn cầu. Song hành với nó là ngành Công nghệ phần mềm: nghiên cứu về qui trình hay vòng đời phần mềm, các mô hình, các phương pháp và các công cụ trong phát triển phần mềm máy tính cũng được tập trung nghiên cứu một cách hệ thống và chuẩn.

Để hiểu đúng và đầy đủ về khái niệm phần mềm và các vấn đề gặp phải trong sản xuất phần mềm, chúng tôi sẽ đề cập trong chương I của tài liệu. Chương II sẽ tập trung trình bày về qui trình, phương pháp, các mô hình và các công cụ.

1.1 Một số quan điểm về phần mềm

• Phần mềm (Software - SW) như một khái niệm đối nghĩa với phần cứng (Hardware - HW), tuy nhiên, đây là 2 khái niệm tương đối

• Từ xưa, SW như thứ được cho không hoặc bán kèm theo máy (HW), dần dần giá thành SW ngày càng cao và đến nay cao hơn HW rất nhiều

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 là chính

Định lượng là chính

Hỏng hóc, hao mòn

SW

Vật "mềm"

Kỹ thuật sử dụng

Trừu tượng

Vô hình

Sản xuất bởi con người là chính

Định tính là chính

Không hao mòn

• Có khá nhiều định nghĩa vè phần mềm. Ta xét 2 định nghĩa sau:

Định nghĩa 1. Phần mềm là :

- Các lệnh (chương trình máy tính) khi được thực hiện thì cung cấp những chức năng và 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 tư liệu mô tả thao tác và cách sử dụng chương trình

Ngày nay, SW quyết định chất lượng một hệ thống máy tính (HTMT), là chủ đề cốt lõi, trung tâm của HTMT. Hệ thống máy tính gồm HW và SW.

Định nghĩa 2. Phần mềm là:

- Trong một hệ thống máy tính, nếu trừ bỏ đi các thiết bị và các loại phụ kiện thì phần còn lại chính là phần mềm (SW)

- Nghĩa hẹp: SW là dịch vụ chương trình để tăng khả năng xử lý của phần cứng của máy tính (như hệ điều hành - OS)

- Nghĩa rộng: SW là tất cả các kỹ thuật ứng dụng để thực hiện những dịch vụ chức năng cho mục đích nào đó bằng phần cứng.

Kết luận

H1. Các thành phần của phần mềm

1.2 Hai cách nhìn về cấu trúc phần mềm

Phần mềm là hàng hoá vô hình, không nhìn thấy, song nó là sản phẩm mà các nhà phát triển phần mềm cần chế tác, phát triển. Do vậy, cần có cái nhìn đúng về kiến trúc của nó. Người ta thường đề cập đến 2 kiến trúc sau:

- Kiến trúc phân cấp

- Kiến trúc thủ tục

1.2.1 Phần mềm nhìn từ cấu trúc phân cấp

Trong cách nhìn này, người ta tiếp cận theo quan điểm hệ thống. Mức trên nhất, phần mềm là một hệ thống phức tạp, dưới nó là các hệ thống con. Và dưới các hệ thống con là các chương trình và dưới nữa là các mô đun và các Subroutine (Hình 2).

1.2.2 Phần mềm nhìn từ cấu trúc thủ tục

Kiến trúc thủ tục cho chúng ta xác định được mối quan hệ giữa các trình tự (các thành phần) mà phần mềm đó có. Nó được thể hiện bởi các thuật toán với những phép lặp, rẽ nhánh, điều khiển luồng xử lý (quay lui hay bỏ qua). Nó cũng là cấu trúc lôgic biểu thị từng chức năng có trong phần mềm và trình tự thực hiện chúng. Cần lưu ý là thiết kế cấu trúc trước rồi sang chức năng

1.3 Đặc tính chung của phần mềm

Phần mềm là một loại sản phẩm và có những đặc thù riêng. Người ta thường lưu tâm đến các đặc tính sau:

• Là hàng hóa vô hình, không nhìn thấy được.

• Chất lượng phần mềm: không mòn đi mà có xu hướng tốt lên sau mỗi lần có lỗi (error/bug) được phát hiện và sửa chữa.

• Phần mềm vốn chứa lỗi tiềm tàng, theo quy mô càng lớn thì khả năng chứa lỗi càng cao.

• Lỗi phần mềm dễ được phát hiện bởi người ngoài.

• Chức năng của phần mềm thường biến hóa, thay đổi theo thời gian và theo nơi sử dụng.

• Hiệu ứng làn sóng trong thay đổi phần mềm.

• Phần mềm vốn chứa ý tưởng và sáng tạo của tác giả/nhóm tác giả làm ra nó.

• Cần khả năng "tư duy nhị phân" trong xây dựng, phát triển phần mềm

• Phần mềm có thể sao chép rất đơn giản

1.4 Tiêu chí của một phần mềm tốt

Để dánh giá chất lượng phần mềm, người ta đưa ra các tiêu chí có tính định tính như chỉ ra trên hình 3 dưới đây.

1.5 Phân loại phần mềm

- Phần mềm cơ bản: phần mềm 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ử lý của phần cứng, quản lý các tiến trình, các tài nguyên của hệ thống, ví dụ như các Hệ điều hành các máy PC, Hệ điều hành mạng,...Rõ ràng với loại phần mềm này thì yêu cầu quan trọng là tính chính xác, độ ổn định cao và tính dung lỗi.

- Phần mềm ứng dụng: dùng để xử lý nghiệp vụ thích hợp nào đó như quản lý, kế toán, . . ., đáp ứng yêu cầu nghiệp vụ người dùng. Người ta nói những phần mềm này là phần mềm làm ra sản phẩm thông tin.

Một cách phân loại khác:

• Phần mềm hệ thống (System SW)

• Phần mềm thời gian thực (Real-time SW)

• Phần mềm nghiệp vụ (Business SW)

• Phần mềm tính toán Khoa học và Kỹ thuật (Eng.&Scie. SW)

• Phần mềm nhúng (Embedded SW)

• Phần mềm máy cá nhân (Personal computer SW)

1.6 Một số vấn đề trong phát triển phần mềm

1.6.1 Khủng hoảng phần mềm là gì ?

Phần mềm thì khủng hoảng hiểu theo nghĩa nào và vì sao nó lại xuất hiện? Người ta cho rằng khủng hoảng trong phần mềm được hiểu theo nghiã khác với nghĩa thông thường. Đó là vấn đề liên quan đến chất lượng, qui trình, tốc độ của các hệ thống dựa vào máy tính và các sản phẩm được phát triển chỉ đơn giản là sự chậm trễ, sự thay đổi có tính tiến hoá, sự bùng nổ của công nghệ một cách đột phát, được thay đổi liên quan đến phần mềm.

" Khủng hoảng" nói theo ngôn ngữ của các nhà sản xuất phần mềm và hàng loạt các vấn đề cần giải quyết:

• Phải làm thế nào với việc giảm chất lượng vì những lỗi tiềm tàng có trong phần mềm ?

• Phải xử lý ra sao khi bảo dưỡng phần mềm đã có ?

• Phải giải quyết thế nào khi thiếu kỹ thuật viên phần mềm?

• Phải chế tác phần mềm ra sao khi có yêu cầu phát triển theo qui cách mới xuất hiện ?

• Phải xử lý ra sao khi sự cố phần mềm gây ra những vấn đề xã hội ?

Hình 4 dưới đây đưa ra sự so sánh về chi phí sản xuất cho phần cứng và phần mềm:

1.6.2 Những khó khăn trong sản xuất phần mềm

Theo các nhà nghiên cứu, có 14 vấn đề khó khăn trong sản xuất phần mềm:

1- Không có phương pháp mô tả rõ ràng định nghĩa yêu cầu của người dùng - khách hàng, sau khi bàn giao sản phẩm dễ phát sinh những trục trặc.

2- Với những phần mềm quy mô lớn, tư liệu đặc tả đã cố định thời gian dài, do vậy khó đáp ứng nhu cầu thay đổi của người dùng một cách kịp thời trong thời gian đó.

3- Nếu không có phương pháp luận thiết kế nhất quán mà thiết kế theo cách riêng của công ty, nhóm, thì sẽ dẫn đến suy giảm chất lượng phần mềm do phụ thuộc quá nhiều vào con người.

4- Nếu không có chuẩn về làm tư liệu quy trình sản xuất phần mềm, thì những đặc tả không rõ ràng sẽ làm giảm chất lượng phần mềm.

5- Nếu không kiểm thử tính đúng đắn của phần mềm ở từng giai đoạn mà chỉ kiểm thử ở giai đoạn cuối và phát hiện ra lỗi, thì thường bàn giao sản phẩm không đúng hạn.

6- Nếu coi trọng việc lập trình hơn khâu thiết kế thì thường dẫn đến làm giảm chất lượng phần mềm.

7- Nếu coi thường việc tái sử dụng phần mềm (software reuse), thì năng suất lao động sẽ giảm.

8- Phần lớn trong quy trình phát triển phần mềm có nhiều thao tác do con người thực hiện, do vậy năng suất lao động thường bị giảm.

9- Không chứng minh được tính đúng đắn của phần mềm, do vậy độ tin cậy của phần mềm sẽ giảm.

10- Chuẩn về một phần mềm tốt không thể đo được một cách định lượng, do vậy không thể đánh giá được một hệ thống đúng đắn hay không?

11- Khi đầu tư nhân lực lớn vào bảo trì sẽ làm giảm hiệu suất lao động của nhân viên.

12- Công việc bảo trì kéo dài làm giảm chất lượng của tư liệu và ảnh hưởng xấu đến những việc khác.

13- Quản lý dự án lỏng lẻo kéo theo quản lý lịch trình cũng không rõ ràng.

14- Không có tiêu chuẩn để ước lượng nhân lực và dự toán sẽ làm kéo dài thời hạn và vượt kinh phí của dự án .

2

CÔNG NGHỆ PHẦN MỀM: KHÁI NIỆM, QUI TRÌNH - MÔ HÌNH PHÁT TRIỂN

Nội dung

2.1. Công nghệ phần mềm

2.2 Các mô hình phát triển phần mềm

2.1. Công nghệ phần mềm

2.1.1 Công nghệ phần mềm là gì?

Công nghệ phần mềm là một công nghệ phân tầng. Có nhiều định nghiã khác nhau về Công nghệ phần mềm, song ở đây ta xét 2 định nghĩa tiêu biểu:

- Định nghĩa 1: Công nghệ phần mềm là sự nghiên cứu những nguyên tắc công nghệ đúng đắn nhằm tạo ra phần mềm một cách kinh tế, tin cậy và làm việc hiệu quả trên các máy thực. [BAU69]

- Định nghĩa 2: Công nghệ phần mềm là:

1) Sự áp dụng một cách tiếp cận định lượng, có qui trình và có tính hệ thống nhằm phát triển, vận hành và duy trì phần mềm

2) Nghiên cứu các phương pháp tiếp cận sự dụng trong 1) [IEEE'93]

Như vậy, "Công nghệ phần mềm là lĩnh vực khoa học về các phương pháp luận, kỹ thuật và công cụ tích hợp trong quy trình sản xuất và vận hành phần mềm nhằm tạo ra phần mềm với những chất lượng mong muốn ".

Để hiểu rõ về công nghệ phần mềm, người ta phân nó thành 4 tầng (H 2.1) : tầng chất lương, tầng qui trình, tầng phương pháp và tầng công cụ.

Nền tảng của Công nghệ phần mềm là qui trình. Qui trình định nghĩa một khung làm việc cho một tập các qui trình chủ yếu (KPA - Key Process Area). Nó tạo nên các cơ sở để quản lý các dự án phần mềm và thiết lập các ngữ cảnh để áp dụng các phương pháp kỹ thuật: mô hình, dữ liệu, báo biểu,...

Phương pháp phần mềm nhằm cung cấp các kỹ thuật để chế tác phần mềm bao gồm:

- Phân tích yêu cầu người dùng

- Thiết kế hệ thống

- Lập trình

- Kiểm thử

- Bảo trì

Công cụ phần mềm nhằm cung cấp các hỗ trợ tự động, bán tự động cho qui trình và phương pháp phần mềm. Khi các công cụ được tích hợp, thông tin tạo bởi các công cụ này có thể được sử dụng bởi các công cụ khác, thí dụ như thiết kế có sự hỗ trợ.

2.1.2 Vòng đời của phần mềm

Toàn bộ quy trình quản lý phát triển phần mềm gắn với khái niệm vòng đời phần mềm, được mô hình hóa với những kỹ thuật và phương pháp luận trở thành các chủ đề khác nhau trong Công nghệ phần mềm.

Vòng đời phần mềm là thời kỳ tính từ khi phần mềm được sinh ra cho đến khi chết đi (từ lúc hình thành đáp ứng yêu cầu, vận hành, bảo dưỡng cho đến khi loại bỏ không dùng nữa)

Quy trình phần mềm (vòng đời phần mềm) được phân chia thành các pha chính: phân tích, thiết kế, chế tạo, kiểm thử, bảo trì. Biểu diễn các pha có khác nhau theo từng người.

Mô hình vòng đời tiêu biểu là mô hình thác nước (WaterFall Model) do Boehm đề xuất.

Một qui trình phần mềm có thể đuợc mô tả như trên hình 2.3 dưới đây:

2.2 Các mô hình phát triển phần mềm

Trong việc sản xuất phần mềm, phụ thuộc vào đặc trưng của các phần mềm cần chế tác mà nhà phát triển sử dụng các mô hình phát triển khác nhau: có mô hình thì tuyến tính, cái khác lại lặp, cái khác thì lại gia tăng, tiến hoá,.... Trong phần dưới đây chúng ta sẽ xem xét 10 mô hình phát triển tiêu biểu.

2.2.1 Mô hình tuyến tính

Mô hình tuyến tính hay còn gọi là tuần tự (Hình 2.4) khi mà các pha được thực hiện một cách kế tiếp nhau, hết pha này đến pha khác. Đây là mô hình thác nước kinh điển.

Hình 2.4 Mô hình tuyến tính

- Kỹ nghệ Hệ thống thông tin và mô hình hóa (Information System Engin ering and Modeling) nhằm thiết lập các yêu cầu, ánh xạ một số tập con các yêu cầu sang phần mềm trong quá trình tương tác giữa phần cứng, người dùng con người và cơ sở dữ liệu.

2.2.2 Mô hình chế thử (Prototyping Model)

Trong thực tế, không phải lúc nào cũng có sẵn các nhu cầu về phần mềm từ khía khách hàng. Các doanh nghiệp phần mềm cần chủ động tạo các kích thích, các nhu cầu cho khách hàng. Một mô hình khá thích hơp cho cách tiếp cận này là mô hình chế thử (Prototyping Model- Hình 2.5)

Hình 2.5- Mô hình chế thử

Theo mô hình này, bản mẫu được thiết kế như một "hệ sơ khai" nhằm thâu tóm yêu cầu người dùng. Vì thế, các bản mẫu cần được thiết kế nhanh, đơn giản, chưa cần tốt miễn sao thu thập được ý kiến của khách hàng về sản phẩm sẽ được sản xuất mà họ chưa hình dung ra được.

2.2.3 Mô hình phát triển nhanh (Rapid Application Development - RAD)

Là qui trình phát triển phần mềm gia tăng, tăng dần từng bước với mỗi chu trình phát triển rất ngắn (60-90 ngày). Ý tưởng chính là xây dựng dựa trên hướng thành phần (Component-based construction) với khả năng tái sử dụng. Theo mô hình này, việc phát triển sẽ gồm một số nhóm (teams), mỗi nhóm làm 1 RAD theo các pha: Mô hình nghiệp vụ, Mô hình dữ liệu, Mô hình xử lý, Tạo ứng dụng, Kiểm thử và đánh giá (Hình 2.6).

Hình 2.6 Mô hình RAD

Mô hình này cũng bộc lộ một số hạn chế:

i) Cần một đội ngũ đông đảo để chia thành các nhóm

ii) Giao kèo phải chặt chẽ, nếu không dự án có thể bị đổ bể

iii) Các ứng dụng phải có tính mô đun hoá

iv) Các ứng dụng có tính mạo hiểm cao thì không nên dùng.

2.2.4 Các mô hình tiến hóa: tiến hoá, xoắn ốc, phát triển đồng thời

Cách làm này sử dụng một qui trình lặp, cho phép các kỹ sư phần mềm phát triển tăng dần, các phiên bản sau sẽ hoàn thiện hơn phiên bản trước sau mỗi một chu trình lặp. Trong phần dưới đây chúng ta sẽ xem xét 3 mô hình: Mô hình gia tăng, mô hình xoắn ốc và mô hình phát triển đồng thời.

2.2.4.1 Mô hình gia tăng (Incremental Model)

Mô hình gia tăng là sự kết hợp các yếu tố của mô hình tuyến tính với ý tưởng lặp của mô hình chế thử. Mỗi mạch tuyến tính của qui trình cung cấp một sản phẩm (Hình 2.7). Mạch đầu tiên cung cấp một số chức năng cơ bản nào đó, mạch tiếp theo sẽ gia tăng thêm một số chức năng khác,... mạch cuối cùng cung cấp một sản phẩm hoàn thiện, đáp ứng yêu cầu người dùng. Tuy rằng trong mô hình này, các kỹ sư phần mềm áp dụng tư tưởng lặp của mô hình chế thử song nó lại khác cơ bản về sản phẩm. Mỗi mạch của nó tạo ra một sản phẩm dùng được trong khi mô hình chế thử thì không quan tâm ngay đến sản phẩm.

Hình 2.7 Mô hình gia tăng

2.2.4.2 Mô hình xoắn ốc (Spirral Model)

Mô hình xoắn ốc do Boehm đề xướng, kết hợp bản chất lặp của mô hình chế thử được giám sát với tính hệ thống của mô hình tuyến tính. Các hoạt động chính trong qui trình mô hình được biểu điễn trên hình 2.8.

Mô hình xoắn ốc là một cách tiếp cận hiện thực để phát triển các phần mềm và hoặc các hệ thống lớn. Vì phần mềm được phát triển theo sự tiến hoá, khách hàng và nhà phát triển hiểu nhau tốt hơn và các rủi ro sẽ được giảm thiểu sau mỗi lần tiến hoá. Việc giảm thiểu rủi ro là nhờ cách tiếp cận của mô hình chế thử và quan trọng hơn nhà phát triển có thể áp dụng chế thử trong bất kỳ giai đoạn nào.

Hình 2.7 Mô hình xoắn ốc

Hạn chế lớn nhất của mô hình này là khả năng thuyết phục khách hàng về giảm thiểu tính rủi ro trong quá trình phát triển. mặt khác, mô hình này cũng chưa thật quen thuộc với các nhà phát triển như trong mô hình tuyến tính hay chế thử.

2.2.4.3 Mô hình phát triển đồng thời (Concurrent Development Model)

Mô hình phát triển đồng thời đôi khi còn gọi là kỹ nghệ tương tranh.. Mô hình này có thể được biểu diễn như là một tập các hoạt động kỹ thuật chủ yếu, các nhiệm vụ cùng một tập các trạng thái.

Trong thực tế, mô hình này là mô thức cho sự phát triển của mô hình "Khách-Chủ" (Client-Server). Theo nhiều chuyên gia, mô hình này có thể áp dụng cho tất cả các dạng phát triển phần mềm thay vì phát triển một chuỗi các hoạt động thì người định nghĩa một mạng các hoạt động và các hoạt động này tồn tại đồng thời trên mạng.

2.2.5 Mô hình lắp ráp hướng thành phần (Component assembly Model)

Mô hình này dựa vào mô thức hướng đối tượng kết hợp với qui trình phát triển của mô hình xoắn ốc (hình 2.8).

Hình 2.8 Mô hình lắp ráp thành phần

Khái niệm thành phần ở đây có thể coi như các lớp được tạo ra trong các phát triển trước được sử dụng lại. Chúng được lưu trữ trong các thư viện lớp. Khi cần phát triển, các kỹ sư phần mềm tìm trong thư viện phát triển. nếu tìm thấy, họ lấy ra sử dụng, trường hợp ngược lại họ sẽ phải phát triển. Một mặt nó được dùng cho phần mềm đang phát triển, mặt khác nó được luu trong thư viện chung.

2.2.6 Mô hình kỹ thuật thế hệ 4

Mô hình này chủ yếu dựa vào công nghệ của các ngôn ngữ lập trình thế hệ thứ tư. Các ngôn ngữ này cung cấp khả năng đặc tả phần mềm dựa vào các ngôn ngữ chuyên dụng hay các ký pháp đồ hoạ. Các ký pháp này cho phép cho phép mô tả các vấn đề cần giải quyết trong các thuật ngữ mà người dùng - khách hàng hiểu được.

Mô hình này sử dụng ưu thế về tính phi thủ tục của các ngôn ngữ lập trình thế hệ 4, khả năng truy vấn cơ sở dữ liệu, tạo màn hình tương tác, khả năng sinh mã tự động và tính đồ hoạ cao.

Với các ứng dụng nhỏ thì từ đặc tả sang cài đặt có thể hầu như là trực tiếp. Mô hình kỹ thuật thế hệ thứ 4 đã trở thành một phần quan trọng trong phát triển phần mềm.

Ngoài các mô hình liệt kê trên, trong phát triển phần mềm còn nhiều các mô hình/ chuẩn khác cũng được áp dụng như: mô hình thuần thục khả năng (CMM), mô hình phát triển phần mềm hợp nhất (RUP) hay qui trình phát triển phần mềm linh hoạt (Agile Programming).

2.2.10 Sản phẩm và Qui trình

Như đã mô tả ở phần trên, qui trình là tập các mô hình, phương pháp, công nghệ và công cụ được áp dụng trong phát triển phần mềm. Sản phẩm là cái đích, là kết quả thu được sau khi áp dụng qui trình. Sản phẩm là phần mềm phải đáp ứng các yêu cầu của khách hàng-người sử dụng phần mềm đó.

Sản phẩm và qui trình có mối quan hệ nhân quả với nhau. Nếu qui trình yếu thì sản phẩm làm ra sẽ không có chất lượng như mong muốn. Qui trình tốt sẽ cho sản phẩm tốt, song cũng không hoàn toàn như vậy.

Kết luận: Công nghệ phần mềm là một lĩnh vực tích hợp các qui trình, phương pháp, công nghệ và công cụ để phát triển phần mềm máy tính. Nhiều qui trình được đề xuất và mỗi qui trình đều có những mặt mạnh và những điểm hạn chế, song cũng có các điểm chung. Việc áp dụng qui trình nào phụ thuộc vào tính chất phần mềm sẽ phát triến và đặc thù của cácc doanh nghiệp phần mềm.

Bạn đang đọc truyện trên: Truyen2U.Com

Tags: