ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
----------o0o----------
PHÁT TRIỂN PHẦN MỀM THEO CẤU PHẦN
ĐỀ TÀI: Xây dựng chương trình quản lý sinh viên phòng Lab trung tâm
đào tạo vào phát triển nguồn nhân lực Viettel ICT hướng cấu phần
Giảng viên HD
: Nguyễn Thái Cường
Lớp
: ĐH KTPM2 – K7
Nhóm thực hiện
: Nhóm 13
Thành viên
: 1. Nguyễn Thị Hợp
2. Nguyễn Hữu Trượng
3. Chu Văn Công
Hà Nội, tháng 12 - 2015
Lời nói đầu
Ngày nay Công nghệ thông tin đã trở thành một phần tất yếu của cuộc sống con người.
Việc áp dụng các phần mềm tin học vào các lĩnh vực giúp nâng cao tính hiệu quả và
chính xác của công việc, ngoài ra còn tiết kiệm thời gian và giảm bớt mệt nhọc cho con
người khiến hệ thống công việc hoạt động nhịp nhàng hơn.
Nhu cầu thực tế của xã hội đòi hỏi con người phải luôn năng động và sáng tạo để tạo ra
ngày càng nhiều sản phẩm cho xã hội. Đối với các công ty lớn thì việc quản lý là vô cùng
quan trọng. Vì thế việc tin học hóa khâu quản lý này sẽ giúp ích rất nhiều trong việc phát
triển của công ty đồng thời cũng giúp việc quản lý hiệu quả, khoa học hơn.
Tập đoàn viễn thông quân đội Viettel là một trong những tập đoàn hàng đầu của Việt
Nam. Hầu hết các khâu quản lý trong tập đoàn đều đã được tin học hóa. Phòng Lab là
một phòng làm việc sinh viên mới được mở nên việc tin học hóa vẫn chưa được tiến
hành. Việc quản lý vẫn đang được tiến hành trên giấy tờ và các file excel nên còn gặp khá
nhiều khó khăn. Vì thế việc xây dựng một chương trình quản lý sinh viên là vô cùng cần
thiết.
Đề tài quản lý sinh viên là một đề tài không phải là mới, hiện tại trên thị trường
cũng có rất nhiều các phần mềm có chức năng tương tự. Tuy nhiên với đặc thù của từng
đơn vị các chương trình quản sinh viên đều có những đặc điểm khác nhau. Chương trình
quản lý sinh viên được xây dựng bằng J2EE sử dụng hệ quản trị cơ sở dữ liệu mysql.
Phần mềm này giúp trung tâm đào tạo và phát triển nguồn nhân lực Viettel ICT quản lý
sinh viên, điểm danh, đăng kí khóa học/open day giúp việc tìm kiếm không mất thời gian
mà hiệu quả và tính chính xác vẫn cao.
Chương trình được xây dựng hướng cấu phần để có thể linh hoạt và hiệu quả hơn trong
việc xây dựng, sử dụng. Chương trình hướng cấu phần nên thuận lợi trong việc tái sử
dụng code và việc phát triển hệ thống ở những version sau. Để tối ưu hóa trong quá trình
xây dựng chương trình chúng em có áp dụng design patterns vào thiết kế.
Tuy đã cố gắng nhưng do thời gian và kinh nghiệm còn hạn chế nên chương trình không
thể tránh khỏi những sai xót. Chúng em rất mong thầy cô và các bạn có thể góp ý để
chương trình có thể hoàn thiện hơn.
Em xin chân thành cảm ơn sự giúp đỡ tận tình của thầy Nguyễn Thái Cường – Đại học
Công nghiệp Hà Nội trong thời gian qua để giúp em có thể hoàn thành dự án này
Mục lục
Chương I: Tổng quan về lập trình hướng cấu
phần
I. Kiến thức tổng quan về cấu phần
1. Khái niệm lập trình hướng cấu phần
Lập trình hướng cấu phần (component object programing - COP) là kiểu lập trình có xu
hướng chia hệ thống phần mềm thành những thành phần giữ các chức năng khác nhau
(mỗi thành phần này được gọi là một bộ phận hợp thành) mà khi kết hợp lại ta thu được
một hệ thống phần mềm hoàn chỉnh. Với lập trình hướng cấu phần, chương trình được
xây dựng bằng cách lắp ráp các thành phần phần mềm có thể sử dụng lại, các khối tự
chứa mã máy (hay còn gọi là các khối .thành phần thực hiện). Các thành phần này gồm
các thành phần giao diện, các kết nối. COP nẩy sinh xuất phát từ thực tế rằng mọi thứ có
cấu trúc đều được tạo nên từ các thành phần khác. Điển hình như trong nền công nghiệp
tự động, các hệ thống được cấu tạo từ các thành phần. Ví dụ, để phát triển một chiếc ô tô
là rất phức tạp.
Ô tô = {Các thành phần được ghép nối};
Các thành phần cấu tạo nên ô tô là thuộc nhiều loại khác nhau, kích cỡ khác nhau, chức
năng khác nhau, được sản xuất bởi các nhà sản xuất khác nhau. Các thành phần này giới
hạn từ các ốc vít rất nhỏ đến các hệ thống con phức tạp hơn như các động cơ, các bộ
truyền phát nhanh...
Trong công nghiệp phần mềm. Sản phẩm vẫn làm bằng tay là chủ yếu. Điều đó dẫn đến
tính năng của sản phẩm thấp, chất lượng không đảm bảo, khó tái sử dụng...
Trong công nghệ phần cứng. Mọi sản phẩm cũng được tạo ra dựa trên phương pháp
hướng cấu phần. Thực tế cho thấy nền công nghiệp này phát triển rất nhanh, thu được
nhiều lợi nhuận. Đây chính là lý do tại sao COP lại quan trọng.
COP sử dụng nhiều khái niệm của OOP (lập trình hướng đối tượng) nhưng hai phương
pháp này là độc lập nhau. COP phát triển phần mềm bằng cách lắp ráp các thành phần
trong khi OOP nhấn mạnh đến các lớp và các đối tượng. COP nhấn mạnh giao diện và
kết cấu, trong khi OOP nhấn mạnh về cài đặt viết mã. COP không cần biết bất cứ kiến
thức nào về cách thức một thành phần cài đặt giao diện của chúng, nó xem thành phần
như một hộp đen (không bị ảnh hưởng bởi sự thay đổi trong cài đặt của giao diện thành
phần), chỉ quan tâm đến đầu vào, đầu ra, chức năng nhiệm vụ của hộp đen đó. Ví dụ: Ốc
vít dùng để làm gì, làm thế nào để sử dụng nó mà không cần biết nó được làm như thế
nào, sử dụng công cụ gì. COP lắp ráp các thành phần thông qua giao diện của các thành
phần này.
Sự khác nhau giữa 2 phương pháp lập trình OOP và COP được chỉ ra trong bảng
sau:
COP
OOP
COP phát triển phần mềm bằng cách lắp OOP nhấn mạnh cài đặt các lớp và các đối
ráp các thành phần
tượng
OOP nhấn mạnh về đối tượng/lớp
COP nhấn mạnh giao diện và kết cấu
OOP hỗ trợ bao bọc, thừa kế, đa xạ nhưng
chưa bao giờ đạt mục đích của nó vì kế thừa
xâm phạm bao bọc, hơn nữa các đối tượng và
các lớp không tự vận hành.
COP là kỹ thuật đóng gói và phân tán
OOP là kỹ thuật cài đặt
COP hỗ trợ sử dụng lại mức cao
OOP hỗ trợ sử dụng lại mức thấp
COP về nguyên tắc có thể viết bởi bất kỳ
OOP bị giới hạn bởi ngôn ngữ OO
ngôn ngữ lập trình nào
OOP gồm các đối tượng phụ thuộc chặt chẽ
COP gồm các thành phần gắn kết lỏng
hơn vào các đối tượng khác qua giao diện kế
lẻo
thừa (Cha thay đổi, con thay đổi theo)
COP có các thành phần hạt nhân từ lớn OOP gồm các đối tượng là các đơn vị của
đến nhỏ
kiến trúc
COP hỗ trợ đa giao diện và thiết kế OOP không cung cấp mỗi quan hệ rõ ràng về
hướng giao diện
giao diện giữa các lớp con và lớp cha
1. Hình 1:Sự khác nhau giữa cop và oop
Các ngôn ngữ có thể được sử dụng trong lập trình hướng cấu phần: Visual Basic,
Delphi, C#, Java…
Tóm lại: Kỹ nghệ phần mềm dựa trên cấu phần – CBSE (Component Based
Software Engineering) gồm các hoạt động:
o COA (Component Oriented Analysis): Phân tích hướng cấu phần
o COD (Component Oriented Design): Thiết kế hướng cấu phần
o COP (Component Oriented Programming): Lập trình hướng cấu phần
o COM (Component Oriented Management): Quản lý hướng cấu phần
Từ cách nhìn của tiến trình kỹ nghệ, các thành phần có thể được phân làm 5 dạng
khác nhau:
Thành phần đặc tả: Biểu diễn các đặc tả của một đơn vị phần mềm, mô tả
một tập hành vi của các đối tượng thành phần.
Thành phần giao diện: Định nghĩa một tập hành vi có thể được yêu cầu bởi
một đối tượng thành phần.
Thành phần cài đặt: Có thể vận hành độc lập (điều này không có nghĩa nó
độc lập với các thành phần khác. Nó có thể có nhiều phụ thuộc với thành
phần khác).
Thành phần đã cài đặt: Thành phần mã thực thi
Thành phần đối tượng: Lớp, gói, ...
CBSE hiện tại là một mô hình cho việc phát triển các hệ thống phần mềm lớn như:
Các ứng dụng phân tán cho doanh nghiệp
Các ứng dụng Web – N Tier
Các dịch vụ Web (Web Services)
Có thể dùng các công nghệ của Java như:
EJB: Enterprise Java Bean,
COM: Component Object Model,
DCOM: Distributed Component Object Model ,
CORBA:
Hoặc công công nghệ .NET của Microsoft để phát triển các hệ thống phần mềm
theo mô hình này.
Ưu điểm của COP
•
Trinh phục sự phức tạp
•
Quản lý sự thay đổi
•
Tái sử dụng
•
Lập trình viên có thể chia sẻ với nhau những thành phần mình đã xây dựng
cho nhiều người khác dùng chung.
•
Khi cần, lập trình viên có thể lắp ghép các thành phần có sẵn khác nhau để
tạo thành các chương trình có chức năng khác nhau. Tất cả chỉ cần dựa trên
công nghệ lắp ghép thành phần, tiết kiệm được rất nhiều công sức lập trình.
2. Nguyên tắc của hướng cấu phần
Từ “ cấu phần” đã được dùng trong ngành công nghiệp máy tính 1 thời gian dài. Có 1
điều thực tế, khái niệm về cấu phần đã xuất hiện xung quanh chúng ta từ trước khi máy
tính ra đời. Một người xây dựng 1 ngôi nhà sử dụng các cấu phần từ những ngành công
nghiệp khác nhau để tạo nên ngôi nhà. Các nhà sản xuất ô tô đã sử dụng nhiều cấu phần
từ các ngành công nghiệp khác để tạo một chiếc xe hơi. Trong ngành công nghiệp phần
cứng máy tính, các kỹ sư không còn phải thiết kế các phần cứng cơ bản từ đầu cho mỗi
sản phẩm. Chip vi xử lý, chip bộ nhớ, bo mạch, và card mạng là các thứ có sẵn cho việc
xây dựng hệ thống máy tính lớn và mạnh mẽ hơn. Mặc dù chúng ta có thể có nhiều định
nghĩa khác nhau về phần mềm hướng cấu phần, nhưng các nguyên tắc về phần mềm cấu
phần vẫn như cũ từ các định nghĩa khác nhau [Allen 1997; Garlan 2000; Liskov 2000;
Luck 2000; Wang 2000, 2002].
Các nguyên tắc cơ bản trong công nghệ phần mềm hướng cấu phần nói chung và lập trình
hướng cấu phần nói riêng.
• Nguyên tắc 1: cách phân tích các thành phần đại diện và trừu tượng
Chiến lược cơ bản và hiệu quả để giải quyết bất kỳ vấn đề lớn và phức tạp trong khoa học
máy tính là "phân chia và xử lý". Một ý tưởng chính trong phát triển phần mềm hướng
cấu phần là tạo ra các module phần mềm mà nó tự khép kín và có khả năng độc lập triển
khai. Do đó các nhà phát triển phần mềm khác nhau sẽ có thể làm việc trên các thành
phần độc lập khác nhau mà không cần phải giao tiếp với nhau nhiều, và các thành phần
này sẽ làm việc liền mạch với nhau. Ngoài ra, trong giai đoạn duy trì phần mềm, sẽ có thể
thay đổi một số thành phần mà không ảnh hưởng đến tất cả những thành phần khác.
Khi chúng ta phân tách một hệ thống, chúng ta phân tách yếu tố của nó thành các thành
phần riêng biệt bằng 1 số cách sau:
- Mỗi thành phần như là 1 mức chi tiết.
- Mỗi thành phần có thể được giải quyết một cách độc lập.
- Các triển khai của các thành phần này có thể được tích hợp để đáp ứng các yêu cầu
ban đầu của hệ thống.
Sự trừu tượng là 1 cách để phân chia sản phẩm bằng cách thay đổi các mức chi tiết được
xem xét.Các thành phần phần mềm cố gắng che giấu một số chi tiết để cung cấp chỉ các
thông tin cần thiết cho khách hàng thông qua giao diện của họ.Chiến lược trừu tượng hóa
và sau đó phân chia thành các kiểu điển hình trong quá trình phát triển phần mềm.Sự
phân chia được sử dụng để phân mảnh phần mềm thành các thành phần mà có thể kết hợp
được với nhau nhằm giải quyết các vấn đề được đặt ra.Sự trừu tượng hỗ trợ đưa ra một
lựa chọn tốt cho các thành phần. Khoa học máy tính đã trải qua trừu tượng hóa khác
nhau. Thủ tục trừu tượng cho phép chúng ta phân chia một vấn đề thành các đơn vị chức
năng độc lập. Dữ liệu trừu tượng hoặc kiểu dữ liệu gói gọn các đối tượng với một tập hợp
các hoạt động đặc trưng cho các hành vi của các đối tượng. Cuốn sách này xem xét đến
loại thứ ba của sự trừu tượng: trừu tượng thành phần, đó là mức độ trừu tượng cao nhất
trong điều kiện về phần mở rộng của nó và các thông tin hữu ích đóng gói.
• Nguyên tắc 2: Có thể dùng lại nên đạt được ở các trình độ khác nhau
Phần mềm tồn tại dưới nhiều hình thức khác nhau trong suốt quá trình kỹ phát triển phần
mềm.Tại các mô hình và các giai đoạn phân tích, các đặc tả yêu cầu được xem như là một
hình thức của phần mềm.Trong giai đoạn thiết kế, thiết kế kiến trúc và thiết kế chi tiết các
tài liệu là một phần của phần mềm. Mã nguồn trong giai đoạn thực hiện và thực thi triển
khai code đến các của khách hàng là phần mềm chắc chắn. Do đó, phần mềm có thể dùng
lại, bao gồm việc tái sử dụng bất kỳ sản phẩm phần mềm trong các định dạng khác nhau.
Như chúng ta đã thảo luận nhanh ở Chương 1, có năm hình thức của các thành phần phần
mềm, cụ thể là: thành phần đặc tả, thành phần giao diện, thành phần thực hiện, các thành
phần được cài đặt, và các thành phần đối tượng. Mỗi hình thức của các thành phần phần
mềm có thể được tái sử dụng trong các giai đoạn khác nhau của một vòng đời phần mềm.
• Nguyên tắc 3: Phát triển phần mềm hướng cấu phần tăng độ tin cậy
của phần mềm
Với những tiến bộ nhanh chóng của phần cứng máy tính, độ tin cậy cao, mạnh mẽ, và rẻ
hơn phần cứng có sẵn cho các ứng dụng khác nhau. Độ tin cậy của một hệ thống tính
toán chủ yếu dựa vào sự tin cậy của bộ phận một phần mềm. Phát triển phần mềm hướng
cấu phần và lập trình hướng thành phần cung cấp một cách có hệ thống để đạt được các
hệ thống đáng tin cậy. Do sự trừu tượng của các thành phần và hệ thống tích hợp của các
thành phần, nó dễ dàng hơn nhiều để xác nhận yêu cầu quan trọng và xác minh an toàn
cho các hệ thống hướng thành phần. Mặt khác, thành phần tái sử dụng thường đã được
kiểm nghiệm qua quá trình xác nhận và sử dụng thực tế trong một thời gian dài, do đó,
chất lượng của nó có thể yên tâm.
• Nguyên tắc 4: Phát triển phần mềm hướng cấu phần có thể tăng
năng suất phần mềm
Phần mềm hướng cấu phần được xây dựng bằng cách lắp ráp và tái sử dụng các thành
phần hiện có hơn là phát triển từ đầu mỗi lần - tái sử dụng thay vì làm mới. Quá trình này
nhanh hơn nhiều so với việc phát triển một ứng dụng từ đầu trong hầu hết các trường
hợp.
• Nguyên tắc 5: Phát triển phần mềm hướng cấu phần thúc đẩy tiêu
chuẩn phần mềm
Như Clemens Czyperski mô tả trong [Clemens 2003], các thị phần để phát triển, thành
phần tiêu chuẩn phải được đặt đúng chỗ. Tiêu chuẩn có thể được sử dụng để tạo ra một
thỏa thuận về chi tiết kỹ thuật giao diện vững chắc, tạo điều kiện cho hiệu quả của thành
phần, và đảm bảo COP là một mô hình lập trình mới, trong đó "plug-and-play" trở thành
hiện thực trong phát triển phần mềm cũng như các thành phần phần cứng.
3.
Tại sao COP quan trọng
Hàng trăm năm qua, các ngành công nghiệp đã áp dụng các tiêu chuẩn thành phần
và các công cụ lắp ráp hợp lý để tăng tốc độ phát triển của các sản phẩm rất phức tạp
Đây là một cuộc cách mạng Công nghiệp, nó đã làm thay đổi đáng kể về bản chất của sản
xuất, nơi mà máy móc bằng hơi nước và các nguồn năng lượng khác thay thế cho sức
người hoặc động vật, nơi những công nhân chưa có tay nghề được thay thế bởi các công
nhân lành nghề, và các sản phẩm lớn được làm và lắp ráp bằng máy thay thế cho các sản
phẩm làm bằng tay.
Tuy nhiên riêng trong ngành công nghiệp phần mềm, các sản phẩm chủ yếu vẫn là
các sản phẩm được làm thủ công. Năng suất làm việc thấp, chất lượng công việc không
đảm bảo và các dự án chủ yếu bị dừng lại. Hiện tượng này được gọi là “Cuộc khủng
hoảng phần mềm”.
Cũng như phát triển công nghệ phần cứng, chi phí phát triển một ứng dụng cho
máy tính chủ yếu là ở phần mềm. Vấn đề quan trọng của ngành công nghệ phần mềm là
làm thế nào để tạo ra những phần mềm chất lượng hiệu quả.
Xây dựng thành các thành phần được các kỹ sư phần mềm nhìn nhận như là một
công nghệ quan trọng để giải quyết “Cuộc khủng hoảng phần mềm”
Cuộc cách mạng công nghiệp của phần mềm sẽ xuất hiện dựa trên công nghệ phần
mềm hướng thành phần. Có một số lý do chính để giải thích tại sao COP ( Component
Oriented Programming) lại quan trọng. COP cung cấp một mức độ trừu tượng cao hơn.
Hiện nay có một số lượng lớn các thành phần, các thư viện hỗ trợ được tái sử dụng trong
việc phát triển ứng dụng cho các lĩnh vực khác nhau. Và 3 mục tiêu chính của COP là :
Giải quyết phức tạp, quản lý thay đổi, tái sử dụng.
Giải quyết phức tạp
Chúng ta đang sống trong một thế giới phức tạp ở thời đại bùng nổ thông tin. Theo
một nhóm nghiên cứu ở trường đại học Berkeley năm 2000, “Thế giới sản xuất từ một
đến hai exabytes ( 1 exabytes = 1018bytes) thông tin mỗi năm, đó là khoảng 250 MB
cho mỗi người đàn ông, mỗi người phụ nữ và mỗi đứa trẻ trên trái đất. Như vậy trong
khoa học máy tính, kích thước và độ phức tạm đã được tăng lên đáng kể.
Năm
AT&T
BSD
1976
V6 9K
1979
V7 21K
1980
1982
MINIX
Linux
Solaris
Win NT
5.3 850K
3.1 6M
4.1 38K
Sys III 58K
1984
4.2 98K
1986
4.3 179K
1987
SVR3 92K
1989
SVR4 280K
1.0 13K
1991
0.01 10K
1993
Free 1.0 235K
1994
4.4 Lite 743K
1996
1997
1.0 165K
3.5 10M
2.0 470K
4.0 16M
2.0 62K
1999
5.6 1.4M
2.2 1M
2000
Free 4.0 1.4M
5.8 2.0M
2000 29M
Sự thay đổi kích thước của phần mềm theo thời gian
Bảng trên cho thấy sự so sánh của một số hệ điều hành về kích thước của chúng.
Ký tự đầu tiên là tên phiên bản , thứ hai là kích thước của mã nguồn (1KB=1000 bytes,
1MB = 1000000 bytes). Sự so sánh trong mỗi cột có ý nghĩa thực sự, trong khi giữa các
cột không cho thấy nhiều ý nghĩa. Và thật may mắn, COP cũng cấp một cách hiệu quả để
đối phó với sự phức tạp của phần mềm : phân chia và chinh phục.
Quản lý thay đổi
Thay đổi là vốn có trong ngành công nghệ phần mềm. Các yêu cầu người dùng
thay đổi, thay đổi thông số kỹ thuật, thay đổi nhân sự, thay đổi công nghệ, thay đổi ngân
sách và còn nhiều nguyên nhân thay đổi khác.
Một trong những nguyên tắc cơ bản của kỹ thuật phần mềm là để nhấn mạnh tầm
quan trọng của quản lý các thay đổi. Điều quan trọng cần nhấn mạnh trong kiến trúc và
thiết kế của phần mềm phụ thuộc giữa vào các thành phần và việc quản lý những người
trong dự án. COP cung cấp một cách hiệu quả để thực hiện theo các nguyên tắc cơ bản kỹ
thuật phần mềm nhằm đối phó với các thay đổi : lên kế hoạch cho sự thay đổi, thiết kế
cho sự thay đổi và xây dựng các thay đổi. Phần mềm sẽ dễ dàng thích ứng với những yêu
cầu mới và các thay đổi mới. Các kỹ sư phần mềm đã đi đến thống nhất rằng cách tốt
nhất để đối phó với các thay đổi liên tục là xây dựng hệ thống ra các thành phần để có thể
tái sử dụng phù hợp với một tiêu chuẩn và kiến trúc plug-in.
Tái sử dụng
Một phần mềm phải cho phép tái sử dụng thiết kế và thực hiện một việc gì đó và
phải được sử dụng lại trong những hoàn cảnh khác nhau. Điều này sẽ làm tăng năng suất
làm việc, cải thiện chất lượng phần mềm vv…
Có nhiều cấp độ khác nhau trong việc tái sử dụng phần mềm.
Ví dụ :
+ Sao chép mã nguồn – Đây là cấp thấp nhất của việc tái sử dụng.
Xây dựng lớp thư viện các hàm, thủ tục là hình thức tốt hơn về việc tái sử dụng hơn so
với việc sao chép mã nguồn nhưng không phổ biến.
Các lớp thư viện này tốt hơn về việc tái sử dụng và họ đang cố gắng phổ biến nó.
Tuy nhiên, vấn đề đặt ra là nó đòi hỏi sự hiểu biết trước khi các lớp có thể tái sử dụng.
Hơn nữa , nó chỉ hỗ trợ tái sử dụng hộp trắng. Và như vậy khách hàng sẽ bị ảnh hưởng
nếu cấu trúc bên trong các lớp thư viện này thay đổi.
Ví dụ, trong một ngôn ngữ hướng đối tượng (OOP) như C++ hay Java, các lớp thư
viện được kết hợp thực hiện với các lớp cơ sở. Những thay đổi bất kỳ trong các lớp cơ sở
sẽ phá vỡ kết cấu các lớp thư viện. Hơn nữa mức độ tái sử dụng trong ngôn ngữ cụ thể,
không thể tái sử dụng trên các ngôn ngữ khác.
COP hỗ trợ cấp độ cao nhất của việc tái sử dụng phần mềm vì nó cho phép tái sử
dụng bao gồm hộp trắng, hộp xám và hộp đen.
Tái sử dụng hộp trắng có nghĩa là phần source code của một thành phần phần mềm được
cung cấp, được nghiên cứu, tái sử dụng, điều chỉnh hoặc sửa đổi.
Tái sử dụng hộp đen được dựa trên nguyên tắc ẩn thông tin. Các giao diện cụ thể
cho các dịch vụ người dùng có thể yêu cầu từ một thành phần. Các thành phần cung cấp
việc thực hiện các giao dịch mà khách hàng thao tác. Miễn là các giao diện này không
thay đổi, các thành phần có thể được thay đổi trong nội bộ chương trình mà không ảnh
hưởng tới các người dùng.
Tái sử dụng hộp xám nằm giữa tái sử dụng hộp đen và tái sử dụng hộp trắng.
Khi kích thước và độ phức tạp của hệ thống phần mềm tăng lên, việc xác định và
quản lý phù hợp các mối liên hệ giữa các thành phần của hệ thống sẽ trở thành trọng tâm.
COP cung cấp một giải pháp quản lý để đối phó với sự phức tạp của phần mềm, sự thay
đổi liên tục của hệ thống và các vấn đề về tái sử dụng phần mềm. COP là mô hình thực tế
để phát triển hệ thống phần mềm lớn. Ví dụ như các doanh nghiệp có quy mô lớn và nằm
phân tán, các ứng dụng web và các dịch vụ Web
Chương II:
Phân tích thiết kế hệ thống
I. Tổng quan về hệ thống
1. Phát biểu bài toán
Hiện nay việc quản lý sinh viên hàng ngày của CBCNV tại Trung tâm đào tạo và phát
triển người nhân lực Viettel ICT đang gặp nhiều khó khăn do phải thực hiện thủ công và
không có công cụ để quản lý, theo dõi lịch học theo kế hoạch cũng như thời gian làm việc
thực tế của từng sinh viên.
Căn cứ trên thực tế thực hiện công việc cũng như chỉ đạo của ban lãnh đạo Trung tâm
đào tạo và phát triển người nhân lực Viettel ICT, bài toán đặt ra hướng tới tin học hóa các
nghiệp vụ đang thực hiện thủ công để giải quyết những khó khăn trong công tác quản lý
tiến độ công việc cá nhân tại Trung tâm đào tạo và phát triển người nhân lực Viettel ICT:
-
Tin học hóa quá trình điểm danh
-
Tin học hóa quy trình quản lý thông tin sinh viên
-
Quản lý việc đăng kí tham gia KH/PV/open day
2. Mục tiêu hệ thống
Hệ thống quản lý sinh viên phải đáp ứng được các mục tiêu sau đây:
-
Cho phép người quản lý kiểm soát, theo dõi được quá trình học tập làm việc của
sinh viên
-
Cho phép người quản lý quản lý thông tin cá nhân, trình độ, tình trạng của từng
sinh viên
-
Cho phép người quản lý có thể cập nhật thông tin các khóa học, hội thảo, các
buổi open day mới và sinh viên có thể đăng kí tham gia các khóa học, phỏng
vấn, open day
3. Phạm vi hệ thống
(a) Danh sách nhóm người sử dụng hệ thống
• Cán bộ quản lý phòng Lab: Thực hiện quản lý sinh viên: điểm danh, quản lý thông
tin sinh viên và báo cáo thống kê.
• Sinh viên: Xem các thông tin của cán bộ quản lý đăng lên hệ thống, có thể đăng kí
các KH/PV/open day.
4. Mô hình tổng thể hệ thống
Hình 1.
Sơ đồ tổng thể hệ thống
II. Xác định yêu cầu hệ thống
1. Đối với học viên
-
Xem thời khóa biểu
Tra cứu
Đổi mật khẩu
Đăng nhập
Đăng ký khóa học/openday/phỏng vấn
2. Đối với quản lý
-
Quản lý thành viên
Cấp lại mật khẩu
Quản lý điểm danh
Quản lý sinh viên
Quản lý học viên
Quản lý khóa học
Quản lý Openday/phỏng vấn
Tra cứu
Đăng nhâp
Báo cáo thống kê
Quản lý dự án
Quản lý luật điểm danh
III. Phân tích thiết kế hệ thống
1. Diagram
(a) Quản lý
ResetPassword
<<include>>
ManageMembers
ManageClasses
+theManager
<<include>>
Manager
Lookup
(from UseCaseForTrainee)
<<include>>
<<include>>
<<include>>
<<include>>
ManageAttendance
<<include>>
Login
ManageStudent
ManageTrainee
Report
ManageProject
ManageOPInterview
ManageAttendanceLaw
<<include>>
<<include>>
<<include>>
<<include>>
(from CertificatedManagement)
(b) Học viên
SeeTimeTable
<<include>>
<<include>>
RegisterOPInterview
<<include>>
<<extend>>
<<include>>
Trainee
Lookup
Login
(from CertificatedManagement)
<<include>>
<<extend>>
RegisterClass
ChangePassword
(from CertificatedManagement)
(c) Xác thực
Login
Manager
(from UseCaseForM anager)
...)
Certificate
Logout
ManagePermission
Trainee
(from UseCaseForTrai nee)
...)
2. Danh sách các usecase
-
Xem thời khóa biểu
Tra cứu
Đổi mật khẩu
Đăng nhập
Đăng ký khóa học/openday/phỏng vấn
Đối với quản lý
Quản lý thành viên
Cấp lại mật khẩu
Quản lý điểm danh
Quản lý sinh viên
Quản lý học viên
Quản lý khóa học
Quản lý Openday/phỏng vấn
Tra cứu
Đăng nhâp
Báo cáo thống kê
Quản lý dự án
3. Mối quan hệ giữa usecase với actor
STT
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Usecase
- Xem thời khóa biểu
- Tra cứu
- Đổi mật khẩu
- Đăng nhập
- Đăng ký khóa học/openday/phỏng vấn
- Quản lý thành viên
- Cấp lại mật khẩu
- Quản lý điểm danh
- Quản lý sinh viên
- Quản lý học viên
- Quản lý khóa học
- Quản lý Openday/phỏng vấn
- Tra cứu
- Đăng nhâp
- Báo cáo thống kê
- Quản lý dự án
Quản lý
x
x
x
x
x
x
x
x
x
x
x
x
x
x
Học viên
x
x
x
x
x
x
x
4. Mô tả chi tiết các use case
(a) Quản lý khóa học
a.1. Mô tả Usecase
Tên ca sử dụng
Mô tả tóm tắt
Mục đích
Tác nhân
Các luồng sự
kiện
Luồng sự kiện chính
Thêm khóa học
Sửa khóa học
Xóa khóa học
Quản lý khóa học
Ca sử dụng này cho phép quản trị thêm mới, thay
đổi cũng như xóa khóa học
Quản lý
Ca sử dụng bắt đầu khi quản trị viên muốn
thêm, sửa , xóa khóa học.
Hệ thống sẽ hiển thị cho quản trị viên các lựa
chọn:
- Thêm khóa học
- Sửa khóa học
- Xóa khóa học
Hệ thống sẽ yêu cầu quản lý chọn công việc
muốn thực hiện
Nếu quản lý chọn [Thêm khóa học], luồng sự
kiện con Thêm khóa học được thực hiện
Nếu quản lý chọn [Sửa khóa học], luồng sự
kiện con Sửa khóa học được thực hiện
Nếu quản lý chọn [Xóa khóa học], luồng sự
kiện con Xóa khóa học được thực hiện
Hệ thống yêu cầu quản lý chọn mã môn nhập
tên khóa học, thời gian bắt đầu, thời gian kết
thúc
Quản lý chọn [Lưu lại], luồng sự kiện lưu được
thực hiện và những thông tin về khóa học được
lưu trong cơ sở dữ liệu
Hệ thống yêu cầu quản lý chọn khóa học cần
sửa đổi.
Quản trị chọn [Sửa khóa học].
Hệ thống hiển thị thông tin của khóa học
Quản trị sửa đổi những thông tin cần thiết và
xác nhận việc sửa đổi bằng việc click [Lưu lại].
Hệ thống cập nhật lại các thay đổi vào cơ sở
dữ liệu.
Hệ thống yêu cầu quản trị chọn khóa học cần
xóa.
Quản trị chọn [Xóa khóa học] và xác nhận việc
xóa khóa học.
Luồng sự kiện phụ
Tiền điều kiện
Điều kiện
Hậu điều kiện
Hệ thống loại bỏ khóa học khỏi cơ sở dữ liệu
và cập nhật lại cơ sở dữ liệu.
Luồng sự kiện này được thực hiện khi quản trị
không muốn thêm, sửa, xóa khóa học khỏi hệ
thống bằng việc chọn [Hủy].
Quản lý phải đăng nhập thành công vào hệ
thống.
Nếu ca sử dụng này thành công, thông tin về
khóa học sẽ được thêm vào, sửa đổi, hay xóa
khỏi hệ thống. Trong các trường hợp khác, hệ
thống ở trạng thái chưa thay đổi.
a.2. Biểu đồ lớp tham gia ca sử dụng
Courses
id
course_id
course_name
course_timeStart
...
course_timeStop
get()
set()
C_ManageClasses
Manager
(from UseCaseForM anager)
...)
W_ManageClasses
class_id
class_name
subject_id
shift_id
course_id
class_timeStart
class_timeStop
class_timeToRegistry
getCourse()
getSubject()
getShift()
getClass()
setClass()
getCourse()
getSubject()
...
getShift()
getClass()
setClass()
Classes
id
class_id
class_name
subject_id
shift_id
course_id
class_timeStart
class_timeStop
class_timeToRegister
shift
dayOfWeek
get()
set()
subjects
id
subject_id
subject_name
numberofLession
get()
set()
a.3. Biểu đồ tuần tự
: Manager
: C_ManageClasses
: W_ManageClasses
: Courses
: subjects
get
getCourse
getsubject
show
selectAction
set value
setClass( )
set
result
-
Luồng 1: thêm khóa học
: Classes
: Manager
: C_ManageClasses
: W_ManageClasses
: subjects
: Courses
getClasses
show
choose create class
get
getCourses
getSubject
show
choose course, subject
input information
choose save
add new class
check validations
add new class
show
-
Luồng 2: sửa khóa học
: Classes
: Manager
: C_ManageClasses
: W_ManageClasses
: Courses
: subjects
getClasses
show
choose edit class
get
get class want to edit
show
edit information
choose save
edit class
check validations
edit class
show
-
Luồng 3: xóa khóa học
: Classes
: Manager
: C_ManageClasses
: W_ManageClasses
: Courses
: subjects
: Classes
getClasses
show
choose delete class
get
get class want to delete
show
choose delete
delete class
delete class
show
(b) Quản lý openday/phỏng vấn
b.1.
Mô tả Usecase
Tên ca sử dụng
Mô tả tóm tắt
Các luồng sự
kiện
Mục đích
Tác nhân
Luồng sự kiện chính
Quản lý openday/ phỏng vấn
Ca sử dụng này cho phép quản trị thêm mới, thay
đổi cũng như xóa openday/ phỏng vấn
Quản lý
Ca sử dụng bắt đầu khi quản trị viên muốn
thêm, sửa , xóa openday/ phỏng vấn.
Hệ thống sẽ hiển thị cho quản trị viên các lựa
chọn:
- Thêm openday/ phỏng vấn
- Sửa openday/ phỏng vấn
- Xóa openday/ phỏng vấn
Thêm khóa học
Sửa khóa học
Xóa khóa học
Luồng sự kiện phụ
Tiền điều kiện
Điều kiện
Hậu điều kiện
Hệ thống sẽ yêu cầu quản lý chọn công việc
muốn thực hiện
Nếu quản lý chọn [Thêm openday/ phỏng vấn],
luồng sự kiện con Thêm openday/ phỏng vấn
được thực hiện
Nếu quản lý chọn [Sửa openday/ phỏng vấn],
luồng sự kiện con Sửa openday/ phỏng vấn
được thực hiện
Nếu quản lý chọn [Xóa openday/ phỏng vấn],
luồng sự kiện con Xóa openday/ phỏng vấn
được thực hiện
Hệ thống yêu cầu quản lý chọn mã môn nhập
tên khóa học, thời gian bắt đầu, thời gian kết
thúc cấu hình thời gian đăng ký
Quản lý chọn [Lưu lại], luồng sự kiện lưu được
thực hiện và những thông tin về khóa học được
lưu trong cơ sở dữ liệu
Hệ thống yêu cầu quản lý chọn khóa học cần
sửa đổi.
Quản trị chọn [Sửa khóa học].
Hệ thống hiển thị thông tin của khóa học
Quản trị sửa đổi những thông tin cần thiết và
xác nhận việc sửa đổi bằng việc click [Lưu lại].
Hệ thống cập nhật lại các thay đổi vào cơ sở
dữ liệu.
Hệ thống yêu cầu quản trị chọn khóa học cần
xóa.
Quản trị chọn [Xóa khóa học] và xác nhận việc
xóa khóa học.
Hệ thống loại bỏ khóa học khỏi cơ sở dữ liệu
và cập nhật lại cơ sở dữ liệu.
Luồng sự kiện này được thực hiện khi quản trị
không muốn thêm, sửa, xóa khóa học khỏi hệ
thống bằng việc chọn [Hủy].
Quản trị phải đăng nhập thành công vào hệ
thống.
Nếu ca sử dụng này thành công, thông tin về
khóa học sẽ được thêm vào, sửa đổi, hay xóa
khỏi hệ thống. Trong các trường hợp khác, hệ
thống ở trạng thái chưa thay đổi.