Công nghệ phần mềm
Trang 1Trường Đại Học Bách Khoa Tp Hồ Chí Minh
Khoa Công Nghệ Thông Tin
Môn học
CÔNG NGHỆ PHẦN MỀM
Trang 2GIỚI THIỆU MÔN HỌC
Đặc điểm
Môn học trước: Toán Tin Học (501302)
Tóm tắt nội dung
Các khái niệm cơ bản của Công Nghệ Phần Mềm: các mô hình phát triển phần mềm, phân tích yêu cầu, thiết kế, kiểm tra…
2 trường phái chính: có cấu trúc (cổ điển) & hướng đối tượng
Chuẩn UML và việc áp dụng nó trong phương pháp hướng đối tượng
Trang 3GIỚI THIỆU MÔN HỌC (t.t)
Tài liệu tham khảo
[1] Software Engineering - A practitioner’s approach, R.S
Pressman, McGraw-Hill, 1997
[2] OMG Unified Modeling Language Specification, version 1.3, Object Management Group (www.omg.org), 1999
[3]UML Toolkit, Hans-Erik Eriksson & Magnus Penker, 1998
[4] Object-Oriented Software Engineering, A Use-Case Driven Approach, I Jacobson, ACM Press/Addison-Wesley, 1992
[5] Object-Oriented Analysis and Design with Applications, G Booch, The Benjamin Cummings Publishing Company, 1994
Trang 4GIỚI THIỆU MÔN HỌC (t.t)
Trang 5ĐỀ CƯƠNG
Chương 1: Giới thiệu về Công Nghệ Phần Mềm
Chương 2: Phân tích yêu cầu theo phương pháp cổ điển
Chương 3: Các khái niệm cơ bản của mô hình hướng đối tượng
Chương 4: Mô hình nghiệp vụ và thu thập yêu cầu
Chương 5: Phân tích yêu cầu hướng đối tượng
Chương 6: Cơ sở của thiết kế phần mềm và phương pháp thiết kế cổ điển Chương 7: Thiết kế hướng đối tượng
Chương 8: Hiện thực và triển khai hệ thống
Chương 9: Kỹ thuật kiểm tra phần mềm
Chương 10: Chiến thuật kiểm tra phần mềm
Trang 6Trường Đại Học Bách Khoa Tp Hồ Chí Minh
Khoa Công Nghệ Thông Tin
Chương 1
GIỚI THIỆU VỀ CÔNG NGHỆ PHẦN MỀM
Trang 7NỘI DUNG
1.1 Một số khái niệm
1.1.1 Khủng hoảng phần mềm
1.1.2 Định nghĩa
1.1.3 Chu trình (process), phương pháp (method), công cụ (tool)
1.1.4 Một cách nhìn tổng quan về công nghệ phần mềm
1.1.5 Mô hình CMM
1.2 Các mô hình phát triển phần mềm
1.2.1 Mô hình tuần tự tuyến tính
1.2.2 Mô hình prototype
1.2.3 Mô hình xoắn ốc
1.2.4 Mô hình tăng dần
1.2.3 Mô hình RAD
Trang 8KHỦNG HOẢNG PHẦN MỀM
Phần mềm được viết ngay từ khi xuất hiện các hệ máy tính và ngôn ngữ lậïp trình đầu tiên
Trên thực tế sản xuất phần mềm không đáp ứng kịp yêu cầu của
người sử dụng
Trang 9KHỦNG HOẢNG PHẦN MỀM (t.t)
Các dữ liệu quan sát được
Cứ 6 đề án triển khai thì có 2 bị huỷ bỏ
Trung bình thời gian thực hiện thực tế bị kéo dài 50 % (cá biệt
200-300%)
Các đề án lớn dễ thất bại
3/4 các hệ thống lớn có lỗi khi thực thi
Quá trình phân tích yêu cầu (5 % công sức): để lại 55 % lỗi, có 18 %
phát hiện được
Quá trình thiết kế (25 % công sức): để lại 30 % lỗi, có 10 % phát hiện được
Quá trình mã hoá, kiểm tra và bảo trì: để lại 15 % lỗi, có 72 % phát hiện được
Trang 10KHỦNG HOẢNG PHẦN MỀM (t.t)
Nguyên nhân
Phát triển phần mềm giống như một nghệ thuật, chưa được xem như một ngành khoa học
Quá trình phát triển phần mềm chưa được thống nhất
Phải viết lại s/w mỗi khi có sự thay đổi về ngôn ngữ, h/w hoặc o/s
Chưa đạt được 1 chuẩn cho việc đo lường hiệu suất và sản phẩm
Độ phức tạp của phần mềm quá cao đối với 1 “kiến trúc sư”
Kỹ thuật đặc tả để lại sự nhập nhằng trong các yêu cầu phần mềm
Trang 11KHỦNG HOẢNG PHẦN MỀM (t.t)
Hướng tới công nghệ sản xuất phần mềm chuyên nghiệp
Trang 12ĐỊNH NGHĨA
Định nghĩa cổ điển (của Fritz Bauer)
Công Nghệ Phần Mềm là sự thiết lập và sử dụng các nguyên tắc khoa học nhằm mục đích tạo ra các phần mềm một cách kinh tế mà các phần mềm đó hoạt động hiệu quả và tin cậy trên các máy tính
Trang 13ĐỊNH NGHĨA (t.t)
Định nghĩa khác: Công Nghệ Phần Mềm
Là các quy trình đúng kỷ luật và có định lượng được áp dụng cho sự phát triển, thực thi và bảo trì các hệ thống thiên về phần mềm
Tập trung vào quy trình, sự đo lường, sản phẩm, tính đúng thời gian và chất lượng
Trang 14CHU TRÌNH
Chu trình (process) định nghĩa một bộ khung các tiêu
chuẩn phải được thiết lập để triển khai công nghệ phần mềm.
Trang 16CÔNG CỤ
Công cụ (tool) cung cấp các hỗ trợ tự
động hay bán tự động đối với chu trình và phương pháp
Các công cụ được tích hợp tạo thành
CASE (Computer Aided Software
Engineering)
Trang 17MỘT CÁCH NHÌN TỔNG QUAN VỀ CNPM
Gồm 3 giai đoạn lớn
Giai đoạn định nghĩa: Phân tích hệ thống (system engineering), Hoạch định đề tài (software project management), Phân tích yêu cầu (requirement
Trang 18MOÂ HÌNH CMM
Initial
(Level 1)
Repeatable (Level 2)
Defined (Level 3)
Managed (Level 4)
Optimized (Level 5) Risk
Competitiveness
Trang 19CÁC MÔ HÌNH PHÁT TRIỂN PHẦN MỀM
Mô hình tuần tự tuyến tính: cổ điển
Mô hình prototyping: prototype
Mô hình xoắn ốc: đánh giá rủi ro
Mô hình tăng dần: các bước lặp
Mô hình RAD: thời gian phát triển ngắn
Trang 20MÔ HÌNH TUẦN TỰ TUYẾN TÍNH
Mô hình phát triển phần mềm đầu tiên
Các công việc tiếp nối nhau một cách tuần tự
Đặt nền móng cho các phương pháp phân tích, thiết kế, kiểm
tra…
System Engineering Requirement
Analysis
Software Design Coding Test Maintenance
Trang 21Bộc lộ một số khuyết điểm
Bản chất của phát triển phần mềm là quá trình lặp đi lặp lại chứ không phải tuần tự
Bắt buộc khách hàng đặc tả tất cả yêu cầu một cách chính xác và đầy đủ ngay từ ban đầu
Khách hàng thường phải chờ đợi rất lâu để thấy được phiên bản đầu tiên của sản phẩm
Tồn tại “delay” trong nhóm làm việc
MÔ HÌNH TUẦN TỰ TUYẾN TÍNH (t.t)
Trang 22MÔ HÌNH PROTOTYPING
Prototype như là một cơ chế để
nhận diện chính xác yêu cầu của khách hàng
Prototype có thể bị “throw-away”
Một số khuyết điểm
Khách hàng hối thúc nhà phát triển hoàn thành sản phẩm
một khi thấy được các prototype
đầu tiên
Các prototype thường không
Thảo luận với
khách hàng
Xây dựng prototype
Đánh giá của khách hàng
Trang 23MÔ HÌNH XOẮN ỐC
Được thực hiện theo một chuỗi lặp kiểu xoắn ốc, mỗi lần lặp cải thiện sản phẩm
Có phương pháp đánh giá rủi ro
Có thể áp dụng prototype
Mỗi lần lặp được cải thiện cho thích nghi với bản chất của đề án
Đánh giá rủi ro
Phát triển sản phẩm
ở lần lặp tiếp theo
Hoạch định đề tài
Định nghĩa quy trình
R
R
R
Trang 24MÔ HÌNH TĂNG DẦN
Phân tích yêu cầu
1
2
3
Kiểm tra hệ thống
Thiết kế kiến trúc Phát triển module Tích hợp
4
Trang 25MÔ HÌNH TĂNG DẦN (t.t)
Các bước (iteration) đầu tập trung vào yêu cầu của phần mềm và
thiết lập một kiến trúc ổn định cho hệ thống (ít phải thay đổi sau này)
Các bước sau tập trung vào việc xây dựng sản phẩm để cuối
cùng chuyển sang giai đoạn kiểm tra hệ thống
Mỗi bước hiện thực một phần cụ thể trong toàn bộ yêu cầu của hệ thống
Quá trình xây dựng và chiến thuật kiểm tra theo kiểu tăng dần và dựa trên phương pháp kiểm tra hồi quy
Trang 26MÔ HÌNH RAD
Rapid Application Development là mô hình tuần tự tuyến tính có thời gian phát triển rất ngắn
Sử dụng các thành phần có sẵn càng nhiều càng tốt
Sử dụng công cụ lập trình ở dạng tự động sinh mã chứ không
phải các ngôn ngữ truyền thống
Business modeling Data modeling Process modeling Application
generation Testing & Turnover
Trang 27Trường Đại Học Bách Khoa Tp Hồ Chí Minh
Khoa Công Nghệ Thông Tin
Chương 2
PHÂN TÍCH YÊU CẦU THEO
PHƯƠNG PHÁP CỔ ĐIỂN
Trang 28GIỚI THIỆU
Khách hàng và nhà phát triển gặp nhau để thảo luận về yêu cầu của hệ thống phần mềm cần xây dựng
Nhà phát triển kiểm chứng lại (validate) yêu cầu
và biểu diễn nó bằng mô hình phân tích
Mô hình phân tích (WHAT?): các chức năng, dữ
liệu input & output, các trạng thái khác nhau
Trang 29NỘI DUNG
2.1 Các yếu tố căn bản của mô hình phân tích
2.2 Mô hình chức năng và dòng thông tin
2.2.1 Lược đồ dòng chảy dữ liệu với các ký hiệu cơ bản
2.2.2 Mở rộng của Ward và Mellor
2.2.3 Mở rộng của Hatley & Pirbhai
2.3 Mô hình hành vi phần mềm
2.4 Kỹ thuật phân tích yêu cầu
2.4.1 Xây dựng DFD
2.4.2 Viết PSPEC
2.5 Từ điển dữ liệu
Trang 30CÁC YẾU TỐ CĂN BẢN CỦA MÔ HÌNH PHÂN TÍCH
Mô hình chức năng và dòng thông tin: DFD, PSPEC
Mô hình dữ liệu: ERD, đặc tả đối tượng dữ liệu
Mô hình hành vi: STD, CSPEC
Từ điển dữ liệu
Lưu đồ dòng chảy dữ liệu
Lưu đồ quan hệ thực thể
Lưu đồ dịch chuyển trạng thái
Process Specification (PSPEC)
Trang 31MÔ HÌNH CHỨC NĂNG VÀ DÒNG THÔNG TIN
Mô tả dòng thông tin di chuyển (flow) xuyên qua các hệ thống
thiên về phần mềm
Thông tin input cũng như output có thể ở nhiều dạng khác nhau:
file, bàn phím, trên mạng, từ thiết bị, kết xuất ra màn hình và máy in…
Các giải thuật xử lý cũng rất đa dạng
Trang 32MÔ HÌNH CHỨC NĂNG VÀ DÒNG THÔNG TIN (t.t)
Lưu đồ dòng chảy dữ liệu DFD (Data Flow Diagram) cung cấp 4
ký hiệu cơ bản để mô hình sự di chuyển của dòng thông tin
DFD được mở rộng để mô hình các hệ thống thời gian thực
Mở rộng của Ward và Mellor (tự đọc: [1], trang 312)
Mở rộng của Hatley & Pirbhai (tự đọc: [1], trang 315)
Trang 33LƯỢC ĐỒ DÒNG CHẢY DỮ LIỆU (DFD)
4 phần tử chính
Thực thể: tạo ra hoặc tiêu thụ thông tin, nằm bên ngoài biên giới của
phạm vi thông tin hệ thống
Chức năng xử lý: thực hiện chức năng nào đó, tiêu thụ và tạo ra thông tin, nằm bên trong phạm vi thông tin hệ thống
Thông tin hay dữ liệu
Kho dữ liệu: lưu trữ dữ liệu mà được sử dụng bởi nhiều chức năng xử lý
Thực thể Chức năng
xử lý Dữ liệu
Kho dữ liệu
Trang 34LƯỢC ĐỒ DÒNG CHẢY DỮ LIỆU (t.t)
DFD được xây dựng qua nhiều mức khác nhau: mức 0, 1, 2…
DFD mức sau chi tiết hơn mức trước
Process Specification (PSPEC) bổ sung cho DFD
Tính liên tục của dòng dữ liệu
Trang 35MÔ HÌNH HÀNH VI PHẦN MỀM
Lược đồ dịch chuyển trạng thái (STD) thể hiện
Các trạng thái khác nhau của hệ thống
Sự dịch chuyển giữa các trạng thái đó
Ví dụ: miêu tả hoạt động của máy photocopy
Yêu cầu xử lý lỗi
Hết kẹt giấy
Yêu cầu đọc lệnh
Đầy giấy và sẵn sàng
Trang 36KỸ THUẬT PHÂN TÍCH YÊU CẦU
Thiết lập đoạn văn miêu tả chức năng (processing narrative) cho
hệ thống cần xây dựng
Xây dựng DFD ở các mức khác nhau
Thiết lập sơ đồ ngữ cảnh (DFD mức 0)
Phân hoạch DFD vào các mức cao hơn
Sử dụng phương pháp duyệt văn phạm
Luôn luôn tuân theo tính liên tục của dòng dữ liệu
Viết PSPEC cho các chức năng của DFD mức cao nhất
Trang 37XÂY DỰNG DFD
Phần mềm SafeHome: Thiết lập đoạn văn miêu tả xử lý
DFD mức ngữ cảnh: nhận diện các thực thể và dữ liệu input, output
SafeHome Bảng điều khiển
Bộ cảm ứng
Màn hình
Chuông
Đường điện thoại
Lệnh và dữ liệu
Trạng thái cảm ứng
Thông tin hiển thị
Kiểu báo động
Tần số của số điện thoại
Trang 38XÂY DỰNG DFD (t.t)
DFD mức 1: hình thành
một số chức năng chính
Tương tác với user Bảng điều khiển
Màn hình
Chuông
Lệnh và dữ liệu
Trạng thái cảm ứng Kiểu báo động
Tần số của số điện thoại
Cấu hình hệ thống
Yêu cầu cấu hìnhh
Mật mã
Theo dõi cảm ứng
Hiển thị
Thông báo a/d
Xác nhận mật mã
Thông tin cảm ứng
Thông tin hiển thị
Trang 39XÂY DỰNG DFD (t.t)
DFD mức 2: tinh chế chức năng “Theo dõi cảm ứng”
Bộ cảm ứng
Chuông
Đường điện thoại
Trạng thái cảm ứng
Kiểu báo động
Tần số của số điện thoại
Thiết lập điều kiện báo động
Dữ liệu cấu hình
Thông số cấu hình
Định dạng hiển thị
Id, type Số điện thoại
Trang 40VIẾT PSPEC
Có thể viết PSPEC bằng một trong 2 cách
Ngôn ngữ tự nhiên (tương tự processing narrative)
Ngôn ngữ PDL - là ngôn ngữ giả giúp thể hiện kiến trúc và giao tiếp của chức năng xử lý
Trang 41Từ điển dữ liệu thường được hiện thực như là một phần của công cụ CASE
Mỗi phần tử bao gồm những thông tin: tên, bí danh, được dùng ở đâu/như thế nào, đặc tả nội dung và thông tin phụ trợ
Trang 42TỪ ĐIỂN DỮ LIỆU (t.t)
Ví dụ phần tử dữ liệu số điện thoại
Tên: Số điện thoại
Bí danh: Không
Được dùng ở đâu/như thế nào: output của Thiết lập điều kiện báo động
input của Quay số
Đặc tả nội dung:
số điện thoại = [ mở rộng địa phương | số bên ngoài ] mở rộng địa phương = [ 2001 | 2002 … | 2009 ]
số bên ngoài = 9 + [ số địa phương | số đường dài ] số địa phương = tiền tố + <chuỗi 4 ký số>
số đường dài = (1) + mã vùng + số địa phương tiền tố = [ 795 | 799 | 874 | 877 ]
Trang 43TỔNG KẾT
Phân tích yêu cầu theo pp cổ điển bao gồm: mô hình chức năng và dòng thông tin (DFD), mô hình dữ liệu (ERD) và mô hình hành vi (STD)
Lược đồ DFD cơ bản có 4 ký hiệu và nó được mở rộng để biểu diễn được các hệ thống thời gian thực
Xây dựng DFD mức 0 rồi đến các mức cao hơn;
chú ý bảo toàn tính liên tục của dòng dữ liệu
Từ điển dữ liệu giúp quản lý và tra cứu các phần tửdữ liệu
Trang 44Trường Đại Học Bách Khoa Tp Hồ Chí Minh
Khoa Công Nghệ Thông Tin
Chương 3
CÁC KHÁI NIỆM CƠ BẢN CỦA MÔ HÌNH HƯỚNG ĐỐI TƯỢNG
Trang 47ĐỐI TƯỢNG và LỚP
Mô hình hướng đối tượng quan niệm thế giới bao gồm các đối
tượng (object) sinh sống và tương tác với nhau
Đối tượng bao gồm
dữ liệu: mang một giá trị nhất định
tác vụ: thực hiện một công việc nào đó
Trang 48ĐỐI TƯỢNG và LỚP (t.t)
Lớp (class) định nghĩa một tập hợp các tác vụ và thuộc tính mà
đặc tả đầy đủ cấu trúc và hành vi của các đối tượng
Đối tượng (còn gọi là minh dụ (instance) ) được cụ thể hoá từ lớp
Các ngôn ngữ lập trình hướng đối tượng
Khai báo lớp: tương tự như khai báo một kiểu do người dùng định nghĩa
Khai báo đối tượng: biến của kiểu lớp
Trang 49ĐÓNG BAO
Đóng bao: việc gộp thuộc tính và tác vụ trong một đối tượng đồng thời giới hạn cách truy xuất các thuộc tính đó (thường phải thông qua các tác vụ get/set)
x = 3.2
y = 1.7
Trang 50THUỘC TÍNH
Thuộc tiùnh (attribute) là một vùng có thể chứa dữ liệu (đơn hoặc
tổ hợp) của lớp
Dữ liệu mà thuộc tính thể hiện nằm trong một khoảng giá trị nào đó được xác định bởi kiểu
Giá trị của tất cả thuộc tính xác định trạng thái của đối tượng
Ví dụ: một đối tượng của Circle có (Radius, x, y) = (1.2, 3.4, 5.3)
Trang 51THUỘC TÍNH (t.t)
Thuộc tính có thể bị che dấu hoặc truy xuất được từ bên ngoài
Một số ngôn ngữ lập trình (và UML): public, protected, private
Có 2 loại tầm vực
Tầm vực lớp: thuộc tính chung cho tất cả các đối tượng của một lớp
Tầm vực đối tượng: thuộc tính của từng đối tượng (có thể mang giá trị khác nhau)
Bậc của thuộc tính chỉ ra số lượng dữ liệu mà bản thân thuộc tính có thể nắm giữ: 0 1, 1, *, 5 8
Trang 52TÁC VỤ
Tác vụ (operation) là một dịch vụ có thể yêu cầu từ phía đối
tượng để thực hiện hành vi
Dấu hiệu nhận dạng của tác vụ (signature) xác định các thông số
có thể truyền cũng như kết quả trả về
Phương thức (method) là phần hiện thực của tác vụ
Trang 53TÁC VỤ (t.t)
Tác vụ có thể bị che dấu hoặc truy xuất được từ bên ngoài
Một số ngôn ngữ lập trình (và UML): public, protected, private
Tác vụ có thể được override trong các lớp con thừa kế
Trừu tượng (abstract): không có hiện thực
Một số ngôn ngữ lập trình cho phép định nghĩa
Tác vụ khởi tạo (constructor): được gọi khi đối tượng mới tạo ra
Tác vụ hủy (destructor): được gọi khi đối tượng sắp bị huỷ bỏ
Trang 54VÍ DỤ về LỚP/ĐỐI TƯỢNG - JAVA
class abstract HTMLObject {
protected static final int LEFT = 0;
protected static final int MIDDLE = 1;
protected static final int RIGHT = 2;
private int alignment = LEFT;
protected Vector objects = null;
Trang 55Dấu hiệu nhận dạng của tác vụ muốn gọi
Danh sách thông số gọi
Trang 56THÔNG ĐIỆP (t.t)
Đối với các ngôn ngữ lập trình
Đối tượng đích: biến đối tượng hoặc bản thân đối tượng muốn gửi thông
điệp (self, this)
Dấu hiệu nhận dạng của tác vụ muốn gọi: tên tác vụ trùng nhau xem các thông số gọi
Danh sách thông số gọi: như phép gọi hàm bình thường, chú ý kiểu khi
truyền và gán kết quả trả về
Trang 57BAO GỘP
Bao gộp (aggregation) là quan hệ giữa hai đối tượng
Một đối tượng bao lấy đối tượng kia
Quan hệ này thường xảy ra trong thế giới thực, ví dụ
Xe hơi bao gồm: bánh xe, động cơ, khung xe
Trang HTML bao gồm: text, hình ảnh, tiêu đề, các liên kết
Checkbox, ComboBox, Slider… nằm trong một hộp thoại