Một số mô thức lập trình, 9 mô thức lập trình, mô hình lập trình, một số mô hình lập trình, vũ đức vượng, kỹ thuật lập trình Một số mô thức lập trình, 9 mô thức lập trình, mô hình lập trình, một số mô hình lập trình, vũ đức vượng, kỹ thuật lập trình
ĐẠI HỌC BÁCH KHOA HÀ NỘI Bộ môn: Kĩ thuật lập trình TÌM HIỂU VỀ MỘT SỐ MÔ HÌNH LẬP TRÌNH !"#$%&' (%)*+ Lời nói đầu. ,-./!/012% 34567)489:;#4<=(>?@A7BC:>B>(4AD4E> 9FAGAHIJ@4>K'AG;G*789:L9 #I4<?M49FAGAH?L*?NJ4:(4<:O (7PQAR>S*JTPB<BJ:ES*#I4P7E4>US(?V4 P>JWE4S'X?BUYB89:;#4<=*UZL<34@A78 =:;#4<=?<B?[*4<>?L#\JT34L4M5M?T!;#4<= "?V4P>JWE4&><E4EU#<><B77S*:;#4<=4Y4]P#<>EUA<B: #<><B77S(:;#4<=3A4<^PX4<A4A<EU#<><B77S'7)478= :;#4<=:L9?N4<<@X_U]C4<`A4 LB?V"FA4<=a?b' $L75BA4<>8#Z7@7?@a"#I## 5BA*89:;#4<=5BA4:(78=:;#4<=5 BA')4XV89?4T45T?M4<7)478=?N4cPdBB 4<:;#4<="?V44<>5BX5E::4<:;#4<=eS')4 XV895:4<@A78=P0G4>($>77>!X#S' )4XV78=:;#4<=374B>47(f89?LL'$g *:;#4<=3A4<^58>#h#X_U]:>4>'iAB9B78 =:;#4<=(89:;#4<=L4M#4#=7)489L4M 4<@A78=:;#4<='fU]$jj?4T45T?M4<#Z 4_YB:;#4<=4Y4]*:;#4<="?V4(:;#4<=RAJ' NUc;G*9[4T45T(9[:;#4<=XkFAGT4?b:(7 4T(>?MaDGU7)4I4<=Uc#Z4_YB78=(>?L' %[4BL4MT47)4I4<=>(4>(4E>5MA:;#4<=4Y4] 4<>$jj*L4MT4I4<=>(4>("?V4*BGT4 I4<=L#Z4_YBB78=' l4[56?ZA*8#Z7@7>(4>(UB4<94B>4:;# 4<=Jm7nb#D>N7n7G*7(?U:(4<b('@A(G 5T>FA4<=4T45T*5M7X>4X>4?)X_B:?V" 7)4U]4<o8c<p<V(58AFA'$^4B>9 #I4:;#4<=o4[?M7(G4A)78=:;#4<=J;43#P:>q& :EE:#<><B77#B<BU7S'@XBA*c"X#44<MYB8* ,-./!/012% 9TYBB?>?ZARUZ?aLBJr"X<B?[YB 89:;#4<=4T4 :($ss!*t><4<B(uv$*?w4[*7)478 =:;#4<=7"aA34(xRT#4]?X_U]AFA(#\ JT>?T(GBG*?L:(78=:;#4<=4Y4]P#<>EUA<B:#B<BU7S' yZUZ*^4B5TX#44<M77k@XV:YB78 =:;#4<=*7(IJL4M5M?T78=XBA !;#4<=3A4<^&4<A4A<EU#<><B77' !;#4<=e&tAR>B:#<><B77' !;#4<=:>&!>B:#B<BU7 !;#4<=4<FAB&XAB:#<><B77' !;#4<=X>X>&0B<B::E:#<><B77' !;#4<=#D4&yX4<JA4EU#<><B77' !;#4<=4I4<B&$>A<<E4#<><B77' !;#4<=?b"?V4&$>7#>E4&><E4EU#<><B77' !;#4<=?)&za4<E7E#<><B77' ,-./!/012% !"#$%!&%"''(& Đặc điểm: • %AG:{({4o>K(:{4AGT4@(7' • $4<b?n?4>:(584MJT?\' • <`A4LB7)4JMA44(7)4(7(:*7)4(7L 4M?C4>7)4JMA4' • (7:(:"#4<b?ZAR' • (7:(94<b>(|*4I4XV*UBX''' • f#"9C4>4E>GAZA' • o<B95e7"' tAR>B:0<><B77:(4M:>:DA?[344<>JB#B<BU7:;#4<= f'%89t0?ZAR:(vt0*?#47(>e7}~~*7)4e74<" 5Lt><4<B'BA?L*!v0<B?[e7}~*7)4e74<"5L$ss!'$ t><4<B($ss!?@A:(9897#E<BREPBG•K:(#<>EUA<B:S' $^?NJ44(85?U](>C4>5>BK(# ]*(4<o4(#B<BU74V4<b4<>XAV4 ?ZAYB5|AG48R'(> 9e7}€*sJWE4&s<E4EU#B<BU7Jp4 ?ZA #44<M'$c"X 4<o 4( YB 8 9 :;# 4<= " ?V 4* ss 4<o 4( #B<BU7?X_U]#\JT34>?T(G87BG' `9e7}~*7NUcx#44<M77k(:4]"?U !*s$B7:*u0!($:EB*4=t0x|?X_U]>7]?fK 4A;4(A:(YGTA'v7#E<BRE?4?4(8J"?ZA[ (>9|4b?I'ss4(8[(>5e78=LBJ( 4>#4#'$•t0L5e=*4XB>Uc<B?[X"7:587B :4(87>?• ‚ ,-./!/012% t0aE7I4<=:(7)44;##(7;(>?VXV(4<@4<b' ,8Vv7#E<BRE*t0584><BA#](X_U]?FA4BG >•:N#'(74<>t0<34V"(7 4<>4>K=L58:(74BG?\4<4YBI4<=' • )4?:5?4<b4=58JB>[4BG?\4<b?L' • (758X_B?\4<bYB?VXV?4<AG@(>*(4<bU>(74< @>(4>(:(7)44<b7"' @7N45O4A;4(?N4JU"*54<b?(>7)4c"4=? ?U3A:(?nX_U](58?ƒ:9B'M4><B5T4FA4<@*(7 XB>h#4<b<w|X_B4<JXB>?L*58:(7o?T 4<bJB?ZA*<w4<@JXB>?n?|X_B'$?:58•? (7(>4B7TA?TXk4?)JbYG?M#LJ)"P?DG:({4o YBJ)4A>7<4<>dBB('%zS' $IXo4>K>t0<344[7*A3###:>(pK> 3?@C4>'AG*U>L58:>44BG?\4<4( AGX_U]?FA5T[4BBA)#B<BU75I?Ma_:{ 4B>4C4>48U]' ) !&("#$"%"*(&' ~ ,-./!/012% <>:;#4<=:>*4BL4MX_U]b4`?M?bOB57YB 434785>BK5' fU]?bOB7)4XVAG4V VAG4V%:(7)4XVAG:"I*|BT4>(fL' Mah4aE7XV%L#:(XVAG4VBG58*[4B4[X_U] U3AA;JT4VAG4V:(7)4XVAGUI*58BT4> 7KXVAG4VrIL(:(XVAG4Vr34' y3AA(GL4M784Jmb4`XBA &:(7)4XVAG4V' &%:(7)4XVAG4VTA%„*:(XVAG4V(>?L*…%(%58 BT4>' ,784J(4>U"U:>b4`*4BL4MGAZA4V†75T7 :[:FAB?T5BJ>?L'(4>Z?aE7:(‡7]RAˆ 7(4V#74<IXo4<4?n?5BJ>' %4T*4>(J)5{AYB89:;#4<=XAG@7)484?N J4 - 04X4`7)4GAZA' - %m777)47]RA'M4<:[>DAr?L4VaE7L :(7)4‡?fˆ(V7‡?fˆ?LJm4>9XAG U‰4<IXo4<4?n5BJ>' )489:>L4M?Uc4<>B?>?N4GAZAYBFAG 4<=aDGU7)4X#H7#Z7@7'I4T9B*:>b4`>#h#JMA U‰ZAT457(?b:{4<>J)785>BK' + (,"#$%!&%"''(& Š ,-./!/012% %^4B?nJT4*7:>7GCPX_U]:>$0.‹$E4<B:0<>EXX .4a?bS|L4MMA(44<RT#?: I4<=4E>7)4:>89U(<?K:(897G' AG*TA4<M5BU]4<>44T7(#T4I4<= 4<RT#Jm897G4=Xk<34#4#*?•r4[B(8X <34:"*@A5584M4?'=;G*[4B†7aDGU 7)489:;#4<=<Z"894*4A;:> 4<M5BU]',4I4<=Jm89(G #FAB7)4J"UbI4<=?LXB897G?MLL4M4 '`4<"?TBGL<34@A89:;#4<=?<B?[(#]] ?p:>4<M5BU]4<7GC' <>B?>?ZA*89:;#4<=4AGU‰X_U]I8 97G<345L":;#4<==B?Y7?MU‰U( 4<M5B4A;44>'$I4<=BLC3A4<^N4k@ 7N4U9:A4\I4<='=;G*4<M5B U]4<>44TJm89:;#4<=(G:(<345L5e' B?>:(4[56YB89:;#4<=L3A4<^'$8 9:;#4<=(GL?N?M7:(LC3A4<^N4k@7N4U9:A( 4\I4<=')4:>489:;#4<=L3A4<^<B?[( UX_U]<)<n0u$u!*$*uv$''' B?> :(4[56YB:;#4<="?V4(#I##:;# 4<=LJ"JT?\7'<>89:;#4<=L3A4<^4= 7)4U]JB>w7B4(#Z<:(U9:A(I4<='AG ^LFABN4k:(B?V4<J4'<>#I ##:;#4<="?V44=77)4?V4:;#4<=XkJB>(7 U9:A(#I4(?)4<U9:A?L'=;G*:;#4<= Xk?I(7BC5T4`BB>*RT457?4[B:;#4<=' AG*"#I##:;#4<=4<?@A?•r:;#4<= #"<34@ADA:"7:L7)4^##(4U]<* 5T4I4<=#4:p#V:?ML7)4I 4<=FAGT44`J(4><J4' <>aA"#44<M77kBGYBRK*XV[X_ U]7GC4e:<34B(7GC?X_U]4<>ZAT4 :OYB?[XV?•r89:;#4<=#?I *U‰X_U](7BC?^B>'$f=;G#I##:;# 4<=4<FAB<B?[' € ,-./!/012% N?M7YB89:;#4<=4<FAB:(U‰X_U]*4<M5B U]7)4BL' Đặc điểm: • $>#h#aDGUI4<=4E>"X5PzE4&y<E 0<><B77*OB:(7)4I4<=U]?T44E> 5MA(G?#UB4E>†AVaG<B:^4I 4<='=AV(GJB>w7[X_U]37)4#f74I *K:B7)4^4:>NK7)4:4`7)4U]5 GX>X>c:^' • %[:;#4<=4<RT#4><B5AB>UP4E<QBES* U]48FAB4B>44<7(=UB(>?V4 P>WJE4S)# ) 4> >N^4?@A5MP>4<>:JAŒ>S* 9?V4(G7B4A)CP#<>#E<REXS<J4 7(AXp*t>49''7(4B|ZK:B4<7)4UBX >X•' • ,Uc89:;#4<=4<FAB4B<34f45#4T4 :*4\I4<='''7)4<p<V7(|Z5BJ> =Z:(757)4†AVaA34' • GCXkUB(>#Z4T45T(5BJ>YB:;#4<=?M4 ?)4>:;#I4<=' ,-./!/012% - "%"##.#$%!&%"''(& f4>X>X>P0B<B::E:$>7#ARS:(B7)48<B4( 8r(>8(G4?w4["BAJo 4VL@AJ)a_:{P7A:R#<>EXX><SBGJ)a_:{?BDP7A:R><ES m774[B48?LaAV':;#4<=?M4<B 8r(Xp#aT#?Ma_:{X>X>4=?K:(:;#4<=X>X>' “Số lượng transistor trong bộ vi xử lý sẽ tăng lên gấp đôi sau mỗi 24 tháng.” Gordon Moore - sáng lập viên của tập đoàn Intel. $c"?b:A;4>><E*7GCBG?n?4<BJbJ)a_:{ ?BD77k' AG*?M4;U]?X7?L?•r:;#4<=#4;U] ?T4D4<>J)a_:{'=;G*4BG=:;#4<=4AZ44<"?DG |X_U]7)4DYBJ)a_:{4=[:;#4<=(GBG#Uc 5Ž4A;4:;#4<=X>X>?M4;U]AXA34YBJ)a_:{?BD' :;#4<=X>X>58#:^(>7B:AXA34B>> I4<='V"8|4Vf4AXA344=Uc:;#4<=X> X>Xk587B:5T4FA7>?U>5>4[B?M5o4>( FA:{RT4<=X>X>DG' <>FA4<=:;#4<=X>X>*:;#4<=5L4<5rRT 4<=cX_U]A7)4U9:A?@A(GXkDG<BaA?)4U9:A>N :(7U9:AJbXB:U>?L:;#4<=Z#^{(#U]5Ž4A;4 :;#4<=?MFAGT43?@(G' )a_:{L@ADXk4e4VI4<=X>X>4AG58L OB:(LXk4e:•4<7)4DP><ES?47(>';7f I4<=X>X>58@4eAXA34:4<>7)4XV4<[#'= ;G:;#4<=#JT4FAGT4?b5(>X_U]:;#4<=X>X>Jm X_U]8]?>:[?Ma?b?4V?)44YBI 4<=' } ,-./!/012% !;#4<=X>X>:(7)48<34#4#X>":;#4<=4AZ448 4[*[#44<M#47)4FA4<=‡X>X>LBˆ*JT?\ I4<=4AZ44(I4<=X>X>L5e4;U]4V ?BX7YB4V' Quá trình song song hóa gồm ba giai đoạn bước chính : • 0DBI4<=4(8>PAJ&4BX5UE>7#>XR>S' • 0DCX#]4A)PyE#EUEEBB:GXS' • b4[8PBX5XEUA:S' %L7)4U‰MA4=:;#4<=X>X>:(:;#4<=?MG??B:Aw "U•$0.?BDBGP><E *><E~*><E€*•S / !%%.0$%!&%"''(& !;#4<=4I4<B:(7)44<>95Ž4A;4FAB4<K(:(7)4 44')47N4*L?E7:5eX_U]AFA>94V X>X>(#D4'N45*9<Y<>4<>4I49BRT 4<=4?w4[L4MDG<B9:#Z7@758U‰U(?M†7 <B' <>:;#4<=4I4<B*7)4XVU•:L4M?4?w4[' U•::(7)4I4<=4AZ4*>4<`7)444T:(U• :L4MB>RT#(DG4<o:xBA'7)4U•::(7)4:Aw P4<EBUS*I4<=4AZ4•K:(I4<=?I:Aw*• I4<=T44E>#I##4I4<B:(I4<=?B:Aw' Đặc điểm: [...]... điều hành và thiết lập mạng máy tính Những yếu tố đó khiến cho việc lập trình các tính toán của máy tính trở nên tương đối phức tạp và khó khăn Lập trình mạng phân tán, thường có 2 khái niệm chính: peer to peer và client server peer to peer là lập trình ngang hàng giữa 2 máy tính còn lập trình client - server là lập trình cho phép n máy client kết nối tới m máy server - đây cũng là mô hình chúng ta... tán là một dạng của lập trình song song (tính toán song song) Lập trình song song tạo ra mối liên hệ giữa máy tính và các đơn vị tính toán, khiến chúng hoạt động đồng thời đối với một vấn đề cụ thể (dự báo thời tiết chẳng hạn) Các đơn vị tính toán có thể đặt rất gần nhau hoặc tách rời nhau Khi các đơn vị tính toán được đặt tách rời, ta gọi đó là lập trình phân tán Với mô hình lập trình này, các đơn... THUẬT LẬP TRÌNH • • • • Người dùng có thể tương tác với các ứng dụng khi tiến trình đang thực thi Những tiến trình chạy thời gian dài làm trì hoãn các tiến trình ngắn Các chương trình phức tạp được thực hiện tốt hơn trên các bộ xử lý đa luồng Những tiến trình đòi hỏi điều kiện tiên quyết có thể tạm dừng và đợi đến khi đáp ứng được để tiếp tục xử lý 6 Distributed programming Lập trình phân tán là một. .. … Có thể chia lập trình mạng thành 3 cấp độ, căn cứ theo mức độ thân thiện với developer và khả năng triển khai: Mức thấp nhất là lập trình sử dụng socket - có thể truyền từng byte, từng stream lên trên mạng, ứng dụng này thường gặp trong các ứng dụng mạng cỡ nhỏ (vd: trong 2 máy tính, trong 1 mạng LAN ) 11 KĨ THUẬT LẬP TRÌNH Mức cao hơn là lập trình sử dụng, triển khai ứng dụng theo mô hình dịch vụ... vậy mỗi khi một yêu cầu được gọi là cài đặt xong thì nó sẽ không bao giờ bị vỡ Hệ thống chuyển từ trạng thái cũ sang trạng thái mới 15 KĨ THUẬT LẬP TRÌNH mà không bao giờ được phép không làm việc (nghĩa là phải thỏa mãn các yêu cầu cũ lẫn mới) lâu hơn vài giờ Lập trình theo cặp (Pair Programming) Mã nguồn sản phẩm được viết bởi các cặp lập trình viên làm việc với nhau trên cùng một máy tính Một thành... THUẬT LẬP TRÌNH Thời gian lặp lại giữa viết test rồi viết code xảy ra rất nhanh, trong khoảng một vài phút Các bộ test và mã cùng tăng trưởng, trong đó bộ test luôn dẫn trước mã một khoảng cách rất ngắn Kết quả là các bộ test phát triển cùng lúc với mã sản phẩm Những bộ test này cho phép các lập trình viên kiểm tra chương trình (đang phát triển) có chạy hay không Nếu một cặp nào đó thưc hiện một thay... thể được test một cách độc lập Như vậy, bản thiết kế theo hướng này cho kết quả là mã nguồn ít bị trùng lặp nhất Các nguyên lý thiết kế OO đóng vai trò là công cụ mạnh mẽ giúp bạn tránh được mã trùng lặp Sở hữu tập thể (Collective Ownership) Một cặp có quyền check out và chỉnh sửa, cải tiến một module bất kỳ Không một lập trình viên nào chịu trách nhiệm cá nhân với một module bất kỳ hoặc một kỹ thuật... giữ" trong chuyên môn của mình Tích hợp liên tục (Continous Intergation) Các lập trình viên check in mã và tích hợp nhiều lần trong ngày Qui luật rất đơn giản, người đầu tiên sẽ check in, những người sau thì merge XP sử dụng công cụ quản lý mã (source control) cho phép nhiều người check out môt lúc Điều này có nghĩa là các lập trình viên được phép check out bất kỳ một 17 KĨ THUẬT LẬP TRÌNH module nào... lực hơn người khác về một kỹ thuật hay một module nào đó Điền này không có nghĩa là XP phản đối chuyên viên Nếu bạn có kỹ năng về lập trình GUI, hẳn bạn thích các nhiệm vụ liên quan đến GUI, nhưng bạn sẽ được yêu cầu bắt cặp với các nhiệm vụ ở middle ware và database Nếu bạn quyết định học một chuyên môn thứ hai, bạn có thể đăng ký các nhiệm vụ và làm việc với chuyên gia ở chuyên môn đó Họ sẽ dạy bạn... (flexibility) cao (server và client không cần sử dụng chung một công nghệ) Chúng ta thường thấy những ứng dụng loại này trong các ứng dụng được cung cấp từ một nhà cung cấp nào đó (vd: các số liệu chứng khoán, thời tiết …) 12 KĨ THUẬT LẬP TRÌNH 7 Extreme programming Extreme Programing là nổi tiếng nhất của phương thức Agile (Agile Method) Nó được hình thành bởi một tập các thực nghiệm (practice) đơn giản nhưng . "%"##.#$%!&%"''(& f4>X>X>P0B<B::E:$>7#ARS:(B7)48<B4( 8r(>8(G4?w4["BAJo 4VL@AJ)a_:{P7A:R#<>EXX><SBGJ)a_:{?BDP7A:R><ES m774[B48?LaAV':;#4<=?M4<B 8r(Xp#aT#?Ma_:{X>X>4=?K:(:;#4<=X>X>' “Số lượng transistor trong bộ vi xử lý sẽ tăng lên gấp đôi sau mỗi 24 tháng.” Gordon Moore - sáng lập viên của tập đoàn Intel. $c"?b:A;4>><E*7GCBG?n?4<BJbJ)a_:{ ?BD77k' AG*?M4;U]?X7?L?•r:;#4<=#4;U] ?T4D4<>J)a_:{'=;G*4BG=:;#4<=4AZ44<"?DG |X_U]7)4DYBJ)a_:{4=[:;#4<=(GBG#Uc 5Ž4A;4:;#4<=X>X>?M4;U]AXA34YBJ)a_:{?BD' :;#4<=X>X>58#:^(>7B:AXA34B>> I4<='V"8|4Vf4AXA344=Uc:;#4<=X> X>Xk587B:5T4FA7>?U>5>4[B?M5o4>( FA:{RT4<=X>X>DG' <>FA4<=:;#4<=X>X>*:;#4<=5L4<5rRT 4<=cX_U]A7)4U9:A?@A(GXkDG<BaA?)4U9:A>N :(7U9:AJbXB:U>?L:;#4<=Z#^{(#U]5Ž4A;4 :;#4<=?MFAGT43?@(G' )a_:{L@ADXk4e4VI4<=X>X>4AG58L OB:(LXk4e:•4<7)4DP><ES?47(>';7f I4<=X>X>58@4eAXA34:4<>7)4XV4<[#'= ;G:;#4<=#JT4FAGT4?b5(>X_U]:;#4<=X>X>Jm X_U]8]?>:[?Ma?b?4V?)44YBI 4<=' } ,-./!/012% !;#4<=X>X>:(7)48<34#4#X>":;#4<=4AZ448 4[*[#44<M#47)4FA4<=‡X>X>LBˆ*JT? I4<=4AZ44(I4<=X>X>L5e4;U]4V ?BX7YB4V'