軟件工程方法學(xué)之面向?qū)ο蠓椒▽W(xué)一
2.面向?qū)ο蠓椒▽W(xué)
當(dāng)軟件規(guī)模龐大,或者對軟件的需求是模糊的或會隨時間變化而變化的時候,使用傳統(tǒng)方法學(xué)開發(fā)軟件往往不成功,此外,使用傳統(tǒng)方法學(xué)開發(fā)出的軟件,維護起來仍然很網(wǎng)難。
結(jié)構(gòu)化范型只能獲得有限成功的一個重要原因是,這種技術(shù)要么面向行為(即對數(shù)據(jù)的操作),要么面向數(shù)據(jù),還沒有既面向數(shù)據(jù)又面向行為的結(jié)構(gòu)化技術(shù)。軟件系統(tǒng)本質(zhì)上是信息處理系統(tǒng)。離開了操作便無法更改數(shù)據(jù),而脫離了數(shù)據(jù)的操作是毫無意義的。數(shù)據(jù)和對數(shù)據(jù)的處理原本是密切相關(guān)的,把數(shù)據(jù)和操作人為地分離成兩個獨立的部分,自然會增加軟件開發(fā)與維護的難度。與傳統(tǒng)的方法相反,面向?qū)ο蠓椒ò褦?shù)據(jù)和行為看成是同等重要的,它是一種以數(shù)據(jù)為主線,把數(shù)據(jù)和對數(shù)據(jù)的操作緊密地結(jié)合起來的方法。
面向?qū)ο蠓椒▽W(xué)具有下述4個特點。
1)把對象( ohject)作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一的軟件構(gòu)件。面向?qū)ο蟪绦蚴怯蓪ο蠼M成的,程序中任何元素都是對象,復(fù)雜對象由比較簡單的對象組合而成。 也就是說,用對象分解取代了傳統(tǒng)方法的功能分解。
2)把所有對象都劃分成類(class)。每個類都定義了一組數(shù)據(jù)和一組操作,類是對具有相同數(shù)據(jù)和相同操作的一組相似對象的定義。數(shù)據(jù)用于表示對象的靜態(tài)屬性,是對象的狀態(tài)信息,而施加于數(shù)據(jù)之上的操作用于實現(xiàn)對象的動態(tài)行為。