软件开发与设计
本人經(jīng)常對模塊化編程、面向?qū)ο缶幊?#xff0c;以及他們與軟件設(shè)計的關(guān)系有點模糊,且不清楚他們之間的層次聯(lián)系,今天翻閱了書本資料和百度百科資料進(jìn)行了整理如下:
軟件設(shè)計(或者說怎樣構(gòu)建一個(稍具規(guī)模的)軟件):確定軟件的總體架構(gòu)(架構(gòu)包括了整個關(guān)聯(lián)系統(tǒng),框架指的是單個系統(tǒng)的骨架),把整個軟件系統(tǒng)劃分成大大小小的多個子系統(tǒng),設(shè)計每個子系統(tǒng)的具體結(jié)構(gòu)。
軟件開發(fā)(目前在有兩種主流的開發(fā)方法):結(jié)構(gòu)化開發(fā)和面向?qū)ο箝_發(fā)。
結(jié)構(gòu)化開發(fā)是一種比較傳統(tǒng)的開發(fā)方法,早期的高級編程語言,如Basic、C、Pascal等,都是支持結(jié)構(gòu)化開發(fā)的編程語言。隨著軟件技術(shù)的逐步發(fā)展,為了進(jìn)一步提高軟件的可重用性、可擴(kuò)展性和可維護(hù)性,面向?qū)ο蟮木幊陶Z言及面向?qū)ο蟮脑O(shè)計理論應(yīng)運而生,Java、C#、Smalltalk等都是支持面向?qū)ο箝_發(fā)的語言。另外,C++、ES6是既支持結(jié)構(gòu)化開發(fā),又支持面向?qū)ο箝_發(fā)。其實,面向?qū)ο笫且环N設(shè)計思想,是以對象為核心。比如,面向?qū)ο笳Z言是一類以對象作為基本程序結(jié)構(gòu)單位的程序設(shè)計語言。雖然C語言原本是面向過程的語言,但我們還是可以利用 C 語言本身已有的特性來實現(xiàn)面向?qū)ο蟮囊恍┗咎卣?#xff0c;比如封裝、繼承、多態(tài)。結(jié)構(gòu)化開發(fā)(SASD,1978年提出):也稱面向功能的軟件開發(fā)方法。它首先用結(jié)構(gòu)化分析(Structure Analysis,SA)對軟件需求進(jìn)行分析,然后用結(jié)構(gòu)化設(shè)計(Structure Design,SD)方法進(jìn)行總體設(shè)計,最后進(jìn)行結(jié)構(gòu)化編程(Structure Programming,SP)。
結(jié)構(gòu)化設(shè)計:自頂向下設(shè)計,首先考慮整個軟件系統(tǒng)的功能,然后按照模塊劃分的一些基本原則(如內(nèi)聚性和松耦合)等,對功能進(jìn)行分解,把整個軟件系統(tǒng)劃分為多個模塊,每個模塊實現(xiàn)特定的功能。
結(jié)構(gòu)化編程:程序的主體是方法,方法是最小的功能模塊,每個方法都是具有輸入輸出的子系統(tǒng),方法的輸入數(shù)據(jù)來于方法參數(shù)、全局變量和常量。
面向?qū)ο箝_發(fā): 把軟件系統(tǒng)看成各種對象的集合,對象就是最小的子系統(tǒng),一組相關(guān)的對象能夠組合成更復(fù)雜的子系統(tǒng)。
面向?qū)ο蟮姆治雠c設(shè)計:致力于建立模擬問題領(lǐng)域的對象模型。建立對象模型既包括自底向上的抽象過程,也包括自頂向下的分解過程。
a) 自底向上的抽象:把問題領(lǐng)域的事物抽象具有特定屬性和行為的對象–》抽象出類–》抽象出父類。
b) 自定向下的分解:系統(tǒng)的進(jìn)一步分解因有具體的對象為依據(jù),所以分解過程比較明確,而且也相對容易。
總結(jié)
- 上一篇: win10 计划 定时关机
- 下一篇: 【愚公系列】2022年01月 攻防世界-