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 p
Trang 11
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
Trang 22
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
Trang 33
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
Trang 44
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
Trang 55
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à:
Trang 6Chươ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
Trang 77
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
Trang 88
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 đó
Trang 99
- 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
Trang 10Biể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
Trang 1111
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)
Trang 1212
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
Trang 1313
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ì?
Trang 1414
+ 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
Trang 1515
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
Trang 1616
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
Trang 1717
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
Trang 1818
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
Trang 1919
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
Trang 2020
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
Trang 2121
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
Trang 221.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
Trang 231.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,
Trang 2424
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 Vùng nhớ (Bytes) Miền giá trị
đến 23:59:59 ngày 31 tháng Mười Hai
Trang 2525
0.0000000000000000000000000001 (+/-
1E-28)
4.94065645841246544E -324 đối với số âm; 4.94065645841246544E-
324 đến 1.79769313486231570E +308 với
số dương
9,223,372,036,854,775,807
trong biến kiểu Object
với số âm; 1.401298E-45 đến 3.4028235E+38 với số dương
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:
Trang 2626
Dim x as Integer = New Integer() Khi khai báo nhiều biến trên cùng dòng và không chỉ ra kiểu của biến, biến sẽ lấy kiểu dữ liệu của biến khai báo dữ liệu tường minh tiếp sau đó
Dim x as Integer, a, b, c as Long Các biến a, b, c đều cùng có kiểu Long
Có thể khai báo và khởi tạo giá trị cho biến cùng lúc:
Dim as Integer = 100, y as Integer = 200 Trong cách này, phải khai báo tường minh kiểu dữ liệu cho từng biến Với các biến kiểu đối tượng, cách khai báo cũng như thế
Dim obja As Myclass() Lệnh trên chưa tạo ra biến đối tượng và sau dòng lệnh, objA vẫn là Nothing Những cách sau đây sẽ khai báo và tạo biến đối tượng:
Dim obja as new myclass() Hoặc
Dim obja as myclass =new myclass() Các từ khóa để khai báo biến:
Từ khóa Mô tả
Public Sử dụng toàn cục
Private Sử dụng cục bộ trong phạm vi khai báo như Dim
Friend Sử dụng trong phạm vi của project
Protected Sử dụng trong phạm vi của lớp và các lớp con
Protected Friend Sử dụng trong phạm vi của Proctected và Friend
1.4.3 Cấu trúc điều khiển
1.4.3.1 Cấu trúc chọn
Cấu trúc IF … Then …Else
Trước tiên, chúng ta làm quen với cấu trúc If … Then … End If
Cú pháp:
If <điều kiện> Then
‘ Các câu lệnh
End if
Trang 2727
Cú pháp:
If <điều kiện> Then
‘ Các lệnh sẽ thực hiện nếu điều kiện đúng
End If
If Not <điều kiện> Then
‘Các lệnh sẽ thực hiện nếu điều kiện sai
Trang 2929
Chương 2: PHƯƠNG PHÁP XÁC ĐỊNH GIÁ TRỊ PHẦN MỀM
Có nhiều phương pháp xác định giá trị phần mềm như:
- Phương pháp so sánh;
- Phương pháp chuyên gia;
- Phương pháp kết hợp sử dụng số liệu theo công bố của các cơ quan khác có chức năng …
Ngày 17/10/2008 Bộ thông tin và truyền thông ban hành công văn về việc
“HƯỚNG DẪN XÁC ĐỊNH GIÁ TRỊ PHẦN MỀM”
2.1 LÀM RÕ MỘT SỐ VẤN ĐỀ LIÊN QUAN TỚI HƯỚNG DẪN
2.1.1 Mức lương tối thiểu
Mức lương tối thiểu được Chính phủ quy định tại Nghị định số 166/2007/NĐ-CP ngày 16 tháng 11 năm 2007 Theo đó mức lương tối thiểu chung được quy định tại Nghị định như sau:
Điều 1 Quy định mức lương tối thiểu chung để trả công cho người lao động làm
công việc giản đơn nhất trong điều kiện lao động bình thường thực hiện từ 01 tháng 01 năm 2008 là 540.000 đồng/tháng
Mức lương tối thiểu được quy định rõ hơn tại thông tư số 23 BLĐTBXH ban hành ngày 20 tháng 10 năm 2008 Căn cứ Nghị định số 110/2008/NĐ-CP ngày 10 tháng 10 năm 2008 của Chính phủ quy định mức lương tối thiểu vùng đối với người lao động làm việc ở công ty, doanh nghiệp, hợp tác xã, tổ hợp tác, trang trại, hộ gia đình, cá nhân và các tổ chức khác của Việt Nam có thuê mướn lao động; Bộ Lao động - Thương binh và Xã hội hướng dẫn thực hiện mức lương tối thiểu vùng đối với công ty nhà nước và công ty trách nhiệm hữu hạn một thành viên do Nhà nước sở hữu 100% vốn điều lệ như sau:
/2008/TT-1 Mức lương tối thiểu vùng để trả công đối với người lao động làm công việc giản đơn nhất trong điều kiện lao động bình thường ở các công ty thực hiện từ ngày 01 tháng 01 năm 2009 theo Điều 2 Nghị định số 110/2008/NĐ-CP như sau: a) Mức 800.000 đồng/tháng áp dụng đối với công ty hoạt động trên địa bàn thuộc vùng I, bao gồm:
Trang 3030
- Các quận và thành phố Hà Đông thuộc thành phố Hà Nội;
- Các quận thuộc thành phố Hồ Chí Minh
b) Mức 740.000 đồng/tháng áp dụng đối với công ty hoạt động trên địa bàn thuộc vùng II, bao gồm:
- Các huyện Gia Lâm, Đông Anh, Sóc Sơn, Thanh Trì, Từ Liêm, Thường Tín, Hoài Đức, Đan Phượng, Thạch Thất, Quốc Oai và thành phố Sơn Tây thuộc thành phố Hà Nội;
- Các huyện thuộc thành phố Hồ Chí Minh;
- Các quận và các huyện Thuỷ Nguyên, An Dương thuộc thành phố Hải Phòng;
- Các quận, huyện thuộc thành phố Đà Nẵng;
- Các quận Ninh Kiều, Bình Thuỷ thuộc thành phố Cần Thơ;
- Thành phố Hạ Long thuộc tỉnh Quảng Ninh;
- Thành phố Biên Hoà, thị xã Long Khánh và các huyện Nhơn Trạch, Long Thành, Vĩnh Cửu, Trảng Bom thuộc tỉnh Đồng Nai;
- Thị xã Thủ Dầu Một và các huyện Thuận An, Dĩ An, Bến Cát, Tân Uyên thuộc tỉnh Bình Dương;
- Thành phố Vũng Tàu và huyện Tân Thành thuộc tỉnh Bà Rịa – Vũng Tàu c) Mức 690.000 đồng/tháng áp dụng đối với công ty hoạt động trên địa bàn thuộc vùng III, bao gồm:
- Các thành phố trực thuộc tỉnh (trừ các thành phố thuộc tỉnh nêu tại vùng II);
- Các huyện còn lại thuộc thành phố Hà Nội;
- Thành phố Bắc Ninh, thị xã Từ Sơn và các huyện Quế Võ, Tiên Du, Yên Phong thuộc tỉnh Bắc Ninh;
- Thành phố Bắc Giang và các huyện Việt Yên, Yên Dũng thuộc tỉnh Bắc Giang;
- Thị xã Hưng Yên và các huyện Mỹ Hào, Văn Lâm, Văn Giang, Yên Mỹ thuộc tỉnh Hưng Yên;
- Thành phố Hải Dương và các huyện Cẩm Giàng, Nam Sách, Chí Linh, Kim Thành, Kinh Môn thuộc tỉnh Hải Dương;
- Thành phố Vĩnh Yên và thị xã Phúc Yên thuộc tỉnh Vĩnh Phúc;
- Các huyện còn lại thuộc thành phố Hải Phòng;
- Thành phố Móng Cái, các thị xã Uông Bí, Cẩm Phả thuộc tỉnh Quảng Ninh;
Trang 3131
- Thành phố Đà Lạt, thị xã Bảo Lộc thuộc tỉnh Lâm Đồng;
- Thành phố Nha Trang, thị xã Cam Ranh thuộc tỉnh Khánh Hoà;
- Huyện Trảng Bàng thuộc tỉnh Tây Ninh;
- Các huyện còn lại thuộc tỉnh Bình Dương;
- Các huyện còn lại thuộc tỉnh Đồng Nai;
- Thị xã Tân An và các huyện Đức Hoà, Bến Lức, Cần Đước thuộc tỉnh Long An;
- Các quận, huyện còn lại thuộc thành phố Cần Thơ;
- Thị xã Bà Rịa và các huyện Châu Đức, Long Điền, Đất Đỏ, Xuyên Mộc thuộc tỉnh Bà Rịa – Vũng Tàu
d) Mức 650.000 đồng/tháng áp dụng đối với công ty hoạt động trên địa bàn thuộc vùng IV, bao gồm các địa bàn còn lại
Thông tư này có hiệu lực thi hành từ ngày 01 tháng 01 năm 2009
2.1.2 Hệ số lương
Hệ số lương được quy định tại bảng lương A6 Bảng lương A6 kèm theo Nghị định số 26/CP ngày 23-5-1993 của Chính phủ về việc quy định tạm thời chế độ tiền lương mới trong các doanh nghiệp Nhà Nước Lương nhân công được chia làm 4 nhóm: Nhóm 1, nhóm 2, nhóm 3, nhóm 4;
2.1.3 Cách tính mức lương lao động bình quân H
Trong hướng dẫn có ghi công thức tính toán cho mức lương lao động bình quân H:
H = gnc x (1+f) Trong đó:
gnc : Mức đơn giá tiền lương giờ công trực tiếp bình quân tương ứng với cấp bậc lương Tuỳ theo tính chất, điều kiện, các yêu cầu cụ thể về năng lực kỹ thuật và kinh nghiệm mà xác định bậc lương lao động bình quân cho phù hợp;
f: Tổng các khoản phụ cấp lương, lương phụ có tính chất ổn định, tính theo công thức sau:
f = f1 + f2 + f3Trong đó:
Trang 3232
f1 : Tổng các khoản phụ cấp lương có tính chất ổn định (kể cả các khoản hỗ trợ lương);
f2 : Lương phụ và một số chi phí có thể trả trực tiếp cho người lao động;
f3 : Hệ số điều chỉnh cho phù hợp với thị trường nhân công khu vực và đặc thù của môi trường lao động
Tuy nhiên đôi khi có thể gây nên sự khó hiểu, ví dụ như theo ví dụ về tính toán giá trị cho một website như trong hướng dẫn, mức lương tối thiểu 540.000 đ/tháng theo NĐ số 166/2007/NĐ-CP; Phụ cấp đặc thù 1.000.000 đ/tháng, tr.hợp theo QĐ số 37/2006/QĐ-UB của UBND TP Hà Nội; Công tác phí khoán 200.000 đ/tháng)
Nếu áp nguyên số liệu đó vào trong công thức thì đó sẽ là một kết quả không chính xác Theo hướng dẫn thì ta sẽ tính được H = 17.625 đồng Vậy cách tính ở đây được làm rõ hơn như sau:
Tổng các khoản phụ cấp lương có tính chất ổn định, lương phụ và một số chi phí có thể trả trực tiếp cho người lao động, hệ số điều chỉnh cho phù hợp với thị trường nhân công khu vực và đặc thù của môi trường lao động được đưa về phần trăm so với mức lương quy định theo tháng, tức là ta sẽ lấy tổng của f1 + f2 +f3 sau đó chia cho tiền lương quy định rồi nhân với 100% Tính theo giờ làm việc nên ta sẽ phải chia cho 160 vì mỗi tháng làm việc trong 160 giờ
gnc: Mức đơn giá tiền lương giờ công trực tiếp bình quân tương ứng với cấp bậc lương sẽ được tính toán bằng cách lấy lương tối thiểu nhân với hệ số lương rồi chia cho số giờ công làm việc trong tháng Theo quy định mỗi tuần làm việc 40 giờ, vậy 1 tháng sẽ có 160 giờ làm việc Trong ví dụ tiền lương làm việc một tháng là 540.000 x 3,0 = 1.620.000 đồng Suy ra trong một giờ công, người lao động ở đây được trả tiền lương là 1.620.000 / 160 = 10.125 đồng/giờ
Bây giờ ta mới lấy các kết quả đó mang áp vào công thức tính toán
H = gnc x (1+f)
H = 10.125 x (1+ (1.000.000 + 200.000)/(10.125)/160x100%) = 17.625 đồng
2.1.4 Chuyển đổi chức năng sang trường hợp sử dụng
Đối với những phân mềm có hướng phân tích thiết kế là hướng đối tượng theo ngôn ngữ UML thì việc áp dụng hướng dẫn này sẽ có nhiều thuận lợi hơn
Trang 3333
Tuy nhiên, với những phần mềm có hướng phân tích thiết kế theo hướng chức năng thì ta sẽ phải chuyển đổi từ chức năng sang trường hợp sử dụng Việc chuyển đổi từ yêu cầu chức năng sang trường hợp sử dụng phải tuân thủ đúng với yêu cầu của sản phẩm và tuân thủ các nguyên tắc của ngôn ngữ UML
Để có thể chuyển đổi từ yêu cầu chức năng sang trường hợp sử dụng, trước hết ta phải xác định các tác nhân Một tác nhân là một người hoặc một vật nào đó tương tác với hệ thống, sử dụng hệ thống Trong khái niệm "tương tác với hệ thống", ý chúng ta muốn nói rằng tác nhân sẽ gửi thông điệp đến hệ thống hoặc
là nhận thông điệp xuất phát từ hệ thống, hoặc là thay đổi các thông tin cùng với
hệ thống Nói một cách ngắn gọn, tác nhân thực hiện các Use Case Thêm một điều nữa, một tác nhân có thể là người mà cũng có thể là một hệ thống khác (ví
dụ như là một chiếc máy tính khác được nối kết với hệ thống của chúng ta hoặc một loại trang thiết bị phần cứng nào đó tương tác với hệ thống)
Khi nhận diện tác nhân, có nghĩa là chúng ta lọc ra các thực thể đáng quan tâm theo khía cạnh sử dụng và tương tác với hệ thống Sau đó chúng ta có thể thử đặt mình vào vị trí của tác nhân để cố gắng nhận ra các yêu cầu và đòi hỏi của tác nhân đối với hệ thống và xác định tác nhân cần những Use Case nào Có thể nhận diện ra các tác nhân qua việc trả lời một số các câu hỏi như sau:
+ Ai sẽ sử dụng những chức năng chính của hệ thống (tác nhân chính)? + Ai sẽ cần sự hỗ trợ của hệ thống để thực hiện những tác vụ hàng ngày của họ?
+ Ai sẽ cần bảo trì, quản trị và đảm bảo cho hệ thống hoạt động (tác nhân phụ)?
+ Hệ thống sẽ phải xử lý và làm việc với những trang thiết bị phần cứng nào?
+ Hệ thống cần phải tương tác với các hệ thống khác nào? Nhóm các hệ thống này được chia ra làm hai nhóm, nhóm kích hoạt cho mối quan hệ với hệ thống, và nhóm mà hệ thống cần phải xây dựng của chúng ta sẽ thiết lập quan hệ Khái niệm hệ thống bao gồm cả các hệ thống máy tính khác cũng như các ứng dụng khác trong chính chiếc máy tính mà hệ thống này sẽ hoạt động
+ Ai hay cái gì quan tâm đến kết quả (giá trị) mà hệ thống sẽ sản sinh ra?
Trang 3434
Sau khi xác định các tác nhân, ta phải đi tìm các Use case dựa trên các chức năng trong phân tích đã đưa ra Một Use Case là đại diện cho một chức năng nguyên vẹn mà một tác nhân nhận được Một Use Case trong ngôn ngữ UML được định nghĩa là một tập hợp của các chuỗi hành động mà một hệ thống thực hiện để tạo ra một kết quả có thể quan sát được, tức là một giá trị đến với một tác nhân cụ thể Những hành động này có thể bao gồm việc giao tiếp với một loạt các tác nhân cũng như thực hiện tính toán và công việc nội bộ bên trong hệ thống
Để xác định được các Use case ta có thể sử dụng một số tính chất tiêu biểu của Use case:
+ Một Use Case bao giờ cũng được gây ra bởi một tác nhân, được thực hiện nhân danh một tác nhân nào đó Tác nhân phải ra lệnh cho hệ thống để thực hiện Use Case đó, dù là trực tiếp hay gián tiếp Hiếm khi có tác nhân không liên quan đến việc gây ra một Use Case nào đó
+ Một Use Case phải cung cấp một giá trị cho một tác nhân Giá trị đó không phải bao giờ cũng cần thiết phải nổi trội ra ngoài, nhưng luôn phải được thấy rõ
+ Một Use Case là phải hoàn tất Một trong những lỗi thường gặp là sẻ chia một Use Case thành các Use Case nhỏ hơn, và các Use Case này thực thi lẫn nhau giống như việc gọi hàm cho một ngôn ngữ lập trình Một Use Case sẽ không được coi là hoàn tất chừng nào mà giá trị cuối cùng của nó chưa được sản sinh ra, thậm chí ngay cả khi đã xẩy ra nhiều động tác giao tiếp (ví dụ như đối thoại với người sử dụng)
Khi lập bảng chuyển đổi yêu cầu chức năng sang trường hợp sử dụng ta sẽ xếp loại mức độ cần thiết cho từng Use-case theo 3 cấp: Bắt buộc (B), Mong muốn (M), Tuỳ chọn (T)
Trang 3535
Chương 3: XÂY DỰNG CHƯƠNG TRÌNH XÁC ĐỊNH GIÁ TRỊ
PHẦN MỀM
3.1 Xác định yêu cầu
3.1.1 Xác định yêu cầu tính toán của chương trình
Yêu cầu tính toán của chương trình là đưa ra kết quả cuối cùng, kết quả này chính là giá trị của phần mềm, đơn vị là “đồng” Theo “Hướng dẫn xác định giá trị phần mềm” thì giá trị phần mềm ký hiệu là G:
G = 1,4 x E x P x H x 1,1 Với các thành phần liên quan ta sẽ phải đi tính toán được:
+ Điểm các tác nhân
+ Điểm các trường hợp sử dụng
+ Hệ số phức tạp kỹ thuật công nghệ
+ Hệ số phức tạp về môi trường
+ Mức lương lao động bình quân
Sau đó mới có thể tính ra được giá trị phần mềm G
3.1.2 Yêu cầu của chương trình
Khi xây dựng chương trình, có một số yêu cầu cơ bản được đưa ra là:
+ Chương trình phải đảm bảo tính chính xác về dữ liệu đầu vào và dữ liệu đầu ra
+ Đảm bảo chạy ổn định và nhanh, dễ sử dụng
+ Dễ dàng cài đặt, nâng cấp và chỉnh sửa
+ Phần mềm có hiệu năng lớn, không tốn nhiều tài nguyên của hệ thống + Đảm bảo vấn đề bản quyền, không sao chép
3.1.3 Yêu cầu về hệ thống
Hệ thống được dùng là hệ máy tính PC chạy hệ điều hành Microsoft Windows, cài đặt NET Framework 2.0 để có thể chạy được chương trình
3.1.4 Yêu cầu về người sử dụng
Người sử dụng chương trình, hay người tham gia trong việc xác định giá trị phần mềm phải là người có kiến thức về công nghệ thông tin, trong đó việc hiểu
Trang 363.2 Xây dựng giao diện chương trình
3.2.1 Giao diện các chức năng
Giao diện chương trình gồm có một Form chính, trong đó người sử dụng có thể lựa chọn các chức năng tính toán của chương trình từ menu chính Trong menu chính đó có:
+ menu Hệ thống: để thực hiện một số chức năng như lựa chọn tính toán cho phần mềm mới, lưu lại kết quả tính toán, xem danh sách các kết quả đã được lưu, in kết quả và chức năng thoát khỏi chương trình
+ menu Bảng tính toán: Từ menu này người sử dụng sẽ lựa chọn các menu con để thực hiện việc tính toán
+ menu Điểm tác nhân (Actor): Tính toán điểm của các tác nhân TAW + menu Điểm trường hợp sử dụng (Use case): Tính toán điểm trường hợp
+ menu Giá trị phần mềm: Tính toán giá trị phần mềm G
Ngoài ra để người dùng chương trình có thể dễ dàng sử dụng hơn, chức năng hướng dẫn sử dụng sẽ hướng dẫn người dùng tương tác với phần mềm dễ hơn Người dùng sẽ được hướng dẫn về cách nhập dữ liệu, cách lưu lại kết quả tính toán, sửa lại kết quả tính toán đã lưu, xóa kết quả tính toán đã lưu, và cách in kết quả tính toán
Trang 37“Sửa” Khi đó các dữ liệu sẽ được nạp trở lại các bảng tính toán Người sử dụng
sẽ tính toán lại với những thay đổi cần thiết
+ In ấn: Chức năng này dùng để in ra kết quả tính toán dưới dạng các bảng Người sử dụng sẽ lựa chọn phần mềm có trong danh sách đã lưu và in ra Các dữ
liệu tính toán sẽ được in ra trong bảng
3.2.3 Một số hỉnh ảnh về chương trình:
3.2.3.1 Bảng tính toán điểm các tác nhân:
Trang 3838
3.2.3.2 Bảng tính toán điểm các trường hợp sử dụng
Trang 3939
3.2.3.3 Bảng tính toán hệ số phức tạp kỹ thuật công nghệ