



















Preview text:
  lOMoAR cPSD| 58457166
CHƯƠNG 1: ĐẶC TẢ PHẦN MỀM  I) 
Đặc điểm của phần mềm  • 
Phần mềm là chương trình (mã máy + dữ liệu) được cài đặt vào phần cứng (hoặc lớp nền) 
để thực thi các chức năng đã định nghĩa cho người sử dụng. PM có tài liệu hướng dẫn cách tạo ra 
chương trình (cho developers) & cách sử dụng (cho users), nó được mô tả từ nhiều khía cạnh 
khác nhau. PM được thể hiện thành các phiên bản (release) mặc dù users chỉ sử dụng 1 phiên bản 
tại một thời điểm, nhưng developers phải kiểm soát được tất cả các phiên bản (tài liệu, chương 
trình) của PM trong suốt chu kỳ sống của nó.  •  Đặc điểm: 
Không có tính chất vật lý (“vô hình”): Người ta chỉ biết PM qua các tác động của nó lên phần 
cứng (hiển thị chử, phát âm, rung…); copy được, để chạy trên nhiều máy. Phần mềm không bị 
hao mòn như phần cứng chỉ bị “lạc hậu”, hoặc “lỗi”. Ngoài ra, nó dể thay đổi (sửa, nâng cấp) 
hơn phần cứng đó là ưu thế và cũng là sứ mệnh cho phần mềm. 
 -Sự khác biệt giữa phần mềm và sản phẩm công nghiệp 
Sản phẩm công nghiệp là một sản phẩm vật lý, bao gồm các giai đoạn sản xuất như thiết kế kỹ 
thuật, chế tạo, lắp ráp và kiểm tra, sản phẩm thường là một đồ vật hoặc thiết bị được sản xuất để 
phục vụ mục đích công nghiệp, thương mại hoặc sử dụng trong quá trình sản xuất.  II) 
Đặc tả cho phần mềm  
Specification : (Một đặc tả) là một phát biểu khẳng định một hành vi (chức năng) hoặc tính chất 
(chất lượng) của PM. Chẳng hạn như, hành vi: phần mềm có ghi logfile, chất lượng: phần mềm  có bảo mật. 
Requirement specification : là đặc tả đòi hỏi phải được thỏa mãn trên PM (“what”): là yêu cầu 
thường được nêu ra từ người sử dụng 
Design specification : là đặc tả hướng dẫn cho cách làm PM (“how”): là các loại tài liệu mô tả 
csdl và các xử lý (tiếp cận cấu trúc ) hoặc mô tả các lớp (tiếp cận hướng đối tượng) của PM  2 khía cạnh: 
1) Đặc tả về chức năng 
Function (chức năng) PM là công cụ, nó phải có chức năng xử lý. 
Đặc tả phần mềm về chức nắng: Là tập tài liệu có kiểm soát dùng để mô tả cho các chức năng và 
xử lý của PM. Vd: URD,SyRD, SwRD, … trong tiếp cận cấu trúc. 
Nếu xem PM là một hệ thống con trong môi trường mà nó được sử dụng, thì các chức năng xử lý 
của PM được yêu cầu từ môi trường này. Có 2 cách tiếp cận hệ thống phổ biến để xác định các 
chức năng của PM (là 1 hệ thống con): 
Hướng cấu trúc: phân rã các chức năng của hệ thống lớn thành các chức năng của các hệ thống 
con, đến mức có thể làm được (lược đồ DFD).      lOMoAR cPSD| 58457166
Hướng đối tượng: nhìn từ ngoài (usecases) và nhìn vào bên trong hệ thống (classes): nó có nhiều 
lớp,1 lớp – là 1 hệ thống con- có trách nhiệm cộng tác với các lớp khác để thực thi 1 chức năng 
(use-case) của hệ thống. 
2) Đặc tả về chất lượng được mong đợi ( phi chức năng) Là tập tài liệu mô tả các đặc tính chất  lượng của PM. 
Non-function (phi chức năng) ví dụ: độ tin cậy, bảo mật, linh hoạt,… của PM, được gọi chung là 
các đặc điểm làm hài lòng người sử dụng (đặc tính chất lượng, quality attributes). 
a) Khái niệm về chất lượng phần mềm 
Để có chất lượng, PM phải làm thỏa mãn được những gì (user và developers) muốn đ/v PM.  Hai khía cạnh: 
Users muốn có PM tốt hơn trong việc sử dụng nó như một công cụ làm việc 
VD: người sử dụng muốn PM có hiệu quả (efficiency), dể bảo trì 
(maintainability),…, là những đặc điểm mà PM bộc lộ ra ngoài, user có thể nhận biết được. 
Developers muốn có thiết kế tốt hơn cho PM để dể hiểu, dể làm, dể bảo trì,… vd: Nhất quán, 
không dư thừa dữ liệu, bảo mật,…, đây là những đặc tính bên trong của PM, users không biết. 
Tất nhiên, PM phải làm thỏa mãn yêu cầu của users 
Vd: Để PM có hiệu quả như mong đợi của Users, thì nó cần phải sử dụng CPU, RAM, đường 
truyền mạng,.. một cách hiệu quả. 
b) Yêu cầu, mong muốn và ràng buộc 
Yêu cầu là những điều kiện hoặc năng lực được mong đợi từ user (a) hoặc đòi hỏi trên sản phẩm 
(b): yêu cầu là điều kiện cho công việc tạo mới (có thay đổi). 
Ràng buộc (constraint) cũng là điều kiện, nhưng để duy trì (vận hành) 
Đặc tả yêu cầu (=requirement specification) là yêu cầu được mô tả & truyền đạt một cách tường 
minh đến người nhận. Vd: yêu cầu tương tác trên form, ghi trong tài liệu. 
Mong muốn( Needs): bao gồm cả yêu cầu tường minh lẫn yêu cầu cần thiết nhưng không được 
nêu ra. Vd: có hiệu quả cao 
Design (=design specification) là đặc tả sản phẩm để hướng dẫn hành động tạo ra sản phẩm. vd: 
giải thuật (để lập trình), cấu trúc dữ liệu (để cài đặt csdl), testcases (để kiểm thử) Mối quan hệ:      lOMoAR cPSD| 58457166  
c) Vai trò các tác nhân trong việc tạo ra phần mềm 
Mô tả phần mềm để có chất lượng 
Thông thường, users cố gắng diễn đạt yêu cầu chất lượng của họ thành đặc tính trên PM để devs 
làm đúng yêu cầu cho họ. Tuy nhiên, Users không biết được những đặc tính nào của PM cần 
phải có, vì họ không biết cách thiết kế (bên trong) của PM, các mong muốn như “dể sử dụng”, 
“thân thiện”,… lại không giống nhau giữa các Users của một PM. Do đó, định nghĩa rõ ràng cho 
mỗi đặc tính chất lượng được yêu cầu trên PM là rất cần thiết, để: Dev thỏa mãn được, hoặc gợi 
ý thêm về các đặc tính cần thiết khác, User hiểu rõ giá trị sử dụng của các đặc tính này, để hiệu  chỉnh yêu cầu 
d) Mô hình chất lượng McCall, ISO25010 Vai trò của các mô hình chất lượng: 
Chuẩn hoá yêu cầu chất lượng cho PM thành các yếu tố chất lượng có định nghĩa để tránh trùng 
lặp, mâu thuẩn, hiểu lầm. 
Ánh xạ mỗi yếu tố chất lượng này thành các đặc tính khả thi bên trong PM để cài đặt. 
Bằng các mô hình này, người phát triển có thể “tự đo được” chất lượng của PM do mình tạo ra. 
SQuaRE = Sw Quality Requirement & Evaluation Mô hình Mc.Cal(1977)      lOMoAR cPSD| 58457166  
Phần mềm khi làm ra trong phòng lab chuyển giao cho nơi sử dụng thì một số đặc điểm chất 
lượng đã được thõa mãn ở phòng lab , do không được tương thích với môi trường vận hành 
một số đặc điểm không bộc lộ ra được, ko thõa mãn được chất lượng. 
Trong quá trình sử dụng phần mềm( vận hành): phát sinh thêm yêu cầu chất lượng. 
Cập nhật: sử dụng 1 thời gian lạc hậu thì cần cập nhật nâng cấp 
Các yếu tố chất lượng (Quality factors) được đưa ra từ 3 khía cạnh: chuyển giao, vận hành và cập 
nhật: có tác động lớn đến việc sử dụng PM Các yếu tố chất lượng được định nghĩa cho Dev &  users 
Các yếu tố chất lượng “phiên dịch” thành tiêu chuẩn chất lượng để Dev hiện thực được trên PM. 
Phương diện Chuyển giao: có 3 yêu cầu: khả năng linh hoạt( phần mềm chạy được trên nhiều 
máy, trên nhiều hệ điều hành,..); khả năng sử dụng lại (sử dụng lại phương tiện, công cụ mà user 
đã có, tốt và sử dụng hiệu quả để làm phần mềm mới); khả năng tương tác( nối kết phần mềm 
của mình với phần mềm khác để làm hệ thống lớn hơn, phục vụ đắt lực cho người user) 
Phương diện Vận hành: tính đúng đắn, độ tin cậy, khả năng sử dụng cao, toàn vẹn( toàn vẹn dữ 
liệu và toàn vẹn code); tính hiệu quả 
Phương diện Cập nhật, cải tiên: khả năng bảo trì; tính linh hoạt( thay đổi thông số phù hợp với 
môi trường vận hành); khả năng kiểm tra  Mô hình ISO 25010 
Chất lượng của PM có từ việc sử dụng nó trong một ngữ cảnh cụ thể (quality in use): từ tập hợp 
các đặc tính chất lượng mà người user mong đợi, sau đó nhìn từ môi trường sử dụng chọn ra đặc 
tính chất lượng cần thiết 
Người lập trình viên sẽ sử dụng các đặc tính user chọn để họ cân nhắc và cài đặt những đặc tính 
phần mềm phải có để thõa mãn. 
Chu kì sống của phần mềm theo ISO 25010 
Yêu cầu chất lượng trong sử dụng: chất lượng user mong muốn có khi sử dụng phần mềm. 
Trong môi trường, trong bối cảnh cụ thể, user chọn ra đặc tính chất lượng cần phải có.      lOMoAR cPSD| 58457166
Từ yêu cầu chất lượng trong sử dụng xác định và định nghĩa các yêu cầu chất lượng phần mềm 
bên ngoài( external quality requirements).: là những đặc tính chất lượng mà người user có thể 
traỉ nghiệm được, cảm nhận được từ môi trường sử dụng, nắm bắt được ý nghĩa của các đặc tính 
chất lượng ( chức năng về giao diện) 
Từ Yêu cầu chất lượng phần mềm bên ngoài xác định và định nghĩa các yêu cầu chất lượng 
phần mềm bên trong: những yếu tố chất lượng yêu cầu trên từng thuộc tính của phần mềm mà nó 
phải được cài đặt ( chi tiết của phần mềm) Ví dụ csdl phải cài đặt theo chuẩn 3. 
Từ yêu cầu tạo ra sản phẩm. 
Để có sản phẩm phần mềm thõa mãn những yếu tố chất lượng trên thuộc tính thì phải đối chiếu 
với yêu cầu của bảng thiết kế. 
Đánh giá chất lượng phần mềm bên trong được sử dụng để dự đoán chất lượng phần mềm bên  ngoài. 
Đánh giá chất lượng phần mềm bên ngoài có thể được sử dụng để dự đoán chất lượng trong sử 
dụng. Cài đặt phần mềm vào môi trường vận hành, đối chiếu xem đúng với yêu cầu chất lượng 
mà người user mong đợi chưa. 
Nếu những điều người user mong đợi chưa thể hiện hết thành requirments, người user sẽ bổ 
sung. Nhìn vào chất lượng sản phẩm trong môi trường thực, thì người user tiếp tục đưa ra Needs. 
Giá trị của các mô hình chất lượng: 
Các tiêu chí chất lượng được định nghĩa sẵn là sự gợi ý cho các yêu cầu chất lượng: Yêu cầu chất 
lượng là tập tiêu chí được chọn 
Ước lượng được mức độ quan trọng của mỗi tiêu chí trong môi trường ứng dụng thực tế: 
Để ước lượng mức độ thực hiện 
Với bộ tiêu chí được chọn làm yêu cầu, cả users lẫn devs đều có thể tự đánh giá chất lượng của 
PM: Kiểm thử trên các đặc tính chất lượng được chọn   
CHƯƠNG 2: MÔ HÌNH LÀM PHẦN MỀM 
1/ SW Process (Tiến trình PM) 
Là một chuổi hành động cần làm (kế hoạch) để làm ra và cập nhật cải tiến cho PM, đến khi nó bị 
bỏ đi. Mỗi phần mềm chỉ có 1 tiến trình làm phần mềm. 
2/ SW Process model( Mô hình làm phần mềm) 
Là một khuông mẫu để thiết lập tiến trình làm phần mềm; nó quy định các công đoạn (bước) và 
thứ tự thực hiện các công đoạn này ví dụ: waterfall có các công đoạn khảo sát, phân tích, thiết      lOMoAR cPSD| 58457166
kế, hiện thực, kiểm thử và bảo trì. Công đoạn trước hổ trợ cho một vài công đoạn sau một cách 
có kiểm soát (biết đúng/sai) và có mục đích (biết dùng để làm gì). 
Quá trình phát triển PM thực chất là quá trình nhận thức yêu cầu từ thực tế đối với PM trong suốt 
chu kỳ sống của nó, để thực hiện các thay đổi lên PM làm thỏa mãn các yêu cầu này. 
Sự thay đổi của PM thể hiện thành phiên bản mới tốt hơn phiên bản củ và thay đổi có kiểm soát. 
Mỗi một thay đổi được đưa ra thì  : Nó phải phù hợp với mong muốn (thỏa mãn chưa); Nó có 
đáng làm hay không ? (lợi ích/thiệt hại); Nó được làm như thế nào ? (khó hay dể) 
Sự xem xét để thực hiện các thay đổi này đưa đến nhu cầu tìm kiếm thông tin (kiến thức, kinh 
nghiệm) và công nghệ (phương tiện), để chọn cách làm tốt nhất, phối hợp các công đoạn trong 
tiến trình PM một cách hiệu quả 
Một mô hình phát triển PM cần thể hiện 4 nội dung:   1. 
SW specification: đặc tả phần mềm  - 
Đặc tả cho vấn đề: từ mong muốn đặc tả thành yêu cầu, mô tả rõ ràng phần mềm cần làm  gì  - 
Đặc tả cho phần mềm (giải pháp, trong thực tế)  2. 
SW design & implementation : Thiết kế và hiện thực phần mềm  - 
Thiết kế phần mềm từ đặc tả phần mềm  - 
Từ bảng thiết kế hiện thực thành 1 phiên bản PM  3. 
SW verification & validation: cơ chế, cách để đánh giá chất lượng 
Củng cố cho cách làm PM và phiên bản PM hiện tại để nó thỏa mãn cho yêu cầu (và mong  muốn). 
Verification: đánh giá trên từng công đoạn làm: công đoạn sau có làm đúng theo yêu cầu của 
công đoạn trước hay không 
Validation: phần mềm tạo ra có đúng, phù hợp với mong muốn người dùng không.  4.  SW evolution (maintenance)  - 
Cách cập nhật phiên bản PM hiện tại để nó thỏa mãn cho yêu cầu mới: làm sao để phần 
mềm không bị lạc hậu( cập nhật, nâng cấp, cải tiến), ngăn ngừa những nguy cơ làm hư hỏng hệ 
thống, làm sao để kiểm soát được các thay đổi để cho phần mềm trở nên tốt hơn. 
Mỗi mô hình sẽ có các đặc trưng khác nhau:  
Mô hình tác nước ( tuyến tính):  Gồm các giai đoạn:      lOMoAR cPSD| 58457166    
Mô hình thác đổ (còn gọi là SDLC chuẩn) dựa trên phương pháp luận giải quyết vấn đề 
có từng bước dẫn dắt quá trình suy nghĩ cách giải quyết vấn đề:  - 
Khảo sát : nhận thức bối cảnh phát sinh yêu cầu có PM  - 
Phân tích: định nghĩa yêu cầu (định nghĩa các chức năng cần thiết của PM từ yêu cầu hợp  lý của user)  - 
Thiết kế: cân nhắc chọn lựa cho giải pháp “tốt nhất” (từ kiến thức chuyên môn trong lĩnh 
vực CNPM) để thực hiện các chức năng của PM (thành các xử lý của nó).  - 
Hiện thực (lập trình): áp dụng giải pháp thiết kế  - 
Kiểm thử: đánh giá mức độ phù hợp của giải pháp (là PM&cách dùng nó) so với yêu cầu  làm PM.  - 
Bảo trì: cách sửa PM cho phù hợp yêu cầu mới Đặc điểm tuyến tính:   
Mỗi công đoạn sẽ tạo ra một ẩn phẩm: Có các tài liệu (vd: tài liệu phân tích, thiết kế) 
hướng dẫn thực hiện công đoạn tiếp theo để giải quyết yêu cầu ban đầu (từ user). Mọi công đoạn 
cùng cộng tác nhau giải quyết yêu cầu. Công đoạn trước phải hoàn tất để làm công đoạn sau.   
Người users chỉ đưa ra yêu cầu để có PM sử dụng: Users không tham gia vào việc làm ra 
sản phẩm PM. Nếu yêu cầu sai, mọi công đoạn phải được xét lại.      lOMoAR cPSD| 58457166  
Mô hình này chỉ phù hợp với loại yêu cầu “chắc chắn đúng, đủ và không thay đổi”. Mô 
hình này cần nhiều công sức để làm lại cho các yêu cầu ban đầu bị thay đổi. 
Mô hình làm mẫu thử:   
Đặc điểm: lặp nhiều lần   
Ngược với mô hình thác đổ, người user (chuyên gia) điều khiển quá trình phát triển mẫu 
để dần dần tạo thành một phiên bản mẫu hoàn chỉnh (PM): Có cộng tác giữa user và dev.   
Trực quan, dể nhận xét và bàn luận trên mẫu: User tiếp cận sớm với mẫu (sẽ là sản phẩm 
PM), Dev hiểu rõ yêu cầu từ user.   
Mọi thay đổi đều thể hiện trên mẫu, không có tài liệu. Bị phụ thuộc vào user, User quyết 
định mọi chi tiết của mẫu (Dev không cần phân tích để đưa ra chức năng & đặc tính chất lượng). 
Nhưng nhiều users có thể sinh mâu thuẩn. Khó bảo hành, bảo trì, cải tiến được( nếu thay đổi  dev).  Mô hình xoắn ốc  Đặc điểm tiến hóa   
Thừa kế các mô hình trước:  - 
Mô hình thác nước: có các công đoạn để tạo mẫu (có tài liệu ấn phẩm của công đoạn).      lOMoAR cPSD| 58457166 - 
Mô hình mẫu thử: cho phép user tham gia đánh giá & cải tiến mẫu sau mỗi chu kỳ.   
Khác các mô hình trước:  - 
Làm từ bản chất ⃕ chi tiết (bất biến ⃕ tùy biến).  - 
Reciew: dành cho tát cả những người có liên quan (User + Dev + Experts +…) - Các 
công đoạn trong chu kỳ: thay đổi được.  - 
Cho phép cập nhật ấn phẩm, thay vì tạo mới.  - 
Cho phép tiếp tục phát triển trong khi PM đang được sử dụng Mô hình hợp nhất  (UP/RUP) 
Đặc điểm tiến hóa linh hoạt   
Có các chu kỳ để cải tiến mẫu (giống như xoắn ốc).  - 
Mỗi chu kỳ có thể dùng mô hình thác nước,mẫu thử,..  - 
Phải sử dụng tiếp cận hướng đối tượng.   
Mỗi chu kỳ phát sinh công việc cho chu kỳ kế tiếp.  - 
Mỗi công đoạn trong một chu kỳ có thể nhận yêu cầu từ bất kỳ công đoạn nào trước đó. 
vd: kết quả “test” ở chu kỳ trước → sửa “requirements” và bổ sung “design” để thực hiện ở chu  kỳ sau.  - 
“Công đoạn” là “luồng công việc” cập nhật 1 ấn phẩm.   
Có 9 luồng công việc làm song song.  - 
6 luồng công việc phát triển mẫu (engineering)  - 
3 luồng hổ trợ phát triển mẫu (configuration & change management, project  management, environment) 
CHƯƠNG 3: ỨNG XỬ VỚI YÊU CẦU 
1) Quản lý yêu cầu (CMMI-L2_RM) Khám phá yêu cầu mới và kiểm soát chúng 
a) Hiểu đúng yêu cầu 
Hiểu nguyên nhân phát sinh yêu cầu (vấn đề, mong muốn): là nền tảng cốt lõi cho việc hiểu đúng  yêu cầu 
 Kiểm chứng yêu cầu, vd: làm mẫu thử.      lOMoAR cPSD| 58457166
Quá trình đặt yêu cầu và kiểm chứng yêu cầu   
Mẫu thử trong môi trường sống sẽ bị ảnh hưởng bởi nhiều khía cạnh khác nhau: Tình huống 
dùng (usercases), Ràng buộc/Phụ thuộc, Rủi ro trong môi trường, Hiệu quả, Lợi/Hại 
Tình huống dùng( usercase): tình huống mà người sử dụng cần dùng đến phần mềm, phần mềm 
hỗ trợ user giải quyết tình huống tác động từ phần mềm lên môi trường 
Ràng buộc/ phụ thuộc: xuất phát từ môi trường làm việc của người user phần mềm muốn chạy 
được phải lệ thuộc vào những thứ xung quanh môi trường: hệ điều hành, 
Rủi ro: phần mềm chạy gây ra những rủi ro gì, những rủi ro môi trường gây ra 
Hiệu quả: hiệu quả xử lý nhanh hay chậm, tốn tài nguyên hay không,… 
Lợi/Hại: sử dụng phần mềm có tiết kiệm được chi phí hay không, lợi ích khi sử dụng  phần mềm 
Phần mềm chưa thõa mãn được hết mong muốn xem xét (mẫu) Yêu cầu Từ đó developer 
mới sửa mẫu và tạo ra phiên bản mẫu thử mới. Phiên bản mới thõa mãn thêm những mong đợi 
xuất phát từ môi trường so với phiên bản cũ. 
b) Cam kết cho yêu cầu: tiến trình cam kết và thõa thuận 
Cái gì cam kết từ đầu thì phải làm để thõa thuận cam kết 
Trước khi sử dụng nguồn lực của mình cho việc thực hiện yêu cầu thì phải xác định  tính khả thi của nó.      lOMoAR cPSD| 58457166  
1. Nơi phát sinh yêu cầu: Nhận biết yêu cầu từ khách hàng, users hoặc stakeholders 2.  Xem 
xét khả năng đáp ứng từ dự án, theo nhiều khía cạnh: mục tiêu, nguồn lực. phương án và rủi ro  3. 
Xem xét khả năng thực hiện có thêm trợ giúp từ bên ngoài  4. 
Cam kết thực hiện yêu cầu khả thi bằng kế hoạch cơ sở (base line project plan, BPP)  5. 
Thực hiện theo kế hoạch để làm thỏa mãn cho các cam kết 
Các khía cạnh xem xét tính khả thi:  1. 
Kinh tế: PM sẽ giúp ích được gì cho users / tổ chức : lợi ích được tích lũy theo thời gian 
từ lúc bắt đầu sử dụng phần mềm đến một thời điểm cụ thể  2. 
Vận hành: PM có thể tích hợp được với các thành phần khác (hệ điều hành, máy tính, quy 
trình) để tạo thành hệ thống vận hành tốt trong môi trường hiện tại không ?  3. 
Kỹ thuật: PM có hiện thực được không, với các hổ trợ hiện có (vd: công nghệ, năng lực, 
phương pháp,..) trong giới hạn cho phép về chi phí và thời gian ?  4. 
Kế hoạch: Có kế hoạch khả thi để giải quyết mọi yêu cầu từ nhiều phương diện : kỹ thuật, 
vận hành, thời gian, chi phí,…?  5. 
Chính trị-xã hội: Có gây hại (hiệu ứng lề) gì không ? 
Chất lượng của yêu cầu: 
Tiêu chí thể hiện nội dung yêu cầu: 
Mạch lạc: mọi thứ phải có căn cứ, liên kết lại với nhau 
Nhất quán: mọi yêu cầu, công đoạn không được mâu thuẫn 
Kết quả được mô tả chính xác: một tình huống được đưa ra phải có kết quả mô tả chính xác 
Hậu quả được mô tả rõ      lOMoAR cPSD| 58457166
Tiêu chí truyền đạt yêu cầu: SMART  S: cụ thể rõ ràng  M: đo lường được  A: khả thi 
R: có lý do T: có thời hạn 
c) Theo dõi việc thực hiện( tracking & oversight) 
Giúp năng ngừa và loại bỏ sự không nhất quán giữa yêu cầu và hành động thực hiện để đảm bảo 
đúng cam kết thực hiện yêu cầu. Tracking: Theo dõi kết quả trong quá khứ 
Oversight: dự báo hậu quả để lại trong tương lai   
d) Kiểm soát các thay đổi 
Nhận biết sự thay đổi trên yêu cầu ban đầu từ các tác nhân nêu ra yêu cầu, cân nhắc về các thay 
đổi và kiểm soát các hành động đáp ứng cho thay đổi. 
Các nguồn phát sinh làm thay đổi yêu cầu:  - 
Đề nghị thay đổi từ nơi đặt ra yêu cầu: marketing/customers/management cảm thấy các 
tính năng hoặc giao diện không phù hợp, thay đổi yêu cầu để phù hợp hơn. Môi trường vận hành 
bị thay đổi ( ví dụ sự mở rộng của tổ chức) dẫn đến yêu cầu thay đổi, phần mềm phải cải tiến, 
nâng cấp để phù hợp với môi trường mới.      lOMoAR cPSD| 58457166 - 
Đề nghị từ nơi thực hiện yêu cầu (Project Enviroment): có cách làm tốt hơn, công nghệ bị 
lạc hậu có công nghệ tốt hơn đề nghị thay đổi cách làm để phần mềm trở nên tốt hơn.   
(Đọc sơ qua) 
Yêu cầu đối với sản phẩm xuất hiện xuyên suốt từ khi dự án bắt đầu đến khi sự án sắp kết thúc  Giai đoạn tiền dự án:  • 
Tiền dự án (pre-project) Là một tập hợp có hệ thống các việc cần làm để khẳng định các 
yêu cầu sẽ được cam kết thực hiện (sẽ ghi trong bản hợp đồng) giữa các bên tham gia vào quá 
trình tạo ra sản phẩm phần mềm.  •  Mục tiêu:  – 
Lập tôn chỉ (charter) và hợp đồng (contract) để khẳng định vai trò và trách nhiệm của các 
bên tham gia dự án, và các tiêu chí để đánh giá, nghiệm thu cho hợp đồng dự án.  – 
Khẳng định kế hoạch hợp tác thực hiện (Baseline Project Plan, BPP).  Project Charter (tôn chỉ): 
Project charter là tập tài liệu xác định một cách hết sức cơ bản về trách nhiệm và quyền hạn của 
dự án và các bên có liên quan.      lOMoAR cPSD| 58457166
Nó được các key-persons ( Í stakeholders) cùng nhau tạo ra để làm tiên đề cho các hành động phối 
hợp thực hiện dự án, ie: mọi vấn đề & giải pháp cụ thể đều bắt nguồn từ charter này. 
Project charter diễn tả mối quan hệ giữa vấn đề, mục tiêu, giải pháp, lợi ích và kinh phí thực hiện  của dự án.  Charter Index  1. 
Những vấn đề, hậu quả và cơ hội khắc phục của tổ chức thụ hưởng.  2. 
Mục tiêu của dự án (→ giải quyết vấn đề nào).  3. 
Yêu cầu đối với sản phẩm/dịch vụ của dự án.  4. 
Phương pháp giải quyết yêu cầu  5. 
Giả định và phụ thuộc của phương pháp  6. 
Các chuyển giao, và mốc chuyển giao  7. 
Lợi ích từ các chuyển giao  8. 
Nguồn lực & nơi cấp nguồn lực cho dự án  9. 
Vai trò và trách nhiệm của stakeholders đối với dự án (trong đó có nhiệm vụ và quyền 
hạn của trưởng dự án)  Lập hợp đồng  1. 
Lập bản hồ sơ dự thầu (proposal ) hoặc phương án sơ bộ gửi đến khách hàng để hai 
bên cùng xem xét nội dung yêu cầu & giải pháp trước khi ký hợp đồng. 
– Đây là giai đoạn khảo sát để nhận biết yêu cầu từ hiện trạng thực tế.  2. 
Lập bản hợp đồng dự án (contract ) sau khi proposal/phương án sơ bộ đã hoàn chỉnh.  3. 
Lập bản hợp đồng phụ (sub-contract) với các đối tác bên ngoài để thực hiện một phần 
việc được outsource từ dự án (nếu có). 
2) Phát triển yêu cầu (CMMI_L3_RD) 
Biến yêu cầu thành đặc tả PM 
a) Thấu hiểu yêu cầu đối với phần mềm 
Khám phá những mong muốn về phần mềm theo quan điểm hệ thống trong suốt chu kỳ sống  của nó. 
Yêu cầu đối với phần mềm nhìn từ quan điểm hệ thống:        lOMoAR cPSD| 58457166
Môi trường sống của phần mềm: 
 1.Môi trường nghiệp vụ (business)  – 
Các vấn đề gì cần giải quyết trong tổ chức (phần mềm có những lợi ích gì).  – 
Các quy tắc quản lý phải tuân thủ (phần mềm phải tuân thủ ràng buộc gì). 
Vì sao yêu cầu phần mềm phải được xem xét và chọn lọc từ môi trường nghiệp vụ? 
 Môi trường nghiệp vụ là miền vấn đề (problem domain) có nhiều vấn đề “bất biến” (không đổi 
& tồn tại lâu dài) làm phát sinh nhu cầu sử dụng PM để giải quyết các vấn đề này. 
Môi trường nghiệp vụ yêu cầu phần mềm cung cấp các chức năng và tính năng liên quan đến 
nghiệp vụ của tổ chức. Phần mềm được phát triển để giải quyết những vấn đề hoặc nhu cầu kinh 
doanh cụ thể của tổ chức, giúp đảm bảo rằng phần mềm sẽ cung cấp giá trị và lợi ích cho tổ 
chức, như cải thiện hiệu suất, tối ưu hóa quy trình làm việc hoặc tạo ra sản phẩm và dịch vụ mới. 
Phần mềm tạo ra phải tuân thủ quy tắc quản lý liên quan đến lĩnh vực của tổ chức. 
 2.Môi trường vận hành (operation) 
Là môi trường sử dụng phần mềm: bao gồm các yếu tố và điều kiện cần thiết để phần mềm hoạt 
động một cách ổn định và hiệu quả.  – 
Máy tính và các thiết bị hổ trợ cho phần mềm: hệ điều hành, cấu hình phần cứng, cấu 
hình mạng,..phải tương thích với phần mềm  – 
Người sử dụng (trực tiếp và gián tiếp)  – 
Các ràng buộc trong giao tiếp, vd: quy trình xử lý 
 Vì sao việc lấy ý kiến từ môi trường vận hành rất quan trọng ? 
Môi trường vận hành của PM là miền vấn đề (problem domain) có nhiều vấn đề “bất biến” 
(không đổi & tồn tại lâu dài) làm phát sinh nhu cầu sử dụng PM để giải quyết các vấn đề này. 
Việc lấy ý kiến từ môi trường vận hành, ta có thể nhận biết mức độ tương thích của các thiết bị 
với phần mềm, giúp ta hiểu rõ hơn trải nghiệm và nhu cầu của người sử dụng. Ngoài ra việc lấy 
ý kiến từ môi trường vận hành giúp phần mềm đảm bảo các ràng buộc trong giao tiếp. 
 3.Môi trường phát triển (development) 
Môi trường sử dụng để viết, thử nghiệm và triển khai phần mềm 
Công cụ: Phần mềm hổ trợ lập trình, trình biên dịch, công cụ quản lý mã nguồn,  …. 
Người: kiến thức chuyên môn, kênh thông tin Phương pháp, kỹ thuật, công nghệ hiện có      lOMoAR cPSD| 58457166
Quan hệ giữa phần mềm và môi trường:  • 
Môi trường nghiệp vụ hoặc vận hành của PM là miền vấn đề (problem domain) có nhiều 
vấn đề “bất biến” (không đổi & tồn tại lâu dài) làm phát sinh nhu cầu sử dụng PM để giải quyết  các vấn đề này. 
– Nguồn gốc của yêu cầu đ/v phần mềm là từ những vấn đề bất biến trên, không phải từ users  • 
Người phát triển làm ra PM bằng cách dùng các hổ trợ cần thiết (công nghệ, phương 
pháp, cộng đồng,…) từ môi trường phát triển PM. 
Thông tin cộng tác giữa các chuyên gia (devs + users = COMMUNITY) có thể cung cấp giải 
pháp tốt nhất cho việc phát triển PM (IEEEstd1233)   
Quá trình phát triển yêu cầu hệ thống giao tiếp với ba tác nhân: Customer, Enviroment,  Teachnical Community 
Customer: đưa ra Raw Requirement: khách hàng đưa ra yêu cầu ban đầu, nhu cầu và mong đợi, 
những ý tưởng và đề xuất cho phần mềm. 
Environment: đưa ra Constraint/ Influence: xác định các yếu tố, yêu cầu ràng buộc từ môi trường 
ảnh hưởng đến hệ thống ( ảnh hưởng chính trị, thị trường, tiêu chuẩn, và chính sách kỹ thuật,  văn hóa, tổ chức) 
Từ bộ sưu tập yêu cầu phát triển hệ thống biểu diễn kỹ thuật được chuẩn bị cho Technical 
Community để làm rõ xác nhận yêu cầu      lOMoAR cPSD| 58457166
Technical Community cung cấp phản hồi Technical Feedback có thể gây ra sự thay đổi bổ sung 
hoặc xóa bỏ trong bộ sưu tập yêu cầu. Phản hồi từ cộng đồng kĩ thuật có thể cung cấp cho khách 
hàng những tính năng mới nhất, các công nghệ mới từ đó phản triển hơn bộ sưu tập phát triển  yêu cầu hệ thống. 
Từ bộ sưu tập yêu cầu biểu diễn cho khách hàng ( role, prototype, user story,..) 
Khách hàng gửi feedback: khách hàng phản hồi về sự cập nhật thông tin về mục tiêu vấn đề, về 
các yêu cầu mới để phát triển bộ sư tập yêu cầu hoàn chỉnh. 
b) Chi tiết hóa yêu cầu thành đặc tả cho PM: 
“Requirements allocation and flow-down”: phiên dịch yêu cầu đ/v PM (nhìn từ quan điểm sử 
dụng) thành đặc tả sản phẩm, thiết kế, lập trình, kiểm thử,.. (quan điểm xây dựng, tạo sản phẩm) 
Là sự cụ thể hóa yêu cầu thành đặc tả chi tiết ở các mức (mức ý niệm, mức thiết kế, mức lập  trình,..), vd:  • 
FR: Ngữ cảnh ® DFD-0 ® DFD-1 …  • 
NFR: External quality factors ® internal quality attibutes. 
 Theo CMMI, có 3 mức chi tiết:  1. 
User requirements: đặc tả yêu cầu của users  2. 
Product (system) requirements : đặc tả yêu cầu đối với hệ thống lớn (nhìn từ bên ngoài  system)  3. 
Product-component requirements: đặc tả từng môđun của hệ thống (nhìn vào bên trong  system) 
Chi tiết hóa yêu cầu làm PM:  1. 
Tìm hiểu nhu cầu về PM từ môi trường nghiệp vụ (“User” requirements) thông qua  các stakeholders 
– Cân nhắc từ các mục tiêu kinh tế ($)  2. 
Xem xét User requirements theo quan điểm hệ thống (nghiệp vụ, vận hành, phát triển) 
để diễn tả thành yêu cầu đ/v hệ thống (System requirements) 3. Từ System requirements, 
đặc tả yêu cầu (bên ngoài) cho phần mềm (SW Product requirements) 
– Yêu cầu chức năng và phi chức năng      lOMoAR cPSD| 58457166 4. 
Từ Product requirements, tạo ra bản thiết kế có nhiều thành phần; mỗi thành phần 
giải quyết cho 1 yêu cầu được phân rã từ Product requirements (SW Components  requirements)  5. 
Đặc tả trong thiết kế là yêu cầu cho các công đoạn tiếp theo (lập trình, kiểm thử, cài đặt,  …) 
Chi tiết hóa yêu cầu theo CMMI:   
c) Phân tích và kiểm chứng các đặc tả 
Mô phỏng môi trường vận hành, phân tích các tình huống cần sử dụng phần mềm (bằng  prototype hoặc user story); 
Chỉ ra sự phù hợp của bản thiết kế PM với các môi trường nghiệp vụ, vận hành, phát triển của  nó.  • 
Là hành động chứng minh rằng các đặc tả đ/v PM phản ánh đúng “mong đợi”.      lOMoAR cPSD| 58457166
– Mong đợi từ những tác nhân (stakehoders). Hành động này phân tích mối quan hệ giữa phần 
mềm với các môi trường (nghiệp vụ, phát triển, vận hành) trong suốt chu kỳ sống của nó kể cả 
các môđun trong hệ thống/PM, để khẳng định rằng các đặc tả là cần thiết, đúng và đầy đủ.  •  Phương pháp:  – 
Validation: CMR sản phẩm sẽ thỏa mãn mong đợi – Verification: CMR hành động làm  sản phẩm là đúng.  •  Kỹ thuật:  – 
Peer review, inspection, user story, prototype,.. 
( Đọc sơ qua) Dự án  • 
Thiết kế: Thiết kế phần mềm là một hệ thống các công việc chỉ ra giải pháp của PM cho 
các vấn đề đã biết, và đặc tả chi tiết cho PM để xây dựng, kiểm thử và triển khai ứng dụng một  phiên bản PM:  – 
Đặc tả các chức năng và kết cấu của PM (các usecase, class, layers,  package/subsystem,…)  – 
Đặc tả chi tiết để lập trình (mô đun, dữ liệu, giải thuật, giao tiếp, công nghệ / chuẩn,…)  – 
Đặc tả chi tiết kiểm thử: test cases, test plans  – 
Đặc tả cách vận hành của PM (mô hình vận hành, các vai trò của users, flatforms, giao 
tiếp với các hệ thống khác,… )  • 
Tất cả các hành động đưa ra đặc tả đều phải được chứng minh là đúng (thỏa mãn cả FR  lẫn NFR) 
Yêu cầu và giải pháp làm phần mềm 
1 Yêu cầu dùng để xây dựng các giải pháp từ tổng quát đến chi tiết, mà kết quả sau cùng là PM; 
do đó, cần phát hiện những yêu cầu “chắc chắn đúng” cho PM càng sớm càng tốt để làm cơ sở 
phát triển các yêu cầu khác (vd: mh xoắn ốc).  1. 
Yêu cầu đúng là yêu cầu dẫn xuất từ bản chất của vấn đề, không hoặc ít bị thay đổi  (invariances).  2. 
Tạo điều kiện cho users tiếp cận sớm với PM (user involvement) để họ tư vấn/gợi  ý/đánh giá:   
Nhận định về vấn đề bị sai, hoặc còn thiếu   
Đánh giá tầm quan trọng của vấn đề không đúng   
Giải pháp của phần mềm chưa tốt    …  2. 
Xem xét toàn diện các khía cạnh phát triển, chuyển giao, vận hành, tiến hóa của PM (mô 
hình McCALL, ISO 9126) để đưa ra đặc tả, bằng cách phối hợp nhiều chuyên gia (ie,  community). 
Peer review / forum / workflow      lOMoAR cPSD| 58457166
Ý kiến từ người sử dụng được ưu tiên, vì nó thường diễn tả trực tiếp yêu cầu từ tổ chức có sử 
dụng PM (nghiệp vụ, môi trường vận hành, hiệu quả dùng tài nguyên,..), tuy nhiên người sử 
dụng không giải quyết được vấn đề sử dụng lâu dài của PM (công nghệ, an toàn, cải tiến,... ). 
Các website stackOverflow.com, expertExchange.com, codeProject.com, hoặc gitHub.com đều 
cung cấp các nghiên cứu chuyên sâu cho giải pháp.  3. 
PM sẽ thực hiện các chức năng theo yêu cầu nhưng vì chưa có sẵn nên khó hình dung 
cách xử lý; vì vậy, cần mô tả hành vi của chúng một cách trực quan. Vẽ ra các lược đồ 
(DFD/ERD,UMLs), làm phim minh họa (user story) 
Dùng CASE tools để thiết kế (Rational Rose/ Power Designer/Oracle Designer,..) Làm mẫu thử 
bỏ đi (throw-away prototype) Agile: Minh hoạ bằng chính source code đang làm.  4. 
Tài liệu phát triển PM phải được mô tả một cách có hệ thống; sự “phiên dịch” yêu cầu 
ban đầu thành đặc tả chi tiết cho giải pháp (sản phẩm) phải rõ ràng, trong suốt (~traceability). 
Mọi vấn đề/giải pháp trong từng mức đều nhất quán (consistency). 
Mỗi yêu cầu được cụ thể hóa thành giải pháp chi tiết trong mức thấp hơn (impact). 
Mỗi chi tiết phải giải quyết vấn đề nào đó ở mức cao hơn (derive). 
Liệu mọi yêu cầu ở mức cao đều đã có giải pháp ở mức chi tiết hơn ? (coverage).  5. 
Yêu cầu chức năng và phi chức năng cần được phát triển đồng thời. 
Các yêu cầu chức năng được phân rã / chi tiết hoá đến mức lập trình được bằng DFD, UML  Class diagram,.. 
Các yêu cầu phi chức năng được quy chuẩn thành các yếu tố chất lượng (external quality 
factors) và diễn tả thành các đặc trưng phải có của PM (internal attributes) bằng các mô hình 
chất lượng, như ISO 25010. 
Xem xét đồng thời yêu cầu chức năng & phi chức năng của PM để quyết định cách cài đặt các 
chức năng này (chọn giải thuật phù hợp). 
CHƯƠNG 5:VERIFICATION & VALIDATION  1) Cách làm PM đúng 
Là tạo ra sản phẩm làm hài lòng người sử dụng: yêu cầu là nền tảng cơ sở để làm ra sản phẩm 
đúng đáp ứng mong đợi 
Sản phẩm không đúng là: Không thoả mãn hết mọi yêu cầu đầu vào, Có mâu thuẩn với yêu cầu,  Không dùng được,… 
2) Định nghĩa Verification & Validation 
Verification: đánh giá một hệ thống hoặc một thành phần trong hệ thống trên từng công đoạn 
làm để quyết định khi nào sản phẩm phát triển thõa mãn yêu cầu đặt ra cho từng công đoạn. 
Verification không kiểm tra đầu vào sai; lỗi (yêu cầu sai) sẽ phát tán đến sản phẩm => cần có  validation. 
Validation: đánh giá phần mềm tạo ra có đúng, phù hợp với mong muốn người dùng không. 
Validation không thể kiểm thử hết mọi tình huống xử lý của sản phẩm => cần có verification.