Professional Documents
Culture Documents
- kiểm thử
- mô hình: class diagram, sequence diagram, activity diagram)
Thế nào là Kỹ nghệ phần mềm:
Kỹ nghệ phần mềm được xem như là một tên gọi chỉ cách thức làm phần
mềm theo tác phong công nghiệp.
Kỹ nghệ phần mềm quan tâm đến việc làm thế nào để tạo ra sản phẩm phần
mềm đạt hiệu quả nhất.
Chapter 1: Intro
- Khái niệm Sản phẩm phần mềm, phân biệt với Hệ thống thông tin
Phần mềm (SW): Khái niệm phần mềm:
- = Chương trình máy (Computer program) + Cấu trúc dữ liệu (Data structure) + Tài liệu
(Document)
- . Mã nguồn: source code . Bộ nhớ trong (RAM): làm việc . Kỹ thuật (pt + bảo trì)
- . Mã máy: executable . Bộ nhớ ngoài (db): lưu trữ . Đào tạo, hướng dẫn
Hệ thống thông tin (IS): Là một hệ thống có tổ chức để tổ chức, thu thập,
giao tiếp và lưu trữ thông tin. Nó là nghiên cứu về các mạng bổ sung mà
các tổ chức và con người sử dụng để thu thập, tạo, phân phối dữ liệu, xử lý
và lọc.
SW là một phần của IS, IS còn bao gồm Data, phần cứng mà SW khum có.
Ngoài ra IS còn có thể đào tạo chuyển giao từ nghiệp vụ tay sang ứng
dụng CNTT.
+ Về tính năng:
. Tính phù hợp: các chức năng phù hợp với nghiệp vụ
-> Khảo sát 1 tập người dùng khác nhau xem có phù hợp không
Về kết quả: output chính xác với từng input tương ứng
. Tính tương tác: khả năng tương tác với một số HT cụ thể
. Tính an toàn: (Về mặt vật lý lẫn logic) khả năng bảo vệ thông tin và dữ liệu của sản
phẩm phần mềm, sao cho người, hệ thống không được phép thì không thể truy cập, đọc
hay chỉnh sửa chúng
-> Sử dụng tools, pmem mô phỏng tấn công xem sức chịu đựng của pmem
. Khả năng phục hồi: Phục hồi lại hoạt động, khôi phục dữ liệu lquan đến lỗi
. Tính dễ hiểu:
. Dễ học: người dùng tốn ít công sức, tgian để biết cách sd sản phẩm
. Có thể sd được
.Khả năng phân tích: có thể tìm những thiếu sót hay những nguyên nhân gây lỗi hoặc để
xác định những phần cần sửa
.Khả năng thay đổi: có thể chấp nhận một số thay đổi cụ thể trong quá trình triển khai
.Tính ổn định: tránh những tác động không mong muốn khi chỉnh sửa phần mềm
.Khả năng kiểm định: khả năng cho phép đánh giá được phần mềm chỉnh sửa
+ Tính khả chuyển: Có thể vận chuyển qua các môi trường vận hành khác nhau
Mỗi pha trong RUP đều trải qua 6 hoạt động chính và 3 hoạt động hỗ trợ:
• Business Modelling: Các tiến trình nghiệp vụ được mô hình hóa qua việc sử dụng các ca sử dụng
nghiệp vụ (business use cases).
• Requirements: Các tác nhân (actors) được xác định và các ca sử dụng được mô tả chi tiết để mô
hình hóa các yêu cầu của hệ thống.
• Analysis and Design: Mô hình thiết kế được tạo bằng các mô hình kiến trúc (architectural models),
mô hình thành phần (component models), mô hình đối tượng (object models) và mô hình tuần tự
(sequence models).
• Implementation: Các thành phần của hệ thống được cài đặt, phát sinh mã tự động từ thiết kế có thể
được áp dụng ở đây
• Testing: Kiểm thử được thực hiện lặp đi lặp lại cùng với hoạt động cài đặt. Kiểm thử mức hệ thống
được thực hiện sau khi đã hoàn thành việc cài đặt.
• Deployment: Sản phẩm được đem vào vận hành ở môi trường thực tế của khách hàng.
• Configuration & Change management: Hoạt động hỗ trợ việc quản lý sự thay đổi của hệ thống.
• Project management: Hoạt động hỗ trợ việc quản lý sự phát triển của hệ thống.
• Enviroment: Hoạt động hỗ trợ liên quan đến phát triển môi trường vận hành, bao gồm quy trình và
công cụ (tools).
Trong hình trên, các hoạt động được phân bố theo chiều dọc. Điều này có nghĩa là ở mỗi pha đều trải
qua một quy trình các hoạt động giống nhau. Tuy nhiên, điều khác nhau giữa các pha là ở mức độ
của từng hoạt động, các pha khác nhau sẽ có mức độ của từng hoạt động khác nhau. Ví dụ: Ở pha
Inception, các hoạt động như Business Modeling và Requirements sẽ được chú trọng, do đó sẽ có
mức độ cao; còn ở pha Elaboration, hoạt động Analysis & Design được đẩy 4 mạnh hơn nên có mức
độ cao hơn trong khi các hoạt động Business Modeling và Requirements sẽ có mức độ giảm dần.
- Agile
Là 1 phương pháp luận, tập các nguyên tắc thực hành cho pt pmem
Scrum, XP,… là các quy trình pt pmem tuân theo Agile
Tuyên ngôn của Agile:
+ Cá nhân và tương tác hơn là quy trình và công cụ
+ Pmem chạy tốt hơn là tài liệu đầy đủ
+ Cộng tác với KH hơn là đàm phán hợp đồng
+ Phản hồi với thay đổi hơn là bám sát kế hoạch
-> Nhấn mạnh vế trái hơn vế phải nhưng ko có nghĩa là loại bỏ hoàn toàn vế phải
Cá nhân và tương tác: Những nhân tố cốt lõi tgia làm ra sp -> Tự tổ chức, tự quản lý, duy trì động
lực, đảm bảo môi trường thuận lợi nhất cho quá trình tương tác giữa các cá nhân
Pmem chạy tốt: Về phía KH, 1 sp chạy tốt có ích hơn rất nhiều 1 đống tài liệu mà ko có nhiều gtri,
Agile khuyến nghị chuyển giao sp ngay từ pha đầu tiên
Cộng tác với KH: KH cùng tgia vào trong quá trình pt sp -> đảm bảo t/m KH và đáp ứng đc thay đổi
Phản hồi với thay đổi: Phù hợp với MT đầy biến động, thay đổi
*Ưu điểm
● Đáp ứng được thay đổi
● Thỏa mãn KH tốt
*Nhược điểm
● KH phải tham gia toàn bộ tgian với đội pt
● Các thành viên cộng tác tốt
● Xếp thứ tự ưu tiên cho yêu cầu là khó
● Áp lực về lịch chuyển giao sp -> Khó XD đc pmem có cấu trúc tốt, đơn giản, dễ hiểu
*Sử dụng
● Các sp vừa và nhỏ được pt để bán
● Các sản phẩm phức tạp
● Sản phẩm yêu cầu an ninh an toàn cao
Scrum
Là thành viên của họ Agile, XD dựa trên thuyết thực nghiệm (mọi tri thức đều đến từ kinh nghiệm đã
trải qua, dựa trên những gì mình hiểu biết) -> Giảm thiểu rủi ro, tăng tính chính xác
Nhóm Scrum liên tục thăm dò và điều chỉnh hoạt động của mình để tối ưu hóa gtri sản phẩm
3 trụ cột: Minh bạch, thanh tra, thích nghi
Minh bạch: tất cả khía cạnh quan trọng của tiến trình phải được hiển thị rõ ràng cho tất cả
mng có lquan đến quá trình pt sp -> Giảm rủi ro, tăng tin cậy, nâng cao chất lượng, chính xác trong
qđ
Thanh tra: Thanh tra tạo tác và tiến độ -> phát hiện vấn đề ngoài ý muốn
Thích nghi: Vấn đề ko thể chấp nhận/ ý tưởng mới -> điều chỉnh quy trình, tài liệu
-
-
Use-case Diagram
- Class Diagram:
● Class diagram mô tả kiểu của các đối tượng trong hệ thống và các loại
quan hệ khác nhau tồn tại giữa chúng.
● Là một kỹ thuật mô hình hóa tồn tại ở tất cả các phương pháp phát triển
hướng đối tượng.
● Biểu đồ hay dùng nhất trong UML và gần gũi nhất với các lập trình viên.
● Giúp các lập trình viên trao đổi với nhau và hiểu rõ ý tưởng của nhau.
- Sequence Diagram:
Sequence Diagram là bản vẽ xác định câu chuyện hậu trường của một chức
năng. Câu chuyện hậu trường ở đây chính là sự tương tác giữa các nhóm
đối tượng, các thông điệp được gửi và nhận giữa các đối tượng cũng như
trình tự thời gian giữa những thông điệp đó.
Việc thực hiện các chức năng từ lúc nhận input, chạy vòng lặp, kiểm tra rồi
trả kết quả, theo một trình tự, có sự tham gia của các hàm, các đối tượng.
Và được trực quan hóa bằng bản vẽ chính là Sequence Diagram.
- Activity Diagram là bản vẽ tập trung vào mô tả các hoạt động, luồng xử lý
bên trong hệ thống. Nó có thể được sử dụng để mô tả các quy trình nghiệp
vụ trong hệ thống, các luồng của một chức năng hoặc các hoạt động của
một đối tượng
Thu thập và phân tích yêu cầu
•Mục đích của thu thập và phân tích yêu cầu
•Kỹ nghệ yêu cầu (requirements engineering) là quy trình xác định các dịch vụ hệ
thống mà khách hàng yêu cầu, cùng với các ràng buộc để phát triển và vận hành
các dịch vụ đó
•Các yêu cầu (requirements) là các mô tả về các dịch vụ và các ràng buộc đó
Yêu cầu (requirements): các mô tả (từ mức chung chung đến chi tiết) về các dịch
vụ hệ thống cùng với các ràng buộc
•Mục đích chính của yêu cầu (requirements)
–Cơ sở cho đề xuất/ đấu thầu hợp đồng
–Cơ sở cho lập hợp đồng (mức đặc tả chi tiết)
•Yêu cầu người dùng
–Ngôn ngữ tự nhiên
–Viết cho khách hàng
•Yêu cầu hệ thống
–Đặc tả chi tiết
–Xác định những gì cần được phát triển/cài đặt (một phần nội dung hợp đồng)
6
•Yêu cầu chức năng
–Các phát biểu về dịch vụ hệ thống cung cấp, cách hệ thống phản ứng với môi
trường và các hoạt động quan sát được của hệ thống trong các tình huống.
–Có thể bao gồm các phát biểu về những gì hệ thống sẽ không thực hiện.
- Mô tả các chức năng hay dịch vụ của hệ thống
- Yêu cầu chức năng mức người dùng thường bao gồm các phát biểu chung (ở
mức cao) về những gì hệ thống cần làm
- Yêu cầu chức năng mức hệ thống tập trung mô tả ở mức chi tiết hơn các dịch vụ
hệ thống
•Yêu cầu phi chức năng
–Ràng buộc về dịch vụ hay chức năng của hệ thống, chẳng hạn, ràng buộc về thời
gian hay ràng buộc về quy trình phát triển.
–Thường áp dụng cho tổng thể hệ thống, thay vì từng dịch vụ cụ thể
- Xác định các ràng buộc và các thuộc tính của hệ thống, chẳng hạn, ràng buộc
về độ tin cậy, thời gian phản hồi và các ràng buộc về lưu trữ.
- Các ràng buộc về quy trình phát triển như yêu cầu về mô hình quy trình, ngôn
ngữ và môi trường lập trình, phương pháp và công cụ …
- Yêu cầu phi chức năng đôi khi quan trọng hơn yêu cầu chức năng. Đôi khi nếu
chúng không được thỏa mãn, hệ thống sẽ trở thành vô dụng.
•Yêu cầu miền
–Các ràng buộc hệ thống xuất phát từ miền hoạt động
Tài liệu yêu cầu phần mềm là phát biểu chính thống về những gì cần phải đạt
được cho việc phát triển phần mềm
•Thường bao gồm (1) định nghĩa về các yêu cầu người dùng và (2) bản đặc tả các
yêu cầu hệ thống
•Đây không phải là tài liệu thiết kế. Nội dung thường tập trung vào câu hỏi “Cái gì”
thay vì “Như thế nào”.
Đặc tả yêu cầu Là quá trình tổng hợp và đưa các yêu cầu người dùng và hệ thống
vào tài liệu yêu cầu
•Yêu cầu người dùng phục vụ người dùng cuối và khách hàng
•Yêu cầu hệ thống chi tiết hơn và nhiều thông tin kỹ thuật hơn
•Là một phần hợp đồng phát triển hệ thống
+ Là quá trình tổng hợp và đưa ra các yêu cầu người dùng và HT vào tài liệu yêu cầu (Yêu
cầu người dùng: phục vụ ng dùng cuối và KH; yêu cầu HT: chi tiết hơn và nhiều thông tin kỹ thuật
hơn)
+ Một số dạng đặc tả yêu cầu: Ngôn ngữ TN, ngôn ngữ TN đc cấu trúc, ngôn ngữ mô tả
thiết kế, các ký pháp đồ họa,…
- Quy trình thu thập, phân tích và đặc tả yêu cầu
Thu thập yêu cầu -> Phân tích yêu cầu -> Đặc tả yêu cầu -> Thẩm định yêu cầu
+ Phỏng vấn: tương tác với các bên lquan để thu thập thông tin
+ Ca sử dụng: Dựa vào kịch bản, mô tả chức năng của HT từ góc nhìn của ng dùng, mô tả
tương tác giữa tác nhân và HT
+ Nghiên cứu nhân học: Quan sát và phân tích các HĐ nghiệp vụ diễn ra trong thực tế
+ Sử dụng chuyên gia,…
+ ND ktra: Hợp lệ, nhất quán, đầy đủ, hiện thực, kiểm chứng
+ Một số kỹ thuật: Kiểm định yêu cầu (thủ công), làm bản mẫu, sinh ca kiểm thử
-> lặp đến khi tài liệu được các bên chấp nhận
Mẫu kiến trúc (architectural patterns): kiến trúc được sử dụng để giải quyết
một/vài vấn đề khi xây dựng hệ thống và đã được sử dụng ở nhiều hệ thống
UX (User experience): trải nghiệm người dùng, những yếu tố MT, HĐ của ng dùng
Các bước
•Phân tích người dùng
–Người dùng đưa dữ liệu vào như thế nào
–Hệ thống cung cấp và biểu diễn dữ liệu ra cho người dùng như thế nào
•Thiết kế giao diện
–Làm bản mẫu
–Sử dụng các phương pháp mô tả giao diện.
•Xây dựng giao diện
•Thẩm định giao diện
- Ng dùng thường đánh giá về HT bằng cách đánh giá UI hơn là đánh giá về tính năng
- Đầu vào: Tài liệu yêu cầu (SRS), kịch bản các HĐ ng dùng, phản hồi của HT với ng dùng
- Đầu ra: Kịch bản ng dùng tương tác với pmem qua giao diện, bố trí màn hình hợp lý
- 2 yếu tố cần xem xét khi thiết kế UI: ng dùng đưa dữ liệu/ thông tin vào HT ntn, HT cung cấp và
biểu diễn dữ liệu ra ntn
+ Tgian học, tốc độ thực hiện (ng dùng thực hiện công việc của họ nhanh)
+ Nhớ được
+ Hài lòng chủ quan
UML
Với UML, hai loại mô hình thiết kế sẽ được xây dựng
–Tĩnh: thể hiện cấu trúc tĩnh của hệ thống (các lớp đối tượng và quan hệ
giữa chúng)
– Động: thể hiện sự tương tác giữa các đối tượng trong hệ thống
Trong giai đoạn đầu của quá trình thiết kế, 3 mô hình có thể sử dụng:
–Mô hình cấu trúc (thể hiện các nhóm lớp đối tượng có liên quan)
–Mô hình tuần tự (thể hiện sự tương tác giữa các đối tượng)
–Mô hình máy trạng thái (thể hiện sự chuyển trạng thái của từng đối
tượng)
Implement
Implementation = triển khai thiết kế chi tiết thành chương trình
Sản phẩm phần mềm tốt, hiệu quả kinh tế cao
- Hạn chế tối đa xảy ra lỗi
- Mã nguồn dễ bảo trì: dễ hiểu, dễ sửa lỗi được, nâng cấp – thay đổi dễ dàng.
- Khả năng tái sử dụng cao
=>Kỹ thuật lập trình tốt, hiệu quả
KIỂM THỬ
- Kiểm thử phần mềm là quá trình thực thi 1 chương trình với mục đích tìm ra
lỗi. Kiểm thử phần mềm đảm bảo sản phẩm phần mềm đáp ứng chính xác,
đầy đủ và đúng theo yêu cầu của khách hàng, yêu cầu của sản phẩm đề
đã đặt ra. Kiểm thử phần mềm cũng cung cấp mục tiêu, cái nhìn độc lập
về phần mềm, điều này cho phép việc đánh giá và hiểu rõ các rủi ro khi
thực thi phần mềm. Là hoạt động chủ chốt nhằm đánh giá chất lượng. Có
thể chỉ ra lỗi, không thể khẳng định không còn lỗi Có thể khẳng định hết lỗi
bằng kiểm thử vét cạn, nhưng cách này không khả thi trên thực tế. Một
kiểm thử thành công là một kiểm thử phát hiện ra lỗi
- Verification and Validation
Verification (kiểm chứng)
Kiểm tra sản phẩm có được cài đặt đúng thiết kế không?
Phát hiện lỗi lập trình so với thiết kế
Validation (Thẩm định)
Kiểm tra xem sản phẩm có đáp ứng yêu cầu KH không? (chức năng
và phi chức năng)
Tìm lỗi phân tích thiết kế
Verification -> Validation (V&V)
•V&V tĩnh:
–Không thực thi/chạy chương trình
–Xét duyệt yêu cầu, thiết kế, mã nguồn
–Tiến hành ở mọi giai đoạn phát triển PM
–Khó đánh giá tính hiệu quả của PM
•V&V động (Kiểm thử PM)
–Thực thi/chạy chương trình
–Là cách duy kiểm tra các yêu cầu phi chức năng
- Các hoạt động kiểm thử”
Trắng Đen
-
Quản lý dự án
- Khái niệm dự án, dự án CNTT, dự án pmem
+ Dự án: Tập các công việc được thực hiện bởi 1 nhóm có chuyên môn. Tạo ra 1 sp/ dịch vụ
duy nhất. Sử dụng nguồn lực dự kiến (tgian, kinh phí, nhân lực,…). Được thực hiện trong MT
đầy biến động
+ Dự CNTT và dự án pmem
Dự án CNTT Dự án phần mềm
+ Sp: 1 Hệ thống thông tin + Sp: 1 phần mềm/ dịch vụ phần mềm
+ Cty mới, chưa có dữ liệu, quy trình nghiệp vụ, + Đã có nền tảng về cơ sở hạ tầng, dữ liệu, quy
cở sở hạ tầng,… -> Phải xây dựng cả HTTT trình,… -> Chỉ cần XD phần mềm