Professional Documents
Culture Documents
Ni dung
z z z z z
Gii thiu M hnh trin khai USDP Mt s nguyn tc trong lp trnh Phong cch lp trnh Lp trnh trong Java
Trin khai cc gi Trin khai cc controller Kt ni CSDL Trin khai giao din
Ti liu
z
z z
Pressman, Software Engineering, McGraw Hill (chapter 16) Sommerville, Software Engineering, Addison-Wesley (chapter 19) Gio trnh k ngh phn mm (chng 4) Cc ti liu in t khc
Gii thiu
z
S dng li m ngun/cc thnh phn Lp trnh nu khng hoc kh s dng li Tch hp cc thnh phn
Mc tiu
Sn phm phn mm tt
4
Lp trnh hiu qu
Sn phm phn mm tt phn tch tt thit k tt lp trnh tt kim th cht ch k thut lp trnh tt chuyn nghip (tun theo cc chun) n nh hiu qu
5
D bo tr hn - d hiu, d sa i Cht lng cao hn - s dng cc cu trc an ton hn chng trnh cn d hiu
6
Tc vit m ngun
Tc pht trin cao lm ngn chng trnh ngun - tc khng t l thun vi s dng lnh - cu lnh phc tp lm gim d hiu Ngn ng mc cao (4GL) - nng lc biu din cao - tc pht trin nhanh
Architecture
Detailed design
- pseudocode? - flowcharts?
3. Inspect class
-- see section tbd
M ngun ch c vit t thit k Cho lp trnh Cho ti liu Da vo cc d liu trong qu kh Chia cc thnh phn c kch c khong 100 LOC
9
Hiu cc chun
trace Area
file Area.java
explain
If your code is intended to be used in particular ways only, write it so that the code cannot be used in any other way.
12
ENFORCE INTENTIONS
z
13
ENFORCE INTENTIONS
z
14
cch t tn hm v bin cch xy dng cu lnh, cu trc chng trnh cch vit ch thch
Hng ti phong cch lm cho m ngun d hiu, d sa i an ton (t li) Ngi khc c th hiu c, bo tri c
15
Ti sao cn d hiu
Phn mm lun cn sa i - sa li - nng cp ko di tui th, nng cao hiu qu kinh t Nu khng d hiu - bo tr tn thi gian, chi ph cao - tc gi phi bo tr sut vng i ca phn mm - bn thn tc gi cng khng hiu
16
Ch thch
Mi iu c Ch thch trong chng trnh
Mc ch s dng ca cc bin Chc nng ca khi lnh, cu lnh cc lnh iu khin cc lnh phc tp Ch thch cc m un mc ch, chc nng ca m un tham s, gi tr tr li (giao din) cc m un thuc cp cu trc, thut ton nhim v ca cc bin cc b tc gi, ngi kim tra, thi gian
17
t tn
t tn bin, tn hm c ngha, gi nh S dng cc k hiu, t ting Anh c ngha Lm cho d c
Trnh t tn qu di
Cu lnh
Cc cu lnh phi m t cu trc
tt l, d c, d hiu
Lm n gin cc lnh
mi lnh trn mt dng trin khai cc biu thc phc tp hn ch truyn tham s l kt qu ca hm, biu thc printf("%s", strcpy(des, src));
Hm v bin cc b
Chng trnh cn c chia thnh nhiu m un (hm) Khng vit hm qu di Pre v Post conditions
X l li
C th pht hin li trong khi thc hin
X l li
li chia 0 li input/output,
nht qun trong x l: phn loi li; thng nht nh dng thng bo, phn bit output v thng bo li cc hm th vin nn trnh vic t x l, t a ra thng bo li
21
Output v thng bo li
Output l d liu, cn c dng lm input cho phn mm khc Thng bo (li) l cc thng tin nht thi, trng thi h thng, li v cch khc phc Cn tch output v thng bo li
22
X l li trong cc hm th vin
Ngi vit v ngi s dng th vin l khc nhau Ngi s dng thng mun c cch x l ring Hm th vin tr li trng thi li, khng t x l
tr trng thi bng gi tr tr li tr trng thi bng tham s tr li bng nm ngoi l (trong cc OOL)
int lookup(int a[], int key, int& err_code) { if (not found) err_code = 0; else err_code =1; }
23
Ngoi l
z
L cch thc x l li tin tin trong cc ngn ng hng i tng mun x l nm ra mt ngoi l (i tng
cha thng tin li) mun iu khin bt ngoi l (nu c)
Tch phn x l li khi phn ci t thut ton thng thng, lm cho chng trnh d c hn D dng hn, an ton hn
24
Nm ngoi l
public Object pop() { Object obj; if (size == 0) { throw new EmptyStackException(); } obj = objectAt(size - 1); setObjectAt(size - 1, null); size--; return obj; }
25
Bt ngoi l
try { Object obj = cacheAccess.get("foo"); // ... lots of lines here ...
} catch (CacheException ex) { ex.printStackTrace(); Exception base = ex.getBaseException(); if (base != null) base.printStackTrace(); } catch (Exception ex) { // handle other exceptions }
26
27
Tun theo cc chun thng dng Chun c chp nhn rng ri hn d hiu hn Ch gii y mi khi khng tun theo chun
28
z z
Gi: cung cp c ch cho vic s dng li m ngun Java: cung cp c ch nh ngha cc gi Cc bc nh ngha gi
nh ngha cc lp thuc gi. S dng cu lnh package nh tn gi Dch thnh file .class S dng .class bng cu lnh import
29
Controller: Thc hin cc hnh vi hoc yu cu chc nng ca HT Trin khai controller tng t nh cc ngn ng lp trnh khc Tt nht l s dng cc lp abstract v interface.
30
V d v abstract class
public abstract class LivingThing { public void breath(){ System.out.println("Living Thing breathing..."); } public void eat(){ System.out.println("Living Thing eating..."); } /** * abstract method walk * We want this method to be overridden by subclasses of * LivingThing */ public abstract void walk(); }
31
V d v abstract class
public class Human extends LivingThing { public void walk(){ System.out.println("Human walks..."); } }
32
Interface
//Cach dinh nghia interface public interface [InterfaceName] { //some methods without the body } public interface Relation { public boolean isGreater( Object a, Object b); public boolean isLess( Object a, Object b); public boolean isEqual( Object a, Object b); }
33
Trin khai
/** * This class defines a line segment */ public class Line implements Relation { private double x1; private double x2; private double y1; private double y2; public Line(double x1, double x2, double y1, double y2){ this.x1 = x1; this.x2 = x2; this.y1 = y1; this.y2 = y2; }
34
Trin khai
public double getLength(){ double length = Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)* (y2-y1)); return length; } public boolean isGreater( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen > bLen); } public boolean isLess( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen < bLen); } public boolean isEqual( Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen = ((Line)b).getLength(); return (aLen == bLen); } }
35
Kt ni CSDL
z z
import java.sql.*; public class DBAthlete() { private Connection connection; private PCLAthlete athleteList; ... }
36
Kt ni CSDL
z
//constructor to connect public DBAthlete() { String url = jdbc:odbc:ABLDatabase; String username = scott; String username = tiger; try { Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); connection = DriverManager.getConnection (url, username, password); } catch (ClassNotFoundException) { ... } }
37
Thng bo
z z
Deadline: 5:00PM, ngy 30/10/2009 Chng trnh Ti liu Deadline: 5:00PM, ngy 13/11/2009 Qua email Thy H (hanv@vnu.edu.vn) Kim th (Testing)
39
z z
Cch np