2.2.1 Tổng quan
Mục đích:
Khai thác các giải pháp yêu cầu.
Hình 2.3: Quy trình thiết kế tại FPT Software
2.2.2 Quy trình thiết kế
Phát triển thiết kế
AD/HLD, DD: Các bước và các hoạt động - Xem lại và phê duyệt thiết kế ở mức cao:
+ Chuẩn bị cho việc xem lại HLD, báo và gửi tài liệu, các bản ghi tới người xem lại đó.
+ Review: Phương pháp thiết kế, kiến trúc hệ thống, tính khả thi của quá trình thiết kế chi tiết và coding
+ Thiết kế màn hình, báo cáo, các giải thuật và các module khác. + Tại tài liệu thiết kế chi tiết.
2.2.3 Thiết kế quy trình làm việc
Tổng quan:
Hình 2.4: Lưu đồ thiết kế quy trình làm việc Các bước thiết kế:
a. Bước 1: Lập kế hoạch.
Mục đích: Nó để thành lập kế hoạch thiết kế.
Trigger: Dự án được mở và quản lý dự án được bổ nhiệm. Đầu vào:
- Kế hoạch dự án .
- Các yêu cầu của khách hàng. Các bước:
- Nghiên cứu yêu cầu thiết kế: các mẫu và mô tả; các chuẩn. các quy định, hướng dẫn, các thiết kế tương tự và có thể sử dụng lại, các công cụ.
- Nghiên cứu các đầu vào (hiệu năng và các yêu cầu chức năng; các quy định và các yêu cầu pháp lý; các yêu cầu khác), các quyết định yêu cầu chưa rõ ràng và chưa thống nhất.
- Tạo kế hoạch thiết kế: Phạm vi và mục đích, các nhiệm vụ và kết quả, các gia đoạn và cột mốc, lịch trình và nguồn lực, các giao diện, các tiêu chuẩn thiết kế và tiêu chí.
- Đầu ra:
- Kế hoạch thiết kế được tạo và phê chuẩn: Quá trình thiết kế, nguồn lực cho thiết kế, các tools được sử dụng, lịch trình.
- Các chuẩn, mẫu và checklist được sử dụng cho thiết kế đã được thành lập.
b. Bước 2: Phát triển thiết kế cấp cao. Mục đích:
Để phát triển kiến trúc thiết kế. Trigger:
Kế hoạch cho thiết kế được phê duyệt. Đầu vào:
- Nghiên cứu các tài liệu phân tích công việc và đặc tả yêu cầu người dùng.
Định nghĩa các điểm chính của kiến trúc hệ thống như mô hình kỹ thuật, mô hình hoạt động, mô hình cơ sở dữ liệu ,mô hình cấu trúc chương trình, nguyên mẫu (nếu cần).
Đầu ra:
- Các mẫu yêu cầu phần mềm.
- Mô hình phần mềm, nguyên mẫu (nếu có). - Các kết quả thiết kế chương trình.
- Các kết quả thiết kế giao diện.
- Tài liệu thiết kế kiến trúc.
c. Bước 3: Đánh giá, phê duyệt thiết kế cấp cao. Mục đích:
Để làm rõ và xác nhận kiến trúc thiết kế. Trigger:
Kiến trúc thiết kế sẵn sàng để xem xét và phê duyệt. Đầu vào:
- Tài liệu thiết kế kiến trúc. - Chuẩn, các yêu cầu thiết kế. Các bước:
- Chuẩn bị cho đánh giá thiết kế cấp cao, thông báo và gửi tài liệu, các bản ghi tới người xem xét.
- Đánh giá thiết kế cấp cao: Giải pháp thiết kế, các tool và các chuẩn, kiến trúc hệ thống, tính khả thi của quá trình thiết kế chi tiết và coding.
- Phê duyệt thiết kế cấp cao và thay đổi yêu cầu (nếu cần). Đầu ra:
- Design Checklist.
- Đánh giá báo cáo, yêu cầu thay đổi (nếu cần).
- Thiết kế kiến trúc được phê duyệt và các yêu cầu thay đổi của nó. d. Bước 4: Phát triển thiết kế chi tiết.
Mục đích:
Để phát triển thiết kế chi tiết. Trigger:
- SRS, URD, và các yêu cầu của khách hàng. - Tài liệu thiết kế kiến trúc.
- Kế hoạch thiết kế. Các bước:
- Thiết kế các báo cáo. - Thiết kế các giải thuật. - Thiết kế các module khác. - Tạo tài liệu thiết kế chi tiết. Đầu ra:
- Tài liệu thiết kế chi tiết. - Các mâu thiết kế.
e. Bước 5: Tiến hành chuyển đổi thiết kế. Mục đích:
Cung cấp các gói thiết kế cho giai đoạn tiếp theo. Trigger:
Các gói thiết kế là sẵn sàng để chuyển giao. Đầu vào:
- Thiết kế kiến trúc. - Thiết kế chi tiết. - Mẫu thiết kế (tùy ý).
Các bước:
- Tổng quát hóa các kết quả thiết kế, xem lại các chú ý và định nghĩa thêm công việc.
- Xem xét và phê duyệt các sản phẩm thiết kế trước khi cung cấp cho khách hàng, nếu cần.
- Cung cấp các sản phẩm thiết kế tới các đơn vị sản xuất, và tới khách hàng (nếu cần).
- Tạo báo cáo tóm tắt thiết kế. Đầu ra:
- Các sản phầm thiết kế được cung cấp. - Báo cáo 2 tóm tắt thiết kế.
CHƯƠNG 3: THỰC TẬP CÔNG TY TNHH PHẦN MỀM FPT (FSOFT)
3.1 Vị trí, mô tả công việc và quá trình thực hiện công việc Mô tả công việc được phân công Mô tả công việc được phân công
Nội dung công việc: Thực tập sinh C/ Embedded A, Lập trình ngôn ngữ C
Bảng 3.1: Lộ trình thực tập tháng thứ nhất
Ngày học Tên bài học Nội dung, kiến thức
12/01/2022 Variable in C
- Introductory question? - Basic Data Types - Store Class
- Key word for variable - Pointer variable
- Struct Data type - Structure
13/01/2022
Array, Decision and Looping Array in C Decision in C Looping In C 14/01/2022 Function What is function
Inline keyword, inline function Phân biệt macro-like function và function
Variable argument list
Function argument, function return Recursion
18/01/2022
Memory
Management & Pointer Basics
1 Memory layout
2 Variable and memory location 3 Linker file and memory
4 Pointer variable
5 Assigning values to a pointer 6 Memory allocation for a pointer 7 Pointer arithmetic
19/01/2022 Practicce and review Practice Time: Assignment
20/01/2022 Macro and Bit Operations
C Preprocessor Overview Macro
C Preprocessor Directives Bit Operations
21/01/2022 Data Structure &
Algorithms Data structure and Algorithms
24/01/2022 Practicce and review Practice Time: Assignment
25/01/2022 Pointer Advances Day 1
Assigning pointer to address Wrong using pointer
Pointer essence Function pointer Callback function
26/01/2022 Pointer Advances Day 2 Assignment Review & Guides 27/01/2022 Pointer Advances Day 3 Assignment Review & Guides 28/01/2022 Optimization in C Optimization
07/02/2022 C_Common defects C_Common defects 08/02/2022 FILE handing FILE handing
10/02/2022 Mock project 1 (6 Days)
Do The Mock test
Do the Mock test - Day 1
11/02/2022 Mock project 1 (6 Days)
Review Mock test
Do the Mock test - Day 2 Review Mock test
14/02/2022 Mock project 1 (6 Days)
Do mock test Do the Mock test - Day 3
15/02/2022 Mock project 1 (6 Days)
Review Mock test
Do the Mock test - Day 4 Review Mock test
16/02/2022 Mock project 1 (6 Days)
Do mock test
Do the Mock test - Day 5
17/02/2022 Mock project 1 (6 Days)
Present Mock
Do the Mock test - Day 5 Review Mock test
B, Embedded system
Bảng 3.2: Lộ trình thực tập tháng thứ hai Ngày học Tên bài học Nội dung, kiến thức
18/02/2022
Embedded System Getting Started + Embedded Software Development
Introduction to the course Embedded system Introduction Setup working environment and try to create a sample project for Freedom KL46Z board by using IAR IDE then download to the board.
21/02/2022 Embedded Software Development & Getting started with Kl46
Embedded Software Overview and Basic Development
Overview on Freescale Freedom KL46
Overview on Development IDE: IAR Workbench
22/02/2022
Getting started with KL46 freedom board (Cont)
Write an example application to blink a led with given
frequency. 23/02/2022 Cortex Microcontroller Software Interface Standard (CMSIS) Overview on Common Microcontroller Software Interface Standard (CMSIS). Update Assignment 1 base on CMSIS
24/02/2022
ARM Cortex-M
architecture overview
Introduction to ARM Cortex-M architecture
Describe about the programmer model in ARM Cortex-M
Explain on Instruction Set Archtecture
25/02/2022
ARM Cortex-M
architecture overview (Cont)
Write an example application to blink a led by using a system timer (SysTick)
Update the previous exercise, the blink frequency can be changed by using the SW1 button
M
Organization of Vector Table Some important registers: NVIC & SCB
01/03/2022 Exception and Interrupt
(Cont)
Exceptions sequences and handling optimization technique
02/03/2022 Practice and review Assigment guide
03/03/2022 Pheripheral ADC/DAC
ADC/DAC module Practice time: Write an
example application use light sensor to show light intensity of one led (or LCD if have).
04/03/2022 Practice and review Practice time: Write an
software timer
07/03/2022 Peripherals PIT Timer
Overview on KL46 Timer modules
Periodic Interrupt Timer (PIT) KL46 PIT Module
08/03/2022 Practice and review Practice time: Write an
software timer
09/03/2022 Pheripheral I2C
I2C module
Practice time: Write an example application use read/write EEPROM module by I2C connection.
11/03/2022 Peripherals UART Introduction to UART Data Transmission/Data Reception RS232 Standard Freedom KL46 UART
Practice time: Write a program sends a “Hello world!” to PC through UART.
3.2 Tổng hợp, phân tích kết quả thực tập tại doanh nghiệp
Kết quả đạt được sau khóa thực tập tại Fsoft: - Nắm vững các kiến thức ngôn ngữ C như:
Biến
Mảng và vòng lặp Hàm
Quản lý bộ nhớ và con trỏ Macro và thao tác bit
Cấu trúc dữ liệu và giải thuật Danh sách liên kết (Linked list) Con trỏ nâng cao và tối ưu hóa Thao tác với file và 1 số lỗi cơ bản
- Nắm vững các kiến thức Embedded như: Vi điều khiển và vi xử lý
Timer/ counter /PWM
Các ngoại vi của vi điều khiển I/O Ports – Input/output
Interrupt
Các chuẩn giao tiếp UART, I2C Các bộ chuyển đổi ADC, DAC RTOS
- Học được một số kĩ năng mềm như: Viết CV
Viết email
Làm báo cáo hàng ngày Kỹ năng làm việc nhóm
Kỹ năng xử lý, giải quyết vấn đề với 1 chương trình lập trình điều khiển
3.3 Đề xuất phương pháp cải tiến, phát triển tại doanh nghiệp
Tổ chức CMM Workshop; tổ chức các lớp đào tạo, các cuộc thi tìm hiểu về CMMI, luyện thi thử CMM/CMMI
Chọn KPMG Ấn độ, tập đoàn tư vấn đa quốc gia với chuyên gia của Ấn Độ, có thương hiệu lớn và chi phí tư vấn hợp lý hơn so với thuê các chuyên gia từ Mỹ
Lãnh đạo quan tâm, cam kết giành nguồn lực có kinh nghiệm, đáp ứng yêu cầu tham gia dự án
CHƯƠNG 4: KẾT LUẬN 4.1 Đánh giá về chương trình thực tập và ý kiến
Trong thời gian thực tập em nhận thấy rằng ở mỗi công ty có sự khác nhau, đều có những điểm thuận lợi và khó khăn nhất định đối với sinh viên chúng em. Từ đó giúp chúng em có những sự lựa chọn đúng đắn: Fsoft là một môi trường tốt cho những sinh viên ra trường cũng như sinh viên muốn đi làm thêm để lấy kinh nghiệm với một môi trường làm việc đầy tính năng động khoa học, chuyên nghiệp, hợp lí giúp phát triển tốt năng lực của mỗi thành viên. Tại Fsoft công việc có tính gợi mở và đầy sáng tạo. Điều đó cũng đòi hỏi ở mỗi sinh viên phải có những kiến thức chuyên môn nhất định và cả những kĩ năng mềm mới đáp ứng được đòi hỏi của công việc. Với Fsoft, chúng ta có thể chọn cho mình con đường thăng tiến phù hợp nhất với khả năng và nguyện vọng. Để bắt kịp với những thay đổi công nghệ mà khách hàng yêu cầu, cũng như nhu cầu thăng tiến, nhân viên làm việc tại Fsoft sẽ thường xuyên được phát triển bản thân, đào tạo kỹ năng mới. Trong quá trình làm việc, đóng góp cho Công ty, nhân viên có những quyền lợi tương xứng, bao gồm thu nhập, khen thưởng và những quyền lợi khác.
Nhờ kỳ thực tập này, sinh viên sẽ thấy được cơ hội việc làm và phát triển của mình, trong môi trường doanh nghiệp thông qua các buổi tọa đàm tuyển dụng, con đường học tập của sinh viên từ nhà trường tới dự án doan nghiệp cũng trở nên rõ ràng hơn.
Trong thời gian hai tháng thực tập tại FPT Software, em đã định hướng được nghề nghiệp cho mình, ngoài kiến thức chuyên môn thì việc học tập kỹ năng mềm cũng như văn hóa doanh nghiệp cũng rất thú vị và bổ ích. Tuy sự
trải nghiệm này không dài nhưng thu hoạch từ kỳ thực tập đối với em là không nhỏ và đáng quý vượt qua sự mong đợi lúc đầu.
4.2 Những góp ý cho cơ sở thực tập và cho việc tổ chức thực tập thực tế
Công ty đã tạo mọi điều kiện cho công việc thực tập của sinh viên, tuy nhiên nếu được công ty nên cho sinh viên được tận mắt thấy quy trình làm phần mềm tại nơi làm việc. Có thể cho sinh viên vào một dự án thực tế nhỏ để được làm việc thực tế.
Đợt thực tập trong thời gian ngắn vừa qua đã mang lại cho mỗi sinh viên chúng em nhiều kinh nghiệm quý giá! Rất thiết thực và bổ ích. Nó là cơ sở là nền tảng định hướng cho chúng em xác định đúng đắn được vị trí mình thích và làm trong tương lai. Vì vậy có kế hoạch mục tiêu chiến lược rõ ràng để đạt được mục tiêu đó.
PHỤ LỤC
Danh sách hình ảnh
Hình 2.1: Quy trình phân tích yêu cầu tại FPT SOFTWARE...22
Hình 2.2: Tiến trình để phát hiện và phân tích yêu cầu phần mềm...23
Hình 2.3: Quy trình thiết kế tại FPT Software...25
Hình 2.4: Lưu đồ thiết kế quy trình làm việc...26
Danh sách bảng biểu Bảng 3.1: Lộ trình thực tập tháng thứ nhất...30