MỤC LỤC
MỞ ĐẦU 1
I.Đặt vấn đề . 1
II.Lý do chọn đề tài . 1
III.Hướng nghiên cứu của đề tài . 2
III.1.Về mặt lý thuyết 2
III.2.Công cụ xây dựng đề tài . 2
IV.Dự kiến kết quả đạt được . 2
V.Nội dung tóm tắt các chương tiếp theo 3
CƠ SỞ LÝ THUYẾT Error! Bookmark not defined.
VI.Giới thiệu về joomla . 1
VI.1.Joomla là gì? 1
VI.2.Các dòng phiên bản của Joomla . 1
VI.3.Kiến trúc Joomla . 1
VII.Một số khái niệm trong Joomla . 2
VII.1.Front-end và back-end . 2
VII.1.1.Front-end 2
VII.1.2.Back-end 2
VII.2.Template . 2
VII.3.Menu . 2
VII.4.Các thành phần mở rộng 3
VII.4.1.Module 3
VII.4.2.Component . 3
VII.4.3.Mambot (Plug-in) 4
VIII.Cách xây dựng một component trong Joomla 1.5 6
VIII.1.Giới thiệu mô hình MVC 6
VIII.2.Cài đặt Joomla MVC . 6
VIII.3.Tạo một component 7
VIII.3.1.Tạo một entry point 7
VIII.3.2.Tạo Controller . 8
VIII.3.3.Tạo View 9
VIII.3.4.Tạo Template . 10
VIII.3.5.Đóng gói tất cả- Tạo file hello.xml . 10
VIII.4.Bổ sung Model vào component 12
VIII.4.1.Tạo Model 12
VIII.4.2.Sử sụng Model . 13
VIII.4.3.Bổ sung file vào package . 14
VIII.5.Sử dụng cơ sở dữ liệu trong component MVC 15
VIII.5.1.Lấy dữ liệu . 15
VIII.5.2.Tạo file SQL trong quá trình cài đặt và gỡ bỏ component 16
VIII.5.3.Cập nhật file cài đặt 17
VIII.6.Tạo giao diện quản trị trong MVC 19
VIII.6.1.Tạo Framework cơ sở . 19
VIII.6.2.Model Hellos . 20
VIII.6.3.View Hellos . 22
VIII.6.4.Template hellos . 23
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 25
IX.Phân tích hệ thống thông tin 25
IX.1.Sơ đồ Use Case 26
IX.1.1.Use Case “Projects Management” 26
IX.1.2.Use Case “Tasks Management” 26
IX.1.3.Use Case “Delivery Management” . 27
IX.1.4.Use Case “Requirements Management” 27
IX.1.5.Use Case “Design Management” 28
IX.1.6.Use Case “Coding Management” . 28
IX.1.7.Use Case “Risks Management” 29
IX.1.8.Use Case “File Manage” 29
IX.1.9.Use Case “Calendar Management” 30
IX.1.10.Use Case “Board Management” . 30
IX.1.11.Use Case “Profile Management” 31
IX.1.12.Use Case “User Management” 31
IX.2.Danh sách Actor, Phân Quyền và Use Case 31
IX.2.1.Actor . 31
IX.2.2.Use Case . 32
IX.3.Đặc tả chi tiết . 35
IX.3.1.Use Case “Login” 35
IX.3.2.Use Case “Projects Management” 36
I.1.2.Use Case “Tasks Management” 38
I.1.2.Use Case “Delivery Management” . 39
I.1.2.Use Case “Requirements Management” 41
I.1.2.Use Case “Design Management” 42
I.1.3.Use Case “Coding Management” . 44
I.1.4.Use Case “Risks Management” 45
I.1.5.Use Case “File Manage” 46
I.1.2.Use Case “Calendar Management” 48
I.1.3.Use Case “Board Management” . 49
I.1.4.Use Case “Profile Management” 51
I.1.5.Use Case “User Management” 51
I.2.Sơ đồ tuần tự 53
I.2.1.Chức năng “Login” . 53
I.2.2.Chức năng “Projects Management” . 53
I.2.3.Chức năng “Tasks Management” . 55
I.2.4.Chức năng “Delivery Management” 56
I.2.5.Chức năng “Requirements Management” . 57
I.2.6.Chức năng “Design Management” 58
I.2.7.Chức năng “Coding Management” . 59
I.2.8.Chức năng “Risks Management” 60
I.2.9.Chức năng “File Manage” . 61
I.2.10.Chức năng “Calendar Management” 62
I.2.11.Chức năng “Board Management” . 63
I.2.12.Chức năng “User Management” . 64
I.3.Thiết kế hệ thống 65
I.3.1.Tổ chức dữ liệu 65
XÂY DỰNG CHƯƠNG TRÌNH VÀ KẾT QUẢ THỰC HIỆN . 76
I.Công cụ và môi trường phát triển . 76
I.Một số kết quả đạt được . 76
I.1.Màn hình khởi động . 76
I.2.Màn hình “Tasks Management” . 77
II.Màn hình “Delivery Management” 77
II.1.Màn hình “Requirements Management” . 78
II.2.Màn hình “Design Management” . 78
II.3.Mành hình “Coding Management” 79
II.4.Màn hình “Risks Management” 79
II.5.Màn hình “Upload File” 80
II.6.Màn hình “Calendar Management” . 80
II.7.Màn hình “Update profile” . 81
II.8.Màn hình “User Management” . 81
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN . 82
CHƯƠNG 1
MỞ ĐẦU
I. Đặt vấn đề
Ngày nay, các ứng dụng mã nguồn mở hầu như đáp ứng đầy đủ các yêu cầu sử dụng của doanh nghiệp. Từ việc triển khai các trang web với Joomla, diễn đàn với PhpBB, hệ thống elearning Moodle cho đến các ứng dụng quản lý khách hàng SugarCRM, quản lý dự án . Một trong những thuận lợi đầu tiên của việc ứng dụng mã nguồn mở là tiết kiệm chi phí. Ngoài ra, khi ứng dụng phần mềm chạy trên nền web người dùng sẽ dễ dàng truy cập và sử dụng bằng các trình duyệt như Firefox hay IE mà không cần phải cài đặt gì thêm.
Có nhiều chương trình mã nguồn mở khác nhau, chúng tôi chọn tìm hiểu về hệ thống quản lý tin Joomla CMS vì Joomla được sử dụng ở khắp mọi nơi trên thế giới, từ những website cá nhân cho tới những hệ thống website doanh nghiệp có tính phức tạp cao, cung cấp nhiều dịch vụ và ứng dụng. Joomla có thể dễ dàng cài đặt, dễ dàng quản lý và có độ tin cậy cao. Joomla giúp mọi người có thể phát triển việc kinh doanh, học tập, giảng dạy, giới thiệu, quảng bá hình ảnh, dịch vụ, sản phẩm của mình, của công ty, của trường mình một cách tốt nhất, hiệu quả nhất với chi phí thấp nhất Ngoài ra, chương trình này còn được hỗ trợ bởi một cộng đồng rộng lớn, đáp ứng các yêu cầu về an toàn và bảo mật thông tin .
Để tìm hiểu mô hình hoạt động và cách xây dựng một ứng dụng trên nền Joomla, chúng tôi xin giới thiệu đề tài « Xây dựng component quản lý dự án phần mềm cho website Joomla »
Mặc dù ứng dụng đã triển khai được phần lớn các yêu cầu chính trong việc quản lý một dự án phần mềm, tuy nhiên việc xây dựng một chương trình quản lý dự án là khá phức tạp. Do đó ứng dụng này không tránh khỏi những thiếu sót, rất mong nhận được nhiều ý kiến nhận xét của thầy cô và các bạn để chúng tôi có thể rút kinh nghiệm cho việc xây dựng những ứng dụng thực tế sau này.
II. Lý do chọn đề tài
Trong thuật ngữ của chuyên ngành Kĩ nghệ [NTB1] phần mềm, Quản lý dự án phần mềm là các hoạt động trong lập kế hoạch, giám sát và điều khiển tài nguyên dự án, thời gian thực hiện, các rủi ro trong dự án và cả quy trình thực hiện dự án; nhằm đảm bảo thành công cho dự án. Khi triển khai một dự án phần mềm thì các vấn đề sau thường xảy ra: thời gian thực hiện quá mức dự kiến, kết quả của dự án không như mong đợi .Để tránh những vấn đề đó xảy ra đòi hỏi người quản lý phải làm tốt về:
- Quản lý thời gian: lập lịch, kiểm tra đối chiếu quá trình thực hiện dự án với lịch trình, điều chỉnh lịch trình khi cần thiết
- Quản lý nhân lực: xác định, điều phối nhân lực cho hợp lý
- Quản lý sản phẩm: thêm, bớt các chức năng phù hợp với yêu cầu của khách hàng
- Quản lý rủi ro: xác định, phân tích rủi ro và đề xuất giải pháp khắc phục.
Xuất phát từ những yêu cầu trên, chúng tôi đã chọn đề tài « Xây dựng component quản lý dự án phần mềm cho website Joomla » [NTB2] làm đề tài tốt nghiệp. Việc xây dựng một ứng dụng như vậy nhằm áp dụng những kiến thức mà chúng tôi đã được học ở trường trong thời gian qua vào thực tiễn với mong muốn sẽ làm cho công việc quản lý dự án doanh nghiệp phần mềm sẽ thuận tiện hơn. Chương trình được viết trên nền web nên những người tham gia dự án chỉ cần truy cập vào website của công ty để lấy những thông tin về dự án, trao đổi về công việc. Hơn nữa người quản lý vẫn có thể xem xét quá trình làm dự án, trực tiếp quản lý dự án đó khi vắng mặt ở công ty.
III. Hướng nghiên cứu của đề tài
III.1. Về mặt lý thuyết
- Tìm hiểu về CMS Joomla, ngôn ngữ PHP, MySQL, cách xây dựng component cho website Joomla.
- Tìm hiểu về các thao thác cơ bản trong việc quản lý dự án nói chung và quản lý dự án phần mềm nói riêng.
- Đưa ra một số định hướng để phát triển đề tài.
III.2. Công cụ xây dựng đề tài
- Công cụ nghiên cứu cơ sở lý thuyết: Các tài liêu tham khảo về ngôn ngữ PHP, MySQL, Joomla, quản lý dự án .
- Công cụ thiết kế phần mềm: trình duyệt Firefox, Internet Explore, Joomla 1.5.9, Jcode studio for Joomla, StarUML .
IV. Dự kiến kết quả đạt được
Xậy dựng component cho website Joomla thực hiện một số công việc cơ bản của quản lý dự án phần mềm như:
- Hiển thị thông tin các dự án mà công ty đang thực hiện. Chương trình cho phép admin và trưởng dự án trực tiếp chỉnh sửa, cập nhật thông tin về dự án trên đó. Nhân viên sau khi xem thông tin về dự án nếu muốn tham gia có thể gởi yêu cầu và nếu đựợc admin hay trưởng dự án đồng ý thì sẽ trở thành thành viên của dự án.
- Trưởng dự án có thể chia một dự án ra thành nhiều task nhỏ, mỗi task có một thời hạn deadline riêng, do một nhân viên trực tiếp chịu trách nhiệm để tiện cho việc quản lý
- Mỗi dự án phần mềm được chia ra thành những phần cụ thể như :
Task: Mỗi dự án chia ra thành các công việc nhỏ hơn. Mỗi công việc có một thời hạn deadline riêng.
Requirement: đưa ra những yêu cầu của khách hàng về dự án phần mềm đó
Design: đưa ra các bản thiết kế cho phần mềm sao cho phù hợp với requirement, mỗi requirement có thể có nhiều mẫu design khác nhau
Coding: phần này để quản lý việc coding của dự án, ứng với mỗi design thì có một hoặc nhiều phần coding khác nhau
Risks: là nơi đưa ra những rủi ro dự kiến được của dự án, hậu quả và cách khắc phục .
Delivery: trưởng dự án đưa ra thông tin về kế hoạch chuyển giao cho khách hàng ở đây để mọi người tham khảo và điều chỉnh kế hoạch làm việc của mình cho kịp tiến độ
- Quản lý file: Các thành viên của dự án có thể đưa những tài liệu có liên quan lên đây cho mọi người. Chương trình cho phép tạo một thư mục mới và liên kết với task có liên quan.
- Diễn đàn thảo luận nội bộ của các thành viên trong dự án: là nơi để các thành viên trong dự án đưa lên những ý kiến của mình, những khó khăn khi thực hiện để trưởng dự các và các thành viên khác xem xét, cân nhắc, đưa ra ké hoạch làm việc phù hợp.
- Quản lý thành viên: Mỗi nhân viên phải có tài khoản đăng kí trên website của công ty. Nếu muốn nhân viên đó trở thành thành viên của dự án thì admin hay trưởng dự án sẽ dùng tên tài khoản mà nhân viên đã đăng kí hoặc địa chỉ mail của nhân viên để add vào dự án
V. Nội dung tóm tắt các chương tiếp theo
Chương 1: Cơ sở lý thuyết[NTB3]
Chương 2: Phân tích và thiết kế hệ thống
Chương 3: Xây dựng chương trình và kết quả thực hiện
Chương 4: Kết luận
96 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 3302 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Đề tài Xây dựng component quản lý dự án phần mềm cho website joomla, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
t cách dễ dàng và rất quan trọng.
Bây giờ chúng ta đã có một tham chiếu đến đối tượng CSDL, Chúng ta có thể lấy dữ liệu. Điều này được thực qua hai bước:
Lưu trữ câu truy vấn của vào đối tượng CSDL
Tải kết quả về
Code của phương thức getGreeting() bây giờ sẽ như sau:
function getGreeting()
{
$db =& JFactory::getDBO();
$query = 'SELECT greeting FROM #__hello';
$db->setQuery( $query );
$greeting = $db->loadResult();
return $greeting;
}
Trong đoạn mã trên ‘hello’ là tên của bảng trong CSDL mà chúng ta sẽ tạo ra trong phần sau. Và ‘greeting’ là tên của trường lưu trữ câu chào mừng.
Phương thức $db→loadResult() sẽ chạy câu lệnh truy vấn CSDL đã được lưu trữ và trả về trường đầu tiên của dòng đầu tiên trong kết quả. Xem JDatabase API reference để có các thông tin nhiều hơn về các phương thức khác trong lớp JDatabase.
Tạo file SQL trong quá trình cài đặt và gỡ bỏ component
Joomla! installer có xây dựng sẵn việc hỗ trợ đối với việc chạy các câu truy vấn trong quá trình cài đặt component. Tất cả các câu truy vấn này được lưu trữ trong một file text chuẩn.
Chúng ta sẽ có 3 câu truy vấn trong file cài đặt: việc đầu tiên sẽ thực hiện xóa bảng trong trường hợp nó đã tồn tại, tiếp theo thực hiện việc tạo ra bảng với các trường phù hợp, và cuối cùng là chèn dữ liệu vào bảng vừa tạo.
Dưới đây là các câu truy vấn của chúng ta:
DROP TABLE IF EXISTS `#__hello`;
CREATE TABLE `#__hello` (
`id` int(11) NOT NULL auto_increment,
`greeting` varchar(25) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT DEFAULT CHARSET=utf8;
INSERT INTO `#__hello` (`greeting`) VALUES ('Hello, World!'),
('Bonjour, Monde!'),
('Ciao, Mondo!');
Joomla! sẽ thay thế các tiền tố #_ trong tên bảng bởi tiền tố đã được xác định trong quá trình cài đặt. Đối với hầu hết các bản cài đặt, bảng này sẽ trở thành jos_hello. Điều này cho phép nhiều bản cài đặt joomla có thể sử dụng chung CSDL, và ngăn chặn các xung đột với các ứng dụng khác sử dụng cùng tên bảng (ví dụ, hai ứng dụng có thể chia sẻ chung một CSDL, nhưng cả hai đều cần một bảng ‘user’, với cách này vấn đề sẽ được giải quyết).
Chúng ta đã xác định hai trường trong CSDL. Trường đầu tiên là ‘id’ đóng vai trò là khóa chính. Khóa chính trong một bảng của CSDL là trường dùng để xác định duy nhất một bản ghi trong bảng. Nó thường được sử dụng để tìm kiếm các hàng trong CSDL. Trường còn lại là ‘greeting’. Đây là trường lưu câu chào mừng được trả lại bởi truy vấn mà chúng ta đã sử dụng ở trên. Các câu truy vấn của chúng ta sẽ được lưu trong file install.utf.sql.
Tạo ra file SQL để gỡ bỏ cài đặt
Joomla! sẽ quản lý việc xóa các file và các thư mục được tạo ra trong quá trình cài đặt, nhưng phải bổ sung các câu truy vấn sẽ loại bỏ các bảng đã được thêm vào CSDL. Trong ví dụ, chúng ta chỉ cần một câu truy vấn sau để xóa nó.
DROP TABLE IF EXISTS `#__hello`;
Câu truy vấn này sẽ được lưu trữ trong file uninstall.utf.sql.
Cập nhật file cài đặt
Chúng ta cần phải thay đổi một vài thứ trong file cài đặt XML. Đầu tiên, chúng ta cần bổ sung hai file mới vào danh sách các file. File cài đặt SQL sẽ phải đưa vào trong thư mục admin. Thứ hai, chúng ta cần phải báo cho trình cài đặt chạy các câu truy vấn trong các file của chúng ta trong quá trình cài đặt và quá trình gỡ bỏ.
File XML mới của chúng ta sẽ như sau:
<!DOCTYPE install SYSTEM "
install.dtd">
Hello
2007 02 22
John Doe
john.doe@example.org
Copyright Info
License Info
Component Version String
Description of the component ...
index.html
hello.php
controller.php
views/index.html
views/hello/index.html
views/hello/view.html.php
views/hello/tmpl/index.html
views/hello/tmpl/default.php
models/hello.php
install.sql
uninstall.sql
Hello World!
index.html
admin.hello.php
install.sql
uninstall.sql
Chú ý đến hai thuộc tính xuất hiện trong các thẻ nằm trong các phần và : charset và driver. Charset là kiểu charset được sử dụng. Chỉ có charset hợp lệ là utf8. Nếu bạn muốn tạo ra các file cài đặt cho CSDL không phải là utf8 bạn sẽ bỏ qua thuộc tính này. Thuộc tính driver xác định CSDL nào các câu truy vấn được viết cho. Hiện tại, thuộc tính này chỉ có thể là mysql, nhưng các phiên bản joomla trong tương lai có thể có nhiều dạng CSDL hơn.
Tạo giao diện quản trị trong MVC
Tạo Framework cơ sở
Frameword cơ sở của panel quản trị cũng tương tự như phần site. Điểm vào chính cho phần quản trị là file admin.hello.php. File này giống y hệt file hello.php được sử dụng trong phần site ngoại trừ tên của controler mà nó tải sẽ được thay đổi thành HellosController. Ngoài ra, controler mặc định được gọi là controller.php và file này giống y hệt controler mặc định trong phần site, ngoại trừ tên của controler được gọi là HellosController thay vì HelloController. Sự thay đổi này để JControler theo mặc định sẽ tải hellos view, view này sẽ hiển thị một danh sách các câu chào mừng.
Dưới đây là code của admin.hello.php
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
require_once( JPATH_COMPONENT.DS.'controller.php' );
if($controller = JRequest::getWord('controller')) {
$path = JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php';
if (file_exists($path)) {
require_once $path;
} else {
$controller = '';
}
}
$classname = 'HellosController'.$controller;
$controller = new $classname( );
$controller->execute( JRequest::getVar( 'task' ) );
$controller->redirect();
?>
Chúng sẽ bắt đầu với view hellos và model hellos. Đầu tiên là model hellos.
Model Hellos
Model Hellos sẽ rất đơn giản. Hiện tại, công việc mà chúng ta cần chỉ là truy vấn để nhận được một danh sách của các câu chào mừng từ CSDL. Công việc này sẽ được thực hiện bằng cách gọi phương thức getData().
Lớp JModel có một phương thức protected được xây dựng sẵn _getList(). Phương thức này có thể được sử dụng để đơn giản hóa tác vụ truy vấn để nhận được một danh sách các bản ghi từ CSDL. Đơn giản là chúng ta cần truyền cho nó câu truy vấn và nó sẽ trả lại danh sách các bản ghi.
Trong tương lai, có thể chúng ta lại muốn sử dụng câu truy vấn trong một phương thức khác. Vì vậy, ở đây chúng ta sẽ tạo ra một phương thức private _buildQuery() sẽ trả lại câu truy vấn sẽ được truyền vào phương thức _getList(). Điều này sẽ tạo ra khả năng thay đổi câu truy vấn khi nó được đặt trong một tình huống khác.
Do đó trong lớp của chúng ta sẽ có hai phương thức: getData() và _buildQuery(). Phương thức _buidQuery đơn giản là trả về câu truy vấn. Code của nó như sau:
function _buildQuery()
{
$query = ' SELECT * '
. ' FROM #__hello '
;
return $query;
}
Phương thức getData() nhận câu truy vấn và trả lại danh sách các bản ghi từ CSDL. Bây giờ có thể xảy ra tình huống là chúng ta cần nhận được danh sách này 2 lần trong việc tải một trang. Thật là lãng phí khi truy vấn CSDL 2 lần. Bởi vậy chúng ta sẽ phải làm cho phương thức này lưu trữ dữ liệu trong một thuộc tính protected để trong các yêu cầu tiếp theo, nó chỉ đơn giản là trả về dữ liệu mà nó đã lấy được. Thuộc tính này sẽ được gọi là _data.
Dưới đây là code của phương thức getData()
function getData()
{
// Lets load the data if it doesn't already exist
if (empty( $this->_data ))
{
$query = $this->_buildQuery();
$this->_data = $this->_getList( $query );
}
return $this->_data;
}
Code đầy đủ của model sau khi hoàn thành như sau:
<?php
// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die();
jimport( 'joomla.application.component.model' );
class HellosModelHellos extends JModel
{
var $_data;
function _buildQuery()
{
$query = ' SELECT * '
. ' FROM #__hello '
;
return $query;
}
function getData()
{
// Lets load the data if it doesn't already exist
if (empty( $this->_data ))
{
$query = $this->_buildQuery();
$this->_data = $this->_getList( $query );
}
return $this->_data;
}
}
File này được lưu lại thành models/hellos.php.
View Hellos
Bây giờ chúng ta đã có một model để nhận dữ liệu, chúng ta cần hiển thị nó. View hellos này sẽ khá giống với view trong phần site. Model của chúng ta được tự động cài đặt trên site, bởi vậy nó nằm trong phần quản trị. Các phương thức bắt đầu bằng ‘get’ trong model có thể được truy cập bằng việc sử dụng phương thức get() của lớp JView. Bởi vậy view của chúng ta sẽ có 3 dòng. Một để lấy dữ liệu từ model, một để đẩy dữ liệu lên template, và một gọi phương thức display để hiển thị. Bởi vậy chúng ta có code như sau:
<?php
// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die();
jimport( 'joomla.application.component.view' );
class HellosViewHellos extends JView
{
function display($tpl = null)
{
JToolBarHelper::title( JText::_( 'Hello Manager' ),
'generic.png' );
JToolBarHelper::deleteList();
JToolBarHelper::editListX();
JToolBarHelper::addNewX();
// Get data from the model
$items =& $this->get( 'Data');
$this->assignRef( 'items', $items );
parent::display($tpl);
}
}
File này được lưu thành views/hellos/view.html.php.
Template hellos
Template sẽ lấy dữ liệu được đưa đến từ view và đưa dữ liệu đó ra đầu ra để hiển thị. Chúng ta sẽ hiển thị kết quả ở đầu ra trong một bảng đơn giản. Trong khi template ở phần site là rất đơn giản, thì trong trang quản trị chúng ta sẽ cần mở rộng một chút để xử lý vòng lặp thông qua dữ liệu.
Dưới đây là code trong template của chúng ta:
<?php
$k = 0;
for ($i=0, $n=count( $this->items ); $i < $n; $i++)
{
$row =& $this->items[$i];
?>
">
id; ?>
greeting; ?>
<?php
$k = 1 - $k;
}
?>
Template này được lưu thành views/hellos/tmpl/default.php.
CHƯƠNG 3
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Trình bày kết quả phân tích và thiết kế bài toán gồm: phân tích chức năng như sơ đồ UseCase, sơ đồ tuần tự; thiết kế như sơ đồ lớp; giao diện,…)
Phân tích hệ thống thông tinTrước khi phân tích nên mô tả lại một cách chi tiết bài tians cho người đọc hiểu rỏ yêu cầu
Dưới đây là sơ đồ mô tả tổng quát chức năng của hệ thống quản lý dự án.
Hình 1: Sơ đồ tổng quát của hệ thống
Sơ đồ Use Case
Use Case “Projects Management”
Hình 2: Sơ đồ Use Case “Projects Management”
Use Case “Tasks Management”
Hình 3: Sơ đồ Use Case “Tasks Management”
Use Case “Delivery Management”
Hình 4: Sơ đồ Use Case “Delivery Management”
Use Case “Requirements Management”
Hình 5: Sơ đồ Use Case “Requirements Management”
Use Case “Design Management”
Hình 6: Sơ đồ Use Case “Design Management”
Use Case “Coding Management”
Hình 7: Sơ đồ Use Case “Coding Management”
Use Case “Risks Management”
Hình 8: Sơ đồ Use Case “Risks Management”
Use Case “File Manage”
Hình 9: Sơ đồ Use Case “File Manage”
Use Case “Calendar Management”
Hình 10: Sơ đồ Use Case “Calendar Management”
Use Case “Board Management”
Hình 11: Sơ đồ Use Case “Board Management”
Use Case “Profile Management”
Hình 12: Sơ đồ Use Case “Profile Management”
Use Case “User Management”
Hình 13: Sơ đồ Use Case “User Management”
Danh sách Actor, Phân Quyền và Use Case
Actor
Có 3 loại User sử dụng hệ thống: Super Administrator, Project Manager và Member. Chúng được phân quyền như sau:
Super Administrator
Là người quản trị hệ thống hệ thống Joomala. Vì vậy nó có đầy đủ quyền trên component này.
Project Manager
Nhiệm vụ của Project Manager là quản lý dự án . Do vậy User này các quyền như Super Administrator ngoại trừ chức năng tạo dự án mới (create project).
Member
Là thành viên tham gia dự án và chỉ có quyền trên một số chức năng sau:
Section
Quyền
Projects
View projects
Tasks
View tasks
Write comments
Delivery
View
Requirements
View
Design
View
Coding
View
Risks
View
File Manage
Create folder
Upload file
Download file
Calendar
View month
View week
View date
Profile
View profile
Update profile
Board
Create topics
Reply
Bảng 1: Các chức năng của member
Use Case
Hệ thống gồm có các Use Case sau:
Section
Stt
Use Case
Mô tả
Projects
View
Cho phép người dùng xem các dự án và các thông tin liên quan.
Create projects
Khởi tạo một dự án mới và lúc này nó ở trạng thái Active (đang hoạt động).
Edit projects
Chỉnh sửa các thông tin của dự án.
Delete projects
Xóa dự án.
Archive project
Sau khi dự án kết thúc, ta có thể lưu trữ lại bằng cách chuyển sang trạng thái Archive
Search projects
Tìm kiếm các dự án theo tên hoặc theo trạng thái của nó.
Tasks
View
Cho phép xem thông tin về task như: người được phân bổ, tiến trình,độ ưu tiên,....
Create tasks
Tạo mới một task.
Edit tasks
Chỉnh sửa các thông tin của task
Delete tasks
Xóa task.
Write comments
Viết lời bình cho task.
Edit comments
Chỉnh sửa lời bình.
Delete comments
Xóa lời bình.
Search tasks
Tìm kiếm các task theo: tên, người được phân bổ,trạng thái, độ ưu tiên.
Delivery
View
Cho phép xem thông tin thời gian chuyển giao các element cho khách hàng.
Create elements
Tạo mới element.
Edit elements
Chỉnh sửa các thông tin của element.
Delete elements
Xóa element.
Search element
Tìm kiếm element.
Requirements
View
Cho phép xem các thông tin về yêu cầu của khách hàng.
Create requirements
Tạo mới requirement.
Edit requirements
Chỉnh sửa requirement.
Delete requirements
Xóa requirement.
Search requirements
Search requirement.
Design
View
Xem thông tin củacác module được thiết kế dựa trên các requirement của khách hàng.
Create module
Tạo mới module.
Edit module
Chỉnh sửa module.
Delete module
Xóa module.
Search module
Tìm kiếm module theo: tên, người được phân bổ, trạng thái của module.
Coding
View
Xem thông tin về module được coding dựa theo design.
Create module
Tạo mới module.
Edit module
Chỉnh sửa module.
Delete module
Xóa module.
Search module
Tìm kiếm module theo: name, người được phân bổ, trạng thái của nó.
Risks
View
Xem thông tin về các nguy cơ có thể xảy ra trong quá trình làm dự án.
Create risks
Tạo mới risk
Edit risks
Chỉnh sửa risk.
Delete risks
Xóa risk.
Search risks
Tìm kiếm risks.
File Manage
Create folder
Tạo mới thư mục.
Upload file
Cho phép upload tệp tin từ máy lên server.
Download
Cho phép download file về máy.
Edit folder
Chỉnh sửa thư mục.
Edit file
Chỉnh sửa file
Move
Chuyển file hoặc folder đến folder khác.
Delete folder
Xóa thư mục.
Delete file
Xóa tệp tin.
Calendar
Create event
Tạo mới một sự kiện (event).
Edit event
Chỉnh sửa thông tin của event.
Delete event
Xóa event.
View month
Cho phép xem các event theo tháng.
View week
Cho phép xem các event theo tuần.
View date
Cho phép xem các event theo ngày.
Board
Create topics
Cho phép tạo chủ đề để mọi người tham gia thảo luận.
Reply
Tham gia thảo luận các topic bằng cách hồi âm (reply).
Edit topics
Chỉnh sửa topic.
Edit replies
Chỉnh sửa reply
Delete topics
Xóa topic.
Delete replies
Xóa reply.
Profile
View profile
Cho phép xem thông tin cá nhân của user.
Update profile
Cập nhật thông tin của user.
User
Create user
Tạo mới user,chức năng này sẽ tạo mới một user và được thêm vào như là thành viên của dự án.
Invite user
Mời user tham gia vào dự án.
Edit user
Chỉnh sửa thông tin user.
Delete user
Xóa user.
Bảng 2: Danh sách các Use Case
Đặc tả chi tiết
Use Case “Login”
Mô tả
Use Case này cho phép Super Administrator, Project Manager hoặc là Member đăng nhập vào hệ thống.
Các luồng sự kiện chính
Use Case này bắt đầu khi người dùng đăng nhập vào hê thống Joomla và click vào liên kết đến component Quan Ly Du An.
Màn hình đăng nhập hiện lên.
Màn hình yêu cầu User muốn đăng nhập nhập vào username và password.
User xác nhận đăng nhập vào hệ thống.
Hệ thống kiểm tra xem username và password có đúng hay không.
Nếu đúng hệ thống sẽ thông báo đăng nhập thành công và cho user vào hệ thống với quyền tương ứng. Use Case kết thúc.
Các luồng sự kiện khác
Nếu User không muốn đăng nhập vào hệ thống thì UseCase này kết thúc.
Nếu username hoặc password không đúng hê thống sẽ thông báo lỗi.
Các yêu cầu đặc biệt
Không có
Điều kiện trước đó
Không có
Yêu cầu sau đó
Nếu Use Case này thành công thì hệ thống cho phép User đăng nhập vào hệ thống với quyền tương ứng.
Use Case “Projects Management”
Mô tả
Use Case này cho phép User thêm mới, cập nhật, lưu trữ ,xóa và tìm kiếm project tùy vào quyền mà User đã đăng nhập vào hệ thống.
Các luồng sự kiện chính
Use Case này bắt đầu khi User muốn thêm, cập nhật, lưu trữ, xóa và tìm kiếm project.
Hệ thống hiển thị màn hình cho phép User thêm, cập nhật, lưu trữ, xóa, tìm kiếm.
Nếu User chọn khởi tạo mới một project:
Hệ thống sẽ xuất hiện form để User nhập thông tin project.
User nhập thông tin tạo dự án mới: Project name, Project type, Development cycles, Client name, PM name,…
Nếu User chọn chứa năng “Save” và thông tin hợp lệ thì hệ thống sẽ cập nhật project này vào CSDL và Use Case này kết thúc.
Nếu User đánh dấu project và chọn cập nhật thì:
Hệ thống sẽ hiển thị form cập nhật project.
Nếu User chọn nút “Save” hoặc Apply” và thông tin hợp lệ thì hệ thống sẽ cập nhật thông tin project.
Nếu User đánh dấu project và chọn lưu trữ thì hệ thống sẽ chuyển trạng thái của project từ Active sang Archive.
Nếu User chọn project và chọn xóa thì:
Hệ thống sẽ đưa ra bảng thông báo để xác nhận.
Nếu User chọn “Yes” hệ thống sẽ xóa project khỏi CSDL.
Nếu User nhập tên project, chọn trạng thái và chọn “OK” thì hệ thống sẽ đưa ra danh sách các project phù hợp với nội dung tìm kiếm nhất.
Các luồng sự kiện khác
Ở luồng sự kiện tạo mới project:
Nếu User chọn chức năng “Save” mà chưa nhập tên của project thì hệ thống sẽ đưa ra thông báo yêu cầu nhập tên project.
Nếu User chọn chức năng “Cancel” thì Use Case này kết thúc.
Ở luồng sự kiện cập nhật project:
Nếu PM chọn nút “Save” hoặc Apply” mà thiếu tên project thì hệ thống sẽ đưa ra thông báo yêu cầu nhập tên project.
Nếu PM chọn nút “Cancel” thì Use Case này sẽ kết thúc.
Ở luồng sự kiện xóa project nếu User chọn “No” thì Use Case này kết thúc.
Các yêu cầu đặc biệt
Không có.
Điều kiện trước đó
User đăng nhập thành công vào hệ thống.
Các chức năng chỉ được thực hiện theo đúng quyền của User.
Yêu cầu sau đó
Hiển thị lại kết quả lên màn hình.
Use Case “Tasks Management”
Mô tả
Use Case này cho phép User thêm mới, cập nhật, xóa, tìm kiếm task. Ngoài ra còn co thêm các chức năng viết, cập nhật, xóa comment. Các chức năng này được thực hiện tùy vào quyền mà User đã đăng nhập vào hệ thống.
Các luồng sự kiện chính
Use Case này bắt đầu khi User muốn thêm, cập nhật, xóa….
Hệ thống hiển thị màn hình cho phép User thêm, cập nhật, lưu trữ, xóa, tìm kiếm,….
Nếu User chọn tạo mới task:
Hệ thống sẽ xuất hiện form để User nhập thông tin task.
User nhập thông tin task: Task name, Status,…
Nếu User chọn chứa năng “Save” và thông tin hợp lệ thì hệ thống sẽ cập nhật task này vào CSDL và Use Case này kết thúc.
Nếu User đánh dấu task và chọn cập nhật thì:
Hệ thống sẽ hiển thị form cập nhật task.
Nếu User chọn nút “Save” hoặc Apply” và thông tin task sẽ được cập nhật.
Nếu User chọn task và chọn xóa thì:
Hệ thống sẽ đưa ra bảng thông báo để xác nhận.
Nếu User chọn “Yes” hệ thống sẽ xóa task khỏi CSDL.
Nếu User nhập tên project, chọn trạng thái, …. và chọn “OK” thì hệ thống sẽ đưa ra danh sách các task phù hợp với nội dung tìm kiếm nhất.
Nếu User đánh dấu task và chọn comments thì hệ thống hiển thị màn hình quản lý comment gồm các chức năng sau:
User nhập nội dung của comment và “Save”.
User chọn comment và “Edit”.
User chọn comment va “Delete”.
Các luồng sự kiện khác
Ở luồng sự kiện tạo mới task:
Nếu User chọn chức năng “Save” mà chưa nhập tên của task thì hệ thống sẽ đưa ra thông báo yêu cầu nhập tên task.
Nếu User chọn chức năng “Cancel” thì Use Case này kết thúc.
Ở luồng sự kiện cập nhật task:
Nếu User chọn nút “Save” hoặc Apply” mà thiếu tên task thì hệ thống sẽ đưa ra thông báo yêu cầu nhập tên task.
Nếu User chọn nút “Cancel” thì Use Case này sẽ kết thúc.
Ở luồng sự kiện xóa task nếu User chọn “No” thì Use Case này kết thúc.
Ở luồng sự kiện comments nếu User chọn “Back” thì Use Case này kết thúc.
Các yêu cầu đặc biệt
Không có.
Điều kiện trước đó
User đăng nhập thành công vào hệ thống.
User phải chọn workspace. Đó chính là project chứa các task này
Các chức năng chỉ được thực hiện theo đúng quyền của User.
Yêu cầu sau đó
Hiển thị lại kết quả lên màn hình.
Use Case “Delivery Management”
Mô tả
Use Case này dùng để quản lý việc chuyển giao các thành phần của project đến khách hàng gồm: thêm mới, cập nhật, xóa, tìm kiếm các phần tử (element) sẽ được giao. Các chức năng này được thực hiện tùy vào quyền mà User đã đăng nhập vào hệ thống.
Các luồng sự kiện chính
Use Case này bắt đầu khi User muốn thêm, cập nhật, xóa, tìm kiếm các element.
Hệ thống hiển thị màn hình cho phép User thêm, cập nhật, lưu trữ, xóa, tìm kiếm.
Nếu User chọn tạo mới một element:
Hệ thống sẽ xuất hiện form để User nhập thông tin của element.
User nhập thông tin của element.
Nếu User chọn chứa năng “Save” và thông tin hợp lệ thì hệ thống sẽ cập nhật element này vào CSDL và Use Case này kết thúc.
Nếu User đánh dấu element và chọn cập nhật thì:
Hệ thống sẽ hiển thị form cập nhật cho element.
Nếu User chọn nút “Save” hoặc Apply” và thông tin của element sẽ được cập nhật.
Nếu User chọn element và chọn xóa thì:
Hệ thống sẽ đưa ra bảng thông báo để xác nhận.
Nếu User chọn “Yes” hệ thống sẽ xóa element khỏi CSDL.
Nếu User nhập tên element …. và chọn “OK” thì hệ thống sẽ đưa ra danh sách các element phù hợp với nội dung tìm kiếm nhất.
Các luồng sự kiện khác
Ở luồng sự kiện tạo mới element:
Nếu User chọn chức năng “Save” mà chưa nhập tên của element thì hệ thống sẽ đưa ra thông báo yêu cầu nhập tên element.
Nếu User chọn chức năng “Cancel” thì Use Case này kết thúc.
Ở luồng sự kiện cập nhật element:
Nếu User chọn nút “Save” hoặc Apply” mà thiếu tên element thì hệ thống sẽ đưa ra thông báo yêu cầu nhập tên element.
Nếu User chọn nút “Cancel” thì Use Case này sẽ kết thúc.
Ở luồng sự kiện xóa element nếu User chọn “No” thì Use Case này kết thúc.
Các yêu cầu đặc biệt
Không có.
Điều kiện trước đó
User đăng nhập thành công vào hệ thống.
User phải chọn workspace.
Các chức năng chỉ được thực hiện theo đúng quyền của User.
Yêu cầu sau đó
Hiển thị lại kết quả lên màn hình.
Use Case “Requirements Management”
Mô tả
Use Case này dùng để quản lý các yêu cầu (requirement) trong dự án mà khách hàng đưa ra gồm các chức năng: thêm mới, cập nhật, xóa, tìm kiếm. Các chức năng này được thực hiện tùy vào quyền mà User đã đăng nhập vào hệ thống.
Các luồng sự kiện chính
Use Case này bắt đầu khi User muốn thêm, cập nhật, xóa, tìm kiếm các requirement.
Hệ thống hiển thị màn hình cho phép User thêm, cập nhật, lưu trữ, xóa, tìm kiếm.
Nếu User chọn tạo mới một requirement:
Hệ thống sẽ xuất hiện form để User nhập thông tin của requirement.
User nhập thông tin của requriement.
Nếu User chọn chứa năng “Save” và thông tin hợp lệ thì hệ thống sẽ cập nhật requirement này vào CSDL và Use Case này kết thúc.
Nếu User đánh dấu requirement và chọn cập nhật thì:
Hệ thống sẽ hiển thị form cập nhật cho requirement.
Nếu User chọn nút “Save” hoặc Apply” và thông tin của requirement sẽ được cập nhật.
Nếu User chọn requirement và chọn xóa thì:
Hệ thống sẽ đưa ra bảng thông báo để xác nhận.
Nếu User chọn “Yes” hệ thống sẽ xóa requirement khỏi CSDL.
Nếu User nhập tên requirement …. và chọn “OK” thì hệ thống sẽ đưa ra danh sách các requirement phù hợp với nội dung tìm kiếm nhất.
Các luồng sự kiện khác
Ở luồng sự kiện tạo mới requriement:
Nếu User chọn chức năng “Save” mà chưa nhập tên của requirement thì hệ thống sẽ đưa ra thông báo yêu cầu nhập tên requirement.
Nếu User chọn chức năng “Cancel” thì Use Case này kết thúc.
Ở luồng sự kiện cập nhật requriement:
Nếu User chọn nút “Save” hoặc Apply” mà thiếu tên requirement thì hệ thống sẽ đưa ra thông báo yêu cầu nhập tên requirement.
Nếu User chọn nút “Cancel” thì Use Case này sẽ kết thúc.
Ở luồng sự kiện xóa requirement nếu User chọn “No” thì Use Case này kết thúc.
Các yêu cầu đặc biệt
Không có.
Điều kiện trước đó
User đăng nhập thành công vào hệ thống.
User phải chọn workspace.
Các chức năng chỉ được thực hiện theo đúng quyền của User.
Yêu cầu sau đó
Hiển thị lại kết quả lên màn hình.
Use Case “Design Management”
Mô tả
Use Case này dùng để quản lý các module được PM thiết kế dựa theo yêu cầu khách hàng đưa ra gồm các chức năng: thêm mới, cập nhật, xóa, tìm kiếm. Các chức năng này được thực hiện tùy vào quyền mà User đã đăng nhập vào hệ thống.
Các luồng sự kiện chính
Use Case này bắt đầu khi User muốn thêm, cập nhật, xóa, tìm kiếm các module.
Hệ thống hiển thị màn hình cho phép User thêm, cập nhật, lưu trữ, xóa, tìm kiếm.
Nếu User chọn tạo mới một module:
Hệ thống sẽ xuất hiện form để User nhập thông tin của module.
User nhập thông tin của module.
Nếu User chọn chứa năng “Save” và thông tin hợp lệ thì hệ thống sẽ cập nhật module này vào CSDL và Use Case này kết thúc.
Nếu User đánh dấu module và chọn cập nhật thì:
Hệ thống sẽ hiển thị form cập nhật cho module.
Nếu User chọn nút “Save” hoặc Apply” và thông tin của module sẽ được cập nhật.
Nếu User chọn module và chọn xóa thì:
Hệ thống sẽ đưa ra bảng thông báo để xác nhận.
Nếu User chọn “Yes” hệ thống sẽ xóa module khỏi CSDL.
Nếu User nhập tên module …. và chọn “OK” thì hệ thống sẽ đưa ra danh sách các module phù hợp với nội dung tìm kiếm nhất.
Các luồng sự kiện khác
Ở luồng sự kiện tạo mới module:
Nếu User chọn chức năng “Save” mà chưa nhập design code thì hệ thống sẽ đưa ra thông báo yêu cầu nhập design code.
Nếu User chọn chức năng “Cancel” thì Use Case này kết thúc.
Ở luồng sự kiện cập nhật module:
Nếu User chọn nút “Save” hoặc Apply” mà thiếu design code thì hệ thống sẽ đưa ra thông báo yêu cầu nhập design code.
Nếu User chọn nút “Cancel” thì Use Case này sẽ kết thúc.
Ở luồng sự kiện xóa module nếu User chọn “No” thì Use Case này kết thúc.
Các yêu cầu đặc biệt
Không có.
Điều kiện trước đó
User đăng nhập thành công vào hệ thống.
User phải chọn workspace.
Các chức năng chỉ được thực hiện theo đúng quyền của User.
Yêu cầu sau đó
Hiển thị lại kết quả lên màn hình.
Use Case “Coding Management”
Mô tả
Use Case này dùng để quản lý tiến trình coding các module được tham chiếu từ Design gồm các chức năng: thêm mới, cập nhật, xóa, tìm kiếm. Các chức năng này được thực hiện tùy vào quyền mà User đã đăng nhập vào hệ thống.
Các luồng sự kiện chính
Use Case này bắt đầu khi User muốn thêm, cập nhật, xóa, tìm kiếm các module.
Hệ thống hiển thị màn hình cho phép User thêm, cập nhật, lưu trữ, xóa, tìm kiếm.
Nếu User chọn tạo mới một module:
Hệ thống sẽ xuất hiện form để User nhập thông tin của module.
User nhập thông tin của module.
Nếu User chọn chứa năng “Save” và thông tin hợp lệ thì hệ thống sẽ cập nhật module này vào CSDL và Use Case này kết thúc.
Nếu User đánh dấu module và chọn cập nhật thì:
Hệ thống sẽ hiển thị form cập nhật cho module.
Nếu User chọn nút “Save” hoặc Apply” và thông tin của module sẽ được cập nhật.
Nếu User chọn module và chọn xóa thì:
Hệ thống sẽ đưa ra bảng thông báo để xác nhận.
Nếu User chọn “Yes” hệ thống sẽ xóa module khỏi CSDL.
Nếu User nhập tên module,chọn status,.. …. và chọn “OK” thì hệ thống sẽ đưa ra danh sách các module phù hợp với nội dung tìm kiếm nhất.
Các luồng sự kiện khác
Ở luồng sự kiện tạo mới module:
Nếu User chọn chức năng “Save” mà chưa nhập tên module thì hệ thống sẽ đưa ra thông báo yêu cầu nhập tên module.
Nếu User chọn chức năng “Cancel” thì Use Case này kết thúc.
Ở luồng sự kiện cập nhật module:
Nếu User chọn nút “Save” hoặc Apply” mà thiếu tên module thì hệ thống sẽ đưa ra thông báo yêu cầu nhập tên module.
Nếu User chọn nút “Cancel” thì Use Case này sẽ kết thúc.
Ở luồng sự kiện xóa module nếu User chọn “No” thì Use Case này kết thúc.
Các yêu cầu đặc biệt
Không có.
Điều kiện trước đó
User đăng nhập thành công vào hệ thống.
User phải chọn workspace.
Các chức năng chỉ được thực hiện theo đúng quyền của User.
Yêu cầu sau đó
Hiển thị lại kết quả lên màn hình.
Use Case “Risks Management”
Mô tả
Use Case này dùng để quản lý các nguy cơ (risk) có thể xảy ra trong quá trình làm project gồm các chức năng: thêm mới, cập nhật, xóa, tìm kiếm. Các chức năng này được thực hiện tùy vào quyền mà User đã đăng nhập vào hệ thống.
Các luồng sự kiện chính
Use Case này bắt đầu khi User muốn thêm, cập nhật, xóa, tìm kiếm các risk.
Hệ thống hiển thị màn hình cho phép User thêm, cập nhật, lưu trữ, xóa, tìm kiếm.
Nếu User chọn tạo mới một risk:
Hệ thống sẽ xuất hiện form để User nhập thông tin của risk.
User nhập thông tin của risk.
Nếu User chọn chứa năng “Save” và thông tin hợp lệ thì hệ thống sẽ cập nhật risk này vào CSDL và Use Case này kết thúc.
Nếu User đánh dấu risk và chọn cập nhật thì:
Hệ thống sẽ hiển thị form cập nhật cho risk.
Nếu User chọn nút “Save” hoặc Apply” và thông tin của risk sẽ được cập nhật.
Nếu User chọn risk và chọn xóa thì:
Hệ thống sẽ đưa ra bảng thông báo để xác nhận.
Nếu User chọn “Yes” hệ thống sẽ xóa risk khỏi CSDL.
Nếu User nhập tên module,chọn status,.. …. và chọn “OK” thì hệ thống sẽ đưa ra danh sách các risk phù hợp với nội dung tìm kiếm nhất.
Các luồng sự kiện khác
Ở luồng sự kiện tạo mới risk:
Nếu User chọn chức năng “Save” mà chưa nhập tên risk thì hệ thống sẽ đưa ra thông báo yêu cầu nhập tên risk.
Nếu User chọn chức năng “Cancel” thì Use Case này kết thúc.
Ở luồng sự kiện cập nhật risk:
Nếu User chọn nút “Save” hoặc Apply” mà thiếu tên risk thì hệ thống sẽ đưa ra thông báo yêu cầu nhập tên risk.
Nếu User chọn nút “Cancel” thì Use Case này sẽ kết thúc.
Ở luồng sự kiện xóa risk nếu User chọn “No” thì Use Case này kết thúc.
Các yêu cầu đặc biệt
Không có.
Điều kiện trước đó
User đăng nhập thành công vào hệ thống.
User phải chọn workspace.
Các chức năng chỉ được thực hiện theo đúng quyền của User.
Yêu cầu sau đó
Hiển thị lại kết quả lên màn hình.
Use Case “File Manage”
Mô tả
Use Case này dùng để quản lý các tệp tin, thư mục gồm các chức năng sau: tạo thư mục, upload tệp tin, di chuyển thư mục hoặc tệp tin đến thư mục khác,…
Các luồng sự kiện chính
Use Case này bắt đầu khi User muốn upload file, download file,….
Nếu User chọn tạo mới một folder:
Hệ thống sẽ xuất hiện form để User nhập thông tin của folder.
User nhập thông tin của folder.
Nếu User chọn chứa năng “Save” và thông tin hợp lệ thì hệ thống sẽ cập nhật folder này vào CSDL và Use Case này kết thúc.
Nếu User đánh dấu folder và chọn cập nhật:
Hệ thống sẽ hiển thị form cập nhật cho folder.
Nếu User chọn nút “Save” và thông tin của folder sẽ được cập nhật.
Nếu User chọn upload file:
Hệ thống hiển thị form để User chọn đường dẫn đến file cần upload và nhập thông tin vê file.
Nếu User chọn chứa năng “Save” và thông tin hợp lệ thì hệ thống sẽ upload file lên server cập nhật file này vào CSDL và Use Case này kết thúc.
Nếu User đánh dấu file và chọn cập nhật:
Hệ thống hiển thị form để User chọn đường dẫn đến file cần upload và nhập thông tin vê file.
Nếu User chọn nút “Cancel” thì Use Case này sẽ kết thúc.
Nếu User đánh dấu file/folder cần chuyển và chọn move:
Hệ thống sẽ hiển thị danh sách các folder.
Chọn folder và chọn “Move”.
Nếu User chọn folder/file và chọn xóa thì hệ thống sẽ xóa chúng khỏi CSDL.
Các luồng sự kiện khác
Ở luồng sự kiện tạo mới folder:
Nếu User chọn chức năng “Save” mà chưa nhập tiêu đề của folder thì hệ thống sẽ đưa ra thông báo yêu cầu nhập.
Nếu User chọn chức năng “Cancel” thì Use Case này kết thúc.
Ở luồng sự kiện cập nhật folder:
Nếu User chọn nút “Save” mà thiếu tiêu đề của folder thì hệ thống sẽ đưa ra thông báo yêu cầu nhập.
Nếu User chọn nút “Cancel” thì Use Case này sẽ kết thúc.
Ở luồng sự kiện move:
Nếu User chọn nút “Cancel” thì Use Case này sẽ kết thúc.
Các yêu cầu đặc biệt
Điều kiện trước đó
Yêu cầu sau đó
Hiển thị ra màn hình.
Use Case “Calendar Management”
Mô tả
Use Case này dùng để xem lịch và quản lý các các sự kiện (event) gồm các chức năng: thêm mới, cập nhật, xóa. Các chức năng này được thực hiện tùy vào quyền mà User đã đăng nhập vào hệ thống.
Các luồng sự kiện chính
Use Case này bắt đầu khi User muốn thêm, cập nhật, xóa các event hoặc xem lịch.
Hệ thống hiển thị màn hình cho phép User thêm, cập nhật, lưu trữ, xóa và xem lịch.
User có thể xem lịch cùng với các event theo tháng, week hoặc date băng cách chọn:
Display month.
Display week.
Display date.
Nếu User chọn tạo mới một event:
Hệ thống sẽ xuất hiện form để User nhập thông tin của event.
User nhập thông tin của event.
Nếu User chọn chứa năng “Save” và thông tin hợp lệ thì hệ thống sẽ cập nhật event này vào CSDL và Use Case này kết thúc.
Nếu User đánh dấu event và chọn cập nhật thì:
Hệ thống sẽ hiển thị form cập nhật cho event.
Nếu User chọn nút “Save” và thông tin của event sẽ được cập nhật.
Nếu User chọn event và chọn xóa thì hệ thống sẽ xóa event khỏi CSDL.
Các luồng sự kiện khác
Ở luồng sự kiện tạo mới event:
Nếu User chọn chức năng “Save” mà chưa nhập tiêu đề của event thì hệ thống sẽ đưa ra thông báo yêu cầu nhập.
Nếu User chọn chức năng “Cancel” thì Use Case này kết thúc.
Ở luồng sự kiện cập nhật event:
Nếu User chọn nút “Save” mà thiếu tiêu đề cuae event thì hệ thống sẽ đưa ra thông báo yêu cầu nhập.
Nếu User chọn nút “Cancel” thì Use Case này sẽ kết thúc.
Các yêu cầu đặc biệt
Không có.
Điều kiện trước đó
User đăng nhập thành công vào hệ thống.
User phải chọn workspace.
Các chức năng chỉ được thực hiện theo đúng quyền của User.
Yêu cầu sau đó
Hiển thị lại kết quả lên màn hình.
Use Case “Board Management”
Mô tả
Use Case giống như một forum. Trong quá trình thực hiện dự án nếu gặp vần đề mọi người có thể đưa ý kiến lên đây để trao đổi gồm các chức năng: viết bài, cập nhật, xóa.
Các luồng sự kiện chính
Use Case này bắt đầu khi User muốn viết bài, cập nhật,… thông tin lên Board.
Hệ thống hiển thị màn hình cho phép User tạo topics, reply, ….
Nếu User chọn tạo mới một topic:
Hệ thống sẽ xuất hiện form để User nhập thông tin của topic.
User nhập thông tin của topic.
Nếu User chọn chứa năng “Save” và thông tin hợp lệ thì hệ thống sẽ cập nhật topic này vào CSDL và Use Case này kết thúc.
Nếu User đánh dấu topic và chọn cập nhật thì:
Hệ thống sẽ hiển thị form cập nhật cho topic.
Nếu User chọn nút “Save” và thông tin của topic sẽ được cập nhật.
Nếu User chọn topic và chọn xóa thì:
Hệ thống sẽ đưa ra bảng thông báo để xác nhận.
Nếu User chọn “Yes” hệ thống sẽ xóa topic khỏi CSDL.
Nếu User kích chuột vào tiêu đề của topic thì hệ thống sẽ hiển thị form để User viết reply:
User nhập nội dung muốn reply.
Chọn “Reply” thì nội dung của reply sẽ được cập nhật vào CSDL
Các luồng sự kiện khác
Ở luồng sự kiện tạo mới topic:
Nếu User chọn chức năng “Save” mà chưa nhập tiêu đề của topic thì hệ thống sẽ đưa ra thông báo yêu cầu nhập.
Nếu User chọn chức năng “Cancel” thì Use Case này kết thúc.
Ở luồng sự kiện cập nhật topic:
Nếu User chọn nút “Save” mà thiếu tiêu đề cuae topic thì hệ thống sẽ đưa ra thông báo yêu cầu nhập.
Nếu User chọn nút “Cancel” thì Use Case này sẽ kết thúc.
Ở luồng sự kiện viết reply:
Use Case sẽ kết thúc nếu User chọn “Back”
Các yêu cầu đặc biệt
Không có.
Điều kiện trước đó
User đăng nhập thành công vào hệ thống.
User phải chọn workspace.
Các chức năng chỉ được thực hiện theo đúng quyền của User.
Yêu cầu sau đó
Hiển thị lại kết quả lên màn hình.
Use Case “Profile Management”
Mô tả
Use Case này cho phép xem và cập nhật thông tin các nhân (profile), đặc biệt là có thể mở rộng profile với avatar.
Các luồng sự kiện chính
Use Case bắt đầu khi User muốn xem và cập nhật profile.
Hiển thị màn hình để User cập nhât lại profile.
User nhập thông tin về profile.
Nếu User chọn chứa năng “Save” và thông tin hợp lệ thì hệ thống sẽ cập nhật profile này vào CSDL và Use Case này kết thúc.
Các luồng sự kiện khác
Nếu User chọn “Save” mà chưa điền thông tin ở một trong hai trường là Name và Email hoặc là thông tin không hợp lệ thì hệ thống sẽ gởi thông báo yêu cầu nhập lại.
Các yêu cầu đặc biệt
Không có.
Điều kiện trước đó
User đăng nhập thành công vào hệ thống.
User phải chọn workspace.
Yêu cầu sau đó
Hiển thị lên màn hình.
Use Case “User Management”
Mô tả
Use Case dùng để SA quản lý các User, gồm các chức năng: thêm mới, cập nhật, xó và mời User tham gia vào project.
Các luồng sự kiện chính
Use Case bắt đầu khi SA muốn thực hiện các chức năng trên.
Nếu SA chọn tạo mới User:
Mặc định chức năng này sẽ tạo mới một User trong Joomla và thêm User này vào tham gia project.
Hệ thống hiển thị form nhập để SA nhập thông tin.
SA nhập thông tin.
SA chọn “Save” và thông tin hợp lệ thì hệ thống sẽ cập nhật User này vào CSDL và Use Case này kết thúc.
Nếu SA đánh dấu chọn User và chọn cập nhật:
Hệ thống hiển thị form nhập để SA nhập thông tin của User.
SA nhập thông tin.
SA chọn “Save” và thông tin hợp lệ thì hệ thống sẽ cập nhật User này vào CSDL và Use Case này kết thúc.
Nếu SA đánh dấu chọn User và chọn xóa thì User sẽ bị loại khỏi đang tham gia project
Nếu SA chọn nút “Invite” để mời User tham gia vào dự án:
Hệ thống hiển thị form nhập để SA nhập username hoặc địa chỉ email của User.
Nếu User này chưa tồn tại trong project thì hệ thống cập nhật nó vào project.
Các luồng sự kiện khác
Ở luồng sự kiện tạo mới :
Nếu User này đã tồn tại trong hệ thống User của Joomla thì hệ thống sẽ báo lỗi và yêu cầu nhập lại thông tin.
Nếu SA chọn “Cancel” thì Use Case này kết thúc.
Ở luồng sự kiện tạo Invite :
Nếu User này đã tồn tại trong project thi hệ thống sẽ không báo lỗi và Use Case này kết thúc.
Nếu SA chọn “Cancel” thi Use Case này kết thúc.
Các yêu cầu đặc biệt
Không có
Điều kiện trước đó
User đăng nhập thành công vào hệ thống với quyền SA.
SA phải chọn workspace.
Yêu cầu sau đó
Hiển thị lên màn hình.
Sơ đồ tuần tự
Chức năng “Login”
Hình 14: Sơ đồ tuần tự chức năng “Login”
Chức năng “Projects Management”
Hình 15: Sơ đồ tuần tự chức năng “Projects Management”
Chức năng “Tasks Management”
Hình 16: Sơ đồ tuần tự chức năng “Tasks Management”
Chức năng “Delivery Management”
Hình 17: Sơ đồ tuần tự chức năng “Delivery Management”
Chức năng “Requirements Management”
Hình 18: Sơ đồ tuần tự chức năng “Requirements Management”
Chức năng “Design Management”
Hình 19: Sơ đồ tuần tự chức năng “Design Management”
Chức năng “Coding Management”
Hình 20: Sơ đồ tuần tự chức năng “Coding Management”
Chức năng “Risks Management”
Hình 21: Sơ đồ tuần tự chức năng “Risks Management”
Chức năng “File Manage”
Hình 22: Sơ đồ tuần tự chức năng “File Manage”
Chức năng “Calendar Management”
Hình 23: Sơ đồ tuần tự chức năng “Calendar Management”
Chức năng “Board Management”
Hình 24: Sơ đồ tuần tự chức năng “Board Management”
Chức năng “User Management”
Hình 25: Sơ đồ tuần tự chức năng “User Management”
Thiết kế hệ thống
Sơ đồ lớp
Bảng 3: Sơ đồ lớp
Tổ chức dữ liệu
Từ việc xây dựng các chức năng đã trình bày ở trên, chương trình xây dựng các bảng dữ liệu như sau:
Mô tả các bảngNên có thêm sơ đồ CSDL quan hệ
Stt
Tên bảng
Diễn giải
jos_pf_projects
Lưu trữ tất cả các thông tin của dự án
jos_pf_project_members
Mô tả quan hệ của User đến các dự án
jos_pf_tasks
Lưu trữ tất cả các thông tin công việc của dự án
jos_pf_comments
Bảng lưu trữ các comments của task
jos_pf_requirement
Bảng lưu trữ yêu cầu của khách hàng
jos_pf_design
Bảng lưu trữ các module được PM thiết kế
jos_pf_coding
Bảng lưu trữ các module được coding
jos_pf_delivery
Bảng lưu trữ các thành phần chuyển giao cho khách hàng
jos_pf_risks
Lưu trữ các nguy cơ xảy ra trong khi thực hiện dự án
jos_pf_files
Bảng lưu trữ thông tin các tệp tin được upload
jos_pf_folders
Bảng lưu trữ thông tin các thư mục
jos_pf_folder_tree
Miêu tả quan hệ thư mục cha,con
jos_pf_events
Bảng lưu trữ thông tin các sự kiện trong calendar
jos_pf_groups
Bảng lưu trữ các nhóm của Joomla
jos_pf_group_permissions
Bảng lưu trữ phân quyền cho group
jos_pf_sections
Lưu trữ tất cả các thông tin về các section đã cài đặt
jos_pf_panels
Bảng lưu trữ các panel
jos_pf_section_tasks
Bảng lưu trữ các chức năng trong các section
jos_pf_topics
Bảng lưu trữ các topic của Board
jos_pf_topic_replies
Bảng lưu trữ các reply
jos_pf_user_profile
Bảng lưu trữ thông tin cài đặt profile
jos_pf_settings
Bảng lưu trữ cấu hình hệ thống
jos_pf_access_flags
Bảng lưu trữ các flag của User
jos_pf_access_levels
Bảng lưu trữ các mức truy cập của User
jos_pf_languages
Bảng lưu trữ các gói ngôn ngữ được cài đặt
jos_users
Bảng lưu trữ các User của Joomla
jos_pf_task_attachments
Mô tả file đính kèm(folder,file) cho task
Bảng 4: Mô tả chức năng các bảng dữ liệu
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
title
Varchar
124
project_type
int
11
Gồm các type: Development, Mantenance, Prototype,Researching
dev_cycles
int
11
Gồm các cycle: Standard, Rup, V, Spiral, Cascade, Modifier
client
Varchar
255
manager
int
11
start_date
int
11
est_effort
int
11
teamsize
int
11
remark
Text
author
int
11
is_public
int
1
allow_register
int
1
archivated
int
1
create_date
int
11
deadline
int
11
Bảng 5: jos_pf_projects
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
project_id
int
11
user_id
int
11
Bảng 6: jos_pf_project_members
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
title
Varchar
124
status
int
11
Complete, incomplete
remark
Text
author
int
11
assigned
int
11
Người chịu trách nhiệm
project
int
11
create_date
int
11
Ngày khởi tạo
sdate
int
11
Ngày bắt đầu
deadline
int
11
actual_finish_date
int
11
progress
int
11
0%-100%
priority
int
11
Bảng 7: jos_pf_tasks
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
title
Varchar
255
content
Text
item_id
int
11
author
int
11
cdate
int
11
Bảng 8: jos_pf_comments
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
requirement
Varchar
255
project
int
11
author
int
11
status_requirement
int
11
Wip, Documented, Reviewed, Approved, Canceled
progress
int
11
0%-100%
deadline
int
11
actual_finish_date
int
11
assigned
int
11
remark
int
11
Bảng 9: jos_pf_requirement
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
design_code
Varchar
255
project
int
11
author
int
11
requirement
int
11
module
Varchar
255
functions
Varchar
255
progress
int
11
0%-100%
deadline
int
11
actual_finish_date
int
11
status_design
int
11
Wip, Documented, Reviewed, Approved, Canceled
assigned
int
11
Người chịu trách nhiệm
remark
Text
Bảng 10: jos_pf_design
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
project
int
11
author
int
11
design
int
11
module
Varchar
255
functions
Varchar
255
status_coding
int
11
Wip, Coded, Reviewed, Test failed, Test passed, Accepted, Canceled
progress
int
11
0%-100%
deadline
int
11
actual_finish_date
int
11
assigned
int
11
Người chịu trách nhiệm
remark
Text
Bảng 11: jos_pf_coding
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
element
Varchar
255
project
int
11
original_date
int
11
replanned_date
int
actual_release_date
int
11
remark
Text
Bảng 12: jos_pf_delivery
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
risk
Varchar
255
project
int
11
author
int
11
create_date
int
11
probability
Text
Nguy cơ có thể xảy ra
serverity
Text
Mức độ nguy hiểm
type
int
11
status_risk
int
11
Open, accepted, closed, tasked place
possible_impact
Text
Khả năng ảnh hưởng
mitigation_action
Text
Phương án để giảm rủi ro
contingency_action
Text
actual_impact
Text
Ảnh hưởng thực tế
actual_action
Text
Hành động thực tế
close_date
int
11
assigned
int
11
Người chịu trách nhiệm
Bảng 13 : jos_pf_risks
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
name
Varchar
255
prefix
Varchar
255
Tiền tố file được thêm vào tránh ghi đè khi có file trùng tên được upload
description
Varchar
128
author
int
11
project
int
11
dir
int
11
Folder chứa file được upload
filesize
int
11
cdate
int
11
edate
int
11
Bảng 14: jos_pf_files
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
title
Varchar
56
description
Varchar
128
author
int
11
project
int
11
cdate
int
11
edate
int
11
Bảng 15: jos_pf_folders
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
folder_id
int
11
parent_id
int
11
Id cuae folder cha, 0=root
Bảng 16 : jos_pf_folder_tree
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
title
Varchar
56
content
Text
author
int
11
project
int
11
cdate
int
11
sdate
int
11
edate
int
11
Bảng 17: jos_pf_events
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
title
Varchar
124
description
Varchar
255
project
int
11
Bảng 18: jos_pf_groups
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
group_id
int
11
task
Varchar
56
Chức năng được phân quyền cho các thành viên của group
section
Varchar
255
Bảng 19: jos_pf_group_permissions
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
name
Varchar
255
title
Varchar
255
published
int
1
flag
Varchar
124
tags
Varchar
255
is_default
int
1
ordering
int
11
Bảng 20: jos_pf_sections
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
name
Varchar
255
title
Varchar
255
flag
Varchar
124
published
int
1
position
Varchar
255
ordering
int
11
Bảng 21: jos_pf_panels
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
section
Varchar
255
name
Varchar
255
title
Varchar
255
description
Text
flag
Varchar
255
tags
Varchar
255
parent
Varchar
255
ordering
int
11
Bảng 22: jos_pf_section_tasks
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
title
Varchar
124
content
Text
author
int
11
project
nt
11
create_date
int
11
edate
nt
11
Bảng 23: jos_pf_topics
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
title
Varchar
124
content
Text
author
int
11
project
int
11
topic
int
11
create_date
int
11
edate
int
11
Bảng 24: jos_pf_topic_replies
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
user_id
int
11
parameter
Varchar
255
value
Varchar
255
Bảng 25: jos_pf_user_profile
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
parameter
Varchar
255
value
Text
Bảng 26: jos_pf_settings
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
name
Varchar
124
title
Varchar
124
project
int
11
Bảng 27: jos_pf_languages
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
title
Varchar
124
project
int
11
flag
int
11
Bảng 28: jos_pf_access_levels
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
name
Varchar
255
title
Varchar
255
published
Varchar
255
is_default
Text
create_date
int
11
install_date
Varchar
255
Bảng 29: jos_pf_languages
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
name
Varchar
255
username
Varchar
150
email
Varchar
100
password
Varchar
100
usertype
Varchar
25
block
tinyint
4
sendEmail
tinyint
4
gid
tinyint
3
registerDate
datetime
lastvisitDate
datetime
11
activation
Varchar
100
params
Text
Bảng 30: jos_users
Stt
Trường
Kiểu
Kích thước
Chú thích
id
int
11
task_id
int
11
username
int
11
attach_type
Varchar
124
File hoặc Folder
Bảng 31: jos_pf_task_attachments
CHƯƠNG 4
XÂY DỰNG CHƯƠNG TRÌNH VÀ KẾT QUẢ THỰC HIỆN
Giới thiệu môi trường, công cụ và công nghệ được áp dụng và trình bày một số kết quả đạt được.
Công cụ và môi trường phát triển
Ứng dụng được xây dựng dựa trên các công cụ và môi trường sau:
Công cụ phân tích và thiết kế hệ thống: StarUML version 5.0.2.1570.
Môi trường cài đặt ứng dụng: Joomla.
Môi trường lập trình: JCode.
Hệ quản trị CSDL: MySQL.
Ngoài ra trong quá trình xây dựng ứng dụng em còn sử dụng thêm một số công cụ như: Microsoft Paint, SnagIt.
Một số kết quả đạt được
Màn hình khởi động
Hình dưới là giao diện chính của component sau khi Login.
Hình 26: Màn hình “Projects Management”
Màn hình “Tasks Management”
Hình 27: Màn hình “Task Management”
Màn hình “Delivery Management”
Hình 28: Màn hình “Delivery Management”
Màn hình “Requirements Management”
Hình 29: Màn hình “Requirements Management”
Màn hình “Design Management”
Hình 30: Màn hình “Design Management”
Mành hình “Coding Management”
Hình 31: Màn hình “Coding Management”
Màn hình “Risks Management”
Hình 32: Màn hình “Risks Management”
Màn hình “Upload File”
Hình 33: Màn hình “Upload File”
Màn hình “Calendar Management”
Hình 34: Màn hình “Calendar Management”
Màn hình “Update profile”
Hình 35: Màn hình “Update profile”
Màn hình “User Management”
Hình 36: Màn hình “User Management”
CHƯƠNG 5
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Trong quá trình thực hiện đề tài tốt nghiệp này em cũng !
đã đạt được một số kết quả nhất định cũng như một vài hạn chế và hướng phát triển như sau:
Kết quả đạt được
Xây dựng được một ứng dụng hỗ trợ quản lý dự án phần mềm trên nền Web.Tuy chưa so sánh được với các phần mềm hiện nay trên thị trường nhưng vẫn hỗ trợ được các chức năng quan trọng cho việc quản lý nhân sự, lập kế hoạch,... Bên cạnh đó em !
cũng có thêm được nhiều kinh nghiệm thực tế khi thực hiện đề tài tốt nghiệp này.
Hạn chế
Ứng dụng chưa hỗ trợ chức năng thông báo đến người chịu trách nhiệm của một công việc nào đó khi gần tới hạn cuối.
Hướng mở rộng và phát triển của đề tài
Xây dựng thêm chức năng thông báo đến người chịu trách nhiệm của một công việc nào đó khi gần tới hạn cuối.
Nghiên cứu thêm các hệ thống hỗ trợ dự đoán chi phí thời gian hoàn thành dự án.
.
TÀI LIỆU THAM KHẢO
Joseph LeBlanc. “Learning Joomla 1.5 Extension development”,258 tr.
PHP Cookbook, 2nd Edition By David Sklar, Adam Trachtenberg
Ebook “Quản lý dự án công nghệ thông tin”
Trang web:
Trang web:
Các file đính kèm theo tài liệu này:
- LVTN_NTTThien_LTHThuy_04T4.doc