Tải bản đầy đủ (.pdf) (79 trang)

Xây dựng công cụ xác định giá trị phần mềm

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.68 MB, 79 trang )

MỤC LỤC
LỜI CẢM ƠN .................................................... Error! Bookmark not defined.
MỤC LỤC ..........................................................................................................1
MỞ ĐẦU ............................................................................................................4
1. Tính cấp thiết của đề tài...............................................................................4
2. Mục đích và phương pháp nghiên cứu của đồ án..........................................5
3. Bố cục của đồ án..........................................................................................6
Chương 1: TỔNG HỢP CÁC KIẾN THỨC LIÊN QUAN ..................................7
1.1 Giới thiệu về UML ....................................................................................7
1.1.1 Lịch sử ra đời......................................................................................7
1.1.2 UML – Ngôn ngữ mô hình hoá hướng đối tượng ................................8
1.1.3 Các biểu đồ trong UML ......................................................................8
1.1.4 Biểu đồ Use case...............................................................................10
1.1.4.1 Ý nghĩa .....................................................................................10
1.1.4.2 Tập ký hiệu UML cho biểu đồ use case......................................11
1.2 Quy trình RUP.........................................................................................12
1.2.1 Giới thiệu..........................................................................................12
1.2.2 Phát triển lặp.....................................................................................13
1.2.3 Vòng đời...........................................................................................15
1.2.4 Giai đoạn Inception...........................................................................15
1.2.5 Giai đoạn Elaboration .......................................................................17
1.2.6 Giai đoạn Construction .....................................................................17
1.2.7 Giai đoạn Transition .........................................................................17
1.3 Tổng quan về .Net Framework.................................................................18
1.3.1 Cấu trúc .Net Framework..................................................................22
1.3.2 Hệ điều hành.....................................................................................22
1.3.3 Cung cấp các chức năng xây dựng ứng dụng.....................................22
1.3.4 Common Language Runtime.............................................................23
1.3.5 Bộ thư viện các lớp đối tượng ...........................................................23
1.4 Giới thiệu ngôn ngữ lập trình Visual Basic .NET.....................................24
1.4.1 Các kiểu dữ liệu ................................................................................24


1


1.4.2 Khai báo và khởi tạo biến..................................................................25
1.4.3 Cấu trúc điều khiển ...........................................................................26
1.4.3.1 Cấu trúc chọn .............................................................................26
1.4.3.2 Cấu trúc vòng lặp .......................................................................27
1.4.3.3 Xử lý lỗi.....................................................................................28
Chương 2: PHƯƠNG PHÁP XÁC ĐỊNH GIÁ TRỊ PHẦN MỀM.....................29
2.1 LÀM RÕ MỘT SỐ VẤN ĐỀ LIÊN QUAN TỚI HƯỚNG DẪN.............29
2.1.1 Mức lương tối thiểu ..........................................................................29
2.1.2 Hệ số lương.......................................................................................31
2.1.3 Cách tính mức lương lao động bình quân H ......................................31
2.1.4 Chuyển đổi chức năng sang trường hợp sử dụng ...............................32
Chương 3: XÂY DỰNG CHƯƠNG TRÌNH XÁC ĐỊNH GIÁ TRỊ PHẦN MỀM
..........................................................................................................................35
3.1 Xác định yêu cầu .....................................................................................35
3.1.1 Xác định yêu cầu tính toán của chương trình.....................................35
3.1.2 Yêu cầu của chương trình .................................................................35
3.1.3 Yêu cầu về hệ thống..........................................................................35
3.1.4 Yêu cầu về người sử dụng.................................................................35
3.2 Xây dựng giao diện chương trình.............................................................36
3.2.1 Giao diện các chức năng ...................................................................36
3.2.2 Chức năng mở rộng của chương trình: ..............................................37
3.2.3 Một số hỉnh ảnh về chương trình:......................................................37
3.2.3.1 Bảng tính toán điểm các tác nhân: ..............................................37
3.2.3.2 Bảng tính toán điểm các trường hợp sử dụng..............................38
3.2.3.3 Bảng tính toán hệ số phức tạp kỹ thuật công nghệ ......................39
3.2.3.4 Bảng tính toán hệ số phức tạp về môi trường và nhóm làm việc .40
3.2.3.5 Bảng tính toán mức lương lao động bình quân ...........................41

3.2.3.6 Bảng tính toán giá trị phần mềm.................................................41
3.2.3.7 Chức năng lưu kết quả tính toán .................................................42
3.2.3.8 Danh sách các phần mềm đã lưu kết quả tính toán......................42
3.2.3.9 Lựa chọn kết quả cần in .............................................................43
2


3.2.3.10 In kết quả trang 1 .....................................................................44
3.2.3.11 In kết quả trang 2 .....................................................................45
3.2.3.12 In kết quả trang 3 .....................................................................46
3.2.3.13 In kết quả trang 4 .....................................................................47
KẾT LUẬN.......................................................................................................48
TÀI LIỆU THAM KHẢO .................................................................................49
PHỤ LỤC..........................................................................................................50
4.1 HƯỚNG DẪN XÁC ĐỊNH GIÁ TRỊ PHẦN MỀM ................................50

3


MỞ ĐẦU
1. Tính cấp thiết của đề tài
Không phải đến bây giờ, vấn đề xác định giá trị phần mềm mới trở thành
vấn đề “nóng”, thu hút sự quan tâm của nhiều ngành liên quan. Thực tế là từ
nhiều năm nay, đã có nhiều cuộc họp, nhiều phương án định giá được đưa ra áp
dụng thử, song vẫn chưa có một phương pháp nào thực sự thuyết phục để có thể
áp dụng thống nhất trong cả nước. Chính điều này đã ảnh hưởng không nhỏ đến
tốc độ xây dựng, phê duyệt cũng như giải ngân cho các dự án đầu tư ứng dụng
CNTT.
Tại Việt Nam đã có rất nhiều các dự án nhằm đẩy mạnh ứng dụng công
nghệ thông tin ở các địa phương, Bộ, ngành, đơn vị đã và đang được triển khai.

Hiệu quả của các dự án cũng phần nào cũng đã thấy. Tuy nhiên nó cũng bộc lộ
nhiều vấn đề đòi hỏi phải có sự điều chỉnh, sao cho việc đầu tư có hiệu quả cao
nhất. Xác định giá trị phần mềm là một bài toán khó đối với cả các cơ quan quản
lý, thẩm định và doanh nghiệp. Nhưng công việc này thì cần phải tiến hành càng
sớm càng tốt.
Nếu không có được định mức đơn giá phần mềm thì sẽ có 2 xu hướng xảy
ra: Thứ nhất là phần đông các đơn vị không dám đầu tư, bởi không có căn cứ
pháp lý, do đó dễ dẫn đến sai phạm cũng như không có sự bảo hộ về mặt pháp lý.
Tình trạng này sẽ dẫn đến làm cản trở sự phát triển, ảnh hưởng đến kế hoạch thúc
đẩy ứng dụng CNTT của Đảng và Nhà nước đã đề ra. Thứ hai, nếu cứ cố làm thì
sẽ dẫn đến tình trạng dễ xảy ra thất thoát, lãng phí… và cả 2 xu hướng này đều
không ổn, cũng như không đáp ứng được nhu cầu của sự phát triển chung của
nền kinh tế - xã hội. Do vậy việc ban hành quy định về định mức đơn giá phần
mềm là rất cần thiết.
Bộ Thông tin và Truyền thông vừa ban hành công văn về việc “Hướng dẫn
xác định giá trị phần mềm”, giải tỏa một vướng mắc trong quá trình triển khai
các dự án CNTT sử dụng vốn ngân sách. Theo hướng dẫn ban hành kèm theo
công văn số 3364/BTTTT-ƯDCNTT ngày 17/10/2008 vừa qua, hướng dẫn này
dùng để xác định giá trị các phần mềm theo mô hình đối tượng được phát triển
4


mới hoặc nâng cấp, chỉnh sửa sử dụng nguồn vốn ngân sách nhà nước phục vụ
cho ứng dụng CNTT trong hoạt động của cơ quan nhà nước. Giá trị phần mềm
phải được đo, đếm, tính toán theo trình tự phù hợp với quy trình công nghệ, trình
tự phát triển hoặc nâng cấp, chỉnh sửa phần mềm. Giá trị phần mềm được xác
định là cơ sở cho việc lập chi phí ứng dụng CNTT trong hoạt động của cơ quan
nhà nước, lập bảng khối lượng mời thầu khi tổ chức lựa chọn nhà thầu, quản lý
chi phí trong trường hợp chỉ định thầu hoặc tự thực hiện. Đối với những xử lý
phức của phần mềm nhưng không thể xác định được khối lượng giờ công cụ thể,

theo Hướng dẫn có thể tạm xác định và ghi chú là “khối lượng tạm tính”. Khối
lượng tạm tính này sẽ được xác định lại khi quyết toán hoặc thực hiện theo quy
định vụ thể tại hợp đồng giao nhận thầu phát triển, hoặc nâng cấp, chỉnh sửa
phần mềm. Đối với những phần mềm có đặc thù mà hướng dẫn xác định chi phí
giờ công chưa phù hợp thì cá tổ chức, cá nhân có thể tự đưa phương pháp xác
định giờ công trên cơ sở phù hợp với hướng dẫn này và phải có thuyết minh cụ
thể cách tính. Trường hợp sử dụng các tài liệu, hướng dẫn của nước ngoài để
thực hiện việc xác định chi phí giờ công cần nghiên cứu, tham khảo hướng dẫn
này để đảm bảo nguyên tắc thống nhất về quản lý chi phí phát triển hoặc nâng
cấp, chỉnh sửa phần mềm phục vụ ứng dụng công nghệ thông tin trong hoạt động
của cơ quan nhà nước. Công văn số 3364/BTTTT-ƯDCNTT nêu rõ, các cơ quan
liên lạc trực tiếp với Bộ Thông tin và Truyền thông để có hướng dẫn nếu có
vướng mắc trong quá trình thực hiện.
Vì những lý do trên đây, tôi đã lựa chọn đề tài “Xây dựng công cụ xác
định giá trị phần mềm”.
Tôi xin cam đoan nội dung của đồ án không phải là sao chép nội dung cơ
bản từ các đồ án khác và sản phẩm của đồ án là do chính bản thân mình nghiên
cứu và xây dựng nên.

2. Mục đích và phương pháp nghiên cứu của đồ án
Dựa trên Hướng dẫn xác định giá trị phần mềm do Bộ Thông tin và Truyền
thông vừa ban hành, phương pháp nghiên cứu của đồ án là tìm hiểu và làm rõ
hơn về cách định giá phần mềm đã được nêu ra trong hướng dẫn. Với mục tiêu
của đồ án đề ra là:
5


+ Tìm hiểu và làm rõ được cách tính toán của các công thức nêu ra trong hướng
dẫn để cho việc hiểu được dễ dàng hơn.
+ Xây dựng chương trình giúp hỗ trợ việc tính toán trong quá trình xác định giá

trị phần mềm hiệu quả hơn.

3. Bố cục của đồ án
Đồ án gồm phần mở đầu, 3 chương nội dung, phần kết luận và tài liệu tham
khảo được cấu trúc như sau:
Chương 1: Tổng hợp các kiến thức liên quan về ngôn ngữ mô hình UML,
Quy trình RUP, một số kiến thức về .NET Framework và ngôn ngữ lập trình
Visual Basic .NET.
Chương 2: Giải thích một số vấn đề giúp làm rõ ràng hơn về việc tính toán
trong “Hướng dẫn xác định giá trị phần mềm” của Bộ Thông tin và Truyền
thông.
Chương 3: Xây dựng chương trình tính toán, đầu vào là các dữ liệu cần
tính toán và đầu ra là kết quả giá trị của phần mềm.

6


Chương 1: TỔNG HỢP CÁC KIẾN THỨC LIÊN QUAN
Trong “Hướng dẫn xác định giá trị phần mềm” do Bộ Thông tin và Truyền
thông ban hành, cách xác định giá trị các phần mềm là theo mô hình hướng đối
tượng. Xác định khối lượng công việc cụ thể, phương thức tính toán, kiểm tra
trên cơ sở nỗ lực giờ công để thực hiện các trường hợp sử dụng (use- case) quy
định trong Biểu đồ use-case của ngôn ngữ UML. Đồ án xây dựng chương trình
dựa trên ngôn ngữ Visual Basic .NET.

1.1 Giới thiệu về UML
1.1.1 Lịch sử ra đời
Việc áp dụng rộng rãi phương pháp hướng đối tượng đã đặt ra yêu cầu cần
phải xây dựng một phương pháp mô hình hóa để có thể sử dụng như một chuẩn
chung cho những người phát triển phần mềm hướng đối tượng trên khắp thế giới.

Trong khi các ngôn ngữ hướng đối tượng ra đời khá sớm, ví dụ như Simula-67
(năm 1967), Smalltalk (đầu những năm 1980), C++, CLOS (giữa những năm
1980)…thì những phương pháp luận cho phát triển hướng đối tượng lại ra đời
khá muộn. Cuối những năm 80, đầu những năm 1990, một loạt các phương pháp
luận và ngôn ngữ mô hình hóa hướng đối tượng mới ra đời, như Booch của
Grady Booch, OMT của James Rambaugh, OOSE của Ivar Jacobson, hay OOA
and OOD của Coad và Yordon.
Mỗi phương pháp luận và ngôn ngữ trên đều có hệ thống ký hiệu riêng,
phương pháp xử lý riêng và công cụ hỗ trợ riêng. Chính điều này đã thúc đẩy
những người tiên phong trong lĩnh vực mô hình hoá hướng đối tượng ngồi lại
cùng nhau để tích hợp những điểm mạnh của mỗi phương pháp và đưa ra một mô
hình thống nhất chung. Nỗ lực thống nhất đầu tiên bắt đầu khi Rumbaugh gia
nhập nhóm nghiên cứu của Booch tại tập đoàn Rational năm 1994 và sau đó
Jacobson cũng gia nhập nhóm này vào năm 1995. James Rumbaugh, Grady
Booch và Ivar Jacobson đã cùng cố gắng xây dựng được một Ngôn Ngữ Mô
Hình Hoá Thống Nhất và đặt tên là UML (Unifield Modeling Language). UML
đầu tiên được đưa ra năm 1997 và sau đó được chuẩn hoá để trở thành phiên bản
1.0. Hiện nay chúng ta đang sử dụng ngôn ngữ UML phiên bản 2.0.
7


1.1.2 UML – Ngôn ngữ mô hình hoá hướng đối tượng
UML (Unified Modelling Language) là ngôn ngữ mô hình hoá tổng quát
được xây dựng để đặc tả, phát triển và viết tài liệu cho các khía cạnh trong phát
triển phần mềm hướng đối tượng. UML giúp người phát triển hiểu rõ và ra quyết
định liên quan đến phần mềm cần xây dựng. UML bao gồm một tập các khái
niệm, các ký hiệu, các biểu đồ và hướng dẫn.
UML hỗ trợ xây dựng hệ thống hướng đối tượng dựa trên việc nắm bắt khía
cạnh cấu trúc tĩnh và các hành vi động của hệ thống.
+ Các cấu trúc tĩnh định nghĩa các kiểu đối tượng quan trọng của hệ thống, nhằm

cài đặt và chỉ ra mối quan hệ giữa các đối tượng đó.
+ Các hành vi động (dynamic behavior) định nghĩa các hoạt động của các đối
tượng theo thời gian và tương tác giữa các đối tượng hướng tới đích.
Các mục đích của ngôn ngữ mô hình hoá thống nhất UML:
+ Mô hình hoá các hệ thống sử dụng các khái niệm hướng đối tượng.
+ Thiết lập sự liên hệ từ nhận thức của con người đến các sự kiện cần mô hình
hoá.
+ Giải quyết vấn đề về mức độ thừa kế trong các hệ thống phức tạp với nhiều
ràng buộc khác nhau.
+ Tạo một ngôn ngữ mô hình hoá có thể sử dụng được bởi người và máy.
UML quy định một loạt các ký hiệu và quy tắc để mô hình hoá các pha trong quá
trình phát triển phần mềm hướng đối tượng dưới dạng các biểu đồ.
1.1.3 Các biểu đồ trong UML
Thành phần mô hình chính trong UML là các biểu đồ:
- Biểu đồ use case biểu diễn sơ đồ chức năng của hệ thống. Từ tập yêu cầu của
hệ thống, biểu đồ use case sẽ phải chỉ ra hệ thống cần thực hiện điều gì để thoả
mãn các yêu cầu của người dùng hệ thống đó. Đi kèm với biểu đồ use case là các
kịch bản.
- Biểu đồ lớp chỉ ra các lớp đối tượng trong hệ thống, các thuộc tính và phương
thức của từng lớp và các mối quan hệ giữa những lớp đó.
- Biểu đồ trạng thái tương ứng với mỗi lớp sẽ chỉ ra các trạng thái mà đối tượng
của lớp đó có thể có và sự chuyển tiếp giữa những trạng thái đó.
8


- Các biểu đồ tương tác biểu diễn mối liên hệ giữa các đối tượng trong hệ thống
và giữa các đối tượng với các tác nhân bên ngoài. Có hai loại biểu đồ tương tác:
+ Biểu đồ tuần tự: Biểu diễn mối quan hệ giữa các đối tượng và giữa các đối
tượng và tác nhân theo thứ tự thời gian.
+ Biểu đồ cộng tác: Biểu diễn mối quan hệ giữa các đối tượng và giữa các đối

tượng và tác nhân nhưng nhấn mạnh đến vai trò của các đối tượng trong tương
tác.
- Biểu đồ hoạt động biểu diễn các hoạt động và sự đồng bộ, chuyển tiếp các hoạt
động, thường được sử dụng để biểu diễn các phương thức phức tạp của các lớp.
- Biểu đồ thành phần định nghĩa các thành phần của hệ thống và mối liên hệ
giữa các thành phần đó.
- Biểu đồ triển khai mô tả hệ thống sẽ được triển khai như thế nào, thành phần
nào được cài đặt ở đâu, các liên kết vật lý hoặc giao thức truyền thông nào được
sử dụng.
Dựa trên tính chất của các biểu đồ, UML chia các biểu đồ thành hai lớp mô
hình1:
• Biểu đồ mô hình cấu trúc (Structural Modeling Diagrams): biểu diễn các
cấu trúc tĩnh của hệ thống phần mềm được mô hình hoá. Các biểu đồ trong mô
hình tĩnh tập trung biểu diễn khía cạnh tĩnh của hệ thống, liên quan đến cấu trúc
cơ bản cũng như các phần tử chính trong miền quan tâm của bài toán. Các biểu
đồ trong mô hình tĩnh bao gồm:
- Biểu đồ gói
- Biểu đồ đối tượng và lớp
- Biểu đồ thành phần
- Biểu đồ triển khai
• Biểu đồ mô hình hành vi (Behavioral Modeling Diagrams): Nắm bắt đến các
hoạt động và hành vi của hệ thống, cũng như tương tác giữa các phần tử bên
trong và bên ngoài hệ thống. Các dạng biểu đồ trong mô hình động bao gồm:
- Biểu đồ use case
- Biểu đồ tương tác dạng tuần tự
- Biểu đồ tương tác dạng cộng tác
9


- Biểu đồ trạng thái

- Biểu đồ động
Chúng ta sẽ lần lượt xem xét chi tiết các biểu đồ UML, mỗi biểu đồ sẽ được
trình bày ý nghĩa của nó, tập kí hiệu UML cho biểu đồ đó và một ví dụ.
1.1.4 Biểu đồ Use case
1.1.4.1 Ý nghĩa
Biểu đồ use case biểu diễn sơ đồ chức năng của hệ thống. Từ tập yêu cầu
của hệ thống, biểu đồ use case sẽ phải chỉ ra hệ thống cần thực hiện điều gì để
thoả mãn các yêu cầu của người dùng hệ thống đó. Đi kèm với biểu đồ use case
là các kịch bản (scenario). Có thể nói, biểu đồ use case chỉ ra sự tương tác giữa
các tác nhân và hệ thống thông qua các use case.
Mỗi use case mô tả một chức năng mà hệ thống cần phải có xét từ quan
điểm người sử dụng. Tác nhân là con người hay hệ thống thực khác cung cấp
thông tin
hay tác động tới hệ thống.
Một biểu đồ use case là một tập hợp các tác nhân, các use case và các mối
quan hệ giữa chúng. Các use case trong biểu đồ use case có thể được phân rã
theo nhiều mức khác nhau.

10


Minh họa về biểu đồ Use case
1.1.4.2 Tập ký hiệu UML cho biểu đồ use case
Một biểu đồ Use Case chứa các phần tử mô hình biểu thị hệ thống, tác nhân
cũng như các trường hợp sử dụng và các mối quan hệ giữa các Use Case. Chúng
ta sẽ lần lượt xem xét các phần tử mô hình này:
a) Hệ thống: Với vai trò là thành phần của biểu đồ use case, hệ thống biểu diễn
ranh giới giữa bên trong và bên ngoài của một chủ thể trong phần mềm chúng ta
đang xây dựng. Chú ý rằng một hệ thống ở trong biểu đồ use case không phải
bao giờ cũng nhất thiết là một hệ thống phần mềm; nó có thể là một chiếc máy,

hoặc là một hệ thống thực (như một doanh nghiệp, một trường đại học, …).
b) Tác nhân (actor): là người dùng của hệ thống, một tác nhân có thể là một
người dùng thực hoặc các hệ thống máy tính khác có vai trò nào đó trong hoạt
động của hệ thống. Như vậy, tác nhân thực hiện các use case. Một tác nhân có
thể thực hiện nhiều use case và ngược lại một use case cũng có thể được thực
hiện bởi nhiều tác nhân.
Actor được ký hiệu bằng một hình người (Stickman) .

11


c) Các use case: Đây là thành phần cơ bản của biểu đồ use case. Các use case
được biểu diễn bởi các hình elip. Tên các use case thể hiện một chức năng xác
định của hệ thống.
Use Case được ký hiệu bởi một hình Oval .

d) Mối quan hệ giữa các use case: giữa các use case có thể có các mối quan hệ
như sau:
- Include: use case này sử dụng lại chức năng của use case kia.
- Extend: use case này mở rộng từ use case kia bằng cách thêm vào một chức
năng cụ thể.
- Generalization: use case này được kế thừa các chức năng từ use case kia.

1.2 Quy trình RUP
1.2.1 Giới thiệu
Rational Unified Process hay RUP là một qui trình công nghệ phần mềm.
Nó cung cấp các phương pháp, các nguyên tắc phân công nhiệm vụ và trách
nhiệm trong các tổ chức phát triển phần mềm. Nó cho ra một sản phẩm phần
mềm có chất lượng cao đảm bảo các dự thảo về thời gian và và kinh phí với
khách hàng.


12


Hàng ngang của biểu đồ mô tả qui trình về mặt thời gian và vòng đời của
một giai đoạn trong qui trình (khởi tạo, chi tiết hóa, xây dựng và chuyển giao).
Hàng dọc của biểu đồ mô tả trạng thái tĩnh của qui trình, các giai đoạn của
qui trình.
Toàn bộ biểu đồ nhấn mạnh sự khác nhau giữa các giai đoạn theo thời gian.
Ví dụ ban đầu việc lặp đi lặp lại được thực hiện trong giai đoạn yêu cầu, về sau
thì tập trung ở giai đoạn thực thi.
1.2.2 Phát triển lặp

Phát triển lặp lại là gì?

13


+ Một dự án sử dụng qui trình phát triển lặp lại có một vòng đời chứa các
quá trình lặp lại. Một quá trình lặp là sự kết hợp chặt chẽ một chuỗi các hoạt
động: mô hình nghiệp vụ, tiếp nhận yêu cầu, phân tích và thiết kế, thực thi, kiểm
lỗi và triển khai với mức độ lặp không giống nhau, tùy theo vị trí cụ thể của vòng
phát triển.
+ Quản lý, tiếp nhận yêu cầu và thiết kế là các hoạt động trọng điểm trong
giai đoạn khởi tạo và phân tích chi tiết dự án; các hoạt động thiết kế, thực thi và
kiểm lỗi đóng vai trò chủ chốt trong giai đoạn xây dựng; và các hoạt động kiểm
lỗi, triển khai đóng vai trò chủ đạo trong giai đoạn chuyển giao dự án.
+ Quá trình lặp được quản lý bởi timeboxed (thuật ngữ của RUP) được các
nhóm phát triển họp bàn và thiết lập.
Tại sao phải phát triển lặp lại ?

+ Một thiết kế ban đầu chỉ là một sản phẩm chưa hoàn thiện, dựa trên các
yêu cầu căn bản, về sau quá trình thiết kế càng phát hiện ra thêm nhiều nhược
điểm đó là kết quả trả giá từ việc chạy thử và trong một số trường hợp dự án phải
hủy bỏ.
+ Tất cả các dự án đều có một tập các rủi ro phức tạp. Lúc ban đầu bạn có
thể xác định để ngăn ngừa một vài rủi ro theo đúng như kế hoạch của mình. Tuy
nhiên có rất nhiều rủi ro mà bạn không thể phát hiện ra một các đơn giản, trơn tru
cho đến khi bạn cố gắng tích hợp hệ thống. Bạn sẽ không bao giờ có thể dự đoán
trước được tất cả các rủi ro khi không quan tâm đến kinh nghiệm của nhóm phát
triển.

14


Lợi ích của phát triển lặp lại
+ Hạn chế được nhiều rủi ro do các phần tử được tích hợp, xây dựng dần
dần.
+ Cho phép thay đổi các yêu cầu, các phương thức cho thích hợp hơn.
+ Các tổ chức có thể nắm được phương pháp này và phát triển cho qui trình
của họ.
+ Tăng khả năng tái sử dụng.
1.2.3 Vòng đời

+ Từ phương diện quản lý, vòng đời của một phần mềm theo RUP được
chia theo thời gian qua bốn giai đoạn nối tiếp nhau, mỗi giai đoạn có một mốc
quan trọng, mỗi giai đoạn thực chất là khoảng giữa của 2 điểm mốc.
+ Cuối mỗi giai đoạn, bộ phận kiểm định sẽ thực hiện thẩm định các đối
tượng của giai đoạn này. Nếu việc kiểm tra thích hợp thì dự án sẽ được chuyển
sang giai đoạn tiếp theo.
1.2.4 Giai đoạn Inception

Kết quả của giai đoạn này là đạt được sự nhất trí giữa tất cả những người
đóng vai trò chủ chốt về các mục tiêu của dự án. Trong giai đoạn này phải chỉ ra
được các mục tiêu quan trọng cần cố gắng đạt được, trong đó rủi ro của các yêu
cầu, các chức năng nghiệp vụ cũng phải được chỉ ra trước khi dự án bắt đầu.
Trong giai đoạn này cũng đề cập đến việc cải tiến từ các hệ thống đã có, tuy
nhiên vẫn chỉ tóm tắt, giai đoạn này chú trọng đến cả 2 điều quan trọng của dự
án: đáng để làm hay không và khả năng thực hiện.

15


Mục tiêu chính của giai đoạn Inception.
+ Thiết lập phạm vi phần mềm và các điều kiện biên của dự án, bao gồm:
nhìn nhận khả năng thực hiện, các điều kiện thỏa thuận và những gì sản phẩm
mong đợi và không mong đợi.
+ Nhận định đúng đắn về các UC của hệ thống, kịch bản của các hành vi
trong hệ thống sẽ đóng vai trò định hướng quan trọng cho kết quả của phần thiết
kế.
+ Trình bày, demo một số kiến trúc ứng cử viên cho một vài kịch bản
chính.
+ Dự trù tất cả chi phí, lập kế hoạch cho toàn bộ dự án.
+ Dự trù các rủi ro tiềm ẩn.
+ Chuẩn bị môi trường hỗ trợ cho dự án.
16


1.2.5 Giai đoạn Elaboration
Kết quả của giai đoạn này là tạo ra một baseline cho kiến trúc của hệ thống
tạo cơ sở cho quá trình thiết kế và thực thi trong giai đoạn construction. Kiến trúc
này mở rộng việc phân tích các yêu cầu quan trọng của hệ thống (các yêu cầu có

sự ảnh hưởng lớn đến hệ thống) và đánh giá các rủi ro. Sự ổn định của kiến trúc
được đánh gia qua nhiều nguyên bản của kiến trúc.

1.2.6 Giai đoạn Construction
Đây là giai đoạn xây dựng sản phầm và phát triển các phiên bản, kiến trúc,
các kế hoạch cho đến khi đạt được phiên bản hoàn thiện nhất – có thể chuyển
giao cho người dùng.
Giai đoạn này sẽ được kết luận dựa vào các mốc là khả năng thực hiện
các chức năng yêu cầu ban đầu đã xác định.
1.2.7 Giai đoạn Transition
Chuyển giao sản phẩm cho những người sử dụng nó, bao gồm: sản xuất,
phân phát, huấn luyện, hỗ trợ và bảo trì cho đến khi người sử dụng hài lòng.
17


Giai đoạn này được kết luận thông qua mốc các phiên bản của sản phẩm –
kết thúc từng chu trình lặp của giai đoạn này.
Thời gian dành cho các giai đoạn này đựoc ước tính như sau:

1.3 Tổng quan về .Net Framework
Ngày 13/02/2002, Microsoft chính thức giới thiệu bộ công cụ lập trình mới
của mình – Visual Studio.NET. Sau 4 năm không tung ra phiên bản mới cho bộ
Visual Studio 98, lần này Microsoft quyết tâm đặt cược vào thắng lợi của công
nghệ mới: Microsoft .NET.
Trong thời đại công nghệ thông tin, dữ liệu trở nên quan trọng đến nỗi
người ta mong muốn tất cả mọi thứ như điện thoại di động, máy tính xách tay,
các máy PDA (Personal Digital Assistant) đều phải kết nối với nhau để chia sẽ
dữ liệu và việc sử dụng các phần mềm để quản lý, sử dụng những dữ liệu đó là
"không biên giới". Ứng dụng phải sẵn sàng để sử dụng từ trên máy tính cũng như
trên điện thoại di động 24/24 giờ, ít lỗi, xử lý nhanh và bảo mật chặt chẽ.

Các yêu cầu này làm đau đầu những chuyên gia phát triển ứng dụng khi
phần mềm chủ yếu viết cho hệ thống này không chạy trên một hệ thống khác bởi
nhiều lý do như khác biệt về hệ điều hành, khác biệt về chuẩn giao tiếp dữ liệu,
mạng. Thời gian và chi phí càng trở nên quý báu vì bạn không phải là người duy
nhất biết lập trình. Làm sao sử dụng lại những ứng dụng đã viết để mở rộng thêm
nhưng vẫn tương thích với những kỹ thuật mới?
Sun Microsystems đi đầu trong việc cung cấp giải pháp với Java. Java chạy
ổn định trên các hệ điều hành Unix hay Solaris của Sun từ máy chủ tới các thiết
bị cầm tay hay thậm chí trên các hệ điều hành Windows của Microsoft (một ví dụ
rõ ràng đó là hầu hết các điện thoại di động thế hệ mới đều có phần mềm viết
bằng Java). Kiến trúc lập trình dựa trên Java bytecode và thi hành trên máy ảo
18


Java (JVM – Java Virtual Marchine) cho phép các ứng dụng Java chạy trên bất
cứ hệ điều hành nào. Mô hình lập trình thuần hướng đối tượng của Java giúp các
lập trình viên tùy ý sử dụng lại và mở rộng các đối tượng có sẵn. Các nhà cung
cấp công cụ lập trình dựa vào đây để gắn vào các môi trường phát triển ứng dụng
bằng Java của mình đủ các thư viện lập trình nhằm hỗ trợ các lập trình viên.
Sức mạnh của Java dường như quá lớn đến nỗi Microsoft từng phải chống trả
bằng cách loại bỏ Java Virtual Marchine khỏi các phiên bản hệ điều hành
Windows mới của mình như Windows XP. Tuy nhiên, Microsoft thừa hiểu rằng
dù không cung cấp JVM, Sun cũng có thể tự cung cấp các JVM package cho
những người dùng Windows. Đó là lý do tại sao nhà khổng lồ quyết định bắt tay
xây dựng lại từ đầu một nền tảng phát triển ứng dụng mới: Microsoft.NET
Framework.
Vì ra đời khá muộn so với Java, .Net bị coi là khá giống với bậc "tiền bối"
của nó. .NET sử dụng kỹ thuật lập trình thuần hướng đối tượng như Java và cũng
thi hành trên một máy ảo là CLR (Common Language Runtime).
Bộ thư viện của .NET Framework bao gồm hơn 5000 lớp đối tượng đủ sức

hỗ trợ hầu hết các yêu cầu từ phía lập trình viên. Công nghệ mã nguồn mở được
đưa vào .NET thay cho COM và DCOM đang được các lập trình viên của
Microsoft sử dụng. Với COM, những thành phần (COMponent) đã được xây
dựng như các lớp thư viện hay các control chỉ có thể sử dụng lại. Bạn không thể
mở rộng chúng hay viết lại cho thích hợp với ứng dụng của mình. Trong .NET,
mọi thành phần đều có thể kế thừa và mở rộng, một kỹ thuật mới được đưa ra
thay cho COM là Assembly. Distributed Component hay DCOM là kỹ thuật
dùng để phối hợp các thành phần trên nhiều máy tính giờ đây được thay thế trong
.NET bởi chuẩn công nghệ mới là SOAP và XML Web Service.
Cùng với SOAP (Simple Objects Access Protocol), XML Web Service mở
rộng khả năng của DCOM từ chỗ chỉ phối hợp các máy trong Intranet, nằm sau
Firewall ra Internet. Các công ty .com giờ đây mặc sức xây dựng các phần mềm
độc lập của mình những vẫn có thể phối hợp với nhau để đem tới khách hàng các
dịch vụ ecommerce đa dạng nhưng thống nhất.

19


XML (eXtended Markup Language) chuẩn lưu trữ và trao đổi dữ liệu mới
nhất, hiệu quả nhất hiện nay cũng được .NET hỗ trợ khá đầy đủ. Chỉ cần một
công cụ chuyển đổi đơn giản mà thậm chí bạn cũng có thể tự viết (đương nhiên
khi bạn đã biết về XML), các dữ liệu trước kia của bạn dù ở bất cứ dạng lưu trữ
nào cũng có thể chuyển về dạng XML để sử dụng trong các ứng dụng mới hay
trao đổi với hệ thống ứng dụng khác. .NET giờ đây cũng sử dụng kỹ thuật truy
cập cơ sở dữ liệu mới là ADO.NET để bổ sung cho kỹ thuật ADO trước kia vốn
là thành phần mạnh nhất trong MDAC (Microsoft Data Access Component gồm
có 3 phần DBLib, OLEDB và ADO)khả năng làm việc với dữ liệu XML. Bạn
cũng nên biết rằng kể từ SQL Server 2000, XML đã được hỗ trợ trong phần mềm
quản trị cơ sở dữ liệu nổi tiếng nhất của Microsoft và phiên bản SQL Server sắp
tới chắc chắn không xem nhẹ XML chút nào. Cùng với XML, SOAP và Web

service đang là những vũ khí mạnh nhất mà Microsoft sử dụng để qua mặt Java.
Cũng không thể quên CLR, máy ảo của các ứng dụng viết bằng .NET. Common
Language Runtime (CLR) được sử dụng để thực hiện các đoạn chương trình ở
dạng mã IL (Immediate Language). Điều này có nghĩa là dầu bạn lập trình bằng
ngôn ngữ nào bạn thích, một khi có thể biên dịch sang mã IL, bạn sẽ yên tâm
rằng CLR sẽ thi hành nó một cách suôn sẽ. Giống như JVM của Java, CLR bao
gồm trong nó nhiều thành phần quản lý ứng dụng khi thi hành như JIT (Just In
Time compiler) để biên dịch ngay tại thời điểm thi hành những đoạn lệnh IL cần
thiết hay Garbage Collector giữ vai trò thu gom "rác rưởi" mà ứng dụng để sót lại
nhằm sử dụng hiệu quả bộ nhớ. Ngoài ra, CLR không quên hỗ trợ việc quản lý
các ứng dụng trước đây viết trên kỹ thuật COM. Nó đảm bảo cho bạn không phải
bỏ đi những gì đã "dày công xây đắp" trước đây mà vẫn có thể phối hợp nó với
các ứng dụng mới viết trên .NET.
Một điểm nữa không thể bỏ qua khi giới thiệu về .NET Framework, đó là
thành phần Common Language Specification. Vai trò của thành phần này là đảm
bảo sự tương tác giữa các đối tượng bất chấp chúng được xây dựng trong ngôn
ngữ nào, miễn là chúng cung cấp được những thành phần chung của các ngôn
ngữ muốn tương tác. Thành phần Common Language Runtime được xây dựng
với mục đích mô tả các yêu cầu cần thiết của một ngôn ngữ để có thể sử dụng
20


trong lập trình và biên dịch thành mã IL. Một khi đã ở dạng mã IL, ứng dụng đã
có thể chạy trên CLR và như thế bạn đã có khả năng dùng ngôn ngữ lập trình mà
mình yêu thích để tận dụng các khả năng mạnh mẽ của .NET.
Trước đây, các lập trình viên đã quen dùng Visual C++ hay Visual Basic 6 hay
Visual InterDEV mỗi khi cần xây dựng một loại ứng dụng khác phải chuyển qua
lại giữa các môi trường lập trình khác nhau của Visual Studio 98 và chợt nhận ra
rằng VB 6 không có điểm mạnh này của C++ hoặc C++ không làm nhanh được
chức năng kia của VB 6,… sẽ cảm thấy nhẹ nhõm vì với .NET giờ đây, mọi sức

mạnh của các ngôn ngữ lập trình đều như nhau. .NET Framework hỗ trợ một bộ
thư viện lập trình đồ sộ hơn 5000 lớp đối tượng để bạn đủ khả năng xây dựng các
loại ứng dụng từ kiểu console (ứng dụng dòng lệnh), ứng dụng trên Windows cho
tới các ứng dụng Web, các service của hệ điều hành và các Web service trên
Internet.
Trước khi chấm dứt phần giới giới thiệu, cũng cần phải đề cập đến bộ
control đồ sộ và mới mẻ của .NET. Rất nhiều điều khiển mới được thêm vào
.NET Framework để hỗ trợ cho các ứng dụng có giao diện đồ họa trên Windows
và trên Web một "vẻ mặt" mới. Những công cụ này không chỉ hỗ trợ chuẩn font
chữ Unicode nhưng còn kết hợp với khả năng xây dựng ứng dụng mang tính
"quốc tế" khi người lập trình phải đáp ứng nhiều ngôn ngữ, nhiều định dạng ngày
giờ hay tiền tệ khác nhau.
Microsoft không quên đem lại một môi trường phát triển ứng dụng sử dụng
giao diện đồ hoạ, tích hợp nhiều chức năng, tiện ích khác nhau để hỗ trợ tối đa
cho các lập trình viên, đó chính là Visual Studio.NET.
.NET Framework là thành phần quan trọng nhất trong kỹ thuật phát triển ứng
dụng dựa trên .NET. Visual Studio sẽ giúp người lập trình nắm bắt và tận dụng
tốt hơn những chức năng của .NET Framework. Phần dưới đây giới thiệu những
kiến thức cơ bản nhất về .NET Framework trước khi chúng ta thực sự bắt tay vào
làm việc với Visual Studio.NET và VB.NET.

21


1.3.1 Cấu trúc .Net Framework

1.3.2 Hệ điều hành
.NET Framework cần được cài đặt và sử dụng trên một hệ điều hành. Hiện
tại, .NET Framework chỉ có khả năng làm việc trên các hệ điều hành Microsoft
Win32 và Win64 mà thôi. Trong thời gian tới, Microsoft sẽ đưa hệ thống này lên

Windows CE cho các thiết bị cầm tay và có thể mở rộng cho các hệ điều hành
khác như Unix.
1.3.3 Cung cấp các chức năng xây dựng ứng dụng
Với vai trò quản lý việc xây dựng và thi hành ứng dụng, .NET Framework
cung cấp các lớp đối tượng (Class) để bạn có thể gọi thi hành các chức năng mà
đối tượng đó cung cấp. Tuy nhiên, lời kêu gọi của bạn có được "hưởng ứng" hay
không còn tùy thuộc vào khả năng của hệ điều hành đang chạy ứng dụng của
bạn.
Các chức năng đơn giản như hiển thị một hộp thông báo (Messagebox) sẽ
được .NET Framework sử dụng các hàm API của Windows. Chức năng phức tạp
hơn như sử dụng các COMponent sẽ yêu cầu Windows phải cài đặt Microsoft

22


Transaction Server (MTS) hay các chức năng trên Web cần Windows phải cài
đặt Internet Information Server (IIS).
Như vậy, bạn cần biết rằng lựa chọn một hệ điều hành để cài đặt và sử dụng
.NET Framework cũng không kém phần quan trọng. Cài đặt .NET Framework
trên các hệ điều hành Windows 2000, 2000 Server, XP, XP.NET, 2003 Server sẽ
đơn giản và tiện dụng hơn trong khi lập trình.
1.3.4 Common Language Runtime
Là thành phần "kết nối" giữa các phần khác trong .NET Framework với hệ
điều hành. Common Language Runtime (CLR) giữ vai trò quản lý việc thi hành
các ứng dụng viết bằng .NET trên Windows. CLR sẽ thông dịch các lời gọi từ
chương trình cho Windows thi hành, đảm bảo ứng dụng không chiếm dụng và sử
dụng tràn lan tài nguyên của hệ thống. Nó cũng không cho phép các lệnh "nguy
hiểm" được thi hành. Các chức năng này được thực thi bởi các thành phần bên
trong CLR như Class loader, Just In Time compiler, Garbage collector,
Exception handler, COM marshaller, Security engine,…

Trong các phiên bản hệ điều hành Windows mới như XP.NET và Windows
2003, CLR được gắn kèm với hệ điều hành. Điều này đảm bảo ứng dụng viết ra
trên máy tính của chúng ta sẽ chạy trên máy tính khác mà không cần cài đặt, các
bước thực hiện chỉ đơn giản là một lệnh copy của DOS!
1.3.5 Bộ thư viện các lớp đối tượng
Nếu phải giải nghĩa từ "Framework" trong thuật ngữ .NET Framework thì
đây là lúc thích hợp nhất. Framework chính là một tập hợp hay thư viện các lớp
đối tượng hỗ trợ người lập trình khi xây dựng ứng dụng. Có thể một số người
trong chúng ta đã nghe qua về MFC và JFC. Microsoft Foundation Class là bộ
thư viện mà lập trình viên Visual C++ sử dụng trong khi Java Foundation Class
là bộ thư viện dành cho các lập trình viên Java. Giờ đây, có thể coi .NET
Framework là bộ thư viện dành cho các lập trình viên .NET
Với hơn 5000 lớp đối tượng để gọi thực hiện đủ các loại dịch vụ từ hệ điều
hành, chúng ta có thể bắt đầu xây dựng ứng dụng bằng Notepad.exe!!!… Nhiều
người lầm tưởng rằng các môi trường phát triển phần mềm như Visual Studio 98
hay Visual Studio.NET là tất cả những gì cần để viết chương trình. Thực ra,
23


chúng là những phần mềm dùng làm "vỏ bọc" bên ngoài. Với chúng, chúng ta sẽ
viết được các đoạn lệnh đủ các màu xanh, đỏ; lỗi cú pháp báo ngay khi đang gõ
lệnh; thuộc tính của các đối tượng được đặt ngay trên cửa sổ properties, giao diện
được thiết kế theo phong cách trực quan… Như vậy, chúng ta có thể hình dung
được tầm quan trọng của .NET Framework. Nếu không có cái cốt lõi .NET
Framework, Visual Studio.NET cũng chỉ là cái vỏ bọc! Nhưng nếu không có
Visual Studio.NET, công việc của lập trình viên .NET cũng lắm bước gian nan!

1.4 Giới thiệu ngôn ngữ lập trình Visual Basic .NET
Microsoft Visual Basic. NET hay còn gọi là VB.NET được Microsoft phát
triển từ cuối thập niên 1990 và ra phiên bản đầu vào năm 2002 (cùng với Visual

C# và ASP.NET).
1.4.1 Các kiểu dữ liệu
Các kiểu dữ liệu trong .Net được mô tả chi tiết trong một cấu trúc gọi là
Common Type System (CTS). CTS định nghĩa các kiểu dữ liệu, cách thức sử
dụng, cách thức được quản lý lúc thực thi và cùng với Common Language
Specification đóng một vai trò quan trọng trong việc trao đổi giữa các ngôn
ngữ lập trình trong .Net
Kiểu dữ liệu VB.net
Boolean

Vùng nhớ (Bytes) Miền giá trị
2
True hoặc False

byte

1

0 đến 255

Char

2

0 đến 65535

DateTime

8


0:00:00 ngày 01 tháng Giêng 0001
đến
23:59:59 ngày 31 tháng Mười Hai
9999

Decimal

0 đến +/-79,228,162,514,264,

16

337,593,543,950,335 nếu không có
số lẻ;
0 đến +/-7.9228162514264337
593543950335 với 28 số lẻ; số nhỏ
nhất khác không là +/24


0.0000000000000000000000000001
(+/1E-28).

Double

-1.79769313486231570E+308 đến -

8

4.94065645841246544E -324 đối
với số âm; 4.94065645841246544E324 đến
1.79769313486231570E +308 với

sốdương.
Integer

4

-2,147,483,648 đến 2,147,483,647.

Long

8

-9,223,372,036,854,775,808 đến
9,223,372,036,854,775,807.

Object

4

Bất kỳ kiểu dữ liệu nào có thể chứa
trong biến kiểu Object.

Short

2

-32,768 đến 32,767.

Single

4


-3.4028235E+38 đến -1.401298E-45
với số âm; 1.401298E-45 đến
3.4028235E+38 với số dương.

String

0 đến khoảng 2 tỷ ký tự Unicode

User-Defined Type

Mỗi thành phần của Structure có
miền giá trị theo kiểu dữ liệu của
thành phần.

1.4.2 Khai báo và khởi tạo biến
Lệnh khai báo biến là cú pháp kết hợp tên biến và kiểu dữ liệu. Tự thân
lệnh này không hàm ý tạo biến. Tuy nhiên, với các biến không phải kiểu đối
tượng, lệnh khai báo biến cũng chính là lệnh tạo biến.
Cú Pháp

Dim x as Integer

Để nhấn mạnh vai trò của hàm tạo (constructor), chúng ta có thể viết:
25


×