Kỹ nghệ phần mềm
Software Engeneering
NguyÔn V¨n Vþ
Bé m«n C«ng nghÖ phÇn mÒm- Khoa CNTT- §HCN
Email:
[email protected]
Bài 8: Lập trình
NguyễnVănVỵ
Nội dung
Ng«n ng÷ lËp tr×nh
Phong c¸ch lËp tr×nh
LËp tr×nh tr¸nh lçi
LËp tr×nh h−íng hiÖu qu¶
Bộ môn Công nghệ phần mềm – ĐHCN
2
TÀI LiỆU THAM KHẢO
NguyễnVănVỵ
1.
2.
3.
4.
5.
6.
Nguyễn Văn Vỵ, Nguyễn Việt Hà. Giáo trình kỹ nghệ phần
mềm. Nhà xuất bản Đại học Quốc gia Hà nội, 2008
Grady Booch, James Rumbaugh, Ivar Jacobson. The Unified
Modeling language User Guid. Addison-Wesley, 1998.
M. Ould. Managing Software Quality and Business Risk, John
Wiley and Sons, 1999.
Roger S.Pressman, Software Engineering, a Practitioner’s
Approach. Fifth Edition, McGraw Hill, 2001.
Ian Sommerville, Software Engineering. Sixth Edition, AddisonWasley, 2001.
Nguyễn Văn Vỵ. Phân tích thiết kế hệ thống thông tin hiện đại.
Hướng cấu trúc và hướng đối tượng, NXB Thống kê, 2002, Hà
Nội.
Bộ môn Công nghệ phần mềm – ĐHCN
3
Kh¸i niÖm lËp tr×nh hiÖu qu¶
NguyễnVănVỵ
S¶n phÈm phÇn mÒm tèt khi
ph©n tÝch tèt
thiÕt kÕ tèt
lËp tr×nh tèt
kiÓm thö chÆt chÏ
kü thuËt lËp tr×nh tèt
chuyªn nghiÖp (tu©n theo c¸c chuÈn)
æn ®Þnh
hiÖu qu¶
Bộ môn Công nghệ phần mềm – ĐHCN
4
Kh¸i niÖm lËp tr×nh hiÖu qu¶
NguyễnVănVỵ
LËp tr×nh hiÖu qu¶ h¬n, s¶n phÈm rÎ tiÒn h¬n
Tèc ®é ph¸t triÓn cao h¬n
n¨ng lùc biÓu diÔn cao h¬n
kh¶ n¨ng sö dông l¹i cao h¬n
DÔ b¶o tr× h¬n
dÔ hiÓu, dÔ söa ®æi, thÝch nghi
ChÊt l−îng cao h¬n
sö dông c¸c cÊu tróc an toμn h¬n
ch−¬ng tr×nh cÇn dÔ hiÓu
Bộ môn Công nghệ phần mềm – ĐHCN
5
Tèc ®é viÕt m· nguån
NguyễnVănVỵ
Tèc ®é ph¸t triÓn cao ≠ lμm ng¾n ch−¬ng tr×nh nguån
Tèc ®é kh«ng tû lÖ thuËn víi sè dßng lÖnh
C©u lÖnh phøc t¹p lμm gi¶m ®é dÔ hiÓu
Ng«n ng÷ møc cao (4GL)
n¨ng lùc biÓu diÔn cao
tèc ®é ph¸t triÓn nhanh
Bộ môn Công nghệ phần mềm – ĐHCN
6
TiÕn hãa cña kü thuËt lËp tr×nh
NguyễnVănVỵ
LËp tr×nh tuÇn tù (tuyÕn tÝnh)
LËp tr×nh cã cÊu tróc (thñ tôc)
LËp tr×nh h−íng chøc n¨ng
LËp tr×nh h−íng ®èi t−îng
Kü thuËt thÕ hÖ thø 4
Bộ môn Công nghệ phần mềm – ĐHCN
7
LËp tr×nh tuÇn tù
NguyễnVănVỵ
■ kh«ng cã/thiÕu c¸c lÖnh cã cÊu tróc
(for, while, do while)
■ l¹m dông c¸c lÖnh GOTO
■ thiÕu kh¶ n¨ng khai b¸o biÕn côc bé
®é ghÐp nèi cao
ch−¬ng tr×nh khã hiÓu, khã söa, dÔ sinh lçi
Ng«n ng÷ dïng: thÕ hÖ 1, 2: assembly, basic,...
Bộ môn Công nghệ phần mềm – ĐHCN
8
LËp tr×nh cã cÊu tróc
NguyễnVănVỵ
■ sö dông c¸c lÖnh cã cÊu tróc
(for, while, do while)
■ h¹n chÕ/cÊm dïng GOTO
■ sö dông ch−¬ng tr×nh con, biÕn côc bé
dÔ hiÓu h¬n, an toμn h¬n
Ng«n ng÷ dïng: thÕ hÖ 2, 3: Fortran, Pascal, C,
Bộ môn Công nghệ phần mềm – ĐHCN
9
LËp tr×nh h−íng chøc n¨ng
NguyễnVănVỵ
Dùa trªn nguyªn t¾c ghÐp nèi d÷ liÖu
trao ®æi d÷ liÖu b»ng tham sè vμ gi¸ trÞ tr¶ l¹i
lo¹i bá hoμn toμn d÷ liÖu dïng chung
Lo¹i bá c¸c hiÖu øng phô khi söa ®æi c¸c mo®un
ch−¬ng tr×nh; n©ng cao tÝnh t¸i sö dông
VÝ dô: Lisp
Bộ môn Công nghệ phần mềm – ĐHCN
10
LËp tr×nh h−íng ®èi t−îng
NguyễnVănVỵ
■ Bao gãi & che dÊu th«ng tin
■ thao t¸c víi d÷ liÖu qua c¸c giao diÖn x¸c ®Þnh
■ kÕ thõa
côc bé h¬n
dÔ t¸i sö dông h¬n
thuËn tiÖn cho c¸c øng dông lín
Ng«n ng÷ h−íng ®èi t−îng: C++, Java, C#
Bộ môn Công nghệ phần mềm – ĐHCN
11
LËp tr×nh logic
NguyễnVănVỵ
T¸ch tri thøc vÒ bμi to¸n khái kü thuËt lËp tr×nh
M« t¶ tri thøc
c¸c qui t¾c
c¸c sù thùc
môc tiªu
HÖ thèng tù chøng minh
t×m ®−êng ®i ®Õn môc tiªu
VÝ dô:Prolog
Bộ môn Công nghệ phần mềm – ĐHCN
12
VÝ dụ. Prolog: 8 hËu
NguyễnVănVỵ
member(X,[X|L]).
member(X,[Y|L]):-member(X,L).
solution([]).
solution([X/Y|Other]):solution(Other),
member(Y, [1,2,3,4,5,6,7,8]),
noattack(X/Y, Other).
noattack(_,[]).
noattack(X/Y, [X1/Y1 | Other]):Y =\= Y1, Y1-Y =\= X1-X, Y1-Y =\= X-X1,
noattack(X/Y , Other).
Bộ môn Công nghệ phần mềm – ĐHCN
13
Lùa chän ng«n ng÷
NguyễnVănVỵ
■ §Æc tr−ng cña ng«n ng÷
n¨ng lùc (kiÓu biÕn, c¸c cÊu tróc)
tÝnh kh¶ chuyÓn
møc ®é hç trî cña c¸c c«ng cô
■ MiÒn øng dông cña ng«n ng÷
lËp tr×nh hÖ thèng
nghiÖp vô, kinh doanh
khoa häc kü thuËt
trÝ tuÖ nh©n t¹o
■ N¨ng lùc, kinh nghiÖm cña nhãm ph¸t triÓn
■ Yªu cÇu cña kh¸ch hμng
Bộ môn Công nghệ phần mềm – ĐHCN
14
N¨ng lùc cña ng«n ng÷
NguyễnVănVỵ
■ Ng«n ng÷ bËc cao:
cã cÊu tróc, c©u lÖnh phong phó
hç trî nhiÒu kiÓu d÷ liÖu
hç trî con trá, ®Ö qui
hç trî h−íng ®èi t−îng
th− viÖn phong phó
nªn dïng ng«n ng÷ bËc cao (h¬n)
Bộ môn Công nghệ phần mềm – ĐHCN
15
TÝnh kh¶ chuyÓn
NguyễnVănVỵ
■ YÕu tè quan träng cña ng«n ng÷, cÇn khi
thay ®æi phÇn cøng
thay ®æi OS
Java kh¶ chuyÓn
C¸c ng«n ng÷ th«ng dÞch (script) kh¶ chuyÓn
sö dông c¸c tÝnh n¨ng chuÈn cña ng«n ng÷
sö dông script khi cã thÓ
Bộ môn Công nghệ phần mềm – ĐHCN
16
Cã c«ng cô hiÖu qu¶
NguyễnVănVỵ
■ Tr×nh biªn dÞch hiÖu qu¶
biªn dÞch tèc ®é cao
kh¶ n¨ng tèi −u cao
khai th¸c c¸c tËp lÖnh, kiÕn tróc phÇn cøng míi
■ C¸c c«ng cô trî gióp hiÖu qu¶
editor, debugger, linker, make...
IDE (Integrated Develop Environment)
m«i tr−êng Unix th−êng kh«ng dïng IDE
Bộ môn Công nghệ phần mềm – ĐHCN
17
MiÒn øng dông vμ ng«n ng÷
NguyễnVănVỵ
■ PhÇn mÒm hÖ thèng:
hiÖu qu¶, v¹n n¨ng, dÔ më réng
C, C++
■ HÖ thêi gian thùc: C, C++, Ada, Assembly
■ PhÇn mÒm nhóng: C++, Java
■ PhÇn mÒm khoa häc kü thuËt:
tÝnh to¸n chÝnh x¸c, th− viÖn to¸n häc
m¹nh,dÔ dμng song song hãa
Fortran vÉn phæ biÕn
Bộ môn Công nghệ phần mềm – ĐHCN
18
MiÒn øng dông vμ ng«n ng÷ (t)
NguyễnVănVỵ
■ PhÇn mÒm nghiÖp vô:
CSDL: Oracle, DB2, SQL Server, MySQL...
ng«n ng÷: FoxPro, COBOL, VB, VC++
■ TrÝ tuÖ nh©n t¹o:
Lisp, Prolog, OPS5,...
■ LËp tr×nh Web/CGI:
Perl, ASP, PHP, Java, Java script, Python...
Bộ môn Công nghệ phần mềm – ĐHCN
19
Phong c¸ch lËp tr×nh
NguyễnVănVỵ
■ Bao gåm c¸c yÕu tè:
c¸ch ®Æt tªn hμm vμ biÕn
c¸ch x©y dùng c©u lÖnh, cÊu tróc ch−¬ng tr×nh
c¸ch viÕt chó thÝch
H−íng tíi phong c¸ch lμm cho m· nguån
dÔ hiÓu, dÔ söa ®æi
an toμn (Ýt lçi)
Ng−êi kh¸c cã thÓ hiÓu ®−îc, b¶o tr× ®−îc
Bộ môn Công nghệ phần mềm – ĐHCN
20