chương 1), qui trình cùng các mô hình đẻ chế tác phần mềm (chương 2). Phần 2 dành cho tiến trình quản lý việc chế tác phần mêm - quản lý dự án phần mềm. Phân nảy cũng gồm 2 chương giới thiệu về các vấn đề của quản lý dự án và các kỹ năng thực tiễn. Phản 3 trình bày giai đoạn đâu tiên của quá trình phát triển phần mềm.
Phân này cũng gồm 2 chương: 5 và 6. Chương 5 trình bay một số khái niệm về Hệ thống, cách tiếp cận hệ thống cho quá trình mô hình hoá hệ thống. Chương 6 trình bày về các kỹ năng và các nhiệm vụ của việc thu thập, đặc tả yêu cầu người dùng, các công cụ sử dụng. Phần 4 giới thiệu về quá trình thiết kế hệ thống.
Quá trình thiết kế hệ thống lại chia nhỏ thành 2 giai đoạn. Giai đoạn thiết ké kiến trúc được đề cập trong, chương 7, giai đoạn thiết kế chương trình đề cập trong chương 8. Phần 5 đề cập đến giai đoạn cuối cùng của qui trình chế tác phần mềm: kiểm thử và bảo trì. Qui trình và các kỹ thuật cho nghiệp vụ kiểm thử được trình bày trong chương 9, việc bảo trì phần mềm được trình bảy trong chương, 10.
Phần 6 của giáo trình nhằm giới thiệu một số vấn đề cần quan tâm tìm hiểu thêm như: chuẩn ISO về chế tác phần mềm, mô hình và chuẩn CMMI, qui trình phát triển phần mềm hợp nhất - RUP Với mục đích là tài liệu tham khảo chính cho sinh viên nên tài liệu trình bày khá cô đọng những kiến thức cơ bản nhất, Để có kiến thức phong phú hơn, chỉ tiết hơn, sinh viên có thể tìm hiểu trong các Textbook hoặc trên các website của các trường đại học trên thế giới. Các tác giả chân thành cám ơn PGS. TS, Nguyễn Ngọc Bình nguyên Trưởng Bộ môn Công nghệ phần mềm là người đầu tiên có những định hướng cho lĩnh vực này và cho phép sử dụng một số hình ảnh mình hoạ Để tài liệu được hoàn thiện hơn, chúng tôi rất mong nhận được các ý kiến đóng góp của các em sinh viên, các đồng nghiệp xa gần ở các trường đại học cũng như trong các công ty. Địa chỉ liên lạc: Email: balm@soict.vn / balmse2008@gmail.com Các tác giả PHAN MEM VA CAC VAN DE LIEN QUAN Nôi dung 1.
Một số quan điểm về phần mềm 1. Hai cách nhìn về cấu trúc phần mềm? 1. Đặc tính chung của phần mềm 1. Tiêu chí của một phần mềm tốt ? 1.
Phân loại phần mềm 1. Một số vấn đề trong phát triển phần mềm Đã hơn 70 năm từ khi ra đời và phát triển cho đến nay, máy tính diện từ cũng như lĩnh vực khoa học liên quan là Tin học và nay là Công nghệ thông tin đã có những phát triển vượt bậc và ngày càng khẳng định vai trò cần thiết của mình trong các lĩnh vực khoa học kỹ thuật, quản lý, cũng như các lĩnh vực khác của đời sống, xã hội và kinh tế. Khái niệm phần cứng (hardware). phần mềm (software) clung xuất hiện hầu như đồng thời.
Nói về phần cứng. như hầu hết mọi người đều hiểu vì tính hữu hình của nó: ngược lại, phần mềm là thứ vô hình và lúc dầu chỉ là một khái niệm đưa ra để đối nghĩa với phần cứng. Thời kỳ đầu, phần cứng là thành phần quan trọng, nhất, chiếm ưu thế về phương diện chỉ phí, giá cả. còn phần mềm là thứ cho không và luôn được đi kèm với máy tính.
vai trò phần cứng và phần mêm đã đổi chỗ cho nhau: do tiền bộ của khoa học công nghệ. máy tính điện tử mà đại diện là phần cứng ngày cảng được sản xuất nhiều hơn. thông dụng hơn với các tính năng nôi trội và chỉ phí ngày cảng giảm. Phần mềm, ngược lại, được tập trung nghiên cứu và phát trién và trở thành sản phẩm với tính năng ngày càng phong phú, đáp ứng yêu cầu người dùng song chi phi ngày càng tăng và việc chê tác cũng phức tạp hơn.
Tuy xuất hiện khá sớm song hiểu đúng về khái niệm phần mềm là rất khác nhau. Dù rằng hội nghị đầu tiên về Công nghệ phần mềm có nhắc đến từ 1968. tiếp sau là các hội nghị lần I năm 1975 và sau đó mỗi năm một lần. song thực tế thì khái niệm phần mềm được hiểu rất khác nhau từ đào tạo đến địa vị xã hội.
Thí dụ, trước đây dé gải quyết một bai toán bằng máy tính điện tử, người ta nói ngay đến viết một chương trình máy tính và do vậy, như một hệ quả tất yêu. ngành nghẻ đảo tạo là kỹ sư lập trình/ lập trình máy tính và địa vị xã hội (nghề nghiệp) cũng là kỹ sư lập trình. 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 phan 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. Dé hiéu dú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 [ 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 Một số quan điểm về phần mềm Thực tế, tồn tại khá nhiều cách hiều về phần mềm. Như trên đã nói, lúc đầu người ta chỉ sử dụng nó với khái niệm đôi nghĩa với phần cứng. Dân dân, đại đa sô đông nhât phân mềm với chương trình máy tính. [Pres97] cho rằng, phần mềm máy tính gồm 3 thành phần cơ bản: * Cac 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. 5 - Các tư liệu mô tả thao tác và cách sử dụng chương trình. Một định nghĩa khác lại cho rằng: 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à phan mém (SW — Software Engineering): * Nghia hep: SW là dịch vụ chương trình dé tang 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 Tà 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 dich nao do bang phan cứng.
Như vậy, hiểu một cách đây đủ, phần mềm máy tính gồm 4 phân (hình 1): Nhóm các phương pháp luận, kỹ thuật: -_ Các khái niệm và trình tự cụ thê hóa một hệ thống. -_ Các phương pháp tiếp cận giải quyết vấn đề. - Các trình tự thiết kế và phát triền được chuẩn hóa. + Các phương pháp đặc tả yêu cầu, thiết kế hệ thống, thiết kế chương, trình, kiểm thử, toàn bộ quy trình quản lý phát triển phần mềm.
Kinh nghiém tri thức người kỹ sư: Hình 1. Các thành phần cúa phần mềm. Nhóm chương trình máy tính: Là phần giao điện với phần cứng. tạo thành từ các nhóm lệnh chỉ thị cho máy tính biết trình tự thao tác xử lý dữ liệu.
Phần mềm cơ bản: 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, (ví dụ như Hệ điều hành là chương trình hệ thông). Phần mềm ứng dụng: dùng để xử lý nghiệp vụ thích hợp nào đó (quan ly, ké toan,. phan mém đóng gói. phần mềm của người dùng.
Nhóm tư liệu: * Những tư liệu hữu ích, có giá trị cao và rất cần thiết để phát triển, vận hành và bảo trì phân mêm. Để chế ra phần mềm với độ tin cậy cao cần tạo ra các tư liệu chất lượng cao: đặc tả yêu cầu. mô tả thiết kế từng loại, điều kiện kiểm thử, thủ tục vận hành, hưởng dẫn thao tác. Và những yếu tố khác: « _ Sản xuất phần mềm phụ thuộc rất nhiều vào con người (kỹ sư phần mềm).
Khả năng hệ thông hoa. kha nang lập trình. kỹ năng công nghệ, kinh nghiệm làm việc, tâm bao quát.: khác nhau ở từng người. + Phần mềm phụ thuộc nhiều vào ý tưởng và kỹ năng của người/nhóm tác giả.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à phat trién phan mém can ché tac, phat trién.
Do va „ 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 Tiên trúc sau: - Kién tric phan cap. - Kién trúc thủ tục.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ệ thong 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). D4100 600) Tran] LanHệ thông con Đ = h Chương trình | — — —P- [Chương trình =) Tệp trung gian Möđun “Tones | Möđun > | Subroutine ey Hình 2. Kiến trúc phân cấp phần mềm.
Kiến trúc phân cập biểu thị kiến trúc các chức năng mà phần mềm đó có và điều kiện phân cấp các chức năng. Từ góc độ phân cấp. chúng ta nhận thay: theo chiều đứng càng sâu càng phức tạp và chiều ngang càng rộng càng nhiều chức năng và qui mô càng lớn.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 Phan mém cũng là một loại sản phẩm, song nó cũng có đặc thù riêng. Để chế ra được các phần mềm đảm bảo chất lượng, phủ hợp với nhu cầu người sử dụng sẽ rất hữu ích nếu chúng ta hiểu được các đặc tính của nó. 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 *: IÀ z TẤ+ ‘ ta `. > mỗi lân có lôi (error/bug) được phát hiện và sửa chữa.