HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA CÔNG NGHỆ THÔNG TIN 1 BÁO CÁO THỰC TẬP TỐT NGHIỆP Đơn vị Công ty FPT Software Giảng viên hướng dẫn TS Nguyễn Văn Thủy Sinh viên thực hiện Nguyễn Bá Nhật Mã.
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN 1
-BÁO CÁO THỰC TẬP TỐT NGHIỆP
Đơn vị: Công ty FPT Software
Giảng viên hướng dẫn: TS Nguyễn Văn Thủy
Sinh viên thực hiện: Nguyễn Bá Nhật
Hà Nội, 8/2021
Trang 2MỤC LỤC
LỜI NÓI ĐẦU 4
I TỔNG QUAN VỀ ĐƠN VỊ THỰC TẬP 5
1.1 Giới thiệu 5
1.2 Lịch sử hình thành và phát triển 6
1.3 Tổ chức và nhân lực 7
1.3.1 Về tổ chức 7
1.3.2 Về nhân sự 8
1.4 Các lĩnh vực hoạt động chính của công ty 9
1.5 Các vị trí công việc sinh viên có thể đảm nhận 9
II NỘI DUNG THỰC TẬP 11
2.1 Tổng quan 11
2.2 Basic Android 13
2.2.1 Android Overview 13
2.2.2 Activity 13
2.2.3 Intent, Broadcast 13
2.2.4 View Group 15
a Lý thuyết 15
2.2.5 Fragment 16
2.2.6 Fragment advance 16
2.2.7 Service 17
2.2.8 Saving data – Persistent 19
2.2.9 Android Permission 19
2.2.10 Design architecture 20
2.2.11 Automated Unit Testing with Junit 20
2.2.12 Thi final exam 20
2.3 Mock Project 21
2.3.1 Giới thiệu 21
2.3.2 Biểu đồ Use case 21
Trang 32.3.3 Thiết kế UI 25
2.3.4 Coding 34
III KẾT QUẢ ĐẠT ĐƯỢC 34
3.1 Điểm Basic Android 34
3.2 Đánh giá Mock Project của giảng viên 34
3.3 Final grade 36
IV KẾT LUẬN 36
Trang 4LỜI NÓI ĐẦU
Từ ngày 16/07/2021 đến ngày 30/08/2021, khoa Công nghệ thông tin 1 – trường Họcviện Công nghệ Bưu chính Viễn thông đã phối hợp với công ty TNHH phần mềm FPT(FPT Software) tổ chức đợt thực tập kỹ thuật cho sinh viên khoa CNTT1 Đây làchương trình thường niên hàng năm có ý nghĩa thực tiễn rất lớn đối với sinh viên: giúpcho sinh viên, vốn chỉ ngồi trên ghế nhà trường, từng bước tiếp xúc với môi trường làmviệc thực tế Từ đó sinh viên có thể định hướng trong việc học tập cũng như hình thànhphong cách làm việc chuyên nghiệp cho công việc sau này
Đợt thực tập này em được học ngôn ngữ lập trình mới là Kotlin và lập trình di độngtrên môi trường Android Ngoài ra sinh viên còn được tham gia các hoạt động giớithiệu về công ty, được trải nghiệm phong cách làm việc thực tế và văn hóa của FPT,tham gia các hoạt động WETALK, TECHTALK, CODEWAR, được học cách bảo mật
an toàn thông tin trong công ty
Dù đợt thực tập diễn ra vào thời điểm dịch Covid-19 diễn biến phức tạp, tuy nhiên, đợtthực tập đã thành công tốt đẹp và có ý nghĩa to lớn Qua đây, chúng em, sinh viên, xingửi lời cám ơn chân thành đến khoa CNTT1, Học viện Công nghệ Bưu chính Viễnthông và công ty FPT Software đã tạo mọi điều kiện thuận lợi cho việc hoàn thành nộidung thực tập
Trang 5I TỔNG QUAN VỀ ĐƠN VỊ THỰC TẬP
1.1 Giới thiệu
Tên đơn vị: Công ty TNHH phần mềm FPT
Tên tiếng Anh: FPT Software Company Limited
Tên viết tắt: FSOFT
về sản xuất phần mềm, quản lý chất lượng và bảo mật thông tin như CMMI-5, ISO9001:2000, ISO27001:2005, FPT Software là một Công ty phần mềm có các quy trìnhchuẩn thế giới hàng đầu tại Việt Nam Hiện tại, FPT Software có 12 công ty thành viêntại Nhật bản, Singapore, Pháp, Mỹ, Malaysia, Úc, Việt Nam và 3 chi nhánh tại Hà Nội,
Tp HCM và Đà Nẵng Trong quá trình 20 năm phát triển, Công ty Phần mềm FPT là
Trang 6một trong những công ty có tốc độ phát triển nhanh nhất trong lĩnh vực gia công phầnmềm (100%/năm), với doanh thu đạt 100 triệu USD năm 2013.
1.2 Lịch sử hình thành và 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 ít nhiều đã làm quen với lập trình, 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) Một trongnhững dự án phần mềm đầu tiên mà ISC tham gia là dự án Typo4 xuất khẩu sang Pháp
do một Việt kiều ở Pháp về chủ trì Tiếp theo là hàng loạt giải pháp phần mềm cho cácmảng ngân hàng, kế toán, phòng vé máy bay song song với phân phối thiết bị và dự ánphần cứng Đến tháng 12 năm 1994, khi đã đủ lớn, ISC được tách thành các bộ phậnchuyê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áclĩnh vực Ngân hàng, Kế toán, Thuế, Hải quan, Công an.Một trong những thành tích nổibật của FSS là xây dựng TTVN – mạng WAN đầu tiên tại Việt nam, tạo tiền đề pháttriển cho Công ty Viễn thông FPT sau này (FPT Telecom) Trong những năm này, FPTliên tiếp được PC World Việt nam bình chọn là Công ty Tin học số một
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ộtnhó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ềnthân của FSOFT ngày nay Trong năm 1999, FSOFT đã thực hiện thành công dự ánđầu tiên với khách hàng Winsoft, Canada, bước đầu xác định cơ cấu tổ chức, lên cácchương trình chuẩn bị nhân lực cho xuất khẩu Năm 2000, FSOFT chuyển trụ sở sangtoà nhà HITC Ảnh hưởng bởi vụ dotcom, thị trường xuất khẩu phần mềm gặp nhiềukhó khăn Tuy vậy, FSOFT đã vượt qua được thử thách và đạt được kết quả quan trọng– ký hợp đồng OSDC (Offshore Software Development Center) đầu tiên với HarveyNash Đến nay, Harvey Nash vẫn là một trong những khách hàng lớn nhất của FSOFT.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ớiNTT-IT – khách hàng Nhật bản đầu tiên của FSOFT Năm 2001 cũng là năm FSOFTbắ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 ĐôngNam Á đạ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 FSOFTnhiề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,
Trang 7Nissen, IBM Japan FSOFT thành lập Văn phòng tại thành phố Hồ Chí Minh Đểchuẩn bị cho thị trường Nhật, một chương trình lớn được triển khai bao gồm thành lậpTrung tâm Đông Du đào tạo tiếng Nhật CNTT, tuyển sinh viên các Khoa tiếng Nhật và
hỗ trợ học bổng cho họ học Aptech, tuyển sinh viên tốt nghiệp các trường CNTT vàđào tạo tập trung tiếng Nhật 6 tháng Năm 2003 cũng là năm dự án CMM-5 khởi động.Đầ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 (mức cao nhất) vàothá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ầnmề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 FSOFTkhẳ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 Chinhánh Đà Nẵng, tháng 11 thành lập Công ty FSOFT JAPAN tại Tokyo, tháng 12 khaitrươ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ệtNam có 1000 nhân viên
Tháng 10, năm 2007, FSOFT chuyển Trung tâm đảm bảo nguồn lực (RAC) về tòa nhàFPT Software tại Ngõ Tuổi trẻ- Hoàng Quốc Việt, đánh dấu sự trưởng thành trongcông tác Tuyển dụng và đào tạo ban cho nguồn nhân lực của toàn Fsoft Hà Nội CácTrung 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à FPTBuilding tại Phạm Hùng Cuối năm 2007, doanh số của Fsoft đạt 29,6 triệu USD, tăng79% so với doanh thu năm 2006; số nhân viên chính thức là 2,287 người
1.3 Tổ chức và nhân lực
1.3.1 Về tổ chức
Nguyên tắc tổ chức Fsoft được tổ chức theo mô hình 5 lớp Công ty Chi nhánh
-Trung tâm - Phòng sản xuất - Dự án theo nguyên tắc sau:
Công ty là cơ quan cao nhất, điều hành chung Chức danh điều hànhcao nhất là
Phòng sản xuất (Division): Các đơn vị trực tiếp sản xuất trong mỗi Trung tâm.
Chức danh: Trưởng phòng
Trang 8 Dự án: đơn vị sản xuất cơ bản Chức danh: Giám đốc dự án, quản trị dự án Đầu
năm 2006, Fsoft có 10 Trung tâm sản xuất, 6 tại Hà nội, 3 tại Tp.Hồ Chí Minh
Sự phát triển bền vững của công ty trong suốt nhiều năm hoạt động là minh chứng rõnét cho việc biết đầu tư đúng cách vào đội ngũ nhân sự Với những chính sách đãi ngộthu hút nhân tài của FPT đang làm là chìa khóa vàng giúp công ty sở hữu được đội ngũnhân sự giỏi, chuyên nghiệp Có lẽ vì vậy, trong nhiều năm liền công ty luôn được xếphạng công trong Top những doanh nghiệp có chế độ đãi ngộ tốt tại Việt Nam và đượcnhiều ứng viên chọn mặt gửi vàng khi muốn tìm việc làm nhanh
Dưới đây là một số chính sách đãi ngộ của Fsoft dành cho nhân viên
Trang 91.4 Các lĩnh vực hoạt động chính của công ty
Công ty TNHH phần mềm FPT là công ty chuyên về lĩnh vực gia công phần mềm,chính vì thế nên công ty cung cấp tất cả dịch vụ liên quan như:
Xuất khẩu phần mềm
Giải pháp phần mềm
Phân phối các sản phẩm công nghệ thông tin
Tích hợp hệ thống
Cung cấp các giải pháp, dịch vụ viễn thông và internet
Triển khai và Tư vấn dịch vụ ERP
Phát triển hệ thống nhúng
Các dịch vụ khác
Lĩnh vực văn hóa: Công ty đã tham gia tích cực vào các hoạt động văn hóa xã hội.Công ty còn tổ chức được các câu lạc bộ sở thích: võ thuật, cuộc thi ảnh chào mừngngày sinh nhật công ty Để tạo môi trường dân chủ và cởi mở, công ty còn lập trangchodua.com để các thành viên trong và ngoài công ty tự do góp ý giúp công ty ngàycàng phát triển
1.5 Các vị trí công việc sinh viên có thể đảm nhận
Trong Fsoft có rất nhiều vị trí mà sau khi ra trường sinh viên có thể đảm nhận Các vịtrí cần tuyển của Fsoft chia làm 2 loại: thường xuyên và tạm thời, trong đó công việc
Trang 10tạm thời là công việc ngắn hạn để phục vụ nhu cầu đột xuất của công ty Sau khi ratrường sinh viên có thể tham gia vào các dự án của công ty hoặc các vị trí công việcphù hợp với trình độ cũng như ngành học liên quan Đặc biệt công ty ưu tiên tuyểndụng vào các vị trí sau:
- Quản lí dự án (Project Manager)
- Đội trưởng (Team leader)
- Kĩ sư Lập trình (Developer)
- Kĩ sư test (Tester)
- Chuyên viên kiểm soát chất lượng (SQA)
Đội trưởng (Team leader)
Yêu cầu: Đại học hoặc thạc sĩ Bách khoa công nghệ phần mềm 4-5 năm kinh nghiệm
ở vị trí kỹ sư phần mềm Có kinh nghiệm về quản lý con người Khả năng phân tíchvấn đề và thiết kế các giải pháp tốt Phương pháp tiếp cận có cấu trúc và tổng hợp,mong muốn học hỏi và tiến bộ Khả năng để giao tiếp trong cả hai cách kỹ thuật và phikỹ thuật với đồng nghiệp và khách hàng
Kĩ sư lập trình(Deverloper)
Yêu cầu: Bằng cử nhân Khoa học Máy tính, CNTT hoặc các chuyên ngành liên quan
Có ít nhất 2 năm kinh nghiệm lập trình trong công nghệ Java/J2EE Có kinh nghiệm tốttrong Java/J2EE, Struts hoặc SpringMVC, Hibernate OOAD kỹ năng tốt Am hiểu cácdịch vụ Web (SOAP và Restful) Thành thạo tiếng Anh, có thể giao tiếp trực tiếp vớikhách hàng thông qua cuộc gọi hội nghị, email Sẵn sàng đi onsite (US) khi có yêu cầu
Có kinh nghiệm trong việc xử lý XML (JAXB, SAX, ) Kiến thức trong việc sử dụngEJB3 Biết cơ bản UNIX (hoặc muốn tìm hiểu cơ bản UNIX trong một số giờ) Kiểmthử đơn vị bằng JUnit, JMock Có kinh nghiệm về JBoss 4.2.2 Kinh nghiệm với JMS.Kinh nghiệm với bộ nhớ đệm Có kinh nghiệm về hội nhập liên tục Có kinh nghiệmvới các công cụ build (Ant, Maven, )
Kỹ sư test (Tester)
Yêu cầu: Tốt nghiệp Đại học chuyên ngành công nghệ thông tin hoặc chuyên ngànhliên quan Nắm vững và hiểu biết sâu sắc về các Quy trình Test, các kỹ thuật Testing
Có kiến thức sâu về phương pháp kiểm thử phần mềm Có các chứng chỉ Testing nhưISTQB, CSTE,…là một lợi thế Tiếng Anh nghe, nói, đọc, viết tốt Kỹ năng quản lýnhóm, lập kế hoạch, lãnh đạo nhóm, tổng hợp và báo cáo tốt Có khả năng truyền đạt
và xử lý vấn đề kỹ thuật tốt Năng động, sáng tạo, nhiệt tình, có thể làm việc độc lập
Trang 11và theo nhóm Kỹ năng sử dụng tin học văn phòng tốt Chịu được áp lực cao trongcông việc.
Chuyên viên kiểm soát chất lượng (SQA)
Yêu cầu:
- Bằng cử nhân trong lĩnh vực CNTT, Khoa học Máy tính hoặc tương đương
- Có ít nhất 2 năm kinh nghiệm trong Đảm bảo chất lượng phần mềm
- Trách nhiệm cao, làm việc cẩn thận
- Kỹ năng kỹ thuật tốt, tự học
- Tư duy logic và khả năng phân tích, làm việc nhóm tốt
Ngoài ra công ty còn có những công việc dành cho sinh viên thực tập, mục đích củaviệc này là giúp tuyển chọn những sinh viên giỏi đồng thời cho sinh viên có thêm kinhnghiệm khi bắt đầu công việc Ngoài các kĩ năng cứng, những kiến thức chuyên môncần nắm vững, khi tham gia tuyển dụng vào các vị trí của công ty, sinh viên cần trang
bị những kĩ năng mềm khác như kĩ năng giao tiếp, kĩ năng làm việc theo nhóm, kĩ năngsáng tạo, học hỏi… Trang bị ít nhất một ngoại ngữ, khuyến khích biết tiếng Nhật, cóthể làm việc lâu dài tại nước ngoài
Qua những điều đã viết trên chúng ta có thể thấy rằng những công việc trong Fsoft rất
đa dạng và phong phú nhưng cũng như đã giới thiệu ở trên Fsoft là công ty về giảipháp phần mềm – một ngành đòi hỏi yêu cầu khá cao chính vì thế nên công ty cũng cónhững yêu cầu đòi hỏi dành cho những vị trí trong công ty Trước hết công ty đòi hỏingười xin việc có kĩ năng chuyên môn đạt yêu cầu qua những đợt thi tuyển do công ty
tổ chức, sau đó là những kĩ năng khác như ngoại ngữ, kĩ năng mềm, đặc biệt là kĩ nănglàm việc theo nhóm và đặc biệt là sự đam mê trong công việc
II NỘI DUNG THỰC TẬP
Trang 132.2 Basic Android
2.2.1 Android Overview
a Lý thuyết
- Kiến trúc Android
- Chuẩn bị môi trường để lập trình Android
- Tạo và chạy ứng dụng Android
1 Write an activity with log for each state
2 Start other activity from an activity
3 Start an activity and retrieve result
4 Practice with launch mode
Hoàn thành bài tập đúng hạn
2.2.3 Intent, Broadcast
a Lý thuyết
Trang 14Intent như là một thông điệp cho phép các thành phần của Android yêu cầu chức năngtừ các thành phần khác của Android Ví dụ như từ 1 Activity có thể gọi 1 Activity,Service hoặc BroadcastReceiver để thực hiện hành động.
Broadcast Receiver dùng để lắng nghe các sự kiện, nhận biết sự thay đổi của hệ thốngnhư: có tin nhắn đến, hành động rút/cắm sạc, hành động bật/tắt mạng, hành độngbật/tắt màn hình, v.v
Các nội dung chính:
- What is Intent?
- Intent structure: component name, action, data, category, extras, flags
- Intent types: explicit intents và implicit intents
- Intent data transfer
• Write an Android app which will:
• Automatically start at device’s power on
• Automatically start at device’s screen on
Exercise 2
• Write an application which:
• Has 2 activities A & B, in which
• A contains a list of {"Hello!", "Hi!", "Salut!", "Hallo!", "Ciao!",
"Ahoj!", "YAH sahs!", "Bog!", "Hej!", "Czesc!", "Ní hảo!",
"Kon’nichiwa!", "Annyeonghaseyo!", "Shalom!", "Sah-wahd-deekah!",
"Merhaba!", "Hujambo!", "Olá!"}
• Your mission is pass the above list from A to B using Intent
• Then, display all above list items on a TextView or in Logcat
Trang 15Exercise 3
• Write 2 applications A & B, in which:
• Application B can be started by application A by 2 ways:
• Way 1: Using startActivity with Intent
• Way 2: Using BroadcastReceiverHoàn thành bài tập đúng hạn
2.2.4 View Group
a Lý thuyết
ViewGroup là một lớp con của View và nó sẽ hoạt động như một lớp cơ sởcho layouts và layouts parameters. ViewGroup sẽ cung cấp một bộ chứa (container) vôhình để chứa các View hoặc ViewGroup khác và để xác định các thuộc tính layout.Một số lớp con phổ biến của ViewGroup thường được sử dụng trong Android:
Trang 16- Filling an adapter view with data
- Handling click events
b Bài tập
Task 1 Create recycleview with list users with each row
- Contain 1 textView: UserName
- Contain 1 textView: FirstName
- Contain 1 textView: LastName
- Contain 1 textView: Age
- Contain 1 button: View Detail
Task 2 Setup action click event when click button to navigate to detail screen with
detail info about user
Task 3 Sample data: list users can be generate arbitrary with the above information for
Fragment có thể coi như sub-activity
Fragment cũng có layout và vòng đời hoạt động riêng Vòng đời của Fragment phụthuộc vào vòng đời của Activity chứa nó
Fragment có thể được thêm vào hoặc gỡ bỏ khỏi activity trong khi activity đang hoạtđộng
Một Activity có thể được hình thành từ nhiều Fragment và 1 Fragment có thể được sửdụng bởi nhiều Activity
b Bài tập
Không có bài tập
2.2.6 Fragment advance
a Lý thuyết
Trang 17Task 1 Create app that contain
- MainActivity with 1 button, 1 TextView
- click button will show dialog fragment with Yes, No Button
- When user click Yes, TextView display “You click Yes”
- When user click No, TextView display “You click No”
Task 2 Create Setting screen consit of
- 2 Group: App, User
- Main Activity will display all current settings
- Main Activity able to listen to setting screen value change
Hoàn thành bài tập đúng hạn
2.2.7 Service
a Lý thuyết
Service là một thành phần của ứng dụng Android mà có thể chạy lâu dài trongbackground Nó không có giao diện người dùng Service có thể tiếp tục chạy dù ngườidùng chuyển sang ứng dụng khác Ngoài ra, một thành phần (component) của ứngdụng có thể được gắn (bind) với một Service để tương tác với nó (đây là kiểu boundservice)
Có 3 loại Service:
Trang 18• Add a new Foreground Service in your app.
• Service contains a Media Player which is used to control musicplayback
• Add a new Fragment to show list music item
• When select a music item, show Playing Fragment in your app
• This Fragment display at the bottom of the screen and overlay otherexisting fragments
• This Fragment contains a Media Controller like below image Whenuser presses on a button or seek bar of Media Controller, events will besent to Service to control playing music
• When a button is pressed, show a Toast message is enough
Screens