已經(jīng)在上文介紹的三種軟件開發(fā)方法,Parnas方法,Jackson (JSP/JSD) 方法。下面就介紹軟件開發(fā)方法其它的六種方法,問題分析法(PAM),面向?qū)ο蟮能浖_發(fā)方法(OO),形式化方法,可視化方法,軟件重用方法.
軟件開發(fā)方法有哪些之-問題分析法(PAM)
PAM(Problem Analysis Method)是80年代末由日立公司提出的一種軟件開發(fā)方法。PAM方法希望能兼顧Yourdon方法、Jackson方法和自底向上的軟件開發(fā)方法的優(yōu)點(diǎn),而避免它們的缺陷。它的基本思想是:考慮到輸入、輸出數(shù)據(jù)結(jié)構(gòu),指導(dǎo)系統(tǒng)的分解,在系統(tǒng)分析指導(dǎo)下逐步綜合。這一方法的具體步驟是:從輸入、輸出數(shù)據(jù)結(jié)構(gòu)導(dǎo)出基本處理框;分析這些處理框之間的先后關(guān)系;按先后關(guān)系逐步綜合處理框,直到畫出整個系統(tǒng)的PAD圖。從上述步驟中可以看出,這一方法本質(zhì)上是綜合的自底向上的方法,但在逐步綜合之前已進(jìn)行了有目的的分解,這個目的就是充分考慮系統(tǒng)的輸入、輸出數(shù)據(jù)結(jié)構(gòu)。PAM方法的另一個優(yōu)點(diǎn)是使用PAD圖。這是一種二維樹形結(jié)構(gòu)圖,是到目前為止最好的詳細(xì)設(shè)計(jì)表示方法之一,遠(yuǎn)遠(yuǎn)優(yōu)于NS圖和PDL語言。這一方法在日本較為流行,軟件開發(fā)的成功率也很高。由于在輸入、輸出數(shù)據(jù)結(jié)構(gòu)與整個系統(tǒng)之間同樣存在著鴻溝,這一方法仍只適用于中小型問題。
(PAM (Problem Analysis Method) is put forward by Hitachi in the late 80 s of a software development Method. PAM hope to be able to juggle Yourdon, Jackson method and the advantage of bottom-up software development method, to avoid the defects of them. Its basic idea is: considering the input and output data structures, guidance system decomposition, in the step by step under the guidance of integrated system analysis. Specific steps of this method is: from the input and output data structure basic processing export box; Analysis of the relation of before and after the processing box; According to successively relationship gradually integrated processing box, until the PAD diagram to draw the whole system. Can be seen from the above step, this approach is essentially a comprehensive bottom-up approach, but has been targeted before gradually integrated decomposition, the purpose is to give full consideration to the system input and output data structures. Another advantage of PAM method is to use the PAD diagram. This is a 2 d tree structure, is by far one of the best representation method for the detailed design, figure and the PDL language is much better than the NS. This method is more popular in Japan, the success rate of software development is also high. Due to the input and output data structures and also there is a gap between the whole system, this method still is only applicable to small and medium-sized problems.)
軟件開發(fā)方法有哪些之-面向?qū)ο蟮能浖_發(fā)方法(OO)
面向?qū)ο蠓椒?Object-Oriented Method)是一種把面向?qū)ο蟮乃枷霊?yīng)用于軟件開發(fā)過程中,指導(dǎo)開發(fā)活動的系統(tǒng)方法,簡稱OO(Object-Oriented)方法,是建立在對象”概念基礎(chǔ)上的方法學(xué)。對象是由數(shù)據(jù)和容許的操作組成的封裝體,與客觀實(shí)體有直接對應(yīng)關(guān)系,一個對象類定義了具有相似性質(zhì)的一組對象。而每繼承性是對具有層次關(guān)系的類的屬性和操作進(jìn)行共享的一種方式。所謂面向?qū)ο缶褪腔趯ο蟾拍?,以對象為中心,以類和繼承為構(gòu)造機(jī)制,來認(rèn)識、理解、刻畫客觀世界和設(shè)計(jì)、構(gòu)建相應(yīng)的軟件系統(tǒng)。面向?qū)ο蠓椒ǖ木唧w實(shí)施步驟如下:
1:面向?qū)ο蠓治觯∣OA(Object - Oriented Analysis)):從問題陳述入手,分析和構(gòu)造所關(guān)心的顯示世界問題域的模型,并用相應(yīng)的符號系統(tǒng)表示。模型必須是簡潔、明確地抽象目標(biāo)系統(tǒng)必須做的事,而不是如何做。分析步驟為:1)確定問題域,包括定義論域,選擇論域,根據(jù)需要細(xì)化和增加論域;2)區(qū)分類和對象,包括定義對象,定義類、命名;3)區(qū)分整體對象以及組成部分,確定類的關(guān)系以及結(jié)構(gòu);4)定義屬性,包括確定屬性,安排屬性;5)定義服務(wù),包括確定對象狀態(tài),確定所需服務(wù),確定消息聯(lián)結(jié);6)確定附加的系統(tǒng)約束。
2:面向?qū)ο笤O(shè)計(jì)(OOD(Object - oriented Design)):面向?qū)ο蟮脑O(shè)計(jì)與傳統(tǒng)的以功能分解為主的設(shè)計(jì)有所不同。具體設(shè)計(jì)步驟為:1)應(yīng)用面向?qū)ο蠓治觯瑢τ闷渌椒ǖ玫降南到y(tǒng)分析的結(jié)果進(jìn)行改進(jìn)和完善;2)設(shè)計(jì)交互過程和用戶接口;設(shè)計(jì)任務(wù)管理,根據(jù)前一步驟確定是否需要多重任務(wù),確定并發(fā)性,確定以何種方式驅(qū)動任務(wù),設(shè)計(jì)子系統(tǒng)以及任務(wù)之間的協(xié)調(diào)與通信方式,確定優(yōu)先級;4)設(shè)計(jì)全局資源,確定邊界條件,確定任務(wù)或子系統(tǒng)的軟、硬件分配;5)對象設(shè)計(jì)。
3:面向?qū)ο髮?shí)現(xiàn):使用面向?qū)ο笳Z言實(shí)現(xiàn)面向?qū)ο蟮脑O(shè)計(jì)相對比較容易。如果用非面向?qū)ο笳Z言實(shí)現(xiàn)面向?qū)ο蟮脑O(shè)計(jì)時,特別需要注意和規(guī)定保留程序的面向?qū)ο蠼Y(jié)構(gòu)。傳統(tǒng)的面向功能的方法學(xué)中,強(qiáng)調(diào)的是確定和分解系統(tǒng)功能,這種做法雖然是目標(biāo)的最直接的實(shí)現(xiàn)方式,但是由于功能是軟件系統(tǒng)中最不穩(wěn)定、最容易變化的方面,因而使系統(tǒng)難以維護(hù)和擴(kuò)展。面向?qū)ο笤O(shè)計(jì)首先強(qiáng)調(diào)來自域的對象,然后圍繞對象設(shè)置屬性和操作。用面向?qū)ο笤O(shè)計(jì),其結(jié)構(gòu)源于客觀世界穩(wěn)定的對象結(jié)構(gòu)。因而與傳統(tǒng)軟件設(shè)計(jì)方法相比,明顯提高了軟件的生產(chǎn)率,可靠性,易重用性、易維護(hù)性等方面的效果。
面向?qū)ο蟮能浖_發(fā)方法方法的主要優(yōu)點(diǎn)是,歸納和演繹思想的綜合體現(xiàn);問題空間和解空間的同構(gòu);繼承機(jī)制的引入,很好的支持了重用性;對象機(jī)制有力地支持了信息隱藏的概念;多態(tài)性、持久性和動態(tài)聯(lián)編對程序設(shè)計(jì)起到了很好的作用。
面向?qū)ο蟮能浖_發(fā)方法方法從計(jì)算機(jī)角度看有它巨大的優(yōu)勢,但面向?qū)ο蟮能浖_發(fā)方法方法在建立客觀系統(tǒng)模型方面有不足之處。面向?qū)ο蠓治鲆婚_始就有很多計(jì)算機(jī)方面的術(shù)語和概念不容易被一般用戶或參與應(yīng)用軟件開發(fā)的業(yè)務(wù)人員所了解,即使了解了,也很難正確使用,為真正掌握這些概念需要有一定的計(jì)算機(jī)背景知識,所以面向?qū)ο蠓治鲈趹?yīng)用軟件開發(fā)中,建立客戶系統(tǒng)的描述方面不能被普遍接受和推廣使用。
軟件開發(fā)方法有哪些之-形式化方法
形式化方法(formal methods) 是保證計(jì)算機(jī)系統(tǒng)正確性的一種重要手段。這類方法用抽象的數(shù)學(xué)手段刻畫計(jì)算機(jī)軟硬件的結(jié)構(gòu)及其性質(zhì),并通過形式證明等途徑來提高系統(tǒng)的可靠性。在使用形式化方法時,形式化規(guī)格說明(formal specification) 起著重要的作用。它的基本思想是,對系統(tǒng)建立一個數(shù)學(xué)模型,研究提供一種基于數(shù)學(xué)的形式語義學(xué)的軟件規(guī)格說明語言,用這種語言嚴(yán)格的描述所開發(fā)的軟件功能,并由計(jì)算機(jī)完全機(jī)械地將它轉(zhuǎn)換成可執(zhí)行代碼。其基本步驟:①定義形式化的規(guī)格說明語言;②對形式化的規(guī)格說明語言進(jìn)行實(shí)現(xiàn)轉(zhuǎn)換,即形式化語言可由計(jì)算機(jī)自動處理,可利用相應(yīng)的軟件工具對規(guī)格說明進(jìn)行分析、查錯和驗(yàn)證。形式化方法是以一定的數(shù)學(xué)概念和理論作基礎(chǔ)來指導(dǎo)軟件的開發(fā)的,所以具有嚴(yán)格、規(guī)范的優(yōu)點(diǎn)。同時也因?yàn)橐休^強(qiáng)的數(shù)學(xué)基礎(chǔ),不能被普遍接受,形式化規(guī)格說明的理論和技術(shù)尚處于研究階段,未成熟到工程應(yīng)用的程度,因此該方法不太實(shí)用。
軟件開發(fā)方法有哪些之-可視化方法
可視化開發(fā)90年代軟件界最大的兩個熱點(diǎn)之一。隨著圖形用戶界面的興起,用戶界面在軟件系統(tǒng)中所占的比例也越來越大,有的高達(dá)60~70%。產(chǎn)生這一問題的原因是圖形界面元素的生成很不方便。為此Windows提供了應(yīng)用程序設(shè)計(jì)接口API(Application Programming Interface),它包含了600多個函數(shù),極大地方便了圖形用戶界面的開發(fā)。但是在這批函數(shù)中,大量的函數(shù)參數(shù)和使用數(shù)量更多的有關(guān)常量,使基于Windows API的開發(fā)變得相當(dāng)困難。為此Borland C++推出了Object Windows編程。它將API的各部分用對象類進(jìn)行封裝,提供了大量預(yù)定義的類,并為這些定義了許多成員函數(shù)。利用子類對父類的繼承性,以及實(shí)例對類的函數(shù)的引用,應(yīng)用程序的開發(fā)可以省卻大量類的定義,省卻大量成員函數(shù)的定義或只需作少量修改以定義子類。Object Windows還提供了許多標(biāo)準(zhǔn)的缺省處理,大大減少了應(yīng)用程序開發(fā)的工作量。但要掌握它們,對非專業(yè)人員來說仍是一個沉重的負(fù)擔(dān)。為此人們利用Windows API或Borland C++的Object Windows開發(fā)了一批可視開發(fā)工具??梢暬_發(fā)就是在可視開發(fā)工具提供的圖形用戶界面上,通過操作界面元素,諸如菜單(Menus)、按鈕(buttons)、對話框(dialog boxes)、編輯框(edit box)、單選框(radio buttons)、復(fù)選框(check boxes)、列表框(list boxes)和滾動條(scroll bars)等,由可視開發(fā)工具自動生成應(yīng)用軟件。這類應(yīng)用軟件的工作方式是事件驅(qū)動。對每一事件,由系統(tǒng)產(chǎn)生相應(yīng)的消息,再傳遞給相應(yīng)的消息響應(yīng)函數(shù)。這些消息響應(yīng)函數(shù)是由可視開發(fā)工具在生成軟件時自動裝入的。
軟件開發(fā)方法有哪些之-軟件重用方法
軟件重用(Software Reuse,又稱軟件復(fù)用或軟件再用)的概念對于大家并不陌生。早在1968年的NATO軟件工程會議上就已經(jīng)提出可復(fù)用庫的思想。軟件重用的定義也很多,比較權(quán)威和通用的一種是:軟件重用是利用事先建立好的軟部品創(chuàng)建新軟件系統(tǒng)的過程。這個定義蘊(yùn)含著軟件重用所必須包含的兩個方面:1)系統(tǒng)地開發(fā)可重用的軟部品。這些軟部品可以是代碼,但不應(yīng)該僅僅局限在代碼。我們必須從更廣泛和更高層次來理解,這樣才會帶來更大的重用收益。比如軟部品還可以是:分析,設(shè)計(jì),測試數(shù)據(jù),原型,計(jì)劃,文檔,模板,框架等等。2)系統(tǒng)地使用這些軟部品作為構(gòu)筑模塊,來建立新的系統(tǒng)。
軟件重用的好處 能提高軟件生成率:①縮短開發(fā)周期 。②降低軟件開發(fā)和維護(hù)費(fèi)用。③生產(chǎn)更加標(biāo)準(zhǔn)化的軟件。 ④提高軟件開發(fā)質(zhì)量。 ⑤增強(qiáng)軟件系統(tǒng)的互操作性。⑥減少軟件開發(fā)人員數(shù)量。⑦使開發(fā)人員能比較容易的適應(yīng)不同性質(zhì)的項(xiàng)目開發(fā)。
隨著OO方法理論體系的完善,軟件復(fù)用的研究已經(jīng)逐漸集中到了軟件構(gòu)件技術(shù)上。構(gòu)件技術(shù)是一種更高層次的對象技術(shù),它是獨(dú)立于語言和面向應(yīng)用程序,它只規(guī)定構(gòu)件的外在表現(xiàn)形式,而不關(guān)心其內(nèi)部實(shí)現(xiàn)方法,它即可用OO 編程語言實(shí)現(xiàn),也可用非OO 的過程語言實(shí)現(xiàn)。只要遵循構(gòu)件技術(shù)的規(guī)范,各個軟件開發(fā)商就可以用自己方便的語言去實(shí)現(xiàn)可被重用的構(gòu)件。構(gòu)件技術(shù)改變了軟件生產(chǎn)方式,將軟件生產(chǎn)劃分為構(gòu)件生產(chǎn)和構(gòu)件集成兩個方面。開發(fā)者專心于構(gòu)件的生產(chǎn),集成者充分利用構(gòu)件,專心于應(yīng)用。這樣的生產(chǎn)模式具有如下優(yōu)點(diǎn):
(1) 有利于更合理地組織和使用人力和財(cái)力資源;
(2) 考慮到跨越軟件開發(fā)組織的資源和信息共享;
(3) 提高了軟件復(fù)用程度,從而提高軟件生產(chǎn)率和軟件質(zhì)量。
軟構(gòu)件技術(shù)(Software component technology)給軟件業(yè)帶來很大的影響。系統(tǒng)集成商(System integrators)不再向以前那樣大量的做程序的編碼工作,主要工作將是評估和選定現(xiàn)有的軟構(gòu)件,組裝成所需的系統(tǒng)。在未來新應(yīng)用程序?qū)蓸?gòu)筑模塊構(gòu)成,這些構(gòu)筑模塊(building blocks)(如軟構(gòu)件和應(yīng)用程序框架)加快了產(chǎn)品的開發(fā)速度和企業(yè)的應(yīng)變能力。以設(shè)計(jì)模式,框架(The framework)和商業(yè)構(gòu)件形勢出現(xiàn)的軟部品可以通過重用顯著的提升開發(fā)品質(zhì)和生產(chǎn)力,重用反過來也可以顯著的降低成本和縮短軟件開發(fā)周期。未來應(yīng)用程序(The application)的開發(fā)依存于一個開放的,便利構(gòu)件選擇和裝配的綜合體系結(jié)構(gòu)。信息系統(tǒng)組織必須為基于構(gòu)件開發(fā)制定一項(xiàng)戰(zhàn)略。這樣有助于形成明確分工又全球共享的開放式軟件社會。軟構(gòu)件代表了新一代軟件技術(shù)的發(fā)展方向。以上就是總結(jié)的軟件開發(fā)方法有哪些的八種方法,問題分析法(PAM),面向?qū)ο蟮能浖_發(fā)方法(OO),形式化方法,可視化方法,軟件重用方法.已經(jīng)在上文介紹的三種軟件開發(fā)方法,Parnas方法,Jackson (JSP/JSD) 方法。