Tải bản đầy đủ (.docx) (24 trang)

bao cao công ty TNHH BeeSight Soft

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

Báo cáo thực tập doanh nghiệp

1

Cao Đại Hoàng Hùng

LỜI CẢM ƠN
Lời đầu tiên tôi xin gửi lời cảm ơn chân thành đến quý lãnh đạo công ty TNHH
BeeSight Soft đã tạo điều kiện cho tôi được thực tập ở công ty. Bên cạnh đó tôi cũng rất
cảm ơn các anh/chị nhân viên trong công ty đã giúp đỡ, hỗ trợ tôi và đặc biệt tôi xin gửi
lời cảm ơn sâu sắc đến anh Hoàng Minh Huy đã tận tình hướng dẫn, chỉ dạy cho tôi trong
suốt quá trình được thực tập ở công ty.
Về phía nhà trường tôi xin trân trọng cảm ơn các thầy/cô khoa Mạng máy tính và
truyền thông, trường Đại học Công Nghệ Thông Tin – Đại học Quốc Gia TP.HCM đã
giúp đỡ, tạo điều kiện cho tôi được thực hiện tốt khóa thực tập. Tôi xin gửi lời cảm ơn
chân thành đến thầy Đàm Quang Hồng Hải – trưởng khoa Mạng máy tính và truyền
thông, thầy Vũ Trí Dũng – cố vấn học tập lớp MMT04 đã kịp thời hỗ trợ, cung cấp những
thông tin cần thiết cho tôi để tôi có thể hoàn thành tốt khóa thực tập doanh nghiệp này.
Và cuối cùng, tôi xin gửi lời cảm ơn chân thành đến gia đình, bạn bè và những
người thân đã giúp đỡ, động viên và tạo điều kiện thuận lợi cho tôi trong thời gian thực
tập.
Một lần nữa tôi xin chân thành cảm ơn!
Sinh viên thực tập
Cao Đại Hoàng Hùng


Báo cáo thực tập doanh nghiệp

2

MỤC LỤC



DANH MỤC SƠ ĐỒ, HÌNH ẢNH

Cao Đại Hoàng Hùng


Báo cáo thực tập doanh nghiệp

3

Cao Đại Hoàng Hùng

PHẦN I: GIỚI THIỆU TỔNG QUAN VỀ DOANH NGHIỆP
1. Giới thiệu công ty TNHH BeeSight Soft.
1.1. Sơ lược về công ty.
- Tên công ty: Công ty TNHH BeeSight Soft.
-

Tên tiếng anh: BeeSight Soft Limited Company.

-

Địa chỉ: 31/16 Phạm Phú Thứ, phường 11, quận Tân Bình, TP.HCM.

-

Điện thoại: (+84) 838 658 397 (+84) 908 558 815

-


Email:

-

Website: www.beesightsoft.com

Công ty TNHH BeeSight Soft được thành lập vào năm 2010, là một doanh nghiệp
chuyên nghiên cứu, phát triển và cung cấp các giải pháp công nghệ thông tin cho các
khách hàng trong và ngoài nước. Các lĩnh vực của công ty bao gồm:





Phát triển ứng dụng.
Phát triển web.
Cung cấp các giải pháp công nghệ thông tin.
Nghiên cứu và phát triển khoa học máy tính.

Các nhân viên đầu tiên của công ty đều đã có hơn 8 năm kinh nghiệm trong công
việc phát triển phần mềm, từng làm việc cho các công ty phần mềm có uy tín tại Việt
Nam. Các thành viên khác đều được tuyển chọn một cách nghiêm ngặt và được đào tạo
từ các trường đại học hàng đầu của Việt Nam.
1.2. Nhiệm vụ và chức năng của công ty.
1.2.1. Phát triển phần mềm.
- Xây dựng các ứng dụng .NET bằng Winform, WPF, LinQ, WCF.
-

Xây dựng các ứng dụng C++ bằng MFC, các ứng dụng hệ thống, driver.


-

Xây dựng các ứng dụng Java bằng J2SE và J2EE.

-

Xây dựng các ứng dụng đa nền tảng (Windows và MacOS) bằng Mono, QT.


Báo cáo thực tập doanh nghiệp

4

Cao Đại Hoàng Hùng

1.2.2. Phát triển web.
- Xây dựng và phát triển các hệ thống Website bằng PHP (Joomla, Wordpress),
ASP.NET (DotNetNuke, NopCommerce), Silverlight, Javascript, Flash,...
- Cung cấp các giải pháp về kiến trúc Client-Server cho các hệ thống mạng ổn
định và có thể mở rộng.
- Cung cấp các dịch vụ thiết kế website chuyên nghiệp bao gồm: thiết kế layout,
thiết kế đồ họa v.v... Tất cả các sản phẩm đều theo chuẩn XHTML của W3C. Đặc biệt
công ty luôn cập nhật các công nghệ mới nhất cho các sản phẩm, ví dụ như CSS3 và
HTML5.
1.2.3. Cung cấp các giải pháp công nghệ thông tin.
Công ty BeeSight Soft luôn cập nhật các kiến thức về phát triển phần mềm theo xu
thế mới để cung cấp cho khách hàng các giải pháp tốt nhất. Các giải pháp công ty cung
cấp bao gồm:
-


Cơ sở hạ tầng cho hệ thống phần mềm.

-

Các giải pháp xây dựng lại hệ thống.

-

Các giải pháp tối ưu hóa hiệu suất.

-

Các công nghệ mới.

1.2.4. Nghiên cứu và phát triển khoa học máy tính.
- Nghiên cứu và phát triển là một thế mạnh của công ty. Công ty đang sở hữu
một số kỹ sư chuyên ngành thuật toán và toán tin được đào tạo từ các trường đại học
hàng đầu Việt Nam. Một số dự án công ty đã từng thực hiện như: hệ thống đồ họa dùng
cho việc vẽ các hình đơn giản cho .NET framework, hệ thống cơ sở dữ liệu nhúng cho
.NET framework.
- Bên cạnh đó, công ty còn nghiên cứu và xây dựng các thư viện riêng cho ORM
(tương tự với NHibernate), thư viện serialization tùy biến.


Báo cáo thực tập doanh nghiệp

5

Cao Đại Hoàng Hùng


1.3. Cơ cấu tổ chức công ty.

Giám Đốc

Trợ Lý Giám Đốc

Phòng Phát Triển Phần
Mềm

Phòng Phát Triển Web

Phòng Tư Vấn Giải Pháp

Phòng Nghiên Cứu Phát
Triển

Sơ đồ 1: Cơ cấu tổ chức công ty TNHH BeeSight Sof

1.4. Một số đặc điểm của công ty.
- Công ty TNHH BeeSight Soft chuyên cung cấp cho khách hàng các giải pháp
công nghệ thông tin với những công nghệ khác nhau phù hợp với nhu cầu của khách hàng
với giá cả hợp lý.
- Công ty ưu tiên sử dụng các dự án mã nguồn mở cho các dự án của mình, do
đó tiết kiệm được chi phí và việc sử dụng các dự án mã nguồn mở này giúp cho việc phát
triển linh động và dễ mở rộng hơn.
- Ngoài các quy trình phát triển phần mềm truyền thống, công ty còn áp dụng
quy trình phát triển phần mềm theo mô hình linh hoạt (Agile - quy trình SCRUM). Đây
là công nghệ cung cấp rất nhiều phương pháp luận, quy trình và các thực nghiệm cho việc
phát triển phần mềm trở nên nhanh chóng và dễ dàng hơn.
- Công ty luôn cập nhật các công nghệ mới nhất bằng cách thành lập nhóm tự

học vào mỗi thứ 7 hàng tuần. Tất cả thành viên của công ty tự tổ chức một buổi thuyết
trình về một công nghệ mới mà mình quan tâm. Từ đó, mỗi thành viên không những có
thể tự nâng cao kiến thức, kỹ năng của mình mà còn có thể cập nhật được những công
nghệ mới, những kiến thức mới để phát triển hơn nữa khả năng của mình.


Báo cáo thực tập doanh nghiệp

6

Cao Đại Hoàng Hùng

2. Giới thiệu phòng Phát triển phần mềm.
2.1. Cơ cấu tổ chức.

Trưởng Phòng

Lập Trình Viên

Kiểm Thử

Sơ đồ 2: Cơ cấu tổ chức phòng phát triển phần mềm

2.2. Nhiệm vụ và chức năng.
- Nhiệm vụ và chức năng đối với trưởng phòng Phát triển phần mềm:
• Quản lý, đào tạo và xây dựng đội ngũ nhân viên phần mềm phục vụ các
dự án và cho hoạt động của công ty.
• Tổ chức, quản lý phòng Phát triển phần mềm, chịu trách nhiệm phân
công công việc và hỗ trợ nhân viên hoàn thành các nhiệm vụ được giao.
• Phân tích yêu cầu và thiết kế các giải pháp hệ thống, lên kế hoạch và

chịu trách nhiệm tổ chức thực hiện các dự án của công ty.
• Nghiên cứu và soạn thảo các quy trình và tiêu chuẩn chất lượng liên
quan đến các dự án phần mềm của công ty.
-

Nhiêm vụ và chức năng đối với lập trình viên:
• Lập trình các phần mềm ứng dụng theo dự án được giao.
• Phát triển phần mềm bằng ngôn nữ .NET, C++, Java.
• Hỗ trợ khách hàng.
• Thực hiện các nhiệm vụ khác theo yêu cầu của trưởng phòng Phát triển
phần mềm.

-

Nhiệm vụ và chức năng đối với nhân viên kiểm thử:
• Kiểm thử các dự án phần mềm.
• Phân tích yêu cầu của dự án.
• Tạo Test Plan, Test Schedule.


Báo cáo thực tập doanh nghiệp




7

Cao Đại Hoàng Hùng

Viết Test Case, Test Data, TestScript.

Log Bug, Verify và Report Bug.
Thực hiện các công việc khác do trưởng phòng Phát triển phần mềm
phân công.

3. Giới thiệu về công việc thực tập
3.1. Vị trí thực tập.
Sinh viên thực tập vào vị trí lập trình viên phòng Phát triển phần mềm.
3.2. Công việc thực tập.
- Tìm hiểu về quy trình phát triển phần mềm.
-

Tìm hiểu về .NET, ngôn ngữ lập trình C#, C++.

-

Tìm hiểu về một số công nghệ hỗ trợ .NET: Log4net và NHibernate.

- Tìm hiểu về QT framework và thực hiện dự án xây dựng ứng dụng
FinalTorrent bằng QT framework theo yêu cầu của khách hàng.
3.3. Yêu cầu đối với sinh viên thực tập.
- Nắm được quy trình phát triển phần mềm và có khả năng ứng dụng vào các dự
án thực tế.
- Nắm được các kiến thức cơ bản và một số kiến thức nâng cao về .NET và ngôn
ngữ lập trình C#, C++.
- Hiểu được chức năng và biết cách sử dụng các chương trình mã nguồn mở hỗ
trợ cho .NET: Log4net và NHibernate. Đồng thời, có thể tự xây dựng cho mình các
chương trình tương tự.
- Nắm được các cấu trúc cơ bản của QT framework, cách sử dụng và có thể ứng
dụng vào dự án FinalTorrent.
- Thực hiện dự án xây dựng và phát triển ứng dụng tải tập tin torrent mang tên

FinalTorrent trên hệ điều hành Windows và MacOS bằng QT framework.
3.4. Nhiệm vụ của sinh viên thực tập.
- Hoàn thành đầy đủ các yêu cầu do người hướng dẫn thực tập đưa ra.
-

Thực hiện theo quy trình phát triển phần mềm của công ty.

-

Đảm bảo hoàn thành dự án theo đúng yêu cầu và thời gian quy định.


Báo cáo thực tập doanh nghiệp

3.5. Thời gian thực tập.
Khóa thực tập kéo dài trong 3 tháng:
-

Ngày bắt đầu: 1/6/2012.

-

Ngày kết thúc: 31/8/2012.

8

Cao Đại Hoàng Hùng


Báo cáo thực tập doanh nghiệp


9

Cao Đại Hoàng Hùng

PHẦN II: NỘI DUNG THỰC TẬP
1. Nhiệm vụ sinh viên được giao.
-

Tìm hiểu quy trình phát triển phần mềm áp dụng ở công ty.

- Tìm hiểu các kiến thức cơ bản và nâng cao về .NET và ngôn ngữ lập trình C#
dưới sự hướng dẫn của người hướng dẫn thực tập.
- Tìm hiểu về một số dự án mã nguồn mở hỗ trợ cho .NET bao gồm: Log4net và
NHibernate. Xây dựng các dự án tương tự theo sự hướng dẫn của người hướng dẫn thực
tập.
- Tìm hiểu về QT framework và thực hiện dự án xây dựng ứng dụng
FinalTorrent theo yêu cầu khách hàng.
2. Các kiến thức được tìm hiểu và các công nghệ được tiếp xúc, làm việc.
2.1. Quy trình phát triển phần mềm theo mô hình thác nước (tuyến tính).
Mô hình này xem quá trình xây dựng một sản phẩm phần mềm bao gồm nhiều giai
đoạn tách biệt, sau khi hoàn tất một giai đoạn thì chuyển đến giai đoạn sau. Mô hình
được biểu diễn như sau:


Báo cáo thực tập doanh nghiệp

10

Cao Đại Hoàng Hùng


Đặc tả yêu cầu

Thiết kế hệ thống và lập trình

Cài đặt và kiểm thử đơn vị

Tích hợp và kiểm thử hệ thống

Vận hành và bảo trì

Sơ đồ 3: Quy trình phát triển phần mềm theo mô hình thác nước

- Đặc tả yêu cầu: Xác định các đặc điểm mà hệ thống phải cung cấp, các ràng
buộc trong quá trình vận hành và phát triển, đồng thời xác định mục tiêu đặt ra đối với hệ
thống thông qua yêu cầu của khách hàng. Sau đó, ta tư liệu hóa các yêu cầu thu được
trong tài liệu.
- Thiết kế hệ thống và lập trình: Phân chia các yêu cầu cho hệ thống phần mềm,
sau đó thiết lập nên các kiến trúc hệ thống phần mềm. Tiếp theo ta tiến hành thiết kế phần
mềm bằng cách xây dựng và mô tả các hệ thống phần mềm con cấu thành nên phần mềm
cần được xây dựng và mối quan hệ giữa các hệ thống.
- Cài đặt và kiểm thử đơn vị: Chuyển bản thiết kế phần mềm thành một tập hợp
các chương trình hoặc đơn vị chương trình, sau đó thực hiện hoạt động kiểm thử đơn vị
để phát hiện các khiếm khuyết, sửa các khiếm khuyết này và chỉ ra rằng chúng đã được
cài đặt theo đúng tài liệu đặc tả.
- Tích hợp và kiểm thử hệ thống: Các đơn vị chương trình được tích hợp lại với
nhau thành hệ thống hoàn chỉnh. Sau đó tiến hành hoạt động kiểm thử hệ thống nhằm
kiểm tra sự ăn khớp giữa các thành phần và chỉ ra rằng phần mềm đã đáp ứng được yêu
cầu người dùng và nó được xây dựng theo đúng tài liệu đặc tả.
- Vận hành và bảo trì: Đưa phần mềm vào sử dụng trong thực tế và tiến hành các

sửa đổi cần thiết nếu người dùng phát hiện ra khiếm khuyết.


Báo cáo thực tập doanh nghiệp

11

Cao Đại Hoàng Hùng

Trong mô hình thác nước này, năm pha trên phải được thực hiện một cách tuần tự,
kết thúc pha trước mới được thực hiện pha tiếp theo.
 Ưu điểm:

-

Dễ phân công công việc, phân bổ chi phí, giám sát công việc.

-

Kiến trúc hệ thống hàng đợi ổn định.

 Nhược điểm:

-

Mối quan hệ giữa các giai đoạn không được thể hiện.

- Hệ thống phải được kết thúc ở từng giai đoạn, do vậy rất khó thực hiện được
đầy đủ những yêu cầu của khách hàng vì trong mô hình này rất khó khăn trong
việc thay đổi các pha đã thực hiện.

- Chỉ tiếp xúc với khách hàng ở pha đầu tiên nên phần mềm không đáp ứng được
hết các yêu cầu của khách hàng.
-

Chi phí phát triển dự án tương đối lớn.

-

Khả năng thất bại cao.

2.2. Log4net.
2.2.1. Tổng quan.
Log4net là một công cụ giúp người lập trình ghi lại những thông tin trong lúc chạy
ứng dụng được xây dựng bằng .NET. Nó chính là một phiên bản chuyển thể từ Log4j và
vẫn tiếp tục được phát triển kể từ năm 2001. Trong trường hợp ứng dụng có lỗi mà vẫn
không tìm được nguyên nhân, Log4net có thể giúp ta xác định nơi gây lỗi. Ngoài ra,
Log4net còn có thể thay đổi trạng thái log lúc chương trình chạy mà không cần ngừng
chương trình. Bên cạnh đó, khi sử dụng Log4net sẽ không ảnh hưởng đáng kể đến hiệu
suất của ứng dụng, Log4net còn được thiết kế với tính linh hoạt rất cao, chúng ta có thể
mở rộng và bổ sung những thứ mình muốn vào thư viện Log4net, chẳng hạn như cách
thức log, định dạng log.
2.2.2. Các cấp độ log.
Có tất cả 7 cấp độ log, tuy nhiên ta chỉ có thể gọi sử dụng được 5 loại. Các cấp độ
log theo thứ tự gồm:
1. OFF - không log gì cả (ta không sử dụng được cấp độ này).


Báo cáo thực tập doanh nghiệp

12


Cao Đại Hoàng Hùng

2. FATAL
3. ERROR
4. WARN
5. INFO
6. DEBUG
7. ALL - log tất cả (ta không sử dụng được cấp độ này).
Các cấp độ này đều có thể sử dụng nhiều lần cả trong mã lập trình cũng như trong
tập tin cấu hình.
2.2.3.Cài đặt.
Download phiên bản mới nhất của Log4net từ địa chỉ Website
(các ví dụ dưới đây sử dụng phiên bản Log4net 1.2.10)
và thêm Reference vào project:

Hình 1: Cài đặt Log4net

2.2.4. Cấu hình
- Thêm dòng dưới đây vào file AssemblyInfo.cs (trong thư mục Property của
project):
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4netSam
ple.exe.config", Watch = true)]

-

Thêm đoạn code trên vào tập tin AssemblyInfo.cs sẽ giúp Log4net tìm thấy các
thông tin cấu hình của nó ở tập tin App.config. Ở đây ta thấy
ConfigFile=“Log4netSample.exe.config” trong khi tập tin cấu hình của ta là App.config.
Nguyên nhân là do tập tin cấu hình của ứng dụng sẽ tự động build thành dạng



Báo cáo thực tập doanh nghiệp

13

Cao Đại Hoàng Hùng

tên_assembly.config. Ví dụ chương trình đang thực hiện có tên là Log4netSample.exe
nên ở đây ta chọn tên tập tin cấu hình là Log4netSample.exe.config. Đối với ứng dụng
web ta sẽ thiết lập tên tập tin cấu hình ConfigFile=“Web.config” (Web là tên của ứng
dụng) vì tập tin cấu hình cho ứng dụng web sẽ không bị đổi tên.
- Nếu project chưa có tập tin App.config thì ta sẽ tự thêm vào tập tin này. Đây là
tập tin cấu hình cho ứng dụng. Sau đó thêm vào tập tin App.config các thẻ như sau:
<configSections>
type="log4net.Config.Log4NetConfigurationSectionHandler,
log4net" />
</configSections>
<log4net debug="true">
type="log4net.Appender.RollingFileAppender">
<file value="Log4netSampleLog.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="1MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">

%n" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>

Nội dung tập tin cấu hình:
Trong tập tin cấu hình trên ta sử dụng RollingFileAppender để ghi nội dung log
vào tập tin. Có rất nhiều loại Appender được xây dựng sẵn trong thư viện Log4net, ví dụ
như ta còn có thể sử dụng ConsoleAppender để ghi nội dung log ra cửa sổ console. Mỗi
loại có công dụng ghi nội dung log vào một nơi khác nhau.
<file value="Log4netSampleLog.txt">

 Thông tin log sẽ được ghi vào tập tin Log4netSampleLog.txt, tập tin này nằm cùng

thư mục với tập tin thực thi của ứng dụng. Nếu ta muốn lưu tập tin log này vào vị
trí khác, ta có thể dùng đường dẫn tuyệt đối để xác định thư mục muốn lưu.
<maxsizerollbackups value="10" />


Báo cáo thực tập doanh nghiệp


14

Cao Đại Hoàng Hùng


Dữ liệu log sẽ được lưu vào tập tin vì ta đang sử dụng RollingFileAppender. Khi
kích thước tập tin vượt quá một mức nào đó thì Log4net sẽ tự động đổi tên tập tin
cũ và ghi vào tập tin mới. Tổng số lượng tập tin tối đa sẽ là 10 và những tập tin cũ
nhất sẽ bị xóa nếu số lượng tập tin vượt quá 10.
<maximumfilesize value="1MB">



Kích thước tập tin log tối đa là 1MB.
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M %m%n" />
<layout>

 Đây là phần quy định định dạng của nội dung log được ghi vào như ngày, tháng,

năm, thread id, tên lớp,… Ta có thể tùy biến định dạng theo ý riêng của mình.
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender" />
</root>

 Quy định cấp độ log, mặc định sẽ là cấp Debug cho tất cả các log. Nghĩa là nếu ta

khai báo như trên thì toàn bộ các log ghi vào tập tin đều được ghi với cấp độ
Debug, cấp độ Debug là cấp độ thấp nhất mà ta có thể sử dụng được. Nếu ta thiết
lập giá trị Error thay cho Debug thì chỉ có những log nào có cấp độ cao hơn hoặc
bằng cấp độ Error mới được ghi xuống tập tin (xem thứ tự các cấp độ ở phần
trước). Khi deploy chương trình cho khách hàng, thường chúng ta sẽ thiết lập cấp
độ mặc định là Error, khi sử dụng có lỗi ta sẽ yêu cầu khách hàng sửa lại thành
Debug nếu cần thiết.

2.2.5. Sử dụng.
- Thêm namespace log4net vào những nơi mà ta muốn sử dụng Log4net.
- Thêm đoạn code dưới đây trong lớp nào có sử dụng Log4net:
private static readonly ILog logger
= LogManager.GetLogger(typeof(TênLớp).Name);

hoặc có thể sử dụng cách tổng quát:
private static readonly ILog logger =
LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod
().DeclaringType);

-

Khi cần ghi log ta sẽ dùng đoạn code như sau:
logger.Debug("Logger started");

hoặc:
logger.Error("Logger started");

Trên thực tế, để tăng tối đa tốc độ ta nên khai báo một biến boolean để kiểm tra
xem có cần log hay không, nếu có thì mới gọi hàm log:


Báo cáo thực tập doanh nghiệp

15

Cao Đại Hoàng Hùng

bool isLogEnabled = logger.IsDebugEnabled;

if (isLogEnabled)
{
logger.Debug("Logger started");
}

Ngoài khả năng ghi những đoạn log vào tập tin như trên, Log4net còn cho phép ta
ghi log vào cơ sở dữ liệu, ghi ra cửa sổ console và thậm chí là có thể email cho chúng ta.
Bên cạnh đó, Log4net là một dự án mã nguồn mở, do đó ta có thể kế thừa, mở rộng và
phát triển thêm.
2.3. Nhibernate.
2.3.1. ORM Framework.
- Framework là một khái niệm trong phát triển phần mềm dùng để chỉ những
“cấu trúc hỗ trợ được định nghĩa” mà trong đó những dự án phần mềm khác có thể được
sắp xếp vào đó và phát triển.
- ORM (Object Relational Mapping) framework là một cơ chế cho phép người
lập trình thao tác với database một cách hoàn toàn tự nhiên thông qua các đối tượng. Lập
trình viên hoàn toàn không quan tâm đến loại database sử dụng.
2.3.2. Persistence Layer.
- “Tier” và “Layer”: tier thường được gắn với phần cứng về mặt vật lý (physical)
còn layer thì dính đến vấn đề cách thức tổ chức bên trong của ứng dụng. Việc phân chia
tier là “trong suốt” (transparent) đối với ứng dụng về mặt luận lý (logical). Điều này có
nghĩa là khi ta phát triển một ứng dụng, chúng ta không bận tâm đến các thành phần
(component) sẽ triển khai (deploy) ra sao mà chỉ chú ý là chúng ta sẽ tổ chức ứng dụng
thành những layer như thế nào.
- Persistence layer: một ứng dụng có thể được chia làm 3 phần như sau: giao
diện người dùng (presentation layer), phần xử lý nghiệp vụ (business layer) và phần chứa
dữ liệu (data layer). Cụ thể ra, business layer có thể được chia nhỏ thành 2 layer con là
business logic layer (các tính toán nhằm thỏa mãn yêu cầu người dùng) và persistence
layer. Persistence layer chịu trách nhiệm giao tiếp với data layer (thường là một hệ quản
trị cơ sở dữ liệu quan hệ - Relational DBMS). Persistence sẽ đảm nhiệm các nhiệm vụ

mở kết nối, truy xuất và lưu trữ dữ liệu vào các Relational DBMS.
2.3.3. Hibernate Framework.
- Là một giải pháp kĩ thuật ánh xạ từ mô hình hướng đối tượng xuống cơ sở dữ
liệu quan hệ (Object-relational mapping (ORM)) cho nền tảng Microsoft.NET.
-

Cung cấp một giải pháp để mapping đến cơ sở dữ liệu một cách dễ dàng.


Báo cáo thực tập doanh nghiệp

16

Cao Đại Hoàng Hùng

- Cung cấp cho chúng ta các phương thức thao tác với cơ sở dữ liệu và tạo ra các
dữ liệu chuẩn dưới dạng các object. khi đó chúng ta sẽ thao tác với dữ liệu thông qua các
object.
- Tất cả các dữ liệu được lấy lên hoặc lưu lại sẽ được lưu vào bộ nhớ của máy và
sẽ được load lại hoặc đẩy xuống khi chúng ta thực hiện đẩy xuống hoặc load cơ sở dữ
liệu.

Sơ đồ 4: Cấu trúc chương trình sử dụng NHibernate


Báo cáo thực tập doanh nghiệp

17

Cao Đại Hoàng Hùng


2.4. Qt Framework.
2.4.1. Giới thiệu về Qt Framework.
- Qt là một Framework cho phép xây dựng các ứng dụng có giao diện chạy
trên nhiều nền tảng: bao gồm hệ điều hành Symbian, Meego, Windows, Linux, Mac.
- Qt Framework bao gồm một thư viện hỗ trợ chạy đa nền, tích hợp với các
công cụ phát triển và các IDE. Với Qt Framework bạn có thể lập trình một ứng dụng trên
Windows và biên dịch để chúng chạy trên Linux hoặc Mac mà không phải thay đổi mã
nguồn của chương trình.
- Qt cũng hỗ trợ đa ngôn ngữ lập trình, ngoài phiên bản chính thức hỗ trợ cho
C++, Qt còn có các phiên bản binding cho các ngôn ngữ khác như Pascal, C#, Python,
Ruby v.v...
2.4.2. Lịch sử phát triển của Qt framework.
- Qt framework được khởi xướng bởi Haavard Nord (CEO công ty Trolltech's)
và Eirik Chambe-Eng (giám đốc công ty Trolltech) từ năm 1991 (ban đầu họ chỉ là những
lập trình viên bình thường). Đến năm 1995 phiên bản đầu tiên của Qt được công bố ra
cộng đồng, đó là phiên bản Qt 0.9.0.
- Năm 1999 Qt giành được giải thưởng Linux World cho thư viện/công cụ tốt
nhất. Và cũng trong khoảng thời gian này, công ty Trolltech được thành lập.
- Năm 2008 Nokia mua lại Trolltech, từ đây Qt được sở hữu và phát triển bởi
Nokia. Mã nguồn của Qt cũng được công bố cho cộng đồng mã nguồn mở.
- Hiện nay Qt có 2 phiên bản: Môt phiên bản mã nguồn mở và một phiên bản
thương mại. Với phiên bản thương mại thì người lập trình không phải công bố mã nguồn
với cộng đồng.
2.4.3. Các thành phần của Qt.
-

QtOpenGl: Hỗ trợ đồ họa.

-


QtSvg: Hỗ trợ tạo và hiển thị các tập tin SVG.

-

QtWebkit: Hỗ trợ web.

-

QtXmlPattern: Hỗ trợ XPath, XQuery, XSLT,...

-

Qt3Support: Hỗ trợ các chức năng trong Qt3.

-

QtGui: Hỗ trợ giao diện người dùng.

-

QtNetwork: Hỗ trợ các tương tác trên mạng.

-

QtSql: Hỗ trợ sử dụng cơ sở dữ liệu.

-

QtXml: Hỗ trợ làm việc với Xml.


-

QtScript.: Hỗ trợ làm việc với các script.


Báo cáo thực tập doanh nghiệp
-

18

Cao Đại Hoàng Hùng

Phonon: Hỗ trợ các ứng dụng multimedia.
2.4.4. Các ưu điểm của Qt.
- Code một lần và chạy khắp mọi nơi: code trên Windows, chạy trên Linux,
Mac, thiết bị di động, thiết bị nhúng,...
-

Các thư viện trực quan, đơn giản và dễ sử dụng.

-

Tạo ra code dễ đọc, dễ mở rộng và dễ tái sử dụng.

-

Ứng dụng tạo ra có hiệu suất xử lý cao và chạy khá nhanh.

- OpenWebkit cho phép xây dựng và chạy các ứng dụng dựa trên nền web, ví dụ

như game viết bằng Html5, Css, JavaScript.
3. Dự án thực tập - xây dựng ứng dụng FinalTorrent bằng Qt Framework.
3.1. Yêu cầu.
- Xây dựng ứng dụng tải tập tin torrent bằng ngôn ngữ C++ dựa trên Qt
Framework.
- Ứng dụng phải có đầy đủ các chức năng và giao diện tương tự như phần mềm
FinalTorrent ().
-

Ứng dụng phải được xây dựng trên cả hai hệ điều hành Windows và MacOS.

- Sử dụng thư viện torrent libtorrent-rasterbar (tải về tại terbar
.com/products/libtorrent) để thực hiện các chức năng tải tập tin torrent cho ứng dụng.
- Dự án được coi là hoàn tất chỉ khi ứng dụng đáp ứng đầy đủ các yêu cầu đặt ra
và có thể tải tập tin torrent một cách chính xác.
3.2. Các bước thực hiện.
3.2.1. Xác định yêu cầu.
Tìm hiểu các yêu cầu của dự án, nắm rõ các công việc phải làm và lên kế hoạch
thực hiện.
3.2.2. Xây dựng cửa sổ chính cho chương trình.
Cửa sổ chính của chương trình bao gồm:
-

Thanh menu.

- Thanh button, chứa các button tương ứng với mỗi module (Home, Search,
Library, Downloads).
-

Vùng làm việc chứa các module.



Báo cáo thực tập doanh nghiệp

-

19

Cao Đại Hoàng Hùng

Thanh trạng thái.

Hình 2: Cửa sổ chính chương trình FinalTorrent

3.2.3. Xây dựng module Home.
Module Home gồm các thành phần:
-

Phần giới thiệu: Giới thiệu về

chương trình.

- Phần tìm kiếm: Cho phép nhập từ
tập tin torrent và hiển thị kết quả tìm kiếm
Search.

khóa tìm kiếm
trong module

- Phần mở tập tin torrent: Cho phép mở tập tin torrent từ hệ thống và tiến hành

tải nội dung tập tin torrent vừa mở.
3.2.4. Xây dựng module Downloads.

Hình 3: Module Home

Module Downloads được xem là
module quan trọng nhất của chương trình vì nó thực hiện các thao tác tải tập tin torrent
bằng cách sử dụng thư viện libtorrent-rasterbar có sẵn. Module này gồm có các thành
phần như sau:
- Danh sách các tập tin torrent đã
Danh sách này liệt kê chi tiết về quá trình tải
gồm: tên tập tin torrent, kích thước tập tin,
trình tải về, tốc độ tải về, số lượng máy đang
còn lại v.v…
-

hoặc đang tải về.
tập tin torrent bao
trạng thái, quá
chia sẻ, thời gian

Các button hỗ trợ chức năng cho việc tải về bao gồm:


Start: Bắt đầu tải tập tin hoặc tiếp
tục tải nếu tập tin đang bị tạm
dừng.

Hình 4: Module Downloads



Báo cáo thực tập doanh nghiệp

20

Cao Đại Hoàng Hùng



Pause: Tạm dừng quá trình tải.



Cancel: Hủy quá trình tải. Chú ý nếu quá trình tải đã thành công thì nội
dung tải về vẫn còn tồn tại.



Delete: Xóa quá trình tải. Chú ý nếu quá trình tải đã thành công thì nội
dung tải về cũng sẽ bị xóa đi.

- Ngoài ra còn có một menu ngữ cảnh xuất hiện khi nhấp chuột phải vào các
mục trong danh sách tải về với các chức năng tương tự với các button.
3.2.5. Xây dựng module Library.
Các thành phần của module Library bao gồm:
- Danh sách các tập tin đã tải về (tên tập tin, kích thước, đường dẫn). Khi nhấp
đúp vào một tập tin chương trình sẽ mở ra tập tin tương ứng trong cửa sổ Windows
Explorer.
- Danh sách các tập tin torrent đã
trình lưu (tên tập tin, kích thước, đường dẫn).

vào một tập tin torrent, chương trình sẽ mở
tập tin torrent.
-

được
chương
Khi nhấp đúp
thư mục chứa các

Các button hỗ trợ chức năng bao gồm:


Open: Mở tập tin tương ứng từ danh dách.



Remove: Xóa tập tin tương ứng
trong danh sách.

Hình 5: Module Library

- Ngoài ra còn có một menu ngữ cảnh xuất hiện khi nhấp chuột phải vào các tập
tin trong danh sách với các chức năng tương tự như các button.
3.2.6. Xây dựng module Search.
Module Search được xây dựng bằng
cách sử dụng 2
trang web tìm kiếm tập tin torrent khá phổ
biến

www.mininova.org và www.legittorrents.info.

Yêu cầu của
khách hàng là nhúng một trình duyệt web vào
phần kết quả tìm
kiếm. Tuy nhiên, do đối với QT Framework,
nếu muốn sử
dụng một trình duyệt web nhúng thì ta phải sử dụng thư viện Webkit, mà thư viện này lại
có kích thước khá lớn (hơn 12MB). Do đó, ta không thể dùng trình duyệt nhúng được mà
thay vào đó, ta sử dụng một QTextBrowser – một dạng text có thể hiển thị các thẻ HTML
– để hiển thị các kết quả tìm kiếm cho người dùng. Các thành phần của module Search
gồm:


Báo cáo thực tập doanh nghiệp

21

Cao Đại Hoàng Hùng

-

Khung nhập từ khóa tìm kiếm và button tìm kiếm.

-

Danh sách lựa chọn trang web mà người sử dụng muốn tìm kiếm.

- Khung kết quả tìm kiếm. Kết quả
tìm kiếm được trả về là một bảng các kết quả
tìm kiếm từ trang web tương ứng.


Hình 6: Module Search

3.2.7. Xây dựng chức năng tùy chỉnh cho chương trình.
Chức năng này giúp người sử dụng có thể thay đổi các tùy chỉnh của chương trình
theo ý muốn của mình. Các tùy chỉnh được chia thành 4 tab:
-

-

File locations (vị trí lưu tập tin):


Vị trí lưu tập tin tải về hoặc tập tin chưa tải về hoàn tất.



Vị trí lưu tập tin sau khi đã tải về thành công.



Vị trí lưu tập tin torrent. Danh sách tập tin torrent trong
module Library chỉ ghi nhận lại khi vị trí này được xác định.

Connection (tùy chỉnh các kết nối):




-


Hình 7: Tab File locations

Thiết lập số hiệu port cho việc tải
tập tin. Có thể lựa chọn số hiệu
nhiên mỗi khi chương trình khởi

port
động.

ngẫu

Tùy chỉnh băng thông tải lên và tải xuống.

Bittorrent:

Hình 8: Tab Connection



Thiết lập số lượng kết nối tối đa.



Thiết lập số lượng máy trạm kết
mỗi torrent.



Thiết lập số lượng vị trí upload cho mỗi torrent.




Thiết lập số lượng tối đa các tiến trình tải đang hoạt động trong hàng đợi.



Thiết lập số lượng tối đa các torrent
đang hoạt động trong hàng đợi.

nối tối đa cho

Hình 9: Tab Bittorrent


Báo cáo thực tập doanh nghiệp

22

Cao Đại Hoàng Hùng

- Miscellaneous (thiết lập khác):


Thiết lập duy nhất trong phần này
năng tự động mở tập tin có phần
.torrent bằng chương trình
Thiết lập này sẽ thay đổi Registry
do đó ta nên chạy phần mềm với
dùng là Administrator để có thể thực hiện chức năng này.


là bật tắc chức
mở rộng là
FinalTorrent.
của hệ thống
cấp đợ người

3.2.8. Xây dựng chương trình và kiểm thử.
- Sau khi đã xây dựng xong các module
Hình 10: Tab Miscellaneous
và các thành phần khác, tiến hành xây dựng và
đóng gói chương trình. Sau đó, kiểm tra hoạt động của chương trình theo yêu cầu đặt ra
ban đầu.
- Sau khi đã kiểm tra sơ lược, gửi chương trình cho bộ phận kiểm thử, bộ phận
kiểm thử sẽ kiểm tra các lỗi của chương trình một cách toàn diện. Nếu có lỗi xảy ra, bộ
phận kiểm thử có trách nhiệm log bug cho lập trình viên để sửa chữa.
- Nếu quá trình kiểm thử đạt yêu cầu, chương trình sẽ được đóng gói cẩn thận,
loại bỏ các log (nếu có) trước khi gửi cho khách hàng phiên bản chạy thử. Nếu chương
trình đạt yêu cầu, ta tiến hành đóng gói bản chính thức.
3.3. Kết quả đạt được
- Xây dựng và phát triển được ứng dụng tải tập tin torrent mang tên FinalTorrent
trên cả 2 hệ điều hành Windows và Linux.
- Hiểu được cách thức làm việc với Qt Framework cũng như với các thư viện mã
nguồn mở như libtorrent-rasterbar.
-

Hoàn thành dự án cho công ty đúng thời hạn.

4. Nhận xét, đánh giá về doanh nghiệp và một số góp ý của sinh viên.
4.1. Về môi trường làm việc.
- Công ty TNHH BeeSight Soft nhìn chung giống như một công ty gia đình, số

lượng nhân viên tương đối ít nên mỗi thành viên trong công ty rất thân thiện, biết quan
tâm và giúp đỡ lẫn nhau. Điều này tạo điều kiện thuận lợi cho các thành viên trong công
ty có thể hỗ trợ lẫn nhau, tạo cảm giác thoải mái cho nhân viên làm việc trong công ty.


Báo cáo thực tập doanh nghiệp

23

Cao Đại Hoàng Hùng

- Bên cạnh đó, do công ty có số lượng nhân viên không quá lớn nên các xung
đột ít khi hoặc hầu như không xảy ra. Điều này tạo điều kiện tốt cho mối quan hệ giữa
các thành viên trong công ty, giúp các thành viên gắn bó và thân thiết với nhau, có thể san
sẻ công việc cho nhau, tạo điều kiện cho công ty ngày càng phát triển.
4.2. Về điều kiện làm việc.
- Tuy công ty chỉ nằm gọn trong một tòa nhà nhỏ nhưng điều kiện cơ sở vật chất
cũng được đầu tư khá đầy đủ và tiện nghi, đáp ứng được nhu cầu làm việc của nhân viên.
- Mỗi nhân viên có một không gian làm việc riêng khá thoải mái, được trang bị
máy cấu hình cao, đường truyền cáp quang phục vụ tốt cho nhu cầu công việc. Khi cần
thiết các nhân viên có thể trao đổi dễ dàng với nhau, tìm ra cách hiệu quả nhất để đạt
được mục đích công việc.
- Mỗi tháng công ty đều tổ chức cho các nhân viên trong công ty được thư giãn
cùng với nhau bằng một buổi đi xem phim. Điều này không những giúp cho nhân viên
giải tỏa những căng thẳng mệt mỏi sau những giờ làm việc căng thằng mà còn thể hiện sự
quan tâm, chính sách ưu đãi của công ty dành cho nhân viên.Ngoài ra, nếu thực hiện tốt
các dự án, các nhân viên của công ty cũng sẽ được khen thưởng xứng đáng.
- Tuy nhiên bên cạnh đó, giờ giấc làm việc của công ty theo tôi còn hơi bất cập.
Công ty bắt đầu làm việc lúc 8 giờ 30 phút sáng và kết thúc lúc 6 giờ chiều. Khoảng thời
gian làm việc của buổi sáng là 3 giờ rưỡi trong khi buổi chiều khoảng thời gian làm việc

kéo dài đến 4 giờ rưỡi, do thời gian làm việc buổi chiều khá dài và kết thúc giờ làm khá
trễ nên nhân viên thường cảm thấy mệt mỏi. Điều này cũng gây hiệu suất làm việc của
nhân viên giảm đi. Mong là trong thời gian sắp tới công ty sẽ có biện pháp điều chỉnh giờ
giấc làm việc cho cân bằng hơn để chất lượng công việc cũng như sức khỏe của nhân
viên được đảm bảo hơn.
4.3. Về số lượng nhân viên.
- Công ty có số lượng nhân viên tương đối thấp, tuy vẫn đáp ứng được công việc
nhưng chỉ dừng lại ở những dự án nhỏ. Do đó trong thời gian tới công ty cần tuyển dụng
thêm nhiều nhân viên hơn nữa để có thể đáp ứng được nhu cầu phát triển của công ty.
- Chất lượng quản lý công việc của công ty cũng chưa thật sự tốt vì số lượng
nhân viên quản lý còn khá ít, không thể đảm đương nhiều công việc cùng lúc. Đây cũng
là vấn đề mà công ty cần quan tâm trong quá trình phát triển trong tương lai.
4.4. Về quy mô công ty.


Báo cáo thực tập doanh nghiệp

24

Cao Đại Hoàng Hùng

- Do mới thành lập chưa lâu nên quy mô công ty còn tương đối nhỏ. Các dự án
thực hiện được mới chỉ mang tính cá nhân, tập thể độc lập, công ty chưa thể thực hiện các
dự án có quy mô lớn.
- Bên cạnh đó việc quảng bá thương hiệu của công ty cũng chưa được chú trọng
đúng mức, một phần là do sự thiếu thốn nhân lực và quy mô công ty chưa đủ lớn. Vì vậy
nếu muốn phát triển tốt hơn nữa trong tương lai, công ty cần chú trọng đẩy mạnh phát
triển quy mô của công ty cũng như tăng cường quảng bá thương hiệu, khẳng định tên tuổi
và uy tín của công ty trong lĩnh vực công nghệ thông tin ở Việt Nam và cả nước ngoài,
góp phần đưa nền công nghệ thông tin của cả nước nói chung và công ty nói riêng ngày

một đi lên.
4.5. Về tình hình kinh doanh của công ty.
- Với xu thế ngành công nghệ thông tin đang ngày càng phát triển trong những
năm gần đây, lĩnh vực nghiên cứu và phát triển phần mềm cũng đang rất được chú trọng.
Do đó, các dự án của công ty TNHH BeeSight Soft cũng ngày càng phong phú và đa
dạng hơn.
- Hiện nay xu thế di động đang phát triển một cách nhanh chóng trong lĩnh vực
công nghệ thông tin, từ những chiếc smartphone cho đến những chiếc máy tính bảng, tất
cả đang dần dần nằm gọn trong lòng bàn tay. Nắm được tình hình này, công ty hiện nay
đang đầu tư phát triển các ứng dụng phần mềm và ứng dụng web trên các nền tảng di
động, từ IOS cho đến Android với đội ngũ nhân viên chất lượng cao được tuyển dụng từ
các trường đại học hàng đầu Việt Nam. Điều này cho thấy công ty đang có một định
hướng đúng đắn cho con đường phát triển của mình.



×