Đồ án tốt nghiệp Quy trình RUP và ứng dụng
MỤC LỤC
DANH MỤC HÌNH 3
DANH MỤC TÀI LIỆU 4
DANH MỤC BẢNG 4
DANH MỤC TỪ 4
LỜI CẢM ƠN 5
LỜI NÓI ĐẦU 6
ĐẶT VẤN ĐỀ 9
1.1. MỤC ĐÍCH CỦA ĐỀ TÀI
11
1.2. GIỚI THIỆU BÀI TOÁN, NHIỆM VỤ CỦA ĐỀ TÀI
12
1.3. LÝ DO CHỌN ĐỀ TÀI
13
TỔNG QUAN VỀ QUY TRÌNH RUP 14
1.4. MỘT SỐ VẤN ĐỀ TRONG PHÁT TRIỂN PHẦN MỀM
15
1.4.1. Công nghệ học phần mềm 15
1.5. QUY TRÌNH PHẦN MỀM RUP (RATIONAL UNIFIED PROCESS)
16
1.5.1. Hiệu suất phát triển phần mềm 16
1.5.2. Quy trình công nghệ phần mềm RUP hướng sử dụng (Use-Case Driven) 17
1.5.3. Quy trình công nghệ phần mềm RUP lấy kiến trúc làm trung tâm (Architecture
Centric) 18
1.5.3.1. Mô hình và kiến trúc phần mềm 18
1.5.3.2. Kiến trúc phần mềm là quan trọng 19
1.5.3.3. Yêu cầu của kiến trúc phần mềm 19
1.5.3.4. RUP là quy trình lấy kiến trúc phần mềm làm trung tâm 19
1.5.4. Quy trình công nghệ phần mềm RUP lặp và tăng dần từng bước (Iterative and
Incremental) 21
1.5.4.1. Hạn chế rủi ro 21
1.5.4.2. Tạo một kiến trúc phần mềm vững chắc 22
1.5.4.3. Đáp ứng kịp thời việc thay đổi yêu cầu 23
1.5.4.4. Liên tục tích hợp hệ thống 23
1.6. RUP TẬP HỢP CÁC KINH NGHIỆM TỐT TRONG PHÁT TRIỂN PHẦN MỀM
23
1.6.1. Phát triển phần mềm có sự lặp lại (Iteratively) 24
1.6.2. Quản lý tốt các yêu cầu (Management Requirements) 24
1.6.3. Sử dụng các kiến trúc thành phần (Use Component Architecture) 25
1.6.4. Mô hình hoá các phân tích thiết kế (Model Visually- UML) 26
1.6.5. Liên tục thẩm định chất lượng (Continously Verify Quality) 26
1.6.6. Quản lý thay đổi (Manager Change) 27
1.7. QUY TRÌNH RUP CỦA RATIONAL CORP
28
1.7.1. Quy trình Rational Unified Process-RUP 28
1.7.1.1. Nội dung (Discipline) 30
1.7.1.2. Các pha (Phase) 30
1.7.1.3. Luồng công việc (Workflow) và luồng chi tiết công việc (Workflow Detail)
31
1.7.2. Ngôn ngữ hợp nhất mô hình UML (Unified Modelling Language) 32
1.8. GIỚI THIỆU NỘI DUNG DỰ ÁN
33
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 1/99
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
1.8.1. Giới thiệu nội dung dự án 33
1.8.1.1. Các khái niệm liên quan đến dự án 33
1.8.1.2. Các nguyên lý hoạt động 34
1.8.1.3. Tổng quan dự án 35
1.8.1.4. Hệ thống theo dõi và giám sát (Monitoring and Evaluation Systems) 37
1.8.2. Các yêu cầu khách hàng 37
THỰC HIỆN DỰ ÁN THEO QUY TRÌNH RUP 38
1.9. PHA KHỞI ĐẦU (INCEPTION PHASE).
39
1.9.1. Mục đích yêu cầu 39
1.9.2. Phát triển các tài liệu làm việc (Artifact) 39
1.9.3. Kế hoạch lặp cho giai đoạn khởi đầu 39
1.9.4. Quản lý yêu cầu khách hàng 40
1.9.4.1. Tiếp cận yêu cầu 40
1.9.4.2. Mô hình Use-Case 44
1.9.4.3. Đặc tả Use-Case 47
1.9.4.4. Hỗ trợ đặc tả yêu cầu khách hàng 48
1.9.5. Quản lý rủi ro dự án 50
1.9.5.1. Kế hoạch quản lý rủi ro (Risk Management Plan) 50
1.9.5.2. Danh sách các rủi ro 50
1.9.6. Lập kế hoạch lặp cho giai đoạn tiếp theo 51
1.10. PHA PHÂN TÍCH VÀ THIẾT KẾ (ELABORATION PHASE)
52
1.10.1. Giai đoạn lặp lần thứ nhất (Iteration 1) 52
1.10.1.1. Mục tiêu 52
1.10.1.2. Kế hoạch của giai đoạn lặp thứ nhất 53
1.10.1.3. Phân tích hành vi của hệ thống 53
1.10.1.4. Mô hình hoá trực quan các khái niệm phân tích (Domain và Analysis
Model ) 54
1.10.1.5. Mô hình hoá trường hợp sử dụng (Use-Case Model) 59
1.10.1.6. Quản lý phụ thuộc yêu cầu (Management Dependency) 63
1.10.2. Giai đoạn lặp lần thứ hai (Iteration 2) 64
1.10.2.1. Mục tiêu 64
1.10.2.2. Kế hoạch của giai đoạn lặp lần thứ hai 65
1.10.2.3. Sử dụng các mẫu thiết kế (Design Pattern) 65
1.10.2.4. Thiết kế đáp ứng các yêu cầu phi chức năng (Supplementary
Specification) 69
1.10.3. Giai đoạn lặp lần thứ ba (Iteration 3) 71
1.10.3.1. Xem xét quan hệ giữa các Use-Case 71
1.10.3.2. Tổ chức thành kiến trúc tổng thể của hệ thống 73
1.11. PHA XÂY DỰNG (CONSTRUCTION PHASE)
75
1.12. PHA CHUYỂN GIAO (TRANSITION PHASE)
75
CÁC KẾT QUẢ ĐẠT ĐƯỢC 76
1.13. CÁC KẾT QUẢ THỰC HIỆN DỰ ÁN
77
1.14. ÁP DỤNG CÁC PATTERN
79
CÁC SO SÁNH ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN 82
1.15. ƯU ĐIỂM CỦA QUY TRÌNH RUP
83
1.16. BẢN CHẤT PHÁT TRIỂN PHẦN MỀM CỦA QUY TRÌNH RUP
84
1.17. HẠN CHẾ CỦA QUY TRÌNH RUP
86
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 2/99
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
1.17.1. RUP chưa phải là quy trình phần mềm hoàn thiện 86
1.17.2. Mở rộng quy trình RUP 87
1.18. VẤN ĐỀ THỰC HIỆN QUY TRÌNH RUP Ở VIỆT NAM
88
1.19. HƯỚNG PHÁT TRIỂN TIẾP THEO CỦA ĐỀ TÀI
89
CÁC PHỤ LỤC 92
1.20. CÁC TÀI LIỆU CỦA DỰ ÁN
94
1.20.1. Tài liệu quản lý dự án 94
1.20.2. Tài liệu quản lý yêu cầu 94
1.20.3. Tài liệu phân tích thiết kế 94
1.21. CÁC TỪ THUẬT NGỮ CỦA TÀI LIỆU
95
1.22. CÁC TÀI LIỆU THAM KHẢO
99
DANH MỤC HÌNH
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 3/99
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
DANH MỤC TÀI LIỆU
DANH MỤC BẢNG
DANH MỤC TỪ
Architecture Centric
Artifact
Best Practice
Biểu đồ tiếp diễn
Checkpoint
CMM
CNHPM
Component Architecture
Công nghệ học phần mềm
Công nghệ phần mềm
17, 18, 21, 23, 28, 29, 30, 59, 65, 86,
87, 88, 89
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 4/99
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
Gói
Hệ thống theo dõi và giám sát
Iteratively
Kế hoạch
52, 53, 65, 79, 84, 85, 86, 94, 97
Khái niệm phân tích
Khung nhìn
Khuôn mẫu
Milestone
Mô hình hoá
Monitoring and Evaluation Systems
Nguyên lý định vị
Phân tích
Phân tích viên hệ thống
Phụ thuộc yêu cầu
Quan hệ bao hàm
Quan hệ mở rộng
Quản lý dự án
84, 94, 97
Quản lý rủi ro
Quản lý thay đổi
Quy trình RUP
26, 28, 32, 50, 52, 83, 86, 87, 88
Rađa thụ động
Radioactive Source
Rational RequirePro
Rational SoDA
Rational Unified Process
Report
Role
Rủi ro
Rủi ro kỹ thuật
Rủi ro nghiệp vụ
System Analysis
Tác nhân
Tài liệu viễn cảnh chung
Template
Thiết kế
24, 25, 26, 27, 28, 30, 33, 34, 35, 37,
38, 40, 41, 43, 46, 51, 52, 54, 55, 59,
61, 64, 65, 66, 68, 69, 70, 71, 72, 75,
77, 79, 80, 83, 85, 94, 95, 96
Thiết kế kiến trúc hệ thống phần mềm
77
Tool Mentor
Triển khai
UML
Use-Case Driven
vô tuyến định vị thụ động
Waterfall
Workflow
Yêu cầu chức năng
Yêu cầu phi chức năng
70, 77
Đặc tả yêu cầu khách hàng
Đặc tả yêu cầu phần mềm
77, 94
Đặc tính của sản phẩm
Đặc tính sản phẩm
Đối tượng
58, 61, 64, 65, 66, 67, 68, 69, 71, 72,
77, 79, 83, 86, 89, 91, 94, 95, 96, 97
LỜI CẢM ƠN
Những lời nói đầu tiên của đồ án tốt nghiệp này, tôi xin gửi lời cảm ơn chân
thành tới tất cả mọi người, những người thân trong gia đình, thầy cô giáo, bạn bè
đã giúp đỡ động viên tôi trong thời gian vừa qua giúp tôi hoàn thành đồ án tốt
nghiệp này.
Tôi xin gửi lời cảm ơn chân thành và sâu sắc PGS. TS Nguyễn Ngọc Bình, bộ
môn Công nghệ phần mềm, khoa Công nghệ thông tin, trường đại học Bách Khoa
Hà Nội, là người không chỉ đã trực tiếp hướng dẫn tôi thực hiện hoàn thành đồ án
tốt nghiệp này, hơn nữa đã cho tôi những điều lớn hơn thế, đó là niềm say mê
hứng thú trong lựa chọn chuyên nghành Công nghệ phần mềm như là một lĩnh
vực chính của mình trong tương lai. Bản thân đồ án tốt nghiệp này cũng là nghiên
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 5/99
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
cứu về một quy trình công nghệ phần mềm, điều làm tôi rất say mê. Sự say mê đó
hoàn toàn xuất phát từ thực tế, trong thời gian học tập và rèn luyện ở khoa Công
nghệ thông tin, tôi đã nhận ra những điều rất khó khăn trong thực hiện các bài tập
lớn dù chỉ là đơn giản nhất nhưng vẫn thiếu đi một điều gì đó còn chưa được
chuyên nghiệp, chưa phải là quy trình mà vẫn làm theo ý chủ quan. Tôi đã sớm
nhận ra được điều đó khi học môn Công nghệ phần mềm, sự thiếu hụt, sự khó
khăn của mình trong công việc đó chính là công nghệ phần mềm, dù chỉ là các bài
tập nhỏ nhất thì cũng phải làm sao cho thật chuyên nghiệp, cho đúng quy trình. Vì
vậy, ước mơ của tôi là trong thời gian còn học ở trường làm sao để tiếp cận
nghiên cứu thành thạo một quy trình công nghệ phần mềm. Và PGS. TS Nguyễn
Ngọc Bình đã giúp đỡ tôi thực hiện được ước mơ đó, đã hướng dẫn tôi nghiên
cứu quy trình công nghệ phần mềm RUP, là một quy trình công nghệ phần mềm
phổ biến hiện nay. Đến giờ đây, khi đã hoàn thành đồ án, tôi thấy những kiến
thức mà mình thu được thật bổ ích, giúp cho tôi có một cách tiếp cận và nhìn
nhận các dự án một cách dễ dàng và tổng quát nhất.
Tôi xin trân trọng gửi lời biết ơn đến các thầy cô giáo trường đại học Bách
Khoa Hà Nội, là nơi tôi đã lựa chọn để tiếp thu rèn luyện đạo đức và kiến thức
trong những năm vừa qua. Tôi xin chân thành cảm ơn các thầy cô giáo trong khoa
Công nghệ thông tin đã dìu dắt tôi những bước đầu tiên trên con đường tiếp cận
kiến thức, tu dưỡng kỹ năng ngành nghề mà tôi lựa chọn, đó là những kiến thức
vô cùng quan trọng là hành trang suốt cuộc đời của mỗi sinh viên Công nghệ
thông tin Bách Khoa nói chung và bản thân tôi nói riêng.
Cuối cùng, tôi xin gửi lời biết ơn tới gia đình, bạn bè đã cổ vũ động viên tinh
thần và vật chất, tạo mọi điều kiện cho tôi thực hiện hoàn thành đồ án tốt nghiệp
này một cách thuận lợi nhất. Tôi xin chân thành cảm ơn tất cả mọi người.
Hà Nội, ngày 10 tháng 05 năm 2004
LỜI NÓI ĐẦU
Hiện nay, có nhiều quy trình công nghệ phần mềm nhằm vào hoạt động tổ
chức phát triển và quản lý các tác vụ trong phát triển các hệ thống thông tin một
cách có hiệu quả. Mỗi quy trình phần mềm ra đời trong một bối cảnh lịch sử đều
phụ thuộc vào điều kiện công nghệ và các hỗ trợ cho phát triển công nghệ thông
tin hiện tại, trình độ nhận thức cũng như kinh nghiệm phát triển công nghệ thông
tin của các đội dự án. Các quy trình công nghệ phần mềm sau một thời gian ra
đời đều xuất hiện một số hạn chế và xuất hiện các quy trình phần mềm khác có
thể phủ định lên quy trình cũ hoặc có thể hỗ trợ các thiếu xót của quy trình cũ
hoặc cũng có thể kế thừa từ nhiều ưu điểm của nhiều quy trình công nghệ phần
mềm cũ để tạo nên một quy trình khác. Cùng với sự hỗ trợ đắc lực của công các
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 6/99
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
công cụ kèm theo, các tài liệu, các kinh nghiệm phát triển của các chuyên gia
trong phát triển các dự án lớn.
Quy trình công nghệ phần mềm Rational Unified Process (RUP) của công ty
Rational (hiện nay là của IBM) là quy trình công nghệ phần mềm mới ra đời, nó kế
thừa từ bốn quy trình công nghệ phần mềm trước đó, bao gồm:
Quy trình thác nước (Waterfall), là quy trình kinh điển nhất và lâu đời nhất và đã
từng được sử dụng rộng rãi, Tuy rằng còn tồn tại nhiều hạn chế, nhưng đó là một
quy trình công nghệ kinh điển mà hầu hết các quy trình công nghệ phần mềm sau
này đều ít nhiều chịu ảnh hưởng của nó.
Quy trình phát triển phần mềm theo kiểu chế thử nguyên mẫu (Prototype), thích
hợp cho việc thu thập yêu cầu một cách có hiệu quả.
Quy trình phát triển gia tăng (Increamental): một cách tiếp cận dự án theo từng
bước, tăng dần sự phát triển dự án theo sự tăng dần nhận thức và hiểu biết cũng
như kinh nghiệm giải quyết vấn đề của đội dự án.
Quy trình xoáy ốc (Sprial): thích hợp với phát triển các dự án lớn và phức tạp.
Trong phát triển phần mềm, yếu tố con người và tổ chức dự án là quan trọng.
Cần có một khung làm việc thống nhất, một cơ chế thông tin hiệu quả kịp thời
giữa các thành viên, một cơ chế quản lý phân chia công việc toàn diện, hợp lý,
lựa chọn công cụ và công nghệ thích hợp, vv , tất cả là để đáp ứng được tốt
nhất yêu cầu của khách hàng. Đồng thời yếu tố chi phí (nhân lực tiền bạc, vật
chất) và yếu tố thời gian là các yếu tố quan trọng không kém. Vậy làm thế nào có
thể đạt được các yếu tố trên một cách đồng thời ?
Quy trình công nghệ phần mềm RUP ra đời đã giải quyết được phần lớn các
yêu cầu đó. Nó cung cấp một khung (framework) chung cho toàn đội dự án bằng
cách cả đội dự án dùng chung một Website thông tin của dự án, dùng chung các
nguồn tài liệu, các nền tảng kiến thức về công nghệ phần mềm (quy trình RUP
luôn sẵn có Online). Đồng thời là sự hỗ trợ hùng hậu và mạnh mẽ của các công
cụ kèm theo của Rational (UML, SoDA, RequirePro, Test Manager, vv) cũng như
của các nhà cung cấp thứ ba (thirt party) như công cụ của Microsoft (Visual
Studio, DotNet vv), của Sun (Java…), của Oracle…vv. Quy trình công nghệ phần
mềm RUP cũng bao gồm rất nhiều kinh nghiệm của các chuyên gia trong phát
triển phần mềm qua kinh nghiệm thành công của các dự án làm tăng hiệu quả
phát triển, giảm đáng kể chi phí và công sức của đội dự án.
Quy trình công nghệ phần mềm RUP đưa ra nhiều kinh nghiệm thực tế phát
triển dự án được coi là tốt nhất “Best Practice”, đưa ra nhiều cách tiếp cận dự án
một cách hiện đại đáp ứng yêu cầu thực tế trong phát triển dự án.
Quy trình xử lý hướng sử dụng (Use-Case Driven Process).
Tiếp cận hướng kiến trúc làm trung tâm (Architectutre-centric Process).
Lặp và tăng dần từng bước (Iteration and Increamental).
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 7/99
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
Mục đích của đồ án của đợt thực tập tốt nghiệp này là nghiên cứu cụ thể một
cách chi tiết nội dung của quy trình RUP mà trong đợt thực tập chuyên ngành
chưa có điều kiện tiếp cận và tìm hiểu đến và hoàn thiện một cách căn bản các
hiểu biết về quy trình RUP. Đồng thời đây cũng là giai đoạn chuyển tiếp để tiến
hành các công việc áp dụng kỹ thuật và công nghệ của quy trình RUP vào thực tế.
Tuy nhiên, cả một quy trình phần mềm là rất lớn, bao gồm nhiều phạm vi, nhiều
lĩnh vực mà bản thân nó cũng là phát triển cho cả một đội ngũ dự án với nhiều vai
trò khác nhau, đòi hỏi ở mỗi một vai trò cần thiết một nền tảng kiến thức nhất định.
Do đó một cá nhân trong một dự án RUP cũng không thể đảm đương quá nhiều
vai trò được. Vì vậy, trong đồ án này, về lý thuyết tôi nghiên nội dung chính (core)
của quy trình RUP còn phần thực hiện dự án, tôi chỉ thực hiện trên một số nội
dung quan trọng và đóng một số vai trò trong dự án, bản thân một cá nhân không
thể đảm đương nhiều vai trò được. Đó là các nội dung:
Quản lý dự án (Project Management).
Thu thập, phân tích và quản lý yêu cầu (Requirements).
Phân tích và thiết kế (Analysis and Design).
Đồng thời nghiên cứu thêm một số công cụ hỗ trợ cho phát triển dự án theo
quy trình RUP đó là:
Ngôn ngữ hợp nhất mô hình (Unified Modelling Language UML).
Công cụ lập tàì liệu tự động (Rational SoDA).
Công cụ quản lý yêu cầu: Rational RequirePro.
Như ở trên đã nói, bản thân quy trình RUP là một quy trình khá hoàn thiện
nhưng thực tế là chưa đầy đủ, chưa bao quát hết tất các các yếu tố cần thiết các
tác vụ của một quy trình phần mềm. Nghiên cứu quy trình RUP của đồ án này
trước hết là nghiên cứu một quy trình công nghệ phần mềm mới. Tất nhiên là
nghiên cứu một cách cặn kẽ các vấn đề và các chi tiết nhỏ trong quy trình để có
thể nắm được một cách cơ bản quy trình và có thể áp dụng thực tế được. Kết quả
của nhiệm vụ nghiên cứu này là một tài liệu làm việc của dự án, với các tập yêu
cầu, tập các thiết kế, tập các tài liệu quản trị dự án (chủ yếu là tập các tài liệu ở
mức quản lý, phân tích yêu cầu, phân tích và thiết kế) vì đây cũng là nội dung
(core) chính mà tôi tìm hiểu trong quy trình RUP.
Trong đồ án tốt nghiệp này tôi tìm hiểu quy trình RUP và ứng dụng của quy
trình RUP thực tế ở Việt Nam. Đây là yêu cầu thực tế, vì việc áp dụng quy trình
nhiều khi do nhiều nguyên nhân mà bị bỏ qua (có thể ở mức chấp nhận được hay
không chấp nhận được), và mức độ ảnh hưởng khi áp dụng một cách thiếu xót
quy trình như thế. Đồng thời, tìm hiểu thiếu xót của quy trình công nghệ phần
mềm RUP và có thể đề ra một cách bổ xung thêm vào quy trình công nghệ phần
mềm này các yếu tố thiếu xót đó, có thể là các Plug-Ins sẵn có của các công cụ
hỗ trợ RUP (trong bản thân quy trình RUP là một hệ thống mở hỗ trợ một cách
linh hoạt cho việc thêm bớt các cấu hình tuỳ biến của người sử dụng). Điều này,
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 8/99
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
về kỹ thuật thì không khó, chỉ khó do yếu tố nội dung của các Plug-Ins thực sự
phù hợp và nhất quán với toàn bộ quy trình RUP và cài đặt sao cho nó thống nhất
và nhất quán với quy trình ấy. Đây cũng chính là nội dung phương hướng mức
gần và mức xa tôi đề xuất trong đồ án tốt nghiệp này.
ĐẶT VẤN ĐỀ
Tóm tắt chương
Chương mở đầu này tôi xin được giới thiệu một số nét chung về đồ án tốt
nghiệp mà tôi lựa chọn để thực hiện. Đồng thời, trong phần này, tôi cũng trình bày
một số nét tổng quan về đề tài của đồ án tốt nghiệp, về những lý do, động cơ thúc
đẩy nghiên cứu và tìm hiểu đề tài của tôi, về những mục đích đặt ra và yêu cầu
của của đề tài mà tôi đã nghiên cứu thực hiện trong thời gian qua.
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 9/99
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 10/99
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
1.1. MỤC ĐÍCH CỦA ĐỀ TÀI
Các quy trình công nghệ phần mềm hiện nay có nhiêu, mỗi quy trình phần
mềm có những điểm và các hạn chế nhất định của nó và chỉ thích hợp áp dụng
trong những bối cảnh nhất định. Và việc áp dụng các quy trình phần mềm vào
trong các dự án phần mềm luôn luôn phụ thuộc nhiều vào yếu tố con người, vào
khả năng quản lý, phối kết hợp các thành viên trong dự án. Ngay cả sản phẩm
của các dự án phần mềm là các hệ thống phần mềm cũng không thể có một khái
niệm gọi là đúng hay chính xác một cách tuyệt đối để đánh giá chúng, mà chỉ có
thể đánh giá chúng là tốt, tốt hơn hay kém hơn, đạt yêu cầu hay không đạt yêu
cầu. Có nghĩa là sự đánh giá rất “mờ” (fuzzy) không được rõ ràng, và dường như
là không có giới hạn cho sự tốt nhất hoặc xấu nhất. Để có một hệ thống phần
mềm “tốt hơn” (better), thì cần thiết phải có yếu tố cầu thành vào trong dự án “tốt
hơn” và những quy trình phần mềm áp dụng “hợp lý hơn”.
Quy trình RUP là một quy trình công nghệ phần mềm ra đời trên cơ sở kế
thừa từ nhiều ưu điểm của các quy trình công nghệ phần mềm trước đó (thác
nước, lặp và gia tăng, nguyên mẫu, xoáy ốc). Đặc biệt là các tác giả của quy trình
RUP (Ivar Jacobson, Grady Booch, James Rumbauch, Philippe Kruchten) lại là
các tác giả nổi tiếng có nhiều kinh nghiệm thực tế với các dự án phần mềm và
đồng thời lại là tác giả của ngôn ngữ mô hình hóa đối tượng (UML). Do đó, trong
quy trình RUP, các tác giả đã đưa vào rất nhiều kinh nghiệm thành công của các
dự án đã được đúc kết (best practice), cùng với nhiều yếu tố thích hợp để có thể
đáp ứng được xu thế của các hệ thống phần mềm hiện đại. Với quy trình RUP các
tác giả đã giải quyết tương đối trọn vẹn và chi tiết hầu hết các vấn đề của một dự
án phần mềm. Đồng thời cũng nghiên cứu một số công cụ (case tools) hỗ trợ đặc
biệt mạnh mẽ cho quy trình RUP và cũng là một lợi thế rất mạnh của quy trình.
Như tên của đề tài đồ án tốt nghiệp là “Quy trình RUP và ứng dụng”, chính là
thể hiện mục đích của đề tài. Việc nghiên cứu quy trình RUP không chỉ là nghiên
cứu một quy trình phần mềm mà hơn thế nữa là các tư tưởng tiếp cận và giải quết
vấn đề mà các tác giả đã đưa vào quy trình, các kiến thức yêu cầu đối với các
thành viên tham gia dự án RUP. Đồng thời áp dụng quy trình nghiên cứu được để
giải quyết một vấn đề (dự án) nhỏ (do hạn chế về thời gian và nhân lực) để thấy
rõ và hiểu biết cặn kẽ hơn quy trình RUP, đồng thời đưa ra các đánh giá thích hợp
về tính hợp lý, ưu điểm mạnh mẽ của quy trình, bối cảnh thích hơp để áp dụng và
những hạn chế , những điểm không thích hợp của nó. Tuy nhiên, trong phần thực
hiện phần ứng dụng của dự án, tôi chỉ thực hiện một số nội dung của quy trình
RUP-do hạn chế về thời gian, tôi chỉ tập trung vào thực hiện ba nội dung chính là
quản lý yêu cầu, phân tích thiết kế và quản lý dự án theo quy trình RUP. Và trong
phần ứng dụng tôi có thực hiện xây dựng một số đoạn mã chương trình nhằm để
minh họa các thiết kế của mình.
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 11/99
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
1.2. GIỚI THIỆU BÀI TOÁN, NHIỆM VỤ CỦA ĐỀ TÀI
Nhiệm vụ của đề tài có hai phần rất rõ ràng đó là :
Nghiên cứu quy trình RUP
Áp dụng quy trình RUP đã nghiên cứu vào giải quyết một dự án.
Về phần lý thuyết nghiên cứu quy trình RUP, tôi xin trình bày một cách tổng
quan các vấn đề có thể coi là tư tưởng chính mang tính cốt lõi của các tác giả để
hình thành nên quy trình RUP. Do quy trình RUP không đơn thuần là một quy trình
phần mềm (với lý thuyết thuần túy và những tư tưởng) mà nó thực sự là một sản
phẩm (product), vì vậy, tôi cũng xin được trình bày về sản phẩm quy trình RUP
của Rational Corp và IBM (hiện nay hai công ty đã hợp nhất thành IBM), và một
số công cụ liên quan hỗ trợ quy trình. Vì quy trình RUP đặc biệt thích hợp áp dụng
với các quy trình phần mềm sử dụng kỹ thuật hướng đối tượng và không thể tách
khỏi UML, nên tôi cũng xin trình bày về mối quan hệ của quy trình RUP và vai trò
của UML với quy trình RUP (còn tìm hiểu UML là nằm ngoài phạm vi nghiên cứu
của đồ án tốt nghiệp này, coi như bạn đọc đã biết, các bạn có thể tham khảo
thêm).
Về phần áp dụng quy trình RUP vào thực hiện một dự án, tôi xin trình bày về
nội dung của một dự án lớn và phần thực hiện của tôi là một dự án nhỏ trong dự
án lớn đó. Qua đó để bạn đọc có thể nắm được một cách tổng tổng quan về dự
án lớn và nắm chi tiết về vấn đề tồn tại cần giải quyết, các yêu cầu đặt ra trong
phạm vi của dự án nhỏ, là phần thực hiện của tôi. Sau đó là cách giải quyết dự án
của tôi theo quy trình phần mền RUP. Đồng thời trong quá trình giải quyết dự án
theo quy trình RUP cần phải đưa ra một số các đánh giá về sự phù hợp, hợp lý
khi áp dụng quy trình RUP và những chỗ chưa hợp lý trong quá trình thực hiện.
Tuy nhiên, do hạn chế về thời gian và nhân lực, nên trong phần thực hiện dự
án tôi không giải quết hết mọi vấn đề trong một dự án theo quy trình RUP và tôi
cũng không không đóng nhiều vai trò trong một dự án. Phần thực hiện của dự án
này, tôi chỉ giải quyết ba nội dung lớn trong quy trình RUP đó là
Quản lý yêu cầu (Requirement Managements).
Phân tích thiết kế (Analysis and Design).
Quản lý dự án phần mềm (Project Managements).
Đồng thời để giải quyết các vấn đề đó tôi thực hiện một số vai trò trong dự án
là: phân tích viên hệ thống (System Analysis), đặc tả yêu cầu phần mềm
(Requirement Specifier), thiết kế kiến trúc hệ thống phần mềm (Software
Architecture), thiết kế (Designer), quản lý dự án (Project Manager). Các sản phẩm
chuyển giao của nghiên cứu và thực hiện là các mô hình và báo cáo cùng các tài
liệu trong quá trình thực hiện ba nội dung trên của quy trình RUP. Việc lập trình
thực hiện trên một số Use-Case chủ yếu để mô tả ý nghĩa và tính chất đúng đắn
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 12/99
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
của các thiết kế, chưa phải là nội dung chuyển giao cuối cùng của một dự án
phần mềm.
1.3. LÝ DO CHỌN ĐỀ TÀI
Làm phần mềm không chỉ là lập trình, tạo mã một cách đơn thuần để cuối
cùng ra một chương trình có khả năng chạy được. Điều đó chỉ thích hợp với các
dự án thật nhỏ, và rất nhỏ, hay đúng hơn là các chương trình đơn giản. Với các
dự án phần mềm còn có rất nhiều điều quan trọng hơn thế, ở mức phân tích thiết
kế, ở mức quản lý, phối kết hợp các nguồn nhân lực trong dự án một cách hiệu
quả và thực tế thành công của các dự án phần mềm ngày càng nhiều phụ thuộc
vào các yếu tố đó. Và cũng có nhiều lý thuyết, tư tưởng ra đời để thực hiện các
công việc đó, đó là các quy trình phần mềm.
Trong nhà trường, tôi đã được học về rất nhiều quy trình phần mềm, việc
nghiên cứu thực sự sâu sắc về một quy trình phần mềm là không có điều kiện , do
hạn chế về thời gian. Và do nhận thức dự án tầm quan trọng của quy trình phần
mềm đối với các dự án phần mềm, nên tôi chọn đề tài “quy trình phần mềm RUP
và ứng dụng” là đề tài tốt nghiệp của mình. Với tất cả các kiến thức cơ sở đã
được học trong nhà trường cùng sự hướng dẫn của thầy, tôi cố gắng, tìm hiểu
nghiên cứu quy trình RUP, là một trong những quy trình phần mềm rất hiện đại
hiện nay. Điều này, đối với một sinh viên chưa có thực tế thì hơn khó khăn vì
nghiên cứu và hiểu một quy trình phần mềm và đóng nhiều vai trò trong quy trình
ấy thì ngoài yêu cầu kiến thức ở mức nhất định thì cần thiết phải có những trải
nghiệm thực tế. Tuy nhiên, điều đó chỉ là yếu tố khách quan. Trong thời gian qua,
được sự hướng dẫn tận tình của PGS.TS Nguyễn Ngọc Bình, bộ môn Công nghệ
phần mềm, khoa Công nghệ thông tin, trường Đại học Bách Khoa Hà Nội, và sự
cố gắng của bản thân, tôi đã thực hiện hoàn thành yêu cầu của đề tài. Với việc
nghiên cứu một quy trình phần mềm và ứng dụng nó vào thực tế, tôi nghĩ đó là
một bước chuyển tiếp nghiên cứu rất quan trọng, từ hàn lâm sang công nghiệp, là
bước chuẩn bị quan trọng. Do đó, theo tôi nghĩ đây là một đề tài rất hay, và thiết
thực, và rất tin tưởng thực hiện đề tài này.
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 13/99
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
TỔNG QUAN VỀ QUY TRÌNH RUP
Tóm tắt chương:
Trong chương này mục đích của tôi xin trình bày về một số vấn đề thuộc về
cơ sở lý thuyết của đề tài thực tập:
Các vấn đề trong phát triển phần mềm: Khái niệm về công nghệ học phần mềm.
Khái quát về quy trình RUP. Quy trình RUP ra đời là do yêu cầu khắc phục và hạn
chế một số khó khăn của các quy trình phát triển phần mềm trước. Tuy rằng nó
cũng có các ưu điểm và nhược điểm
Trình bày về một số tư tưởng chính của quy trình RUP, đó là các quan điểm tổng
quát bao hàm và xuyên xuốt quy trình RUP là nền tảng cho sự phát triển của quy
trình RUP
Một số kinh nghiệm phát triển phần mềm hiện đại được đưa vào quy trình RUP
cùng một số công cụ hỗ trợ
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 14/99
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
1.4. MỘT SỐ VẤN ĐỀ TRONG PHÁT TRIỂN PHẦN MỀM
1.4.1. Công nghệ học phần mềm
Vì RUP là một quy trình phần mềm, vì vậy để nghiên cứu một quy trình công
nghệ phần mềm trước hết cần thiết phải nắm được khái niệm về công nghệ học
phần mềm. Khái niệm công nghệ học phần mềm: có rất nhiều định nghĩa về công
nghệ học phần mềm của rất nhiều tác giả tuỳ theo quan điểm và hoàn cảnh lịch
sử trong từng giai đoạn, thời kỳ:
Bauer [1969]: “CNHPM
1
là việc thiết lập và sử dụng các nguyên tắc công nghệ
học đúng đắn dùng để thu được phần mềm một 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”
Parnas [1987]: “CNHPM là việc xây dựng phần mềm nhiều phiên bản bởi nhiều
người”
Ghezzi [1991]: “CNHPM là một lĩnh vực của khoa học máy tính, liên quan đến
xây dựng các hệ thống phần mềm vừa lớn vừa phức tạp bởi một hay một số
nhóm kỹ sư”
IEEE [1993]: “CNHPM là
− Việc áp dụng phương pháp tiếp cận có hệ thống, bài bản và được lượng
hoá trong phát triển, vận hành và bảo trì phần mềm;
− Nghiên cứu các phương pháp tiếp cận được dùng trong (1)"
Pressman [1995]: “CNHPM là bộ môn tích hợp cả quy trình, các phương pháp,
các công cụ để phát triển phần mềm máy tính”
Sommerville [1995]: “CNHPM là lĩnh vực liên quan đến lý thuyết, phương pháp
và công cụ dùng cho phát triển phần mềm”
K. Kawamura [1995]: “CNHPM là lĩnh vực học "vấn về các kỹ thuật, phương
pháp luận công nghệ học (lý luận và kỹ thuật được hiện thực hoá trên những
nguyên tắc, nguyên lý nào đó) trong toàn bộ quy trình phát triển phần mềm nhằm
nâng cao cả chất và lượng của sản xuất phần mềm”
Bộ môn công nghệ phần mềm, khoa Công nghệ thông tin, trường Đại học Bách
Khoa Hà Nội: “
Công nghệ học phần mềm là lĩnh vực khoa học về các phương pháp luận, kỹ
thuật và công cụ tích hợp trong quy trình sản xuất và vận hành phần mềm nhằm
tạo ra phần mềm với những chất lượng mong muốn”.
Về công nghệ học phần mềm, các bạn có thể tham khảo giáo trình về tài liệu
công nghệ học phần mềm của bộ môn Công nghệ phần mềm, khoa Công nghệ
thông tin, trường Đại học Bách Khoa Hà Nội, hoặc các tài liệu tham khảo khác.
1
Công nghệ học phần mềm
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 15/99
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
1.5. QUY TRÌNH PHẦN MỀM RUP (Rational Unified Process)
1.5.1. Hiệu suất phát triển phần mềm
Năm 1990, Kitchenham đã đề ra công thức toán học ước lượng đánh giá các
chi phí và hiệu năng phát triển phần mềm. Công thức này đã được chấp nhận
rộng rãi và trong các báo cáo điều tra của IBM về xu hướng của nền kinh tế phần
mềm hiện đại trong những năm gần đây [11] cũng xác nhận điều đó. Công thức
đó là:
Trong đó:
Project Performance là nỗ lực hay thời gian phát triển phần mềm, cần phải hạn
chế càng thấp càng tốt
Complexity là độ phức tạp của dự án, càng phức tạp thì giá trị càng lớn
Process là quy trình phần mềm, giá trị được chọn trong khoảng từ 0 đến 1, là độ
thành thục trong phát triển phần mềm. Nếu quy trình càng tốt thì giá trị này càng
nhỏ, giá trị này bằng 0 là tốt nhất và bằng 1 là tồi nhất (có nghĩa là luôn thay đổi
cùng với sự phức tạp của dự án).
Team là kỹ năng kinh nghiệm và kỳ vọng của đội dự án
Tools là các công cụ hỗ trợ tự động các quá trình trong phát triển phần mềm
Vấn đề quan trọng là làm sao làm giảm nỗ lực và thời gian phát triển phần
mềm. Trong công thức toán học trên ta thấy nó được cấu thành từ bốn yếu tố là
độ phức tạp của dự án, về quy trình xử lý áp dụng trong dự án, về kỹ năng kinh
nghiệm và hợp tác các thành viên và cuối cùng là các công cụ (case tools) sử
dụng trong một số quá trình tự động trong dự án.
Quy trình RUP tập trung vào các làm giảm các yếu tố cấu thành nên chi phí
thời gian và nỗ lực phát triển phần mềm của công thức ước lượng trên [11]. Đồng
thời, quy trình RUP còn kế thừa có chọn lọc nhiều quy trình phần mềm trước đó
và có sự hỗ trợ mạnh mẽ của các công cụ đặc biệt là các công cụ của Rational.
Trong phần này, tôi xin trình bày các tư tưởng chính hình thành nên bản chất của
quy trình phát triển phần mềm RUP. Quy trình RUP, đó là:
Hướng sử dụng (Use-Case Driven).
Lấy kiến trúc làm trung tâm (Architecture Centric).
Lặp và gia tăng từng bước (Iterative and Incremental).
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 16/99
)()()( ePerformancProject
**
)(Pr
ToolsTeamComplexity
ocess
=
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
1.5.2. Quy trình công nghệ phần mềm RUP hướng sử dụng (Use-
Case Driven)
Mục tiêu của quy trình công nghệ phần mềm RUP là thực hiện ra các sản
phẩm đáp ứng được nhu cầu tối đa của khách hàng . Hiệu năng của được tính
bằng giá thành, chất lượng, và thời gian thực hiện sản phẩm. Mọi hoạt động trong
dự án làm ra sản phẩm là thỏa mãn được yêu cầu khách hàng.
Tuy nhiên yêu cầu của khách hàng rất đa rạng, phong phú, có thể phân ra làm
hai loại yêu cầu là:
Các yêu cầu chức năng:Thể hiện các chức năng sẽ được cung cấp của hệ thống,
và xác định rõ ràng cho mỗi yêu cầu là cung cấp các chức năng cụ thể cho mỗi
người sử dụng (for each user?). Yêu cầu này thực sự quan trọng, chúng là mục
tiêu của các phân tích thiết kế và cài đặt sau này (drive the development process).
Các yêu cầu này dễ dàng được mô hình trực quan bằng công cụ UML
Yêu cầu phi chức năng: Là các yêu cầu hỗ trợ cho hệ thống tuy nhiên rất quan
trọng. Nó không phải là chức năng sử dụng được của hệ thống mà chỉ là các ràng
buộc khác yêu cầu hệ thống phải thỏa mãn. Các yêu cầu này không được thể
hiện trên các mô hình và không phải chức năng gọi là yêu cầu phi chức năng.
Quy trình công nghệ phần mềm RUP bắt đầu bằng việc lưu giữ yêu cầu của
khách hàng, bằng các mô hình Use-Case. Sau đó mọi hoạt động phân tích, thiết
kế cài đặt là đáp ứng các Use-Case. Cuối cùng là việc kiểm thử là để đáp ứng
thẩm định các yêu cầu của khách hàng đã được đáp ứng. Trong các mô hình đó
thì mô hình cài đặt (Implementation Model) là hiện thực nhất, mô hình yêu cầu
Use-Case là trừu tượng nhất, gần với ngôn ngữ tự nhiên nhất, diễn tả ngôn ngữ
của khách hàng. Tuy nhiên có một điều là trong quy trình RUP, mọi hoạt động
phân tích thiết kế, kiểm thử, xem xét (review) và chấp nhận phê chuẩn (approve)
đếu tiến hành dựa trên mô hình quản lý yêu cầu khách hàng (use-case model)
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 17/99
Trace to
Trace to Trace to
Trace to
Trace to
Use-Case
Mode
Analyis
Mode
Design
Mode
Deployment
Mode
Implementation
Mode
Text
Mode
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
Hình 2-1 Quy trình RUP hướng sử dụng (Use-Case Driven)
Quy trình RUP hướng sử dụng (Use-Case Driven) có nghĩa là một quy trình
phát triển là một luồng nối tiếp nhau mà khởi đầu của luồng đó là các chức năng
của hệ thống
1.5.3. Quy trình công nghệ phần mềm RUP lấy kiến trúc làm trung
tâm (Architecture Centric)
1.5.3.1. Mô hình và kiến trúc phần mềm
Trong quy trình phần mềm RUP một trong những công việc quan trọng là sử
dụng các mô hình với các ký pháp để mô tả hệ thống, các vấn đề và cách thức
giải quết vấn đề dựa trên các mô hình ấy. Các mô hình giúp mô tả hệ thống vốn
phức tạp trong thực tế theo một cách đơn giản dễ hiểu và một điều quan trọng là
rất trực quan.
Tuy nhiên, không thể có một mô hình nào mà lại bao quát được hết tất cả mọi
vấn đề, mọi góc nhìn, mọi giải pháp phân tích thiết kế cho một hệ thống. Cũng
giống như các hình chiếu trong các bản vẽ kỹ thuật, chúng ta cần phải rất nhiều
hình chiếu trên các góc độ khác nhau, thậm chí cắt lắt theo các mặt khác nhau để
tìm hiểu hết được chi tiết phức tạp của vật thể chi tiết máy. Phần mềm cũng là một
sản phẩm phức tạp, có kiến trúc, cấu tạo bởi nhiều thành phần khác nhau, và mỗi
thành phần cũng có kiến trúc khác nhau. Do vậy, để phân tích thiết kế phần mềm
một cách chi tiết và hoàn chỉnh chúng ta cần nhiều mô hình và mỗi một mô hình
có thể coi như là một mặt cắt của hệ thống phần mềm phức tạp. Mỗi mô hình thể
hiện sự quan tâm một khía cạnh khác nhau đối với hệ thống. Do vậy, trong tài liệu
dự án của một hệ thống phần mềm theo quy trình RUP có rất nhiều các mô hình,
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 18/99
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
và bản thân các mô hình rất phức tạp. Tuy nhiên, phải đảm bảo làm sao cho các
mô hình ấy thực sự nhất quán với nhau, mô tả vừa đủ không thừa không thiếu để
có thể hiểu được hệ thống, đó chính là kiến trúc của hệ thống “Architecture is
what remains when you cannot take away any more things and still understand the
system and explain how it works.”[2].
1.5.3.2. Kiến trúc phần mềm là quan trọng
Trong quá trình làm phần mềm, các nhà thiết kế có cảm giác là kiến trúc phần
mềm là yếu tố nào đó rất quan trọng, tuy nhiên, việc diễn tả khái niệm đó ra lại
không phải lúc nào cũng rõ ràng và rành mạch được, bởi vì bản thân kiến trúc
phần mềm là một khái niệm mờ (fuzzy) và rất trừu tượng (abstract). Trong các dự
án nhỏ thì kiến trúc phần mềm nhiều khi không thể hiện rõ ràng thành các mô hình
và văn bản mà có thể coi như là thỏa thuận hoặc hiểu ngầm giữa các nhà phát
triển và chỉ họ mới hiểu. Tuy nhiên, với các hệ thống lớn, yêu cầu phức tạp, nhiều
thay đổi mà không có các tài liệu các mô hình mô tả hệ thống khiến các nhà phát
triển không thể nào bao quát theo dõi được hết mọi vấn đề, không quản lý và theo
kịp được sự thay đổi dẫn tới không khắc phục được rủi ro của dự án, và dễ dàng
dẫn tới đổ vỡ dự án
1.5.3.3. Yêu cầu của kiến trúc phần mềm
Một kiến trúc phần mềm tốt phải mô tả tốt được các yêu cầu sau:
Mô tả được mục đích của hệ thống
Diễn tả các kiến trúc hệ thống càng trực quan càng tốt, mô tả các ngữ nghĩa của
hệ thống, tránh các nhập nhằng gây hiểu lầm
Các xử lý để mô tả hệ thống (architecture process), mô tả cách thức tạo và kiếm
tra các mô hình, các kiến trúc, các tài liệu cho dự án, chỉ ra vai trò (who?) cần thiết
trong dự án để hoàn thành tài liệu đó
1.5.3.4. RUP là quy trình lấy kiến trúc phần mềm làm trung tâm
Tư tưởng lấy kiến trúc làm trung tâm của quy trình phần mềm RUP là xác
định mỗi thành phần tham gia vào dự án phải được tổ chức trên các mô hình và
thể hiện tốt các mối liên quan vai trò trách nhiệm của chúng trong tổng thể dự án
theo các kiến trúc đã thống nhất trong dự án. Quy trình RUP xác định vai trò và vị
trí của kiến trúc phần mềm như sau:
Mô tả tổ chức của hệ thống phần mềm
Tổ chức kiến trúc các thành phần và giao diện của chúng trong hệ thống phần
mềm kết hợp mô tả hành vi (behaviour) và kết hợp giữa các thành phần cấu thành
hệ thống
Sự kết hợp các thành phần nhỏ và hệ thống nhỏ tạo thành một hệ thống lớn
Mô hình kiến trúc quyết định việc tổ chức kết hợp giao diện của các thành phần
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 19/99
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
Kiến trúc phần mềm trong quy trình RUP không chỉ quan tâm đến cấu trúc và
các hành vi của các thành phần mà nó còn quan tâm đến các khía cạnh khác rất
quan trọng của hệ thống là các yêu cầu mà rất khó có thể thể hiện trên các mô
hình, đó là: tính sử dụng, tính chức năng, khả năng thực thi, co giãn hệ thống (khả
năng mở rộng và thu hẹp), tái sử dụng., tính dễ hiểu, tính kinh tế của dự án, các
ràng buộc kỹ thuật, và các thỏa hiệp, vv.
Quy trình RUP thể hiện các kiến trúc phần mềm, thông qua các vai trò
(Roles), mô hình (Models) và khung nhìn (View), vv. tạo thành các mô hình phức
tạp đa chiều (multidimentional) của hệ thống phần mềm Trong mỗi một khung nhìn
đảm bảo các yêu tố sau
Mục tiêu chính của mô hình, là lĩnh vực quan tâm quan trọng nhất mà mô hình mà
nó thể hiện
Các thành trong mô hình cùng với các mối quan hệ của chúng
Cấu trúc tổ chức của các thành phần
Các xử lý áp dụng đối với mô hình
Trong quy trình RUP thể hiện bằng kiến trúc rất nổi tiếng là mô hình kiến trúc
4+1
Hình 2-2 Khung nhìn kiến trúc 4+1
Khung nhìn Use-Case
Đóng vai trò quan trọng trung tâm trong kiến trúc phần mềm, nó bao gồm một
số kịch bản của các Use-Case quan trọng
Khung nhìn Logic
Khung nhìn logic của kiến trúc mô tả các yêu cầu về chức năng của hệ
thống-chức năng cung cấp cho người sử dụng
Khung nhìn cài đặt (Implementation View)
Mô tả tổ chức của các thành phần tĩnh của dự án tổ chức mã nguồn, file, các
thành phần
Khung nhìn xử lý
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 20/99
Deployment View
Implementation
View
Logical View
Implementation
View
Use-Case
View
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
Mô tả hệ thống trong quá trình thực hiện, các tác vụ, các luồng, phân tuyến và
các tương tác của chúng, sự phân bổ các đối tượng cho các xử lý, vv
Khung nhìn triển khai
Mô tả các thành phần của hệ thống trên các nền phần cứng phần mềm của
hệ thống
Có thể nói kiến trúc của hệ thống phần mềm chính là các lát cắt xuyên xuốt
thông qua các mô hình trong đó tập trung vào các thành phần quan trọng nhất của
hệ thống
1.5.4. Quy trình công nghệ phần mềm RUP lặp và tăng dần từng
bước (Iterative and Incremental)
Để tạo nên một quy trình công nghệ phần mềm có hiệu quả, trong quy trình
cần phải nhận biết được các mục tiêu qua các giai đoạn, các yêu cầu và các
công việc cần thiết tại từng thời điểm cụ thể trong dự án. Các yêu cầu đó là:
Xác định và làm hạn chế rủi ro
Chuyển dần các yêu cầu của các Use-Case sang các kiến trúc cụ thể của hệ
thống ngày càng mịn dần
Đưa ra các đánh giá sơ bộ về rủi ro, giá thành, nỗ lực, kế hoạch, và chất lượng
phần mềm
Đưa ra các luận chứng kinh tế cho dự án về tính kinh tế của dự án
Lý do chính để phát triển một phần mềm theo cách tiếp cận lặp và gia tăng là
một điều đơn giản mà rất khó khăn: tạo nên một phần mềm tốt hơn (better
software). Việc lặp và gia tăng thông qua các pha, trong pha có các bước lặp nhỏ
(Iterative) và có các mốc rõ ràng thông qua các bước lặp đó. Trong mỗi bước lặp
toàn bộ dự án được tiến hành xem xét qua tất cả các bước (yêu cầu, phân tích ,
thiết kế, …). Đồng thời thông qua các bước lặp để kiểm soát sự phát triển
Ta sẽ xem xét cụ thể việc lặp và gia tăng từng bước của quy trình RUP như
sau
1.5.4.1. Hạn chế rủi ro
Rủi ro là một vấn đề lớn trong trong phát triển phần mềm, là nguyên nhân của
sự đổ vỡ trong phát triển phần mềm. Trong bất kỳ một quy trình phần mềm nào
cũng cần thiết phải quan tâm đến rủi ro một cách thích đáng.
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 21/99
Iterative and
Incremental
Iter1
Iter2
Iter n-1 Iter n
Time
Waterfall
Risk
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
Hình 2-3 Quy trình RUP hạn chế và khắc phục rủi ro
Trong quy trình thác nước được tiến hành theo một chiều không có sự xem
xét lại thì việc tiến hành dự án ban đầu có vẻ rất suôn xẻ nhưng rủi ro thực sự và
nặng nề xuất hiện khi mà kiểm thử và tích hợp hệ thống. Các rủi ro xuất hiện ở
giai đoạn này rất nhiều có thể dẫn đến đổ vỡ dự án. Để hạn chế rủi ro, trong quy
trình phần mềm tiếp cận lặp và gia tăng sẽ tiến hành từ rất sớm, các rủi ro trọng
yếu được lưu ý ngay từ ban đầu,và có kế hoạch ngăn chặn và có kế hoạch khắc
phục. Hơn thế nữa, thông qua quá trình lặp và gia tăng để tăng cường sự học hỏi
và tiếp cận của đội dự án
Trong quá trình làm dự án phần mềm, có một cách tiếp cận mà khá quan
trọng đó là tiếp cận dự án theo hướng khắc phục rủi ro của dự án (Risk Driven
Approach). Cách tiếp cận lặp và gia tăng chính là một trong những cách tiếp cận
hướng khắc phục rủi ro. Trong quá trình làm dự án, liên tục phải phát hiện, phân
loại và đề ra các chiến lược nhằm hạn chế rủi ro, và quá trình này được lặp đi lặp
lại
1.5.4.2. Tạo một kiến trúc phần mềm vững chắc
Kiến trúc phần mềm được tiến hành xây dựng từ rất sớm, bắt đầu là các
thành phần quan trọng nhất có tính chất trọng yếu của dự án, thỏa mãn được các
yêu cầu quan trọng nhất (chính là bộ khung của dự án). Giải quết các yêu cầu đó
thông qua quá trình xem xét khắc phục rủi ro có thể xảy ra với các yêu cầu quan
trọng nhất, đó cũng chính là cá rủi ro trọng yếu nhất, một trong những cách tiếp
cận trung tâm của quá trình phát triển phần mềm theo cách tiếp cận lặp và gia
tăng. Hơn nữa việc xem xét vấn đề một cách lặp đi lặp lại nhằm tăng cường khả
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 22/99
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
năng giải quết vấn đề, hiểu biết vấn đề và đó là một trong những cách tiếp cận để
học hỏi của con người trước các vấn đề mới.
Việc xây dựng kiến trúc trong quy trình phần mềm lặp bắt đầu từ các thành
phần quan trọng nhất, xây dựng dần dần, có sự lặp lại. Kiến trúc phần mềm của
hệ thống được xem xét lặp đi lặp lại do đó làm giảm được các rủi ro.
1.5.4.3. Đáp ứng kịp thời việc thay đổi yêu cầu
Hoạt động của các bản mẫu phần mềm ngay cả khi nó chưa hoàn thiện, chưa
hiệu quả, chưa chính xác cũng giúp các khách hàng có những hình dung đúng
đắn, hiểu hệ thống hơn và những điều chỉnh thay đổi trong thời gian làm dự án,
ngay từ rất sớm. Theo đó khách hàng có các phản hồi lại đội dự án , và cần thiết
phải có các điều chỉnh kịp thời từ phía đội dự án. Đó chính là việc đáp ứng việc
thay đổi yêu cầu của quy trình RUP. Vì việc thay đổi yêu cầu là một quá trình tất
yếu trong các dự án phần mềm, các yêu cầu ngay từ ban đầu không bao giờ đầy
đủ và chính xác, cần thiết phải có quá trình xem xét, kiểm duyệt yêu cầu một cách
kịp thời
1.5.4.4. Liên tục tích hợp hệ thống
Liên tục xây dựng và tích hợp hệ thống có nghĩa là đội dự án liên tục xây
dựng các thành phần vào trong dự án trong suốt quá trình thực hiện dự án.
1.6. RUP TẬP HỢP CÁC KINH NGHIỆM TỐT TRONG PHÁT TRIỂN
PHẦN MỀM
Quy trình công nghệ phần mềm RUP tập hợp các kinh nghiệm tốt trong phát
triển phần mềm, đặc biệt thích hợp với các quy trình công nghệ phần mềm phát
triển theo hướng đối tượng, của các tác giả nổi tiếng có nhiêu năm kinh nghiệm
phát triển phần mềm, đã đưa vào như là một trong những tư tưởng chủ yếu của
quy trình công nghệ phần mềm RUP. Các kinh nghiệm tốt trong phát triển phần
mềm của quy trình RUP đó là:
Phát triển phần mềm có sự lặp lại (Develop Iteratively)
Quản lý yêu cầu khách hàng (Manage Requirements)
Sử dụng kiến trúc thành phần (Use Component Architecture)
Mô hình hoá trực quan các phân tích thiết kế (Model Visually- UML)
Liên tục thẩm định chất lượng phần mềm (Continously Verify Quality)
Quản lý thay đổi (Manage Change)
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 23/99
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
1.6.1. Phát triển phần mềm có sự lặp lại (Iteratively)
Hình 2-4 Phát triển lặp và tăng dần từng bước
Kế thừa từ mô hình chế thử và mô hình xoắn ốc. Mỗi lần phát triển trải qua
các hoạt động có tính chất lặp lại từ khảo sát , đánh giá, phân tích, thiết kế, kiểm
thử đánh giá rút kinh nghiệm cho lần phát triển sau, tuy nhiên ở mức độ phát triển
cao hơn. Nguyên nhân của việc phát triển lặp lại là việc tiếp cận vấn đề cần phải
trải qua một thời gian, có sự làm đi làm lại mới phát triển đúng. Không thể ngay từ
lần đầu tiên đã hoàn thành ngay mọi công việc. Mặt khác việc phát triển lặp như
trên làm phân bố lại các công việc tương đối dàn trải theo thời gian trong phát
triển dự án phần mềm Tác dụng của phát triển lặp:
Giảm rủi ro, về số lượng cũng như mức độ: vì nhiều rủi ro chỉ xuất hiện khi mà
đến một giai đoạn và thời kỳ nào đó trong làm dự án, cần phải nhanh nhất nắm
được rủi ro và có các biện pháp khắc phục càng sớm càng tốt
Dễ quản lý yêu cầu: do yêu cầu của khách hàng có thể thay đổi thường xuyên, do
hoàn cảnh thay đổi, và các tác động khác. Nói chung là trong phát triển dự án phải
chấp nhận thay đổi và quản lý thay đổi
Dễ dàng phát triển và cải tiến sản phẩm trong thời gian phát triển
Tổ chức làm dự án có thể điều kiện tiếp cận và hiểu dự án
Tăng khả năng tái sử dụng: trong quá trình phát triển, xem xét vấn đề một cách
lặp đi lặp lại, giúp cho các nhà phân tích có thể nhận ra các thành phần chung, có
thể tái sử dụng, mà ngay lần tiếp cận đầu tiên không dễ gì nhận ra
1.6.2. Quản lý tốt các yêu cầu (Management Requirements)
Quản lý yêu cầu là công việc phát hiện ra các yêu cầu, phân tích yêu cầu, lập
tài liệu, theo dõi và quản lý sự thay đổi của các yêu cầu. Định nghĩa yêu cầu của
một hệ thống phần mềm là khả năng hay năng lực mà hệ thống phải đáp ứng và
thoả mãn.
Trong thực tế yêu cầu của phần mềm đôi khi không được nhà phát triển dự án
hiểu đúng và đó cũng là một loại rủi ro lớn của dự án phần mêm
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 24/99
Đồ án tốt nghiệp Quy trình RUP và ứng dụng
Các yêu cầu không rõ ràng, từ nhiều nguồn gốc khác nhau
Các yêu cầu đôi khi không dễ dàng thể hiện bằng từ ngữ
Có nhiều loại yêu cầu cần có sự phân loại thích hợp
Các yêu cầu chồng chéo lên nhau, đôi khi mâu thuẫn nhau,cần có sự thoả hiệp
các yêu cầu
Yêu cầu thay đổi
Để quản lý yêu cầu Rational Unified Process đưa ra công cụ Rational
RequirePro để quản lý yêu cầu và công cụ UML để mô hình hoá yêu cầu. Và việc
phân tích thiết kế sử dụng mô hình hoá là một trong các quy tắc phát triển của
Rational. Và họ đưa ra một cách tiếp cận cho vấn đề đó là cách tiếp cận hướng
theo yêu cầu của người sử dụng (Use – Case Driven Approach), điều đó có nghĩa
là các Use-Case đã được định nghĩa và phát triển sẽ là các nền tảng cho toàn bộ
các hoạt động của dự án về sau, dựa trên sự phát triển các hệ thống Use-Case
đó
1.6.3. Sử dụng các kiến trúc thành phần (Use Component
Architecture)
Hình 2-5 Kiến trúc dựa thành phần
Là hoạt động của phân tích và thiết kế. Các thành phần kiến trúc của hệ thống
phần mềm là một kiến trúc dựa trên các thành phần có thể thay thế, khiến cho
phần mềm có khả năng linh hoạt, dễ thay đổi, tiết kiệm công sức trong phát triển
hệ thống dựa trên các thành phần sẵn có và giúp cho dễ dàng quản lý các hệ
thống phức tạp nhiều thành phần. Rational Unified Process hỗ trợ rất mạnh cho
phát triển phần mềm dựa thành phần
Bùi Doãn Ngọc-CNPM K44-Đại học Bách Khoa Hà Nội 25/99