TRƯỜ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 Java Software Engineer Trainee Công ty thựctập Ngườiphụtrách Thựctậpsinh : ELCA Việt Nam :NguyễnĐăngTuấn :TrươngCơngTấnPhát TP HồChí Minh, tháng 07năm 2021 \ LỜI MỞ ĐẦU Vớisựpháttriểnnhanhchóngmặtcủathịtrườngphầnmềm, córấtnhiềuhướngđivàcáchpháttriểnphầnmềmkhácnhau, ngồiviệclên ý tưởngđểpháttriểnmộtphầnmềmtừđầu, thìcáchtạo mộtsảnphẩmmớibằngcáchpháttriển, cậpnhậthoặcthayđổinhữnghệthống hay phầnmềmcósẵnđểphùhợpvớinhucầuriêngbiệtcủatừngcánhânhoặctổchứccũngđanglàmột xu hướngmớitrongngànhcơngnghiệpphầnmềmtrênthếgiới Hiện Việt Nam cũngđãcórấtnhiềucơng ty pháttriểncácphầnmềm hay hệthốngmãnguồnmởnhưvậy, mộttrongsốđólàcơng ty ELCA Việt Nam Làmộtcơng ty phầnmềmđaquốcgiacónguồngốctừThụySĩ, ELCA khơngchỉpháttriểncácsảnphẩmphầnmềmmới, màcịnđảmnhậncảnhữngdựánmãnguồnmởtheoucầukháchhàng Làmộtsinhviênthuộc khoa Cơngnghệphầnmềm, emmuốnmìnhđượctiếpxúcvớitấtcảcácloại, cáccách, cáchướngđicủaviệcpháttriểnphầnmềm, đồngthờicảmthấycácmụctiêuvàgiátrịcủa ELCA rấtphùhợpvớiđịnhhướngcủabảnthân, nênemđãquyếtđịnhchọn ELCA Việt Nam lànơibắtđầuthựctập, tìmkiếmthêmnhữngkiếnthứcvàkinhnghiệmthựctếđầuđờichobảnthân LỜI CẢM ƠN TrântrọnggửilờicảmơnđếnCơng ty đãtạođiềukiệnchoemcócơhộiđượcthựctậptạicơng ty ELCA Việt Nam Kỳthựctậptuyngắn, nhưngemđãđượchọcrấtnhiềuthứtừsựchỉdẫnnhiệttìnhcủacácanh Coach trongphịng ban Emkhơngnhữnghọcđượcnhữngkỹthuật, kiếnthứctrongcácdựánthựctế, màcịntíchgópđượcchobảnthânnhữngkinhnghiệmkhilàmmộtnhânviêntrongcơng ty, cáchgiaotiếp, làmviệcnhómtrongcácdựánchung Chânthànhcảmơncácanhchịđãgiúpđỡ, hướngdẫncũngnhưtheosátđểgóp ý emtrongsuốtqtrìnhthựctập ĐặcbiệtemxingửilờicảmơnsâusắcđếnanhNguyễnĐăngTuấn, đãgiúpemtraining rấtnhiềuvềkiếnthức ReactJS, Spring, đếnnhữngkhókhăntrongviệclàmquenvớimơitrường mới, cũngđượcanhchỉdẫnrấttậntình Vớikiếnthứcrộngvàsâucủaanh, emđãhọchỏiđược rấtnhiều Ngồi ra, emxingửilờicảmơnđếnanhTrầnHánh Minh vàNguyễnĐứcTrung, đãhỗtrợanhTuấntraining chuyênsâutăngcườngvề Spring backend EmcũngxingửilờicảmơnđếnanhTrầnVănThơi, ngườihướngdẫnemtronggiaiđoạntìmhiểunghiệpvụ Anh đãhỗtrợemrấtnhiềuvềkiếnthức nghiệpvụcủasảnphẩmIpension, cũngnhưquytrìnhlàmviệcvàcáchthứcsửdụngcáccơngcụ Jira, Bitbucket, Vertec, … Cũngxincảmơnthầycơtrong tạođiềukiệnemlàmbàibáocáonày khoa Cơngnghệphầnmềmđãnhiệttìnhhỗtrợ, TrươngCơngTấnPhát TpHCM, ngày07tháng 07năm 2021 NHẬN XÉT CỦA KHOA MỤC LỤC MỤC LỤC Chương 1: Giớithiệucông ty thựctập Giớithiệucông ty ELCA Sảnphẩmcủacông ty 3 Chương 2: Nội dung thựctập Tìmhiểucơng ty vàcáckỹnăngcơbảntrongcơng ty Giaiđoạn training kiếnthứccơbản Thựchiện project 15 Chương 3: Chi tiếtvềdựán 15 Giớithiệuvề PIM Tool 15 User Stories 16 TÀI LIỆU THAM KHẢO 17 TỔNG KẾT 18 Chương 1: Giớithiệucông ty thựctập Giớithiệucông ty ELCA ELCA đượcthànhlậpvàonăm 1968 tạiThụySĩ, làmộttậpđoànchuyêncungcấpcácgiảipháp IT chokháchhàng, thiếtkếlạicácphầnmềmchophùhợpvớinghiệpvụtừngdoanhnghiệpyêucầu Sau 50 nămthànhlậpvàpháttriển, ELCA đãkhẳngđịnhđượcvịthếvàniềm tin kháchhàngbằngnhữnggiátrịmàcông ty manglại Thông qua nhữngdựánlớnnhư: Giảiphápquảnlý ID chongườidânvàtộiphạm – HợptácvớichínhphủThụySĩ, GiảipháphệthốngbánvéchoUEFA,… ELCA đãdầnchứngminhđượcđâylàmộtcơng ty đáng tin cậyvàđãgâydựngđượcmốiquanhệvớirấtnhiềukháchhànglớntrêntồnthếgiới ELCA cóvănphịngđặttạiThụySĩ, Tây Ban Nha, Pháp, Anh, Đức, Ý vàViệt Nam, vớihơn 1300 nhânviênlàmviệctạitấtcảcácvănphịngtrênthếgiới ELCA đãcókinhnghiệmlàmviệcvớigần 1000 dựánchokháchhàng, doanhthunăm 2019 đạt 170 triệu Franc ELCA xâydựngphầnmềmdựatheoquytrình SCRUM MỗidựấnsẽcónhiềuSCRUM teamđảmnhậnmộtphầnchứcnăngkhácnhau Sảnphẩmcủacơng ty Nhữngsảnphẩmphầnmềmcủa ELCA đượcpháttriểnnhắmtớitệpkháchhàngrấtđadạng, từtrongnướcchotớingồinước, từchínhphủchotớicácdoanhnghiệp, tậpđồnlớn Làmộtcơng ty chuncungcấpcácgiảipháp, cácsảnphẩmtrảirộngtrênnhiềulĩnhvựcnhư: Quảnlýbảohiểm (IPENSION), Quảnlýdữliệudoanhnghiệp (CRM), Quảnlýđịnhdanh (trustID), Bánvétrựctuyến (Secutix), Chứngnhận Y tế (HealthnGo), Mộtsốnhữnggiảiphápnổibậtcủa ELCA như: Secutix: ban đầulàmộtgiảipháp, vàsauđóđãtáchriêng thànhmộtcơng ty dướisựquảnlýcủa ELCA, lànơicungcấpcácnềntảngbánvétrựctuyếnđượcpháttriểnchophùhợpvớitừngtổchức Ipension: nềntảngquảnlýbảohiểmchochínhphủThụySĩ, pháttriểnbộ suite tổngquátđể bao quátcáctrườnghợpquảnlýbảohiểmhiện tùythuộcvào business ngườidùnghướngđến trustID: làmộtdịchvụtạovàquảnlý ID chocáctổchứclớnnhưChínhphủ, Y tế, Giáodục, Doanhnghiệp, cơngdân,… Chương 2: Nội dung thựctập Chươngtrình onboarding dànhchonhânviênmớiđikèmvớiđánhgiáchấtlượngnhânsựđầuvàocủa ELCA chia làmhaigiaiđoạn: Giaiđoạn training kiếnthứccơbảnvàgiaiđoạn thựchiện project − Giaiđoạn training kiếnthứccơbản: o Trainer sẽtiếnhànhhướngdẫncáckiếnthứcvềcôngnghệ, best practices, coding convention, performance, vànhữngquytắc coding kháccầntuântheotrong ELCA o Kếtthúc training, trainer sẽyêucầuthựchiệncàiđặtmộtsảnphẩm, trongđóyêu cầusảnphẩmphảiápdụngtấtcảkiếnthứcđãđược training trướcđó Thựchiện tuần o Trongngàycuốicùngcủa training sẽlàngàyđánhgiá Thựctậpsinhsẽtiếnhành soạn slide, thuyếttrìnhvềnhữngkiếnthứcđãhọcđượctrongquátrình training Cuốicùnglà demo sảnphẩmvới leader, trainer delivery unit manager bằngtiếng Anh Cácanhchịsẽđặtcâuhỏi, đọc source code chi tiếtđểxemxétviệcnhững quytắc, best-practices đãđượcápdụngvàosảnphẩm hay chưa o Sau khithuyếttrình, cácanhchịsẽđưa quyếtđịnhcótiếptụcchothựctậpsinh vàogiaiđoạn training tiếptheo.Nếucả đềuđồng ý, thựctậpsinhsẽđượcsắpxếp vàomột team đểtiếptục training nghiệpvụ − Giaiđoạnthựchiện project cơbản: o Trainer sẽthựchiệnhướngdẫnvềnghiệpvụ (business) củasảnphẩm o Training vềnghiệpvụtrong tuần o Sau training, sẽthựchiệnmộttínhnăngcủasảnphẩmtrong tháng Leader mentorsẽtheodõikếtquảhằngngàyđểđánhgiáchấtlượngcơngviệccủathựctậ p sinh o Đểđượcnhậnchínhthứcvàomột Team, thựctậpsinhphảithuyếttrìnhthànhcơng vềnghiệpvụcủahệthốngvàthựchiệnđượctínhnăngđượcđặt o Sau khihồnthành training nghiệpvụ, thựctậpsinhsẽtrởthànhnhânviênchính thứccủacơng ty nếucónguyệnvọng Kếtthúcgiaiđoạn training nghiệpvụcũng làlúckếtthúcthựctậptạicơng ty Tìmhiểucơng ty vàcáckỹnăngcơbảntrongcông ty Thờigian : ngày Nộidung : Giớithiệuvềcông ty, cáchtổchứccủacơng ty Đượcnghengườiphụtráchgiớithiệuvềcơng ty, qtrìnhthànhlậpvàpháttriển, cáchthứctổchức, cácquytrìnhphầnmềmđặctrưngcủacơngty Ngồi ra, thựctậpsinhcịnđượcgiớithiệuvềcáchthứclàmviệctrongcơng ty nhưthờigianlàmviệc, cácquyđịnhcầnphảitnthủ, cáchsửdụngcáccơngcụtraođổi, cáckhotàiliệunộibộcủacơngty,… Kếtquả : Hiểuthêmnhiềuđịnhhướng, nguntắccủa ELCA, qtrìnhthànhlậpvàpháttriển Biếtđượccáchlàmviệc, hoạtđộngtrongmơitrườngthựctế mộtcơng ty phầnmềm Giaiđoạntranningkiếnthứccơbản 2.1 Tìmhiểuvềmơitrườnglậptrình Thờigian: buổi (cùngvớingàygiớithiệucơng ty) Nội dung: − Thựctậpsinhsauđósẽđược mentor dẫnđếnvịtrílàmviệc, hướngdẫn setup máy, càiđặt cáccơngcụvàmơitrườnglậptrình Maven, Java, IntelliJ,… − Thựctậpsinhđượcucầutìmhiểuvềmơitrườnglàmviệcvừađượccàiđặtcủamình Thựchiện: Thựchànhsửdụngcácphầnmềmnêutrên Đọctàiliệuvề Maven, IntelliJ Kếtquả :Hiểuđượccáchthức maven hoạtđộng, nhữngtrạngtháicủanóvàcáchsửdụngcơbảnđểquảnlýmộtsảnphẩm 2.2 Tìmhiểuvề Java Thờigian: ngày Nội dung: − Ơnlạicáckiếnthứccơbảnvề Java, ơnlại OOP, cáccúphápcơbản, lớpvàđốitượng, interface, kếthừa, Generics, Packages, phạm vi truycậptrong OOP, Nested class, Collections − Ônlạimộtsốthànhphầnkháccủa Java: Java NIO.2, Lambda Expression, method references, DateTime API, thưviện Apache Commons − Tìmhiểuvề Stream API Java Thựchiện: − Tiếnhànhtìmhiểucáckiếnthứcnêutrênđặcbiệtquantâmtới java sauđó checkpoint mentor Kếtquả: − Hiểuvàcóthểápdụngnhữngkiếnthứcđãđượcnêutrên 2.Tìmhiểuvề Design Pattern cơbản, ngunlý SOLID vàxửlý Exception Thờigian: ngày Nội dung: Về Design Pattern: Tìmhiểucác design pattern đượcdùngnhiều Observer Pattern, Builder Pattern, Factory Pattern, Singleton Pattern Vềnguyênlý SOLID: Tìmhiểuvề Single Responsibility Principle, Openclosed principle, Liskov Substitution Principle, Interface Segregation Principle, Dependency Injection Vềxửlý Exception: Tìmhiểuvềcấutrúccây Exception Java Phânbiệt Checked Unchecked exception: Checked exception sẽđượckiểmtrabởi compiler, thựchiệnxửlýbằng try/catch Unchecked exception cóhailoại: RuntimeException (gây bởiviệclậptrìnhkhơngđúng) System Errors (gây bởihệthống, vdnhưkhihếtbộnhớ) Runtime exception khôngnênđược catch Thực hiện: − Tiếnhànhtìmhiểucáckiếnthứcnêutrênsauđó checkpoint mentor Kếtquả: − Hiểuvàcóthểápdụngnhữngkiếnthứcđãđượcnêutrên 2.4 Tìmhiểuvề Debugging IntelliJ Thờigian: ngày Nội dung: − Tìmhiểucáchthứcsửdụng breakpoint, sửdụng window debug, set value, vàcácthủthuật debuggingkháccủa IntelliJ Thực hiện: − XemcáctàiliệucủaJetbrainsvề IntelliJ đượcđềcậptronggiáoán training Kếtquả: − Hiểuvàcóthểápdụngnhữngkiếnthứcđãđượcnêutrên − Cóthểthựchiện debug mộtchươngtrìnhtrên IntelliJ 2.5 Làmbàitập Java tổnghợpkiếnthứcđãđượchọc Thờigian: ngày Nội dung: Công ty sẽcấpchothựctậpsinhmộttập tin companies.csv Vớiđịnhdạngnhưsau: ID Name Foundation Date Capital Country isHeadQuarter ELCA VN 1998 200000 VN ABB Ltd 01-01-93 320000 CH … … … … … … Nhiệmvụchúng ta phảiviếtmộtchươngtrình, chứacáctínhnăngsau: − Nhập file vàohệthống Lưu ý: Phảithiếtkếhệthốngđểcóthểđảmbảocókhảnăngmởrộngđểtươngthíchvớicácđịnhd ạngkháctrongtươnglai (XML, XLSX,…) − Xuất mànhình capital tổngcủacác Country CH − Xuất mànhìnhtêncủatấtcảcơng ty nằmtrong country CH − Sửachươngtrìnhđểtheodõithưmục “import” Nếucósựthayđổivề file trongthưmụcvàchươngtrìnhhỗtrợđịnhdạng, thìsẽ import file mớivàovàxuấtlạikếtquả − Sửachươngtrìnhcủabạnđểcóthể import đượcmột file rấtlớn (30MB) 1s (Ápdụng design pattern đãhọctừtrướcvàobàitập ) Thựchiện: − Tiếnhànhtìmhiểucáckiếnthứcnêutrênsauđó checkpoint mentor Kếtquả: − Hiểuvàcóthểápdụngnhữngkiếnthứcđãđượcnêutrên 2.6 Nghiêncứu Multilingual (đangơnngữ) Thờigian: buổi Nội dung: Trainer đưa cáccâuhỏivàthựctậpsinhtựnghiêncứu, saukhihoànthànhbáocáolại với trainer vềkếtquảnghiêncứucủamình: − Tạisao multilingual lạicầnthiết ? − Thànhphầnnàocủahệthống (messages, labels, data…) thườngsẽđượccàiđặt multilingual ? − Cónhữngcáchphổbiếnnàodùngđểlưutrữvàtruyxuấtcác component multilingual tĩnh ? − Cónhữngcáchphổbiếnnàodùngđểlưutrữvàtruyxuấtcác component multilingual động (multilingual data nhưtênsảnphẩm, mơtả,…) ? Cungcấpsơđồ ERD mơtả − Làmcáchnàođể search engine cóthểtìmđượccácthơng tin multilingual data ? Thực hiện: − Tiếnhànhtìmhiểucáckiếnthứcnêutrênsauđó checkpoint mentor Kếtquả: − Hiểuvàcóthểápdụngnhữngkiếnthứcđãđượcnêutrên 2.7 Nghiêncứu Coding Convention (quychuẩn code) Thờigian: tiếng Nội dung: − Nghiêncứutàiliệu SunCodeConvention.pdf Thựchiện: − Tiếnhànhtìmhiểucáckiếnthứcnêutrênsauđó checkpoint mentor Kếtquả: − Hiểuvàcóthểápdụngnhữngkiếnthứcđãđượcnêutrên 2.8 Nghiêncứu Spring Thờigian: ngày Nội dung: Vì Spring làmộtđềtàirấtrộng, vìvậytronggiớihạnthờigian training, trainer chỉyêu cầuthựctậpsinhnắmđượccácphầnsau: − Cáchthứchoạtđộngcủacác annotation sau: @Configuration, @Bean, @Component, @Controller, @Service, @Repository, @Autowired (cóthểdùnghoặckhơngdùngvới @Qualifier) − Chứcnăngcủa Dispatcher Servlet, Handler Mapping, Controller, ModelAndView, ViewResolvervà View − Cáchthứcnhững component trêntươngtácvớinhauđểcóthểtạo Response từ Request User (cóvẽhình flow minhhoạ) − Hiểurõvàcóthểgiảithíchđược mứcđộ chi tiếtcáchthứchoạtđộngcủacáccomponents thườngđượcsửdụng: @RequestMapping/@RequestParam, @RequestBody/@ResponseBody, @ModelAttribute, @InitBinder − Giảithíchđượcvìsao Controller cóthểtrảvềmột String hoặcModelAndView Khi nêndùng String vàkhinàonêndùngModelAndView − Giảithíchcáchsửdụng JSR-303 (Bean validators) với Spring Lỗisẽđượctrảvềđếnuser bằngcáchnào − Chúng ta cónênthựchiệnlưu data dướidạngmột instance member Controller hay không − SựkhácbiệtgiữaRestController, Controller − Thờiđiểm Bean đượctạo vàbịhuỷ Thực hiện: − Tiếnhànhtìmhiểucáckiếnthứcnêutrênsauđó checkpoint mentor Kếtquả: − Hiểuvàcóthểápdụngnhữngkiếnthứcđãđượcnêutrên 2.9 Làmbàitập Spring Thờigian: ngày Nội dung: − Hồnthiệnmộtsảnphẩmđangđượcthựchiện Checkout source code từ bitbucket cơng ty Nội dung chi tiết: − Hồnthànhtínhnăng search theotêntrên hệthốngquảnlýtàingunđơngiản Thựchiện: − Tiếnhànhtìmhiểucáckiếnthứcnêutrênsauđó checkpoint mentor Kếtquả: − Hiểuvàcóthểápdụngnhữngkiếnthứcđãđượcnêutrên 2.10 TìmhiểuvềBảomậthệthống, Surrogate Key Concurrent Update Thờigian: tiếng Nội dung: − NghiêncứuvềBảomậthệthống (application security), Surrogate Key vàConcurrent Update Thực hiện: − Tiếnhànhtìmhiểucáckiếnthứcnêutrênsauđó checkpoint mentor Kếtquả: − Hiểuvàcóthểápdụngnhữngkiếnthứcđãđượcnêutrên 2.11 Tìmhiểuvề SQL Thờigian: tiếng Nội dung: − Ôntậpviếtcáccâu SQL cơbảnđếnnângcao Nội dung bao gồmcáclệnh query cơbản, lệnh insert, lệnhtruyvấnlồng Thực hiện: − Tiếnhànhtìmhiểucáckiếnthứcnêutrênsauđó checkpoint mentor Kếtquả: − Hiểuvàcóthểápdụngnhữngkiếnthứcđãđượcnêutrên 2.12 Tìmhiểuvề Unit Test Thờigian: tiếng Nội dung: Nghiêncứucácnội dung sau: − Tạisaolạicần Unit test − Đọcvàtìmhiểu JUnit: Cáchthứcsửdụngcơbản − Đọcvàtìmhiểu FEST: Các syntax cơbản, cáchsửdụngthưviện FEST − Code coverage: Tìmhiểuvềcácloại coverage (Line coverage, Branch coverage Condition coverage) − TìmhiểuvàsửdụngthưviệnJaCoConhằmthốngkê Code Coverage Thực hiện: − Thựchiệntìmhiểucácvấnđềnêutrên Trìnhbàyvới trainerđểkiểmtra Kếtquả: − Hiểuvàápdụngđượcnhữngkiếnthứcđãhọc 2.13 TìmhiểuvềHibernate Thờigian: ngày Nội dung: − Đọcvàhiểucơbảnvề ORM − Tìmhiểucác JPA annotations − Tìmhiểuvềcáchthức mapping cácmốiquanhệtrong entity: − Tìmhiểuvề Spring Data JPA − TìmhiểuvềQueryDSL: Tíchhợpvới Maven, dùngcác query types, querying, sửdụng joins, cácsửdụngkhác, ordering, grouping, subquery − Tìmhiểuvềvịngđờicủacác Hibernate Entities Thựchiện: − Tiếnhànhtìmhiểucáckiếnthứcnêutrênsauđó checkpoint mentor Kếtquả: − Hiểuvàcóthểápdụngnhữngkiếnthứcđãđượcnêutrên 2.13 ThựchiệnbàitậpvềHibernate Thờigian: ngày buổi Nội dung: − Làmquenvới Spring Data vàQueryDSLđểđưa càiđặtchomột repository củamột entitytronghệthống − Làmquenvới Transaction Spring − Giảiquyếnvấnđề Lazy Initialization Hibernate − Giảiquyếtvấnđề N + query Hibernate − Đảmbảo audit log lnlnđượclưulạitrongtấtcả transaction, dù transaction cóbị roll back hoặckhơng Thựchiện: − Tiếnhànhtìmhiểucáckiếnthứcnêutrênsauđó checkpoint mentor Kếtquả: − Hiểuvàcóthểápdụngnhữngkiếnthứcđãđượcnêutrên 2.14 Tìmhiểuvề CSS Thờigian: ngày Nội dung: − Cácvấnđềcơbảntrong CSS: Giớithiệuvề CSS, Syntax − Selectors CSS: Rules, Document Tree, Selectors − Formatting với CSS: Background, Text, Font − Cáckháiniệmcơbản: Box Model, Border, Outline, Margin, Padding − Positioning CSS: Absolute positioning, Relative positioning − Bootstrap − TìmhiểuvềFlexBox LàmbàitậpFlexBox − CSS pseudo class pseudo element Thựchiện: − Tiếnhànhtìmhiểucáckiếnthứcnêutrênsauđó checkpoint mentor Kếtquả: − Hiểuvàcóthểápdụngnhữngkiếnthứcđãđượcnêutrên 2.15 TìmhiểuvềJavascript Thờigian: ngày Nội dung: − Cáckháiniệmcơbản: Javascriptlàgì, sửdụngJavascriptvàonhữngmụcđíchgì ?− TìmhiểuvềnhữngthànhphầnlõitrongJavascript Thựchiện: − Tiếnhànhtìmhiểucáckiếnthứcnêutrênsauđó checkpoint mentor Kếtquả: − Hiểuvàcóthểápdụngnhữngkiếnthứcđãđượcnêutrên 2.16 TìmhiểuvềReactJS Thờigian: ngày Nội dung: − Học ReactJS trênkhóahọcudemycơng ty cungcấpđểnắmrõnhữngkiếnthứccănbảnnhấtvề ReactJS Thựchiện: − Tiếnhànhtìmhiểucáckiếnthứcnêutrênsauđó checkpoint mentor Kếtquả: − Hiểuvàcóthểápdụngnhữngkiếnthứcđãđượcnêutrên 2.17 Tìmhiểuvề Coding best practices Thờigian: buổi Nội dung: − Tìmhiểuvềcác coding best practices đangđượcápdụngtại ELCA Thựchiện: − Tiếnhànhtìmhiểucáckiếnthứcnêutrênsauđó checkpoint mentor Kếtquả: − Hiểuvàcóthểápdụngnhữngkiếnthứcđãđượcnêutrên Thựchiện project Sau hơnmộtthángđược training nhữngcôngcụ, côngnghệ, kiếnthứcnềntừcơbảnđếnnângcao, thựctậpsinhđãnắmđượccáckỹthuậtvànội dung cơbảnkhilậptrình Coach sẽcho trainee thamgiavàomộtdựánthậtcủacơng ty Chi tiếtđồánsẽđượcnói chương Chương 3: Chi tiếtvềdựán Giớithiệuvề PIM Tool Tổngquandựán PIM Tool (Project Information Management Tool) làmộtDựán CRM củacông ty, vềbảnchấtlàmột Solution đượcpháttriểnđểthêmvào Dynamics CRM, vớimụcđíchlàquảnlýdữliệuvàthơng tin củamột Entity mớilà Project Solution PIM Tool ban đầuđãđượcthiếtkếsẵn database models Nhiệmvụcủangườipháttriểnlàdựatrênđó, thêmcácràngbuộcthuộctính, thêmcácgiaodiệntrựcquanđểquảnlý Project chongườidùng Mỗi User Story trongdựánđềucóhaiphần requirement làcơbảnvànângcao Kếhoạchlàsẽtậptrunghồnthiệnphầncơbảntrước, sauđónếucịndưthờigian, cóthể quay lạiphầnnângcaocủacác User Story đểhồnthiệnsau Các User Stories củadựán User Story 01 – Project creation and updation Mơtả: Vớivaitrịlàmộtngườiquảnlýcác projects (Project Manager), ngườidùngcóthểtạo record project, vàdễdàngtìmkiếmlại project đósaunày Đồngthờicũngcóthểcậpnhậtthơng tin củamột project đãtồntạitrong CRM Kếtquảchươngtrìnhcầnđạtđược: Form chophépnhậpthơng tin, tạomới, cậpnhật, vàxóacác projects Mộtsố Field form Project Number, Customer, Project Group,…lànhững field bắtbuộcnhập Ngồi Project Number cịnđóngvaitrịnhưmộtkhóathaythế (Alternative Key) Members Field chứadanhsáchcác Employees lànhânviênđảmnhận Project Đồngthờicómộtsubgridbêndưới member hiểnthịdanhsáchnhânviênđược binding từchuỗi members User Story 02 – Projects list Mơ tả: Vớivaitrịlàmộtngườiquảnlýcác projects (Project Manager), ngườidùngcóthểquansáttrựcquanmộtdanhsáchcác projects tồntạitronghệthống Đồngthờitrêndanhsáchđó, ngườidùngcóthểtìmkiếmmột project đểxemvàcậpnhậtthơng tin củanónếucần Kếtquảchươngtrìnhcầnđạtđược Cầntạomột table trêngiaodiệnđểthểhiệndanhsách nàyvàotrongmột Dashboard CRM CóthểthựchiệnmộtsốthaotácnhưTìmkiếm, mởliênkếttừmộtrecord,… chọn TÀI LIỆU THAM KHẢO [1] Javahttps://www.tutorialspoint.com/java8/index.htm [2] JUnit4 Getting started: https://github.com/junitteam/junit/wiki/Getting-started[3] FEST Assert 2.x Wiki: projects, record, đưa table xóa, https://github.com/alexruiz/fest-assert-2.x/wiki[4] JaCoCo Introduction: http://eclemma.org/jacoco/trunk/doc/mission.html [5] Hibernate Annotation: http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/ [6] Spring Data References: https://docs.spring.io/spring data/jpa/docs/current/reference/html/#repositories [7] QueryDSL documentation: http://www.querydsl.com/static/querydsl/2.1.0/reference/html/ch02s02.html [8] Transactions, Caching and AOP: understanding proxy usage in Spring : https://spring.io/blog/2012/05/23/transactions-caching-and-aop-understandingproxy-usage-in spring [9] CSS tutorial: http://www.w3schools.com/css/default.asp [10] CSS Selector: http://css.maxdesign.com.au/selectutorial/index.htm [11] Bootstrap Getting started: https://www.w3schools.com/bootstrap4/bootstrap_get_started.asp [12] FlexBox foggy: https://flexboxfroggy.com/ extras/ [13] Typescript in 30 minute: http://tutorialzine.com/2016/07/learn-typescriptin-30-minutes/ [14] All about Javascript: http://javascript.crockford.com/code.html TỔNG KẾT Nhưvậy, emđãthamgiavàhồnthànhđượcmộtdựánđầutiêncủacơng ty trongthờigianthựctập, làdựán PIM Tool Dùđâylàdựánđầutiên, emvẫnrấtcốgắnghồnthiệnđầyđủucầutừcơbảnđếnnângcao, kếtquảđạtđượcđãtốthơnmongđợirấtnhiều Nếusaunàycịncóthờigianđểbảotrìvàpháttriểnthêmchodựán, emsẽcóthểhồnthànhtốthơnnhữngucầunângcaotừphíakháchhàng Chânthànhcảmơnsựgiúpđỡcủacácanhchịtrongphịng ban ELCA Engineering ELCA, đặcbiệtlàanhNguyễnĐăngTuấnđãtheosátvàhướngdẫn, giúpemhoànthànhtốtdựánvàcảđợtthựctậpnàytại ELCA ... lànơibắtđầuthựctập, tìmkiếmthêmnhữngkiếnthứcvàkinhnghiệmthựctếđầuđờichobảnthân LỜI CẢM ƠN TrântrọnggửilờicảmơnđếnCơng ty đãtạođiềukiệnchoemcócơhộiđượcthựctậptạicơng ty ELCA Việt Nam Kỳthựctậptuyngắn,... quyếtđịnhcótiếptụcchothựctậpsinh vàogiaiđoạn training tiếptheo.Nếucả đềuđồng ý, thựctậpsinhsẽđượcsắpxếp vàomột team đểtiếptục training nghiệpvụ − Giaiđoạnthựchiện project cơbản: o Trainer sẽthựchiệnhướngdẫnvềnghiệpvụ... vềnghiệpvụcủahệthốngvàthựchiệnđượctínhnăngđượcđặt o Sau khihồnthành training nghiệpvụ, thựctậpsinhsẽtrởthànhnhânviênchính thứccủacơng ty nếucónguyệnvọng Kếtthúcgiaiđoạn training nghiệpvụcũng làlúckếtthúcthựctậptạicơng