Bàiăgi ngăKỹăthu tăl pătrình Chương 1.1 NHẬP MƠN VỀ MÁY TÍNH VÀ LẬP TRÌNH Phần cứng phần mềm 1.1.1 Phần cứng (hardware) Phần cứng,ăcònăg iălàăcương liệu (hardware),ălàăcácăăthànhăph nă(v tălỦ)ăc ăth ăc aămáyătínhă hayăh ăthốngămáyătínhănh ălàămàn hình, chu t, bàn phím, máy in, máy quét, v ămáyătính, b ă nguồn,ăb ăviăx ălỦăCPU, boăm chăch ,ăcácălo iădâyănối,ăloa, ổăđĩaăm m, ổăđĩaăcứng,ăổăCDROM, ổăDVD, D aătrênăchứcănĕngăvàăcáchăthứcăho tăđ ngăng iătaăcònăphânăbi tăph năcứngăraăthành: - Nh p hay đầu vào (Input):ăCácăb ăph năthuănh păd ăli uăhayăm nhăl nhănh ălàăbànăphím,ă chu t - Xuất hay đầu (Output):ăCácăb ăph nătr ăl i,ăphátătínăhi u,ăhayăth căthiăl nhăraăbênăngồiă nh ălàămànăhình,ămáyăin,ăloa,ă Ngồiăcácăb ăph nănêuătrênăliênăquanăt iăph năcứngăc aămáyătínhăcịnăcóăcácăkháiăni măquană tr ngăsauăđây: - Bus: chuy năd ăli uăgi aăcácăthi tăbịăph năcứng - BIOS (BasicăInputăOutputăSystem):ăcònăg iălàăh ăthốngăxu tănh păcơăb n nhằmăkh iăđ ng,ă ki mătra,ăvàăcàiăđ tăcácăm nhăl nhăcơăb n choăph năcứngăvàăgiaoăquy năđi uăkhi năchoăh ăđi uă hành - CPU: b ăphânăviăx ălỦăđi uăkhi nătồn b ămáyătính - Kho lưu trữ liệu: l uăgi ,ăcungăc p,ăthuănh năd ăli u - Các loại chíp hỗ trợ: nằmăbênătrongăboăm chăch hayă nằmătrongăcácă thi tăbịăngo iăvi c aă máyătínhăcácăconăchipăquanătr ngăs ăgi ăvaiătrịăđi uăkhi năthi tăbịăvàăliênăl căv iăh ăđi uăhành qua b ăđi uăv n hay qua ph năs n - Bộ nhớ: làăthi tăbịăbênătrongăboăm chăch ăgi ănhi măv ătrungăgianăcungăc păcácăm nhăl nh cho CPU vàăcácăd ăli uăt ăcácăb ăph nănh ălàăBIOS,ăph năm m, khoăl uătr , chu t đồngăth iă t iă v ă choă cácă b ă ph nă v aă k ă k tă qu ă cácă tínhă tốn,ă cácă phép tốn hayă cácă d ă li uă đư/đangă đ ợcăx ălỦ Biên soạn: ThS Trần Xuân Thanh – Khoa CNTT – ĐH Thành Đơ Bàiăgi ngăKỹăthu tăl pătrình - Các cổng vào/ra: USB (Universal Serial Bus), Máyăin,ămànăhình,ăchu tăphímă,ăầ 1.1.2 Phần mềm (Sotfware) Phần mềm hayănhuăli uă(software)ălàăm tăt păhợpănh ngăcâuăl nh đ ợcăvi tăbằngăm tăho că nhi uăngơnăng ăl pătrình theoăm tătr tăt ăxácăđịnhănhằmăt ăđ ngăth căhi năm tăsốăchứcănĕngă ho căgi iăquy tăm tăbàiătốnănàoăđó - Đặc điểm Tr căđây,ăđ ăt oăraăch ơngătrìnhămáyătínhăng iătaăph iălàmăvi cătr căti păv iăcácăconăsốă0ă ho că1,ăhayăcịnăg iălàăngơnăng ămáy.ăCơngăvi cănàyăvơăcùngăkhóăkhĕn,ăchi mănhi uăth iăgian,ă cơngăsứcăvàăđ căbi tăd ăgâyăraălỗi.ăĐ ăkhắcăph cănh ợcăđi mănày,ăng iătaăđ ăxu tăraăhợpăng ,ă m tăngôn ng ăchoăphépăthayăth ădưyă0ăho că1ănàyăb iăcácăt ăgợiănh ăti ngăAnh.ăTuyănhiên,ăc iă ti nănàyăv năcònăch aăth tăthíchăhợpăv iăđaăsốăng iădùngămáyătính,ănh ngăng iălnămongă muốnăcácăl nhăchínhălàăỦănghĩaăc aăcácăthaoătácămàănóămơăt ăVìăv y,ăngayăt ănh ngănĕmă1950,ă ng iătaăđưăxâyăd ngănh ngăngơnăng ăl pătrìnhămàăcâuăl nhăc aănóăg năv iăngơnăng ăt ănhiên.ă Cácăngơnăng ănàyăđ ợcăg iălàăngơnăng ăl pătrìnhăb căcao Ch ơngătrìnhămáyătínhăth ngăđ ợcăt oăraăb iăconăng i,ănh ngăng iănàyăđ ợcăg iălàăl pă trình viên,ătuyănhiênăcũngătồnăt iănh ngăch ơngătrìnhăđ ợcăsinhăraăb iăcácăch ơngătrìnhăkhác - Phân loại + Theo phương thức hoạt động Phần mềm hệ thống: dùngăđ ăv năhànhămáyătínhăvàăcácăph năcứngămáyătính,ăvíăd ănh ăcácăh ă uăhành máy tính Windows XP, Linux, Unix,ăcácăth ăvi năđ ngă(cònăg iălàăth ăvi năliênăk tă đ ng:ădynamic linked library - DLL)ăc aăh ăđi uăhành,ăcácătrìnhăđi uăkhi n (driver), ph năs n (firmware) BIOS.ă Đâyă làă cácă lo iă ph nă m mă màă h ă uă hànhă liênă l că v iă chúngă đ ă uă năvàăqu nălỦăcácăthi tăbịăph năcứng Phần mềm ứng dụng: đ ăng iăs ăd ngăcóăth ăhồnăthànhăm tăhayănhi uăcơngăvi cănàoăđó,ăvíă d ă nh ă cácă ph nă m mă vĕnă phòng (Microsoft Office, Lotus 1-2-3, FoxPro,ă ầ), ph nă m mă doanhănghi p, ph năm măqu nălỦănguồnănhânăl căXETA, ph năm măgiáoăd c, cơăs ăd ăli u, ph năm mătrịăchơi, ch ơngătrìnhăti n ích,ăhayăcácălo iăph năm măácătính Các phần mềm dịch mã: baoăgồmătrìnhăbiênădịch trìnhăthơngădịch:ăcácălo iăch ơngătrìnhă nàyăs ăđ căcácăcâuăl nh t ămưănguồn đ ợcăvi tăb iăcácăl pătrìnhăviên theoăm tăngơnăng ăl pă trình dịch nóăsangăd ngăngơnăng ămáy màămáyătínhăcóăth ăhi uăđ c,ăhayădịchănóăsangăm tă d ngăkhácănh ălàăt pătinăđốiăt ợng (object file)ăvàăcácăt pătinăth ăvi n (library file)ămàăcácăph nă m măkhácă(nh ăh ăđi uăhànhăchẳngăh n)ăcóăth ăhi uăđ ăv năhànhămáyătínhăth căthiăcácăl nh Theo khả ứng dụng: Nh ngăph năm măkhơngăph ăthu c,ănóăcóăth ăđ ợcăbánăchoăb tăkỳă kháchăhàngănàoătrênăthịătr ngăt ădo.ăVíăd :ăph năm măv ă cơăs ăd ăli u nh ăOracle,ăđồăh aă Biên soạn: ThS Trần Xuân Thanh – Khoa CNTT – ĐH Thành Đô Bàiăgi ngăKỹăthu tăl pătrình nh ăPhotoshop, Corel Draw,ăso năth oăvàăx ălỦăvĕnăb n,ăb ngătính ă uăđi m:ăThôngăth ngă đâyă làă nh ngă ph nă m mă cóă kh ă nĕngă ứngă d ngă r ngă rưiă choă nhi uă nhómă ng iă s ă d ng.ă Khuy tăđi m:ăThi uătínhăuy năchuy n,ătùyăbi n Nh ngăph nă m măđ ợcăvi tătheoă đơnăđ tăhàngăhayă hợpăđồngăc aă m tăkháchăhàngăc ăth ă nàoăđóă(m tăcơngăty,ăb nhăvi n,ătr ngăh c ).ăVíăd :ăph năm măđi uăkhi n,ăph năm măhỗătrợă bán hàng uăđi m:ăCóătínhăuy năchuy n,ătùyăbi năcaoăđ ăđápăứngăđ ợcănhuăc uăc aăm tănhómăng s ăd ngănàoăđó.ăKhuy tăđi m:ăThơngăth hẹp iă ngăđâyălàănh ngăph năm măứngăd ngăchuyênăngànhă + Các loại khác: Cũngădoăconăng iăvi tănênăđ ăph căv ăm căđíchănàoăđó,ănh ngăVirus (máy tính) làăvirus,ătrojan ăđ ợcăvi tăđ ăch yăv iănh ngăm căđíchăriêngăc aăm tăm tănhómăng iă nhằnăl aă đ o,ă qu ngăcáo,ăĕnăcắp,ă pháăho iăthôngătin,ăpháăho iăph năcứngăho căchỉălàăđ ă trêuă ch căng iădùngăviătính - Q trình tạo phần mềm Về mặt thiết kế Tùyătheoămứcăđ ăphứcăt păc aăph năm mălàmăra,ăng iăthi tăk ăph năm m s ăítănhi uădùngă đ năcácăph ơngăti năđ ăt oăraăm uăthi tăk ătheoăỦămuốnă(chẳngăh nănh ălàăcácăsơăđồăkhối, l uăđồ, thu tătoán mưăgi ),ăsauăđóăm uănàyăđ ợcămưăhốăbằngăcácăngơnăng ăl pătrình vàăđ ợc trìnhă dịch chuy năthànhăcácăkhốiăl nh (module) hay/và t păkh ăthi.ă T păhợp cácăt păkh ăthiăvàăcácăkhốiăl nhăđóălàmăthànhăm tăph năm m.ăTh ngăkhiăm tăph năm măđ ợcă t oăthành,ăđ ăchoăhồnăh oăthìăph năm măđóăph iăđ căđi uăchỉnhăhayăs aăch aăt ăkhâuăthi tă k ăchoăđ năkhâuăt oăthànhăphiênăb n ph năm măm tăsốăl n.ăM tăph năm măthôngăth ngăs ă t ơngăthích v iăm tăhayăvàiăh ăđi uăhành, tùy theoăcáchăthi tăk ,ăcáchăvi tămưănguồn ngơn ng ăl pătrình đ ợc dùng Sản xuất phát triển Vi căphátătri năvàăđ aăraăthịătr ngăc aăm tăph năm mălàăđốiăt ợngănghiênăcứuăc aăb ămônă kỹăngh ăph năm m hayăcịnăg iălàăcơngăngh ăph năm m (software engineering).ăB ămơnănàyă nghiênăcứuăcácăph ơngăphápătổăchức,ăcáchăthứcăs ăd ngănguồnătàiăngun,ăvịngăquyătrìnhăs nă xu t,ăcùngăv iăcácămốiăliênăh ăv iăthịătr ng,ăcũngănh ăliênăh ăgi aăcácăy uătốănàyăv iănhau.ă Tốiă uăhốăquiătrìnhăs năxu tăph năm măcũngălàăđốiăt ợngăđ 1.2 căcứuăxétăc aăb ămôn Các ngôn ngữ l p trình 1.2.1 Khái niệm ngơn ngữ l p trình Biên soạn: ThS Trần Xuân Thanh – Khoa CNTT – ĐH Thành Đơ Bàiăgi ngăKỹăthu tăl pătrình Ngơn ngữ l p trình (programming language)ălàăm tăt păconăc aăngơnăng ămáyătính.ăĐây m tă d ngă ngônă ng đ ợcă chu nă hóa.ă Nóă đ ợcă dùngă đ ă miêuă t ă nh ngă quáă trình,ă nh ngă ng ă c nhăm tăcáchăr tăchiăti t Định nghĩa (theo [Loud 94], T.3): Ngơnăng ăl pătrìnhălàăm tăh ăthốngăđ ợcăkỦăhi uăhóaăđ ămiêuăt ă nh ngătínhătốnă(quaămáyătính)ătrongăm tăd ng màăc ăconăng iăvàămáyăđ uăcóăth ăđ căvàăhi u đ ợc Theoă địnhă nghĩaă ă trênă thìă m tă ngơnă ng ă l pă trìnhă ph iă th aă mưnă đ ợcă haiă uă ki nă cơă b nă là: Nóăph iăd ăhi uăvàăd ăs ăd ngăđốiăv iă ng iăl pătrình, đ ăconăng iăcóăth ădùngănóăgi iăquy tăcácă tốn khác Nóăph iămiêuăt ăm tăcáchăđ yăđ ăvàărõăràngăcácăti nătrìnhă(process),ăđ ăcóăth ăch yăđ ợcă máy tính khác M tăt păhợpăcácăchỉăthịăđ ợcăbi uăthịănh ăngơnăng ăl pătrìnhăđ ăth căhi năcácăthaoătácămáyă tínhănàoăđóăthơngăquaăm tăch ơngătrình.ăCácătênăkhácăc aăkháiăni mănàyăn uăkhơngăbịăl măl nă ch ơngătrìnhămáyătính hay ch ơngătrìnhăđi nătốn Lưu ý: Kháiăni măchương trình (program)ăvi tăchoămáyăviătínhănhằmăgi iăquy tăm tăv năđ ă nàoăđóăth ngăđ ợcăg iălàăphần mềm máy tính.ă(Thíăd ăchương trình MS Word làăm tăcáchăg iă chungă chung,ă chínhă xácă hơnă làă phần mềm MS Word thìă rõă hơnă đóă làă m tă ch ơngă trìnhă ứngă d ng.) Ch ăl p trình dùngăđ ăchỉăthaoătácăc aăconăng iănhằmăki năt oănênăcácăch ơngătrìnhămáyă tínhăthơngăquaăcácăngơnăng ăl pătrình.ăNg iătaăcịnăg iăqătrìnhăl pătrìnhăđóălàăq trình mã hố thơngătinăt ănhiênăthànhăngơnăng ămáy.ăTrongăcácătr cịnăđ ợcăvi tălàă"vi tămư"ă(choăch ơngătrìnhămáyătính) ngăhợpăxácăđịnhăthìăch ăl p trình Nh ăv y,ătheoăđịnhănghĩa,ămỗiăngơnăng ăl pătrìnhăcũngăchínhălàăm tăch ơngătrình,ănh ngă cóăth ăđ ợcădùngăđ ăt oănênăcácăch ơngătrìnhăkhác.ăM tăch ơngătrìnhămáyătínhăđ ợcăvi tăbằngă m tă ngơnă ng l pă trìnhă thìă nh ngă chỉă thịă (c aă riêngă ngơnă ng ă y)ă gópă ph nă t oă nênă ch ơngă trìnhăđ ợcăg iălàămã nguồn c aăch ơngătrìnhă y Thaoătácăchuy năd ngăt ămưănguồnăsangăthànhăchuỗiăcácăchỉăthịămáyătínhăđ ợcăth căhi nă hồnă tồnă t ơngăt ă nh ă làă vi că chuy nă dịchă gi aă cácă ngônă ng t ă nhiênă c aă conă ng i.ă Cácă thaoătácănàyăg iălàăbiên dịch (hayăngắnăg năhơnălàădịch).ăNg iătaăcònăphânăvi căbiênădịchălàmă haiălo iătùyătheoăqătrìnhădịchăx yăraătr căqătrìnhăth căthiăcácătínhătốnăhayănóăx yăraăcùngă lúcăv iăqătrìnhătínhătốn: M tăphần mềm thơng dịch làăm tăph năm m cóăkh ănĕngăđ c,ăchuy nădịchămưănguồnăc aă m tăngơnăng ăvàăraăl nhăchoămáyătínhăti năhànhăcácătínhătốnăd aătheoăcú pháp c aăngơnăng M tăphần mềm biên dịch hayăngắnăg năhơnătrình dịch làăph năm măcóăkh ănĕngăchuy nă dịchămưănguồnăc aăm tăngơnăng ăbanăđ uăsangăd ngămưăm iăthu căv ăngônăng ăc păth păhơn Biên soạn: ThS Trần Xuân Thanh – Khoa CNTT – ĐH Thành Đô Bàiăgi ngăKỹăthu tăl pătrình Ngơnăng ăc păth pănh tălàăm tăchuỗiăcácă chỉăthịămáyă tính màăcóăth ăđ ợcăth căhi nătr că ti păb iăchính máy tính (thơng qua thao tác vùngănh ).ăTr căđây,ăh uăh tăcácătrìnhă dịchăcũăth ngăph iăthơngădịchăt ămưănguồnăsangăb ămưăph ă(cácăt păcóădangă*.obj),ărồiăsauă đó,ăm iăbiênădịchăti păsangăcácăt pătinăthiăhành.ăNgàyănay,ăh uăh tă cácătrìnhădịchăđ uăcóăkh ă nĕngăbiênădịchămưănguồnătr căti păsangăthànhăcácăt pătinăthiăhànhăhayăbiênădịchăsangăcácăd ngă mưăkhácăth păhơnătuỳătheoăyêuăc uăc aăng iăl pătrình Đi măkhácănhauăgi aă thơng dịch biên dịch là: Trìnhăthơngădịch s ădịchăt ngăcâuăl nhăm tă vàăch ơngătrìnhăđíchăs ăkhơngăđ ợcăl uăl i.ăCịnă trìnhăbiênădịch s ădịchătồnăb ăch ơngătrình,ă choăraăch ơngătrìnhăđíchăđ ợcăl uăl iătrongămáyătínhărồiăm iăth căhi năch ơngătrình M tă ch ơngă trìnhă máyă tínhă cóă th ă đ ợcă th că thiă bằngă cáchă tổă hợpă c aă vi că biênă dịchă vàă thơngădịch Vì u c uă địiă h iă đ ă chínhă xácă chiă ti tă caoă nênă vi că vi tă mưă th ngă gâyă khóă khĕnă choă ng iăđ căđ ătheoădõiăvàăđơiăkhiăgâyăkhóăchoăchínhăl pătrìnhăviên đưăt oăraămư nguồnăđó.ăDoăđó,ă m tăl iăkhuyênălàănênădùngăthêmănhi uăchúăgi iătrongălúcăl pătrình.ăCácăchúăgi iănàyăth ngăr tă quanătr ngăchoăng iăkhácăđ căvàăhi uăcácămưănguồn 1.2.2 Phân loại ngơn ngữ l p trình Sauăđâyălàăm tătrongănh ngăcáchăphânălo iăphổăbi n: Logic Programming (L pătrìnhălogic - LTL): M tăph ơngăphápăti păc năvi căbi uădi nătriăthứcă vàăgi iăcácăbàiătốnălơgicăt ăm tăcơăs ătriăthứcăchoătr cătrênămáyătính.ăM tăcơăs ătriăthứcălàă m tăt păcácăs ăki năvàăcácălu tăbi uădi năquanăh ălơgicăgi aăcácăs ăki năđó.ăLTLăxu tăphátăt ă m tăcơăs ătriăthứcăvàăm tăcâuăh i,ăti năhànhăcácăl pălu nălơgicăđ tìmăraăl iăgi iăchoăcâuăh iăđó.ă (VD: prolog,ầ) Functional Programming (l pătrình hàm): s ăd ngăcácăhàmăhi uătheoănghĩaătoánăh călàmăc uă trúcăđi uăkhi năc aăch ơngătrình (VD: Lisp,ầ) Structural Programming (L pătrìnhăcóăc uătrúc):ăKĩăthu tăl pătrìnhăd aătrênăquanăni măphână tíchăm tăchứcănĕngăx ălíăthơngătinăthànhăcácăchứcănĕngănh ăhơn,ălàmămịnăd năqătrìnhănàyăchoă t iăkhiăxâyăd ngăđ ợcăcácăđơnăth ăCh ơngătrìnhăchỉădùngăcácăc uătrúcăđi uăkhi năcơăb n:ătu nă t ,ăr ănhánh,ăl păvàăraăkh iăl p.ăL pătrìnhăcóăc uătrúc s ăd ngăcáchăti păc năt ătrênăxuống,ătứcă làăphânătáchăt ătoànăth ăđ năb ăph n,ărồiăl iăt ăb ăph năđ năb ăph nănh ăhơn.ăCácăđơnăth ătrongă m tăch ơngătrìnhăcóăc uătrúcăcóătínhăđ căl păt ơngăđốiăcao,ăchỉăgiaoăti păv iănhauăthơngăquaă giaoădi năđưăxácăl pătr c,ădoăđóăL pătrìnhăcóăc uătrúc cóăm tăsốă uăđi m:ăd ăphânăcơngănhi uă ng iăcùngăl păm tăch ơngătrình,ăd ăth ăvàăhi uăchỉnhăch ơngătrình.ă(VD:ăC,ăPascal,ầ) Concurrent Programming (L pătrìnhăsongăsong): Chiaăm tăv năđ ălàmă2ăph năvàăgi iăquy tă songăsongăv iănhauă(VD:ăAda,ăErlang,ăJavaă.v.v.) Biên soạn: ThS Trần Xuân Thanh – Khoa CNTT – ĐH Thành Đơ Bàiăgi ngăKỹăthu tăl pătrình Object-Oriented Programming - OOP (L pă trìnhă h ngă đốiă t ợng):ă đ ợcă phátă minhă nĕmă 1965 b iăOle-Johan Dahl Kristen Nygaard trongăngơnăng ăSimula.ăSoăv iăph ơngăphápăl pă trình cổă n,ă thìă tri tă lỦă chínhă bênă trongă lo iă ngônă ng ă lo iă nàyă làă đ ă táiă d ngă cácă khốiă mưă nguồnăvàăcungăứngăchoăcácăkhốiănàyăm tăkh ănĕngăm i:ăchúngăcóăth ăcóăcácăhàmă(g iălàăcácă ph ơngăthức)ăvàăcácăd ăli uă(g iălàăthu cătính)ăn iăt i.ăKhốiămưănh ăv yăđ ợcăg iălàăđốiăt ợng.ă Cácăđốiăt ợngăthìăđ căl păv iămơiătr ngăvàăcóăkh ănĕngătr ăl iăv iăyêuăc uăbênăngoàiătùyătheoă thi tăk ăc aăng iăl pă trình.ăV iăcáchăxâyă d ngănày,ă mỗiăđốiăt ợngăs ăt ơngăđ ơngăv iăm tă ch ơngătrìnhăriêngăcóănhi uăđ cătínhăm iămàăquanătr ng nh tălàătínhăđaăhình,ătínhăđóng,ătínhă tr uăt ợngăvàătínhăth aăk (VD: Java, Ruby, C++ , C#, v.v.) Concurrency oriented programs (L pătrìnhăh ngăthànhăph n):ăụăt ngăxâyăd ngăcácăph nă m mă bằngă cácă k tă hợpă cácă modulă l iă v iă nhau,ă giốngă nh ă m tă nhàă máyă lắpă rápă oto.ă (VD:ă Java, ) Agent oriented programs (L pătrìnhăh t ăch ,ăt ăth căthiătùyăthu căvàoămơiătr ngăAgent):ăMỗiăch ơngătrìnhăkhiăt oăraăcóăkh ănĕngă ngămàănóătồnăt iă(VD:ăJava,ăC#,ầ) M tăngơnăng ăkhơngănh tăthi tălàăchỉăđ ợcăphépăthu că1ătrongăcác lo iătrên,ămàăcóăth ăhỗă trợănhi uăki uăt ăduyăkhácănhau Giải vấn đề phát triển phần mềm 1.3 - Các mơ hình phát triển sản phẩm phần mềm Quáă trìnhă phátă tri nă ph nă m mă làă t pă hợpăcácă thaoă tácă vàă cácă k tă qu ăt ơngăquană đ ă s nă xu tăraăm tăs năph m ph năm m.ăH uăh tăcácăthaoătácănàyăđ ợcăti năhànhăb iăcácăkỹăs ăph nă m m.ăCácăcơngăc ăhỗătrợămáyătínhăv ăkỹăthu tăph năm m cóăth ăđ ợcădùngăđ ăgiúpătrongăm tă sốăthaoătác Cóă4ăthaoătácălàăn năt ngăc aăh uăh tăcácăqătrìnhăph năm mălà: + Đ căt ăph năm m:ăCácăchứcănĕngăc aăph năm măvàăđi uăki năđ ănóăho tăđ ngăph iăđ ợcă địnhănghĩa + S ăphátătri năph năm m:ăĐ ăph nă m măđ tăđ ợcăđ căt ăthìă ph iăcóăqătrìnhăphátătri nă + Đánhăgiáăph năm m:ăPh năm măph iăđ ợcăđánhăgiáăđ ăchắcăchắnărằngănóălàmănh ngăgìă màăkháchăhàngămuốn + S ăti năhóaăc aăph năm m:ăPh năm măph iăti năhóaăđ ăth aămưnăs ăthayăđổiăcácăuăc uă c aăkháchăhàng - Mơ hình thác nước MơăhìnhănàyălàmăchoăỦănghĩaăvi căs năxu tăph năđ ợcăth yărõăhơn.ă Biên soạn: ThS Trần Xuân Thanh – Khoa CNTT – ĐH Thành Đô Bàiăgi ngăKỹăthu tăl pătrình + Phânătíchăcácăuăc uăvàăđịnhănghĩa:ăh ăthốngădịchăv ,ăkhóăkhĕnăvàăm cătiêuăđ ợcăhìnhăthànhăb iă s ătrợăỦăc aăh ăthốngăng iătiêuădùng.ăSauăđóăcácăy uătốănàyăđ ợcăđịnhănghĩaăsaoăchoăcóăth ăhi uăđ ợcă b iăc ăng iăphátătri năvàăng iătiêuădùng + Thi tăk ăph năm măvàăh ăthống:ăThi tăk ăh ăthốngăcácăquáătrình,ăcácăb ăph năvàăcácăyêuăc uăv ă c ăph năm măl năph năcứng.ăHoànăt tăh uănh ăt tăc ăki nătrúcăc aăcácăh ăthốngănày.ăThi tă k ăph nă m măthamăgiaăvàoăvi căbi uăthịăcácăchứcănĕngăh ăthốngăph năm mămàăcóăth ăđ ợcăchuy năd ngăthànhă m tăhayănhi uăch ơngătrìnhăkh ăthi + Th căhi năvàăth ănghi măcácăđơnăvị:ăTrongăgiaiăđo nănày,ăthi tăk ăph năm măph iăđ ợcăchứngă th cănh ălàăm tăt păh pănhi uăch ơngătrìnhăhayănhi uăđơnăvịănh ăTh ănghi măcácăđơnăvịăbaoăgồmăxácă minhărằngămỗiăđơnăvịăth aămưnăđ căt ăc aănó + Tổngăhợpăvàăth ănghi mătồnăb :ăCácăđơnăvịăch ơngătrìnhăriêngăl ăhayăcácăch ơngătrìnhăđ ợcă tíchăhợpăl iăvàăth ănghi mănh ălàăm tăh ăthốngăhoànăt tăvàăchứngăt ăđ ợcăcácăyêuăc uăc aăph năm mă đ ợcăth aămưn.ăSauăkhiăth ănghi măph năm măđ ợcăcungăứngăchoăng iătiêuădùng + S năxu tăvàăb oătrì:ăThơngăth ngă(nh ngăkhơngăbắtăbu c)ăđâyălàăphaălâuănh tăc aăchuăkỳăsốngă (c aăs năph m).ăPh năm măđ ợcăcàiăđ tăvàăđ ợcădùngătrongăth căt ăB oătrìăbaoăgồmăđi uăchỉnhăcácălỗiă màăch aăđ ợcăphátăhi nătrongăcácăgiaiăđ anătr căc aăchuăkìăsống;ănângăc păs ăth căhi năc aăh ăthốngă cácăđơnăvịăvàănângăcaoăh ăthốngădịchăv ăchoălàăcácăphátăhi năvêăyêuăc uăm i Đi măh năch c aămơăhìnhănàyălàănóăkhơngălinhăho t.ăCácăb ăph năc aăđ ăánăchiaăraăthànhănh ngă ph năriêngăc aăcácăgiaiăđo n.ăH ăthốngăphânăphốiăđơiăkhiăkhơngădùngăđ ợcăvìăkhơngăth aămưnăđ ợcă uăc uăc aăkháchăhàng.ăM cădùăv yămơăhìnhănàyăph nă nhăth căt ăcơngăngh ăNh ălàăm tăh ăqu ăđâyă v nălàămơăhìnhăcơăs ăchoăđaăsốăcácăh ăthốngăphátătri năph năm mă- ph năcứng - Mơ hình phát triển tiến hố phần mềm Phân loại phát triển tiến hóa + L pătrìnhăthĕmădị:ăđốiăt ợngăc aăqătrìnhăbằngăcáchălàmăvi căv iăkháchăhàngăđ ăthĕmădịăcácă uăc uăvàăphânăphốiăph năm mădứtădi m.ăS ăphátătri nănênăbắtăđ uăv iănh ngăph nănàoăđưăđ ợcăhi uă Biên soạn: ThS Trần Xuân Thanh – Khoa CNTT – ĐH Thành Đơ Bàiăgi ngăKỹăthu tăl pătrình rõ.ăPh năm măs ăđ ợcăthêmăvàoăcácăchứcănĕngăm iăkhiămàănóăđ ợcăđ ănghịăchoăkháchăhàngă(vàănh nă v ăcácăthơngătin) + M uăthĕmădị:ăđốiăt ợngăc aăphátătri năti năhốănàyălàănhằmăhi uăcácăuăc uăc aăkháchăhàng doăđóăphátătri năcácăđịnhănghĩaăuăc uătốtăhơnăchoăph năm m.ăCácăm uăt pătrungătrênăcácăthíănghi mă v iănh ngăph năđịiăh iănàoăc aăkháchăhàngămàăcóăth ăgâyăs ăkhóăhi uăhayăng ănh n Phátătri năph năm mătheoămơăhìnhăti năhố Phân tích mơ hình: Mơăhìnhăphátătri năti năhóaănàyăhi uăqu ăhơnămơăhìnhăthácăn nóăv năcịnăcácăkhuy tăđi m:ă + Qătrìnhăthìăkhơngănhìnăth yărõăđ ợc:ăCácănhàăqu nălỦăc năphânăphốiăth s ăti năb ăNóăkhơngăkinhăt ătrongăvi călàmăraăcácăhồăsơăchoăph năm m c.ăTuyănhiên,ă ngăxuyênăđ ăđoăl ngă + Ph năm măth ngăd ợcăc uătrúc nghèoănàn:ăS ăthayăđổiăliênăt căd ălàmăđổăvỡăc uătrúcăc aăph nă m m,ăt oăraăs ăkhóăkhĕnăvàătốnăphí + Th ngăđịiăh iănh ngăkỹănĕngăđ căbi t:ăH uăh tăcácăh ăthốngăkh ădĩă theoăcáchănàyăđ ợcăti nă hànhăb iăcácănhómănh ăcóăkỹănĕngăcaoăcũngănh ăcácăcáănhânăph i nĕngăđ ng Mơăhìnhănàyăthíchăhợpăv i:ă + Phátătri năcácălo iăph năm măt ơngăđốiănh + Phátătri năcácălo iăph năm măcóăđ iăsốngăt ơngăđốiăngắn + Ti năhànhătrongăcácăh ăthốngăl năhơnă ănh ngăchỗămàăkhôngăth ăbi uăthịăđ ợcăcácăđ căt ăchiăti tă lúc ti năhành.ăThíăd ăc aătr ngăhợpănàyălàăcácăh ăthốngăthôngăminhănhânăt oă(AI) giao di năchoăng iădùng - Mơ hình xoắn ốc Boehm Biên soạn: ThS Trần Xuân Thanh – Khoa CNTT – ĐH Thành Đô Bàiăgi ngăKỹăthu tăl pătrình Phátătri năph năm mătheoăki uăBoehm Đâyălàămơăhìnhăphátătri n t ămơăhìnhăthácăn căchoăth yămứcăđ ătổngăqtăhơnăc aăcácăphaăs nă xu tăc aăm tăs năph m.ăMơăhìnhăđ ợcăđ ănghịăb iăBoehm vàoănĕmă1988.ăMơăhìnhănàyăcóăth ăchỉăraă cácăr iăroăcóăth ăhìnhăthànhătrênăcĕnăb năc aămơăhìnhăqătrìnhă(s năxu t)ătổngăqt MơăhìnhăBoehmăcóăd ngăxoắnăốc.ăMỗiăvịngăl păđ iădi năchoăm tăphaăc aăqătrìnhăph năm m.ăVịngă trongăcùngăt pătrungăv ătínhăkh ăthi,ăvịngăk ăloăv ăđịnhănghĩaăcácăuăc u,ăk ăđ nălàăthi tăk ,ă Khơngăcóăm tăphaănàoăđ ợcăxemălàăcốăđịnhătrongăvịngăxoắn.ăMỗiăvịngăcóă4ăph năt ơngăứngăv iăm tă pha + Càiăđ tăđốiăt ợng:ăChỉăraăcácăđốiăt ợngăc a phaătrongăđ ăán.ăNh ngăkhóăkhĕnăhayăc ỡngăbứcăc aă qătrìnhăvàăc aăs năph măđ ợcăxácăđịnhăvàăđ ợcălênăk ăho chăchiăti t.ăXácăđịnhăcácăy uătốăr iăroăc aă đ ăán.ăCácăph ơngăánăthayăth ătùyătheoăcácăr iăroănàyăcóăth ăđ ợcăd ătrù + L ợngăđịnhăvàăgi măthi uăr iăro.ăTi năhànhăphânătíchămỗiăy uătốăr iăroăđưăxácăđịnh.ăCácăb căđ tă raăđ ăgi măthi uăr iăro + Phátătri năvàăđánhăgiá:ăSauăkhiăđánhăgiáăcácăy uătốăr iăro,ăm tămơăhìnhăphátătri năchoăh ăthốngă đ ợcăch n + Lênăk ăho ch:ăĐ ăánăđ ợcăxemăxétăvàăquy tăđịnhăcóănênăhayăkhơngăti păt căphaăm iătrongăvịngă l p Các q trình linh hoạt Làăqătrìnhămàătrongăđóăc uătrúcăkh iăđ ngăs ănh ănh ngălinhăđ ngăvàăl năd năc aăcácăđ ăánăph nă m mănhằmătìmăraăcácăkhóăkhĕnătr căkhiănóătr ăthànhăv năđ ăcóăth ăd năt iănh ngăh y ho i.ăQuáătrìnhă nàyănh năm nhăs ăg nănhẹăvàăt pătrungăhơnălàăcácăph ơngăphápătruy năthống.ăCácăquáătrìnhălinhăho tă Biên soạn: ThS Trần Xuân Thanh – Khoa CNTT – ĐH Thành Đô Bàiăgi ngăKỹăthu tăl pătrình dùngăcácăthơngătinăph năhồiăthayăvìădùngăcácăk ăho ch,ănh ălàăm tăcơăch ădi uăkhi năchính.ăCácăthơngă tinăph năhồiăcóăđ ợcăt ăcácăth ănghi măvàăcácăphiênăb năphátăhànhăc aăph năm măthamăgia Cácăqătrìnhălinhăho tăth ịngăcóăhi uăqu ăhơnăcácăph ơngăphápăcũ,ănóădùngăítăth iăgianăl pătrìnhă đ ăs năxu tăraănhi uăchứcănĕngăhơn,ăch tăl ợngăcaoăhơn,ănh ngănóăkhơngăcungăc păm tăkh ănĕngăk ă ho chălâuădài M tăcáchăngắnăg năcácăphuơngăphápănàyăcungăứngăhi uăqu ăcaoănh tă choăvốnăđ uăt ,ănh ngăl iă khơngăđịnhărõăhi uăqu ăgì L pătrìnhăc căh n,ăg iătắtălàăXP,ălàălo iăquáătrìnhălinhăho tăđ ợcăbi tăđ nănhi uănh t.ăTrongăXP,ăcácă phaăđ ợcăxúcăti nătrongăcácăb căc cănh ă(hayăliênăt c)ăn uăsoăv iăcácăquáătrìnhăki uăcũ,ăg iălàăcácă "tốn"ăx ălỦ.ăB căđ uătiênă(v iăch ăđịnhălàăkhơngăhồnăt t)ăchoăđ năcácăb căcóăth ăchỉătốnăm tăngàyă hayăm tătu n,ăthayăvìăph iătốnănhi uăthángănh ătrongăph ơngăphápăthácăn c.ăĐ uătiên,ăm tăng iăvi tă cácăth ănghi măt ăđ ngăđ ăcungăc păcácăm cătiêuăc ăth ăchoăs ăphátătri n.ăK ăđ nălàăgiaiăđo năvi tămưă (b iăm tăc păl pătrìnhăviên);ăgiaiăđo nănàyăhồnăt tăkhiămàăcácămưăvi tăquaăđ ợcăt tăc ăcácăth ănghi mă nh ngăng iăl pătrìnhăkhơngătìmăraăthêmăđ ợcăth ănghi măc năthi tănàoăn a.ăThi tăk ăvàăki nătrúcă đ ợcă uă chỉnhă vàă nângă caoă ngayă sauă giaiă đo nă vi tă mưă nàyă b iă ng iă đưă vi tă mưă trongă giaiă đo nă tr c.ăH ăthốngăch aăhoànăt tănh ngăho tăđ ngăđ ợcănàyăđ ợcăkhaiăthácăhayăđ ợcăđemăraăminhăh aă choă(m tăph n)ăng iătiêuădùngămàătrongăsốăđóăcóăng iătrongăđ iăphátătri năph năm m.ăTh iăđi mănàyă nh ngăng iăth cănghi măl iăbắtăđ uăvi tăcácăth ănghi măchoănh ngăph năquanătr ngăk ăti păc aăh ă thống 1.4 Giải thu t Thu t tốn,ăcịnăg iălàăgiải thu t,ălàăm tăt păhợpăh uăh n c aăcácăchỉăthịăhayăph ơngăcáchăđ ợcă địnhănghĩaărõăràngăchoăvi căhoànăt tăm tăsốăs ăvi căt ăm tătr ngătháiăbanăđ uăchoătr c;ăkhiăcácăchỉăthịă nàyăđ ợcăápăd ngătri tăđ ăthìăs ăd năđ năk tăqu ăsauăcùngănh ăđưăd ăđốn Nóiăcáchăkhác,ăthu tătốnălàăm tăb ăcácăquiătắcăhayăquiătrìnhăc ăth ănhằmăgi iăquy tăm tăv năđ ă trongăm tăsốăb căh uăh n,ăho cănhằmăcungăc păm tăk tăqu ăt ăm tăt păhợpăc aăcácăd ăki năđ aăvào Ví dụ: thu tătốnăđ ăgi iăph ơngătrìnhăb cănh tăP(x):ăax + b = c, (a, b, c sốăth c),ătrongăt pă hợpăcácăsốăth căcóăth ălàăm tăb ăcácăb căsauăđây: N uăa = o b = c thìăP(x)ăcóănghi măb tăkì o b ≠ăc P(c)ăvơănghi m N uăa ≠ă0ă o P(x)ăcóăduyănh tăm tănghi măxă=ă(c - b)/a Lưu ý Khiăm tăthu tătốnăđưăhìnhăthànhăthìătaăkhơngăxétăđ năvi căchứngăminhăthu tătốnăđóămàăchỉăchúă tr ngăđ năvi căápăd ngăcácăb cătheoăs ăh ngăd năs ăcóăk tăqu ăđúng.ăVi căchứngăminhătínhăđ yăđ ă Biên soạn: ThS Trần Xuân Thanh – Khoa CNTT – ĐH Thành Đô 10 Bàiăgi ngăKỹăthu tăl pătrình // lỗi dịng việc cài giá trị lên MyNoon } Lưu ý: Vi căkhaiăbáoăm tăki uăd ăli uănóiăchungăhayăm tăthànhăviênăc aăm tăl pănóiăriêngălàăm tăhằngă cóă th ă cóă nhi uă mă phứcă t pă khiă k tă hợpă v iă cácă ki uă thamă chi uă hayă conă tr ă (xemă thêmă Const Correctness in C++, The C++ 'const' Declaration: Why & How en:Const correctness v ă cáchă s ă d ngăt ăkhóaăconst choăcóăhi uăqu ) Hàm ảo (virtual function) Hàmă oăth ngăđ ợcăđịnhănghĩaă ăl păcơăs ăvàăchoăphépăcácăl păd năxu t t ănóăđ ợcăđịnhănghĩaăl iă hàmă oănày.ăGi ăs ăFIGUREălàăl păcơăs ,ăcóăs năph ơngăthứcăDraw().ăL păSQUAREăvàăl păCIRCLEă cùngă đ ợcă d nă xu tă t ă l pă FIGURE.ă T tă nhiênă taă s ă ph iă địnhă nghĩaă l iă haiă ph ơngă thứcă làă SQUARE::Draw()ăvàăCIRCLE::Draw()ăc aăt ngăl păchoăphùăhợp.ăGi ăs ăptrălàăconătr ătr ăđốiăt ợngă thu căl păFIGURE,ăsăvàăcăt ơngăứngălàăhaiăđốiăt ợngăthu căl păSQUAREăvàăCIRCLE.ăTaămuốnărằng,ă khiăchoăptrătr ăt iăsăthìăl iăg iăprt->Draw()ăs ăv ăraăhìnhăvng,ăcịnăkhiăchoăptrătr ăt iăcăthìăl iăg iăprt>Draw()ă s ă v ă raă hìnhă trịn.ă Cáchă gi iă quy tă c aă C++ă làă địnhă nghĩaă FIGURE::Draw()ă làă hàmă o.ă Taă xemăvíăd ăsau: #include #include class FIGURE { int Xc, Yc; public: FIGURE (int x=0, int y=0){Xc=x;Yc=y;} virtual void Draw(){ cout