Dù không dài nhưng đây thực sự là một bài học thực tế đáng giá cho những sinh viên cuối khóa, giúp tôi tự tin hơn khi đối diện với các công ty, với các cơ hội việc làm sau này, cho phép
Trang 1MỤC LỤC
I Giới thiệu chung 2
I.1 Giới thiệu công ty 2
I.2 Giới thiệu công việc 3
II Đề tài thực tập 4
II.1 Giới thiệu bài toán 4
II.2 Mô tả công việc 6
III Tóm tắt lý thuyết, giải pháp và thuật toán liên quan 7
III.1 Các công nghệ đã nghiên cứu và áp dụng 7
III.2 Giải pháp và thuật toán giải quyết các vấn đề 9
III.3 Quá trình phát triển hệ thống 9
IV Kết quả thu được 14
IV.1 Các kiến thức thu được 14
IV.2 Kết quả dự án 15
IV.3 Các kỹ năng thu được 16
Trang 2LỜI CẢM ƠN
Lời đầu tiên, tôi xin chân thành cảm ơn Trường Đại học Công nghệ nói chung và Khoa Công Nghệ Thông Tin nói riêng đã tạo điều kiện cho tôi được tham gia thực tập chuyên ngành, đây là cơ hội cho tôi cọ sát thực tế, ứng dụng những kiến thức ở trường vào thực tiễn, hoc tập quy trình và kĩ năng làm việc Dù không dài nhưng đây thực sự là một bài học thực tế đáng giá cho những sinh viên cuối khóa, giúp tôi tự tin hơn khi đối diện với các công ty, với các cơ hội việc làm sau này, cho phép tôi bày tỏ lời cảm ơn sâu sắc tới TS Nguyễn Thị Huyền Châu, cô đã tận tình hướng dẫn, chỉ bảo tôi trong quá trình thực hiện đề tài thực tập chuyên ngành này
Tôi xin cảm ơn chân thành tới Ban lãnh đạo công cổ phần phần mềm FPT, cùng anh Hoàng Việt Thắng, anh Đàm Anh Tuấn, chị Trịnh Thị Thanh Huyền và các anh chị quản lý, hướng dẫn trong công ty đã tạo mọi điều kiện giúp đỡ tôi trong quá trình thực tập chuyên ngành này
Mặc dù đã cố gắng thực hiện đề tài thực tập chuyên ngành trong phạm
vi và khả năng cho phép nhưng chắc chắn sẽ không tránh khỏi những thiếu sót, tôi rất mong nhận được sự đánh giá, góp ý, chỉ bảo tận tình của các thầy
cô và anh chị để đề tài thực tập chuyên ngành này được hoàn thiện hơn Tôi xin chân thành cảm ơn!
Hà Nội, ngày 30 tháng 8 năm 2013 Sinh viên thực hiện
Lê Văn Hưng
Trang 3I Giới thiệu chung
Tên đơn vị thực tập: Công ty cổ phần phần mềm FPT (FPT Sofware).
Địa chỉ: Tầng 4, tòa nhà Toyota Mỹ Đình, số 15 Phạm Hùng, Quận Cầu Giấy,
Hà Nội
Lịch sử phát triển:
Được thành lập năm 1988 bởi một nhóm các nhà khoa học trẻ trong các lĩnh vực Vật lý, Toán, Cơ, Tin học, chỉ sau một năm, FPT đã thành lập một bộ phận tin học mang tên ISC (Informatic Service Center)
Đến tháng 12 năm 1994, khi đã đủ lớn, ISC được tách thành các bộ phận chuyên sâu về dự án, phân phối, phần mềm… Bộ phận phần mềm lúc đó có tên là FSS (FPT Software Solutions - tên tiếng Việt là Xí nghiệp Giải pháp Phần mềm FPT)
Từ 1994 đến 1998, FSS tiếp tục phát triển và cung cấp các giải pháp phần mềm cho các lĩnh vực Ngân hàng, Kế toán, Thuế, Hải quan, Công an
Cuối năm 1998 đầu 1999, sau khi chiến lược xuất khẩu phần mềm được định hình, một nhóm chuyên gia được tách ra từ FSS để thành lập FSU1 (FPT Strategic Unit #1) như bộ phận chịu trách nhiệm mũi nhọn trong sứ mệnh Toàn Cầu Hoá FSU1 chính là tiền thân của FSOFT ngày nay
Năm 2001 được đánh dấu bằng các hợp đồng OSDC với Mỹ và đặc biệt là OSDC với NTT-IT - khách hàng Nhật bản đầu tiên của FSOFT Năm 2001 cũng là năm FSOFT bắt đầu dự án CMM-4, với mục tiêu đạt chứng chỉ CMM mức 4 trong vòng một năm FSOFT đạt CMM mức 4 vào tháng 3/2002, trở thành công ty đầu tiên ở khu vực Đông Nam Á đạt chứng chỉ này Năm 2002 cũng là năm FSOFT củng cố lại sơ đồ tổ chức, bằng việc thành lập các Trung tâm sản xuất và các Phòng chức năng Cuối 2002, lần đầu tiên doanh số FSOFT vượt ngưỡng 1 triệu USD
Năm 2003 đem về cho FSOFT nhiều khách hàng mới, đặc biệt là các khách hàng lớn của Nhật như Hitachi, Sanyo, Nissen, IBM Japan FSOFT thành lập Văn phòng tại thành phố Hồ Chí Minh
Đầu năm 2004, FSOFT trở thành Công ty cổ phần phần mềm FPT Trụ sở tại Tp Hồ Chí Minh được chuyển về toà nhà e-town FSOFT đạt CMM mức 5
Trang 4(mức cao nhất) vào tháng 3 Để phục vụ tốt hơn các khách hàng Nhật, Văn phòng đại diện của FSOFT được mở tại Tokyo Năm 2004 cũng là năm gặt hái nhiều thành công của Công ty Phần mềm FPT, với doanh số xuất khẩu năm 2004 tăng trưởng hơn 200% so với năm 2003
Năm 2005 là năm đánh dấu bước phát triển của công ty về mọi mặt, giúp FSOFT khẳng định vị trí công ty phần mềm hàng đầu Việt Nam Tháng 8/2005 thành lập Chi nhánh Đà Nẵng, tháng 11 thành lập Công ty FSOFT JAPAN tại Tokyo, tháng 12 khai trương Trung tâm Tuyển dụng và Đào tạo tại toà nhà Simco,
Hà nội Hết năm 2005, FSOFT tăng trưởng 114% doanh số, trở thành công ty phần mềm đầu tiên của Việt Nam có 1000 nhân viên
Tháng 10, năm 2007, các Trung tâm sản xuất phần mềm được chuyển đến làm việc tập trung tại Tòa nhà FPT tại Phạm Hùng (Hà nội) Cuối năm 2007, doanh số của Fsoft đạt 29,6 triệu USD, tăng 79% so với doanh thu năm 2006; số nhân viên chính thức là 2,287 người
Năm 2008 diễn ra với việc thành lập 4 Công ty chi nhánh tại Pháp, Malaysia, Mỹ, Australia; doanh số đạt 42 triệu USD với 2600 nhân viên
FSOFT có hệ thống khách hàng rộng lớn trên toàn thế giới ở Mỹ, Châu Âu, Nhật Bản, và các nước Châu Á Thái Bình Dương (Malaysia, Singapore, Australia) Trong chiến lược gia nhập hàng ngũ những nhà cung cấp dịch vụ phần mềm hàng đầu thế giới, Công ty tập trung phát triển nguồn nhân lực chất lượng cao – giá trị cốt lõi đóng góp vào tăng trưởng của công ty Với 80% nhân viên FSOFT thuần thục về tiếng Anh và hơn 200 người sử dụng tiếng Nhật, FPT Sofware không ngừng tìm kiếm và tạo cơ hội cho những tài năng trẻ Mục tiêu trong năm 2009, Fsoft sẽ đạt doanh thu 47 triệu USD với số nhân viên 2600 người
Các lĩnh vực hoạt động chính
FPT Sofware hoạt động trong lĩnh vực gia công và xuất khẩu phần mềm Hiện nay FPT Software đang gia công và xuất khẩu phần mềm sang nhiều nước trên thế giới như Mỹ, Châu Âu, Nhật Bản và các nước Châu Á Thái Bình Dương (Malaysia, Singapore, Australia)
Bắt đầu thực tập từ ngày 1/7/2013, em đã bắt đầu làm quen với môi trường thực tập:
Trang 5- Thời gian làm việc: các buổi sáng từ thứ 2 tới thứ 6, giờ làm việc từ 8h30 đến 12h
- Trong những ngày đầu tiên, em được làm quen với các anh chị tham gia hướng dẫn chúng em trong quá trình thực tập Được nghe các anh chị giới thiệu về các nhóm công nghệ mà chúng em có thể lựa chọn để tìm hiểu trong quá trình thực tập, tiếp theo em được giới thiệu về lịch sử phát triễn, về đặc điểm, về lĩnh vực hoạt động, các đối tác cũng như về văn hóa của tập đoàn FPT, cũng như FPT Sofware
- Trong 2 tuần tiếp theo, em được tham gia khóa học về Technical Java và SQL, khóa học này cung cấp cho em những kiến thức về Java Core, JSP, Struts2 framework, mô hình MVC… và các kiến thức cơ bản nâng cao về Microsoft SQL Server
- Sau các buổi học trên lớp, em được giao bài tập và công việc theo từng ngày Trước khi bắt đầu buổi học, em cùng các bạn trong lớp được làm các bài Quizzes test để đánh giá kiến thức chúng em thu được từ việc học và làm bài trong ngày hôm trước Kết thúc mỗi môn Technical Java và SQL, chúng
em có một bài Final test để đánh giá toàn bộ về khả năng của từng người sau mỗi môn học
- Tiếp sau khóa học đó, em bắt đầu tham gia vào Mock Project, nhóm chúng
em gồm 5 thành viên Giai đoạn đầu sau khi kick off, chúng em vừa được hướng dẫn về quy trình phát triển phần mềm và áp dụng trực tiếp vào chính project Service Directory Sau cùng, khi đã nắm vững về quy trình phát triển, nhóm chúng em trực tiếp triển khai phát triển các module của project dưới sự hướng dẫn của anh Đàm Anh Tuấn
II Đề tài thực tập
II.1 Giới thiệu bài toán
Bài toán được lựa chọn làm Mock Project là ứng dụng framework
Struts2, Hibernate, Spring trong việc phát triển ứng dụng Service
Diretory quản lý các dịch vụ (services) mà một công ty (và các tổ chức liên quan) cung cấp
Trang 6• Mô hình Use case:
Trang 7• Mô hình mối quan hệ giữa các thực thể:
User UserID Account Email Role Password
Organisation OrgID OrgName ContactID (FK)
ReferenceData
RefID
RefCode
RefValue
Contact ContactID FirstName ManagerID
Address AddressID PostCode TownID (FK) CountyID (FK) CountryID (FK)
Service ServiceID ContactID (FK)
Programme ProgrammeID ContactID (FK)
Town TownID CountyID (FK) CountryID (FK) TownName
County CountyID CountryID (FK) CountyName
Country
CountryID
CountryName
TrustRegion
TrustRegionID
Name
Description
CountryID (FK)
GovOfficeRegion GovOfficeRegionID GovOfficeRegionName CountyID (FK) CountryID (FK)
TrustDistrict
TrustDistrictID
Name
Description
TrustRegionID (FK)
SupportingMaterial SupportingMaterialID OrgID (FK) UserID (FK)
Directorate DirectorateID OrgID (FK) ContactID (FK)
Department DepartmentID DirectorateID (FK) ContactID (FK)
Team TeamID DepartmentID (FK) ContactID (FK)
Premise PremiseID ServiceID (FK)
II.2 Mô tả công việc
Nhóm dự án em tham gia, gồm 5 thành viên
a Vai trò: Thành viên
b Công việc:
- Đọc, hiểu rõ ràng tài liệu Software Requirements Specification, đặt câu hỏi.
- Phân tích yêu cầu, hoàn thiện Detail Design.
- Thiết kế cơ sở dữ liệu.
- Lập trình:
Tìm hiều 3 frame work Struts2 , Hibernate, Spring và cách tích hợp chúng, cách mapping chúng trong 1 project
Proper type
Validate form, điều hướng các hành động,… với Javascript
Xử lý tab động
Các module: Lookup (Contact, Address, Business) và Department
Chỉnh sửa, hoàn thiện toàn bộ giao diện với CSS
Trang 8- Ngoài ra, trong quá trình thực hiện project, em cùng các thành viên trong nhóm luôn phối hợp, giúp đỡ nhau trong công việc, giải quyết các vấn đề lớn như: Paging, Filter, Sorting Colunm, cấu hình và tích hợp các framework
III Tóm tắt lý thuyết, giải pháp và thuật toán liên quan
III.1 Các công nghệ đã nghiên cứu và áp dụng
1 J2EE là gì?
J2EE(J2EE là một khung ứng dụng Web hoạt động hiệu quả mà các công ty trên thế giới như IBM, Oracle, Sun áp dụng rất hiệu quả trong các dự án của họ Điểm đặc biệt hơn nữa là khung ứng dụng này sử dụng các công nghệ mới nhất luông mang tính cạnh tranh cao ví dụ như Struts, Hibernate, Spring, JSF, EJB …
Tuy nhiên, J2EE không phải là một sản phẩm cụ thể mà chỉ là các đặc tả đưa ra bởi hãng Sun Với kiến trúc J2EE, bạn phải lựa chọn, kết nối các thành phần khác nhau để hình thành nên mô hình phát triển ứng dụng Bản thân Sun không đưa ra
mô hình phát triển ở dạng đóng gói nhưng có khá nhiều sản phẩm từ các hàng thứ
ba như : IBM, WebSphere, và BEA WebLogic, là các mô hình xây dựng hỗ trợ lập trình
J2EE chỉ hỗ trợ ngôn ngữ lập trình Java và trong tương lai có lẽ cũng không có ngôn ngữ lập trình nào được hỗ trợ thêm bởi kiến trúc này Nhưng khung ứng dụng J2EE và ngôn ngữ Java có tính khả chuyển cao Một chương trình viết bởi Java được thực thi trên máy ảo Java (Java Virtual Machine) thay vì trực tiếp trên hệ điều hành cụ thể Do đó, mã chương trình có thể chuyển từ một hệ điều hành này sang một hệ điều hành khác (có hỗ trợ JVM) để thực thi một cách dễ dàng Tính khả chuyển về hệ điều hành này của J2EE có được là do phần lớn các sản phẩm J2EE đều hỗ trợ cho nhiều hệ điều hành
Hơn thế nữa, J2EE cung cấp một thiết kế mẫu (design pattern) mà đã được đúc rút
từ những kinh nghiệm thực tế của các chuyên gia phần mềm trên thế giới Và bạn hoàn toàn được thừa hưởng các mẫu thiết kế này mà không cần phải bắt đầu xây dựng chi tiết từ đầu trong khi một loạt các công ty và nhóm phần mềm đã tiêu tốn thời gian và công sức để tìm ra những phương án tối ưu cho từng vấn đề họ đã gặp phải trong quá trình phát triển các dự án Ví dụ với tầng Web của ứng dụng
Trang 9Kiến trúc J2EE tổng quát
+ EJB (Enterprice java bean) container : quản lý và thực thi các thành phần enterprice bean
+ Web Container : quản lý và thực thi các thành phần JSP và Servlet.
+ Application Client Container : quản lý và thực thi các thành phần phía client (ví dụ như applet)
2 JSP
a JSP
Giới thiệu: JSP (viết tắt của tiếng Anh JavaServer Pages) còn được biết
đến với một cái tên khác là Java Scripting Preprocessor - "Bộ tiền xử lý
văn lệnh Java" - là một công nghệ Java cho phép cácnhà phát triển tạo nội
dung HTML, XML hay một số định dạng khác của trang web một cách năng động, trong khi hồi âm yêu cầu của trình khách Công nghệ này cho phép người ta nhúng mã Java và một số hành động xử lý đã được định trước
(pre-defined actions) vào trong nội dung tĩnh của trang.
b Servlet
Servlet là một mô-đun của mã Java chạy trong server ứng dụng để trả lời yêu cầu của clients
3 Struts2
Giới thiệu: Struts 2 là một framework theo mô hình MVC Struts 2 hỗ trợ Annotation dựa trên cấu hình để dễ dàng tạo và trực quan hơn Lớp Action trong Struts 2 hoạt động như một mô hình trong ứng dụng web
Trang 10Không giống như Struts, lớp Action trong Struts 2 là một đối tượng POJO chuẩn vì thế đơn giản hóa việc kiểm tra mãStruts 2 cũng kèm theo các hàm APIs để cấu hình bộ Interceptors nhằm làm giảm đáng kể các Coupling trong ứng dụng Phần View trong Struts 2 được đánh giá cao và nó hỗ trợ nhiều kiểu kết quả khác nhau như Velocity,
FreeMarker, JSP
III.2 Giải pháp và thuật toán giải quyết các vấn đề
1 Struts 2.x : MVC Java web framework được sử dụng chính trong dự án, dùng để hiện thị, giao tiếp với người dùng
2 Spring 3.x : Sử dụng cơ chế Dependency Injection hỗ trợ bởi Spring giúp việc quản lý các đối tượng – beans
3 Hibernate 3.x : Sử dụng như Object-Relational Mapping (ORM)
framework giúp việc mapping tự động các bản ghi lưu trữ trong
Relational Database thành Java Objects (POJOs – Plain Old Java Object)
và các POJOs thành các bản ghi trong database
4 MySQL 5.6.x : Sử dụng để lưu trữ dữ liệu của hệ thống
5 HTML/CSS và JavaScript, Struts tablib : Sử dụng để xây dựng giao diện
và xử lý các sự kiện phía client
6 Git và github để quản lý mã nguồn và quản lý version
7 Maven : dùng để build project
III.3 Quá trình phát triển hệ thống
Phân tích yêu cầu
Hệ thống được xây dựng theo phỏng theo một hệ thống có thật,
requirement specification được cung cấp sẵn, vì thế công việc chính của giai đoạn này là nghiên cứu, tìm hiểu yêu cầu để hiểu rõ của hệ thống
Trang 11 Kiến trúc hệ thống
Hệ thống được xây dụng theo kiến trúc 3 tầng, tầng trên sử dụng dịch vụ do tầng dưới cung cấp, tầng trên chỉ sử dụng dịch vụ do tầng liền kề bên dưới cung cấp
Presentation Layer : Là tầng hiển thị, giao diện các giao tiếp với người dung
Business Layer : Xử lý các business rules của hệ thống
Data Access Layer : Xử lý các thao tác với cơ sở dữ liệu
Hệ thống xây dựng theo kiến trúc 3 tầng, các tầng có nhiệm vụ riêng,
có tính độc lập cao, dễ dàng cho việc phát triển và nâng cấp
Sơ đồ phân chia các tầng
Thiết kế hệ thống
Phân chia các Java packages
Các packages được phân chia theo các tầng như sau
action : nằm tại tầng Presentation, dùng để respond các request của
người dùng
Trang 12 bo : nằm tại tầng business, là các interfaces, chứa các methods để xử
lý các business rules
bo.impl : nằm tại tầng Business, cài đặt các interfaces của package
bo
dao : nằm tại tầng Data access, là các interfaces, chứa các methods
làm giao tiếp với cơ sở dữ liệu
dao.impl : nằm tại tầng Data access, cài đặt các interfaces của
package dao
Xây dựng hệ thống
Module quản lý Organisation
Liệt kê danh sách các Organisation
Trang 13o Sử dụng phương pháp phân trang để hiện thị một phần danh sách các Organisation trong database mà không hiển thị hết, chỉ hiển thị những phần cần dùng tới
o Hiển thị Organisation theo các tiêu chí định sẵn
o Sắp xếp thứ tự các Organisation theo từng thuộc tính
Thêm mới một Organisation
o Sử dụng Search Helper để tìm kiếm dữ liệu trong database để giúp việc nhập dữ liệu vào text-box với những trường bị giới hạn dữ liệu có sẵn trong database
o Sử dụng các Ajax tabs để hiển thị các phần của form tạo mới Organisation
Xóa một Organisation – thay đổi trạng thái của một Organisation
Sửa đổi thông tin một Organisation
Viết Unit test cho các Java class
o Sử dụng JUnit 4.x để viết các Testcase cho các Java class
Class diagram mô tả cấu trúc của module quản lý Organiation