GIỚI THIỆU VỀ CÔNG NGHỆ PHẦN MỀM
BÀI 1
© 2008 by Vinh Trong Le
2/41
Nội dung
Phần mềm
Công nghệ phần mềm
Tiến trình phần mềm
© 2008 by Vinh Trong Le
3/41
I. Phần mềm (PM)
Các nội dung chính
Phần mềm là gì
Các thành phần của PM
Vai trò của PM
Đặc trưng của PM
Phân loại PM
Tiến hóa và thách thức
© 2008 by Vinh Trong Le
4/41
Phần mềm là gì?
Khái niệm và định nghĩa
Lệnh (chỉ thị) instructions: Máy tính thực hiện một thao tác.
Chương trình (program): Một chuỗi các lệnh nhằm thực hiện một tác vụ
cụ thể.
Dữ liệu: Thông tin “thô”-> cần xử lý -> Thông tin hữu ích.
Phần mềm: Một hay nhiều chương trình để xử lý dữ liệu.
Nói một cách khác:
“Phần mềm là tập các lệnh để chỉ cho máy tính biết xử lý dữ liệu như
thế nào.”
Hoặc:
“Phần mềm chạy -> dữ liệu được xử lý.”
© 2008 by Vinh Trong Le
5/41
Các thành phần của PM
Chương trình máy tính
Mã nguồn
Mã máy
Các cấu trúc dữ liệu
Cấu trúc làm việc (Bộ nhớ trong)
Cấu trúc lưu trữ (Bộ nhớ ngoài)
Tài liệu
Hướng dẫn sử dụng <- người dùng
Tham khảo kỹ thuật <- người bảo trì
Phát triển <- người kỹ thuật
© 2008 by Vinh Trong Le
6/41
Vai trò PM
PM: Linh hồn của các hệ thống máy tính
Nền tảng trong mọi hoạt động của xã hội ngày nay
Sự phụ thuộc của các nền kinh tế
Thu chi từ PM chiếm đáng kể trong GNP; ví dụ: Năm 2006, Ấn độ xuất khẩu
hơn 30 tỷ USD; thế giới có > 7 triệu kỹ sư CNTT và tạo ra 600 tỷ USD/năm;
Thế giới chi phí cho phần mềm trong năm 2000 khoảng 770 tỷ USD.
Phần mềm sai hỏng -> kinh tế sẽ bị tổn thất: Yahoo mất vài chục tỷ đô la
trong những năm qua
Tạo nên sự khác biệt giữa các tổ chức: Phong cách làm việc và năng
suất lao động
Càng nhiều hệ thống cần phần mềm trợ giúp
Ứng dụng PM có mặt ở mọi nơi, mọi lĩnh vực kinh tế, khoa học, quân
sự, …
© 2008 by Vinh Trong Le
7/41
Đặc trưng của PM
Không mòn cũ, nhưng thoái hóa theo thời gian: Môi trường, nhu
cầu thay đổi -> ko sử dụng
Không lắp ráp từ mẫu sẵn có:
Ko có danh mục cho trước
Sản phẩn đặt hàng theo yêu cầu riêng
Phức tạp, khó hiểu và vô hình
Hệ thống logic khó hiểu: liên kết logic ko nhìn thấy -> phải tư duy trừu
tượng
Không nhìn thấy: ko phải là vật thể vật lý
© 2008 by Vinh Trong Le
8/41
Đặc trưng của PM (tiếp)
Thay đổi là bản chất
Theo thế giới thực để đáp ứng nghiệp vụ, nhu cầu con người.
Thay đổi theo môi trường: phần cứng
Cần phát triển theo nhóm
Quy mô lớn
Thời gian
© 2008 by Vinh Trong Le
9/41
Phân loại phần mềm
Hai cách phân loại chính:
Theo chức năng thực hiện
Theo lĩnh vực ứng dụng
Phân loại theo chức năng
Phần mềm hệ thống: Hệ điều hành, tiện ích tổ chức tệp…
Phần mềm nghiệp vụ: Trợ giúp các hoạt động nghiệp vụ
Sản phẩm theo đơn đặt hàng: Hệ thống TT quản lý (thư viện, kế toán…)
Sản phẩm dùng chung: Office
Phần mềm công cụ: Trợ giúp các quá trình phát triển phần mềm (ngôn
ngữ lập trình, quản lý dự án …)
© 2008 by Vinh Trong Le
10/41
Phân loại phần mềm
Phân loại theo lĩnh vực ứng dụng:
Phần mềm hệ thống: Phục vụ cho các PM khác, tương tác với phần
cứng, phục vụ nhiều người dùng
Phần mềm thời gian thực: Thu thập, xử lý các dữ liệu thời gian thực
(dùng điều khiển các hệ thống tự động)
Phần mềm nghiệp vụ: Xử lý các thông tin nghiệp vụ nghiệp vụ
Phần mềm khoa học kỹ thuật: Mô phỏng vật lý…
Phần mềm nhúng: phụ thuộc vào các thiết bị và thực hiện chức năng bị
hạn chế.
© 2008 by Vinh Trong Le
11/41
Sự tiến hóa của PM
Phần mềm tiến hóa theo phần cứng bao gồm cả quy mô, sự phức
tạp, tốc độ
Sự tiến hóa của PM có thể chia làm 4 giai đoạn:
GĐ 1: 1950-> 1960
Chương trình nhỏ, tính toán chuyên dụng
Xử lý số và xử lý theo lô (batch)
Ngôn ngữ: Mã máy, hợp ngữ
Tiêu chí đánh giá: Nhanh, kích cỡ của bài toán
GĐ 2: -> giữa 1970s
Sản phẩm đa nhiệm, đa người dùng
Xử lý số, ký tự, theo lô và thời gian thực
© 2008 by Vinh Trong Le
12/41
Sự tiến hóa của PM
Ngôn ngữ có cấu trúc
Tiêu chí đánh giá: Nhanh, kích cỡ bài toán, số lượng người dùng.
GĐ 3: -> 1990
Phần mềm cá nhân, mạng, hệ thống lớn và chia sẻ được
Xử lý số, ký tự, multimedia; theo lô, thời gian thực, phân tán và song song
Ngôn ngữ: bậc cao, hướng đối tượng
Tiêu chí đánh giá: Tiện dụng, tin cậy và dễ bảo trì.
GĐ 4: 1900-> nay
Phần mềm lớn, hướng người dùng
Ngôn ngữ: hướng đối tượng và trực quan (Visual)
Tiêu chí đánh giá: Tiện dụng, tin cậy và dễ bảo trì.
© 2008 by Vinh Trong Le
13/41
Tiêu chi PM tốt
PM tốt được nhìn nhận từ 2 phía
Người dùng:
Đủ chức năng nghiệp vụ
Dễ sử dụng, thông minh
Tin cậy, an toàn
Nhà phát triển
Dễ bảo trì
Dễ nâng cấp mở rộng
© 2008 by Vinh Trong Le
14/41
Khó khăn và thách thức
Thống kê:
16% DA đúng lịch, trong ngân sách, sản phẩm chất lượng
31% DA bị dừng
53% DA vượt ngân sách, quá hạn, ít tính năng
Công nghiệp PM: Ngành khổng lồ
Chi phí cho PM: 770 tỷ USD / Năm
Lý do:
Năng lực máy tính tăng nhanh
Thế giới thay đổi nhanh về nghiệp vụ và CN
Ham muốn của người dùng
© 2008 by Vinh Trong Le
15/41
Khó khăn và thách thức (tiếp)
-> cần tiến hóa PM
Công nghệ: Cần có các công nghệ, công cụ hiện đại để phát triển PM
Quản lý: Cần có các phương pháp (CMM-Capability Maturity Model ; CMMI-
Capability Maturity Model Integration )
© 2008 by Vinh Trong Le
16/41
II. Công nghệ PM
Các nội dung chính:
Các định nghĩa
Lịch sử phát triển CNPM
Các yếu tố cơ bản
Các bước chung nhất phát triển PM
© 2008 by Vinh Trong Le
17/41
Các định nghĩa về CNPM
Công nghệ phần mềm (Software Engineering: SE)
Bauer (1969): SE là thiết lập và sử dụng các nguyên lý công nghệ đúng đắn
để được PM 1 cách kinh tế, vừa tin cậy vừa làm việc hiệu quả trên các máy
thực
Sommerville (1995): SE là nguyên lý công nghệ liên quan đến tất cả các
mặt lý thuyết, phương pháp và công cụ của PM.
Pressman (1995): SE là bộ môn tích hợp cả qui trình, các phương pháp, các
công cụ để phát triển PM máy tính
3 mặt cơ bản của SE
Quy trình (thủ tục)
Phương pháp
Công cụ
© 2008 by Vinh Trong Le
18/41
Lịch sử của SE
Bắt đầu (1970s): Các phương pháp lập trình và cấu trúc dữ liệu
Tính modul
Sơ đồ khối và top-down
Lập trình có cấu trúc
Chia chương trình thành các modul
Trừu tượng hóa dữ liệu
Tăng trưởng (nửa đầu 1980s)
Phương pháp phát triển hệ thống: CSDL, phân tích thiết kế hướng cấu trúc
Các bộ công cụ phát triển: Trợ giúp phân tích thiết kế, các ngôn ngữ bậc
cao
Bắt đầu quan tâm đến quản lý: Độ đo phần mềm
© 2008 by Vinh Trong Le
19/41
Lịch sử của SE (tiếp)
Phát triển (Từ giữa 1980s)
Hoàn thiện công nghệ cấu trúc
Phát triển công nghệ đối tượng: Kho dữ liệu, đa phương tiện, định hướng
sử dụng lại (thành phần, mẫu, framework)
Phát triển các mô hình quản lý: Chuẩn quản lý được công nhận (CMM-
IS9000-03)
Tổng hợp: SE Là quá trình công nghệ tích hợp
Quá trình
Phương pháp
Công cụ
Để tạo ra được PM hiệu quả với các điều kiện cho trước
© 2008 by Vinh Trong Le
20/41
Các yếu tố cơ bản
Quá trình:
Xác định trình tự các công việc cần thực hiện
Xác định các tài liệu, sản phẩm cần bàn giao và cách thức thực hiện
Định ra các mốc thời gian (milestones) và sản phẩm đưa ra
Phương pháp: Cách làm cụ thể để xây dựng PM; thường mỗi công đoạn có một
phương pháp riêng
Phân tích: xác định, đặc tả yêu cầu
Thiết kế: đặc tả kiến trúc, giao diện, dữ liệu, thủ tục
Lập trình
Kiểm thử
Quản lý dự án
Công cụ: Computer Aided Software Engineering (CASE)
© 2008 by Vinh Trong Le
21/41
Vòng đời phát triển PM
© 2008 by Vinh Trong Le
22/41
Các bước phát triển PM (1)
© 2008 by Vinh Trong Le
23/41
Các bước phát triển PM (2)
Xác định yêu cầu: Hệ thống làm gì, những ràng buộc nó cần tuân thủ
Phân tích hệ thống: Vai trò PM trong hệ thống, phác họa và chọn phương
án khả thi
Lập kê hoạch: Ước lượng, lập lịch, tổ chức
Phân tích yêu cầu: Các yêu cầu cụ thể (chức năng, ràng buộc);
Đặc tả yêu cầu: kiến trúc, giao diện, xử lý, dữ liệu
Phát triển: Tạo ra phần mềm như thế nào
Thiết kế: Chuyển các yêu cầu thành các bản thiết kế hệ thống như nó tồn
tại
Mã hóa: Chuyển thiết kế thành chương trình
© 2008 by Vinh Trong Le
24/41
Các bước phát triển PM (3)
Kiểm thử: Sửa lỗi, hoàn thiện
Tài liệu: Hướng dẫn sử dụng, tham khảo kỹ thuật và phát
triển hệ thống.
Vận hành và bảo trì: Hoàn thiện hệ thống sau khi
đưa vào sử dụng
Sửa lỗi: Đảm bảo vận hành trong suốt
Thích nghi: với môi trường (kỹ thuật, nghiệp vụ)
Nâng cao: Hòan thiện chức năng, phát triển dự phòng
Thêm mới: Thêm các chức năng mới
© 2008 by Vinh Trong Le
25/41
III. Tiến trình phần mềm
Các nội dung chính
Tiến trình và mô hình tiến trình
Các giai đoạn của tiến trình