LỜI MỞ ĐẦUVới sự phát triển nhanh chóng mặt của thị trường phần mềm, có rất nhiều hướng đi vàcách phát triển phần mềm khác nhau, ngoài việc lên ý tưởng để phát triển một phần mềm từđầu,
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO THỰC TẬP
PHÁT TRIỂN MICROSOFT DYNAMIC CRM 2016
Công ty thực tập : ELCA Việt Nam Người phụ trách : Nguyễn Văn Hào Thực tập sinh : Nguyễn Hồng Khoa
Trang 2LỜI MỞ ĐẦU
Với sự phát triển nhanh chóng mặt của thị trường phần mềm, có rất nhiều hướng đi vàcách phát triển phần mềm khác nhau, ngoài việc lên ý tưởng để phát triển một phần mềm từđầu, thì cách tạo ra một sản phẩm mới bằng cách phát triển, cập nhật hoặc thay đổi những hệthống hay phần mềm có sẵn để phù hợp với nhu cầu riêng biệt của từng cá nhân hoặc tổ chứccũng đang là một xu hướng mới trong ngành công nghiệp phần mềm trên thế giới
Hiện nay ở Việt Nam cũng đã có rất nhiều công ty phát triển các phần mềm hay hệ thống
mã nguồn mở như vậy, một trong số đó là công ty ELCA Việt Nam Là một công ty phần mềm
đa quốc gia có nguồn gốc từ Thụy Sĩ, ELCA không chỉ phát triển các sản phẩm phần mềm mới,
mà còn đảm nhận cả những dự án mã nguồn mở theo yêu cầu khách hàng
Là một sinh viên thuộc khoa Công nghệ phần mềm, em muốn mình được tiếp xúc với tất
cả các loại, các cách, các hướng đi của việc phát triển phần mềm, đồng thời cảm thấy các mụctiêu và giá trị của ELCA rất phù hợp với định hướng của bản thân, nên em đã quyết định chọnELCA Việt Nam là nơi bắt đầu thực tập, tìm kiếm thêm những kiến thức và kinh nghiệm thực tếđầu đời cho bản thân
Trang 3Đặc biệt cảm ơn anh Nguyễn Văn Hào, người đã training kiến thức chi tiết trong phần
Dynamics CRM, tuy còn nhiều bỡ ngỡ vì làm quen với một công cụ và hệ thống rất mới, tuy
nhiên em vẫn được anh hướng dẫn rất tận tình và sát sao; cảm ơn chị Bùi Thị Bích Ly, đã follow
up cho em hàng tuần để lắng nghe những khúc mắc, khó khăn và giải quyết cho em trong việc
hoàn thành dự án; cảm ơn anh Nguyễn Nhật Minh, đã hướng dẫn, củng cố lại cho em những
kiến thức căn bản nhất, cũng như cách áp dụng vào môi trường làm việc thực tế, giúp em hiểuhơn về điểm khác biệt giữa dự án môn học tại trường và những dự án thực tế của công ty
Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điềukiện em làm bài báo cáo này
Nguyễn Hồng KhoaTpHCM, ngày 01 tháng 01 năm 2021
Trang 4NHẬN XÉT CỦA KHOA
Trang 5
MỤC LỤC
MỤC LỤC 4 TÀI LIỆU THAM KHẢO 21
Trang 6Chương 1: Giới thiệu công ty thực tập
1 Giới thiệu công ty ELCA
ELCA được thành lập vào năm 1968 tại Thụy Sĩ, là một tập đoàn chuyên cung cấp các giảipháp IT cho khách hàng, thiết kế lại các phần mềm cho phù hợp với nghiệp vụ từng doanhnghiệp yêu cầu
Sau hơn 50 năm thành lập và phát triển, ELCA đã khẳng định được vị thế và niềm tin ởkhách hàng bằng những giá trị mà công ty mang lại Thông qua những dự án lớn như: Giảipháp quản lý ID cho người dân và tội phạm – Hợp tác với chính phủ Thụy Sĩ, Giải pháp hệthống bán vé cho UEFA,… ELCA đã dần chứng minh được đây là một công ty đáng tin cậy
và đã gây dựng được mối quan hệ với rất nhiều khách hàng lớn trên toàn thế giới
ELCA có văn phòng đặt tại Thụy Sĩ, Tây Ban Nha, Pháp, Anh, Đức, Ý và Việt Nam, với hơn
1300 nhân viên làm việc tại tất cả các văn phòng trên thế giới ELCA đã có kinh nghiệm làmviệc với gần 1000 dự án cho khách hàng, doanh thu năm 2019 đạt 170 triệu Franc
2 Sản phẩm của công ty
Những sản phẩm phần mềm của ELCA được phát triển nhắm tới tệp khách hàng rất đa dạng,
từ trong nước cho tới ngoài nước, từ chính phủ cho tới các doanh nghiệp, tập đoàn lớn Là
Trang 7một công ty chuyên cung cấp các giải pháp, các sản phẩm trải rộng trên nhiều lĩnh vực như:Quản lý dữ liệu doanh nghiệp (CRM), Quản lý định danh (trustID), Bán vé trực tuyến(Secutix), Chứng nhận Y tế (HealthnGo),
Một số những giải pháp nổi bật của ELCA như:
• Secutix: ban đầu là một giải pháp, và sau đó đã tách riêng ra thành một công ty dưới sựquản lý của ELCA, là nơi cung cấp các nền tảng bán vé trực tuyến được phát triển cho phùhợp với từng tổ chức
• ELCA CRM NetworkViewer: phát triển dựa trên phần mềm Microsoft Dynamics CRM,
là một nơi để lưu trữ dữ liệu, cung cấp và quản lý thông tin trực quan giữa một dữ liệu với tất
cả những dữ liệu và thực thể có liên quan tới nó Đây cũng là một phần mềm được phát triểnvới tính năng riêng cho từng khách hàng
• trustID: là một dịch vụ tạo và quản lý ID cho các tổ chức lớn như Chính phủ, Y tế, Giáodục, Doanh nghiệp, công dân,…
Trang 8Chương 2: Nội dung thực tập
Trong kỳ thực tập 3 tháng ở ELCA tại phòng ban CRM&SharePoint, em đã được củng cố lạicác kiến thức lập trình cơ bản, sau đó là khóa training về Microsoft Dynamics CRM Công ty đãcung cấp cho sinh viên như em những kiến thức cơ bản cũng như nâng cao và chuyên sâu về hệthống CRM trong doanh nghiệp, từ đó giúp em có thể tham gia vào các dự án phát triển phầnmềm CRM của phòng ban
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty
Thời gian : 1 ngày
Nội dung :
Giới thiệu về công ty, cách tổ chức của công ty
Được nghe người phụ trách giới thiệu về công ty, quá trình thành lập và phát triển, cách thức
tổ chức, các quy trình phần mềm đặc trưng của công ty
Ngoài ra, thực tập sinh còn được giới thiệu về cách thức làm việc trong công ty như thời gianlàm việc, các quy định cần phải tuân thủ, cách sử dụng các công cụ trao đổi, các kho tài liệunội bộ của công ty,…
Thời gian : 1 ngày
Nội dung : Cài đặt những công cụ và môi trường làm việc trên máy tính.
Coach hướng dẫn thực tập sinh cài đặt các công cụ như: Visual Studio, SQL Server, máy ảocài đặt sẵn CRM,…
Thực hiện : Cài đặt và sử dụng các công cụ nêu trên.
Kết quả : Cài đặt thành công các IDE, cơ sở dữ liệu, cũng như các package kèm theo Được
hướng dẫn thêm về các trình duyệt cũng như cách debug code trên chúng
2.2 Traning Basic Know-how (kiến thức nền tảng, cơ bản và nâng cao)
Thời gian : 15 ngày (3 tuần)
Trang 9Nội dung : Training về các kỹ thuật, kiến thức quan trọng từ cơ bản đến nâng cao để hỗ trợ
cho nội dung chính là CRM ở phía sau
- C#
Nội dung về các đặc tính C# cơ bản, C# nâng cao Tìm hiểu thêm một số class quan trọngtrong C# và làm bài tập để áp dụng chúng
- Lập trình hướng đối tượng
Các kiến thức cơ bản về lập trình hướng đối tượng như khái niệm, các đặc tính như tính kếthừa, tính đóng gói, tính trừu tượng hóa, tính đa hình Một số phần mở rộng như tầm vực
- Basic Design patterns
Đọc những tài liệu giới thiệu về Design patterns, từ đó thực tập sinh chọn cho mình 2 mẫu
để làm slide và thuyết trình trước Coach
- Unit testing C#
Đọc tài liệu về testing, viết những hàm test lại những project đã làm trong bài tập ở cácphần trước Giúp mở rộng kiến thức và hiểu hơn về các công việc về testing, đồng thờigiới thiệu một cách code mới là test driven development cho thực tập sinh
- CSS/SASS
Được ôn lại kiến thức đã biết về CSS, và làm quen với một công cụ mới hơn và phổ biếnhơn hiện nay là SASS/SCSS, được giới thiệu và thực hành thử với các công cụ biên dịchkèm theo như Koala, Webpack,…
- Javascript/Typescript
Ngôn ngữ chính để phát triển web trong CRM, nếu C# là để phát triển Back-End CRM, thìJavascript /Typescript là 2 ngôn ngữ để phát triển Front-End Tài liệu nghiên cứu chủ yếutrên chính trang chủ của Javascript và Typescript
Trang 10- Tham gia các Daily meeting với coach để giải quyết những khó khăn hoặc vấn đề về kiếnthức và tài liệu phát sinh ở mỗi ngày làm việc tại công ty.
2.3 Lập trình phát triển Microsoft Dynamic CRM 2016
Thời gian: 10 ngày (2 tuần).
Nội dung: Cách sử dụng các chức năng cơ bản của CRM, cách giải quyết các trường hợp về
Sale, Marketing bằng cách mô hình hóa lại thành các entity và nghiệp vụ trong CRM Cáccách phát triển chức năng và thực thể (Entity) trong Microsoft Dynamic CRM
- Giới thiệu về Microsoft Dynamics CRM:
Microsoft Dynamics CRM là một gói phần mềm được phát triển để cung cấp ba nhómchức năng chính cho người dùng là: Sale, Marketing và Dịch vụ khách hàng Thực tậpsinh sẽ được giới thiệu về CRM thông qua định nghĩa và tài liệu về các loại CRM như:Online, On-Premise, Partner Hosted
- Điều chỉnh, cấu hình các chức năng trong CRM:
Để hiểu rõ và nắm được các chức năng của CRM Coach sẽ hướng dẫn thực tập sinh cấuhình và sử dụng các chức năng của CRM trong từng tình huống cụ thể trong tài liệu Cáchtạo mới Entity, tạo các giai đoạn Marketing, bán hàng, thêm các thuộc tính mới trong
Trang 11CRM… là những cấu hình dựa trên chức năng có sẵn của CRM Thực tập sinh sẽ đứngtrên vai trò người sử dụng phần mềm, thực hiện các chức năng đó.
- Code các plugin/web resource cho CRM:
Đây là giai đoạn phát triển CRM, thực tập sinh được hướng dẫn để tự viết ra các chứcnăng mới cho CRM, tìm hiểu OData để biết về kiểu dữ liệu và cách liên kết các Entitytrong CRM với nhau Plugins là các chức năng chạy ngầm dưới CRM, tương tác trực tiếpvới Server Trong khi Webresource là các file html, js, hay css được thêm vào trực tiếptrong CRM để thực hiện các chứng năng trên giao diện, tương tác người dùng
Thực hiện:
- Cài đặt máy ảo làm môi trường phát triển CRM
- Xem khóa học CRM căn bản trên kho tài liệu ELCA, gồm các videos giới thiệu và file bàitập để thực hành chức năng
- Tham gia training để được coach hướng dẫn về cách viết plugin và deploy vào CRM, cáchtạo webresource và import vào CRM
Kết quả:
- Hiểu được cách các chức năng trong CRM hoạt động với nhau
- Biết cách điều chỉnh và cấu hình những chức năng có sẵn
- Hiểu và lập trình được các file chức năng, có thể mang vào CRM để phát triển như cácpackages Biết cách đóng gói những packages đó và sử dụng lại cho những hệ thống CRMkhác
3 Thực hiện project
Sau hơn một tháng được training những công cụ, công nghệ, kiến thức nền từ cơ bản đếnnâng cao, đặc biệt là khóa training làm quen với CRM, thực tập sinh đã nắm được các kỹthuật và nội dung cơ bản khi lập trình phần mềm Dynamics CRM Coach sẽ cho trainee thamgia vào một dự án thật của công ty, nội dung là phát triển phần mềm Microsoft Dynamics
Trang 12CRM, dựa theo các requirement được giao và mô tả sẵn, theo từng sprints trong quy trìnhAgile IT của ELCA.
Chi tiết đồ án sẽ được nói ở chương 3
4 Lịch làm việc
hoàn thành
Nhận xét của người hướng dẫn
1
- Tìm hiểu về công ty, cách
tổ chức, liên lạc và trao đổi
trong công ty
- Cài đặt, làm quen với các
công cụ làm việc trong khóa
3 - Học xử lý Exception
- Viết Unit testing C# Anh Nguyễn Nhật Minh
Trang 13- Giới thiệu các công nghệ
web sẽ học tiếp theo
4
- Tìm hiểu các công nghệ
như CSS, SASS, Javascript,
Typescript
- Tìm hiểu các công cụ biên
dịch như Koala, Webpack
Anh Nguyễn Nhật Minh
hướng dẫn theo videos
Anh Nguyễn Văn Hào
7 - Đọc tài liệu về dự án, phân
- Bắt đầu User Story 1 của
Anh Nguyễn Văn HàoChị Bùi Thị Bích Ly
Trang 14- Làm chức năng yêu cầu bắt
buộc của thuộc tính trên
Form
- Check thông tin điền vào
form trước khi lưu bằng các
Web api tới oData
- Binding thuộc tính bằng
cách kết hợp webresource và
plugin
- Làm check list lại cho phần
test, đảm bảo hoàn thành
requirements cho US01
Anh Nguyễn Văn HàoChị Bùi Thị Bích Ly
9 - Tìm hiểu các thư viện hỗ
trợ thiết kế giao diện cho
User Story 2
- Thiết kế table bằng
datatable, sử dụng
webresource để hiển thị
table lên Dashboard
- Xử lý request data, thêm,
xóa, sửa data trên table với
Anh Nguyễn Văn HàoChị Bùi Thị Bích Ly
Trang 15từng thao tác UI.
- Làm check list testing cho
US02
10
- Tạo file dữ liệu mẫu csv
cho User Story 3
- Khởi tạo project console để
thao tác với dữ liệu trong
- Quay lại thực hiện phần
Advanced Requirements cho
US01, US02 và US03
Anh Nguyễn Văn HàoChị Bùi Thị Bích Ly
Trang 16nghiệm đã có được trong kỳ
training
Trang 17Chương 3: Chi tiết về dự án
1 Giới thiệu về PIM Tool
1.1 Tổng quan dự án
PIM Tool (Project Information Management Tool) là một Dự án CRM của công ty, về bảnchất là một Solution được phát triển để thêm vào Dynamics CRM, với mục đích là quản lý
dữ liệu và thông tin của một Entity mới là Project
Solution PIM Tool ban đầu đã được thiết kế sẵn database models Nhiệm vụ của người pháttriển là dựa trên đó, thêm các ràng buộc thuộc tính, thêm các giao diện trực quan để quản lýProject cho người dùng
Mỗi User Story trong dự án đều có hai phần requirement là cơ bản và nâng cao Kế hoạch là
sẽ tập trung hoàn thiện phần cơ bản trước, sau đó nếu còn dư thời gian, có thể quay lại phầnnâng cao của các User Story để hoàn thiện sau
2 Các User Stories của dự án
2.1 User Story 01 – Project creation and updation
Mô tả:
Trang 18Với vai trò là một người quản lý các projects (Project Manager), người dùng có thể tạo ramột record của project, và dễ dàng tìm kiếm lại project đó sau này Đồng thời cũng có thểcập nhật thông tin của một project đã tồn tại trong CRM.
Kết quả chương trình cần đạt được:
- Form cho phép nhập thông tin, tạo mới, cập nhật, và xóa các projects
- Một số Field của form như Project Number, Customer, Project Group,… là những field bắtbuộc nhập Ngoài ra Project Number còn đóng vai trò như một khóa thay thế (AlternativeKey)
- Members là Field chứa danh sách các Employees là nhân viên đảm nhận Project Đồngthời có một subgrid bên dưới member hiển thị danh sách nhân viên được binding từ chuỗimembers
2.2 User Story 02 – Projects list
Mô tả:
Với vai trò là một người quản lý các projects (Project Manager), người dùng có thể quan sáttrực quan một danh sách các projects tồn tại trong hệ thống Đồng thời trên danh sách đó,người dùng có thể tìm kiếm một project để xem và cập nhật thông tin của nó nếu cần
Trang 19Kết quả chương trình cần đạt được
- Cần tạo một table trên giao diện để thể hiện danh sách projects, đưa table này vào trongmột Dashboard CRM
- Có thể thực hiện một số thao tác như Tìm kiếm, chọn record, xóa, mở liên kết từ mộtrecord,…
2.3 User Story 03 – Import projects list
Trang 20- Trong lúc import file csv vào CRM, console app thể hiện tiến trình import lên màn hìnhconsole cho user xem.
- Sau khi import xong, console hiển thị kết quả import, gồm: số lượng project import thànhcông/thất bại, số lượng project update thành công (khi Project Number đã tồn tại)
3 Nhóm làm dự án
Dự án PIM Tool được đảm nhận bởi nhóm CRM thuộc phòng ban CRM&SharePoint của ELCA.
Trang 21Thực tập sinh được giao cho một module nhỏ trong dự án.
4 Kế hoạch
4.1 User Story 01 – Project creation and updation
Thực hiện:
- Kiểm tra database models của Solution có sẵn đã đúng với đặc tả dự án chưa
- Thiết lập ràng buộc “bắt buộc” cho các field theo yêu cầu
- Kiểm tra trùng lặp Project Number và hiển thị thông báo cho user
- Dùng webresource để kiểm tra chuỗi Visa của nhân viên nhập vào là hợp lệ
- Dùng Plugin kết hợp webresource để binding giữa danh sách members trên subgrid vàchuỗi trên members field
Kết quả:
- Hoàn thành đầy đủ và chính xác các yêu cầu của đặc tả
- Hoàn thành chức năng nâng cao của User Story 01: binding members field và subgriddanh sách members
4.2 User Story 02 – Projects list
Thực hiện:
- Sử dụng plug-in Datatable để thiết kế một table thể hiện danh sách các project với cácthuộc tính chỉ định
- Request API lấy data từ oData và đổ vào table
- Hiện thực các chức năng như: mở liên kết, tìm kiếm, lọc, xóa,…
- Hiện thực các chức năng nâng cao như: Column Sorting, Column Filtering, Check all
Kết quả:
- Hoàn thành đầy đủ và chính xác các yêu cầu của đặc tả
- Hoàn thành một số chức năng nâng cao của User Story 02
- Vẫn còn một số chức năng nâng cao chưa hoàn thành như: pagination theo request API,
Cố định một số cột bên trái table
4.3 User Story 03 – Import projects list
Thực hiện:
- Tạo danh sách các dữ liệu mẫu trong file csv
- Khởi tạo project console C#, kết nối với CRM
- Làm chức năng import gồm thêm, sửa project
- Thực hiện hiển thị tiến trình import và kết quả
Kết quả:
- Hoàn thành đầy đủ và chính xác các yêu cầu của đặc tả
- Vẫn còn một số chức năng nâng cao chưa hoàn thành như: import lại các record đã import