已經在上(shàng)文(wén)介紹的三種軟件開(kāi)發方法,Parnas方法,Jackson (JSP/JSD) 方法。下(xià)面就介紹軟件開(kāi)發方法其它的六種方法,問題分析法(PAM),面向對(duì)象的軟件開(kāi)發方法(OO),形式化方法,可視(shì)化方法,軟件重用(yòng)方法.
軟件開(kāi)發方法有哪些(xiē)之-問題分析法(PAM)
PAM(Problem Analysis Method)是80年代末由日立公司提出的一種軟件開(kāi)發方法。PAM方法希望能(néng)兼顧Yourdon方法、Jackson方法和(hé)自(zì)底向上(shàng)的軟件開(kāi)發方法的優點,而避免它們的缺陷。它的基本思想是:考慮到(dào)輸入、輸出數據結構,指導系統的分解,在系統分析指導下(xià)逐步綜合。這(zhè)一方法的具體步驟是:從(cóng)輸入、輸出數據結構導出基本處理(lǐ)框;分析這(zhè)些(xiē)處理(lǐ)框之間的先後關系;按先後關系逐步綜合處理(lǐ)框,直到(dào)畫(huà)出整個系統的PAD圖。從(cóng)上(shàng)述步驟中可以看(kàn)出,這(zhè)一方法本質上(shàng)是綜合的自(zì)底向上(shàng)的方法,但(dàn)在逐步綜合之前已進行了(le)有目的的分解,這(zhè)個目的就是充分考慮系統的輸入、輸出數據結構。PAM方法的另一個優點是使用(yòng)PAD圖。這(zhè)是一種二維樹形結構圖,是到(dào)目前爲止最好(hǎo)的詳細設計(jì)表示方法之一,遠遠優于NS圖和(hé)PDL語言。這(zhè)一方法在日本較爲流行,軟件開(kāi)發的成功率也(yě)很(hěn)高(gāo)。由于在輸入、輸出數據結構與整個系統之間同樣存在着鴻溝,這(zhè)一方法仍隻适用(yòng)于中小(xiǎo)型問題。
(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.)
軟件開(kāi)發方法有哪些(xiē)之-面向對(duì)象的軟件開(kāi)發方法(OO)
面向對(duì)象方法(Object-Oriented Method)是一種把面向對(duì)象的思想應用(yòng)于軟件開(kāi)發過程中,指導開(kāi)發活動的系統方法,簡稱OO(Object-Oriented)方法,是建立在對(duì)象”概念基礎上(shàng)的方法學。對(duì)象是由數據和(hé)容許的操作(zuò)組成的封裝體,與客觀實體有直接對(duì)應關系,一個對(duì)象類定義了(le)具有相似性質的一組對(duì)象。而每繼承性是對(duì)具有層次關系的類的屬性和(hé)操作(zuò)進行共享的一種方式。所謂面向對(duì)象就是基于對(duì)象概念,以對(duì)象爲中心,以類和(hé)繼承爲構造機制,來(lái)認識、理(lǐ)解、刻畫(huà)客觀世界和(hé)設計(jì)、構建相應的軟件系統。面向對(duì)象方法的具體實施步驟如下(xià):
1:面向對(duì)象分析(OOA(Object - Oriented Analysis)):從(cóng)問題陳述入手,分析和(hé)構造所關心的顯示世界問題域的模型,并用(yòng)相應的符号系統表示。模型必須是簡潔、明(míng)确地抽象目标系統必須做的事(shì),而不是如何做。分析步驟爲:1)确定問題域,包括定義論域,選擇論域,根據需要細化和(hé)增加論域;2)區(qū)分類和(hé)對(duì)象,包括定義對(duì)象,定義類、命名;3)區(qū)分整體對(duì)象以及組成部分,确定類的關系以及結構;4)定義屬性,包括确定屬性,安排屬性;5)定義服務,包括确定對(duì)象狀态,确定所需服務,确定消息聯結;6)确定附加的系統約束。
2:面向對(duì)象設計(jì)(OOD(Object - oriented Design)):面向對(duì)象的設計(jì)與傳統的以功能(néng)分解爲主的設計(jì)有所不同。具體設計(jì)步驟爲:1)應用(yòng)面向對(duì)象分析,對(duì)用(yòng)其他(tā)方法得到(dào)的系統分析的結果進行改進和(hé)完善;2)設計(jì)交互過程和(hé)用(yòng)戶接口;設計(jì)任務管理(lǐ),根據前一步驟确定是否需要多重任務,确定并發性,确定以何種方式驅動任務,設計(jì)子系統以及任務之間的協調與通信方式,确定優先級;4)設計(jì)全局資源,确定邊界條件,确定任務或子系統的軟、硬件分配;5)對(duì)象設計(jì)。
3:面向對(duì)象實現(xiàn):使用(yòng)面向對(duì)象語言實現(xiàn)面向對(duì)象的設計(jì)相對(duì)比較容易。如果用(yòng)非面向對(duì)象語言實現(xiàn)面向對(duì)象的設計(jì)時(shí),特别需要注意和(hé)規定保留程序的面向對(duì)象結構。傳統的面向功能(néng)的方法學中,強調的是确定和(hé)分解系統功能(néng),這(zhè)種做法雖然是目标的最直接的實現(xiàn)方式,但(dàn)是由于功能(néng)是軟件系統中最不穩定、最容易變化的方面,因而使系統難以維護和(hé)擴展。面向對(duì)象設計(jì)首先強調來(lái)自(zì)域的對(duì)象,然後圍繞對(duì)象設置屬性和(hé)操作(zuò)。用(yòng)面向對(duì)象設計(jì),其結構源于客觀世界穩定的對(duì)象結構。因而與傳統軟件設計(jì)方法相比,明(míng)顯提高(gāo)了(le)軟件的生産率,可靠性,易重用(yòng)性、易維護性等方面的效果。
面向對(duì)象的軟件開(kāi)發方法方法的主要優點是,歸納和(hé)演繹思想的綜合體現(xiàn);問題空(kōng)間和(hé)解空(kōng)間的同構;繼承機制的引入,很(hěn)好(hǎo)的支持了(le)重用(yòng)性;對(duì)象機制有力地支持了(le)信息隐藏的概念;多态性、持久性和(hé)動态聯編對(duì)程序設計(jì)起到(dào)了(le)很(hěn)好(hǎo)的作(zuò)用(yòng)。
面向對(duì)象的軟件開(kāi)發方法方法從(cóng)計(jì)算(suàn)機角度看(kàn)有它巨大(dà)的優勢,但(dàn)面向對(duì)象的軟件開(kāi)發方法方法在建立客觀系統模型方面有不足之處。面向對(duì)象分析一開(kāi)始就有很(hěn)多計(jì)算(suàn)機方面的術語和(hé)概念不容易被一般用(yòng)戶或參與應用(yòng)軟件開(kāi)發的業務人員所了(le)解,即使了(le)解了(le),也(yě)很(hěn)難正确使用(yòng),爲真正掌握這(zhè)些(xiē)概念需要有一定的計(jì)算(suàn)機背景知(zhī)識,所以面向對(duì)象分析在應用(yòng)軟件開(kāi)發中,建立客戶系統的描述方面不能(néng)被普遍接受和(hé)推廣使用(yòng)。
軟件開(kāi)發方法有哪些(xiē)之-形式化方法
形式化方法(formal methods) 是保證計(jì)算(suàn)機系統正确性的一種重要手段。這(zhè)類方法用(yòng)抽象的數學手段刻畫(huà)計(jì)算(suàn)機軟硬件的結構及其性質,并通過形式證明(míng)等途徑來(lái)提高(gāo)系統的可靠性。在使用(yòng)形式化方法時(shí),形式化規格說明(míng)(formal specification) 起着重要的作(zuò)用(yòng)。它的基本思想是,對(duì)系統建立一個數學模型,研究提供一種基于數學的形式語義學的軟件規格說明(míng)語言,用(yòng)這(zhè)種語言嚴格的描述所開(kāi)發的軟件功能(néng),并由計(jì)算(suàn)機完全機械地将它轉換成可執行代碼。其基本步驟:①定義形式化的規格說明(míng)語言;②對(duì)形式化的規格說明(míng)語言進行實現(xiàn)轉換,即形式化語言可由計(jì)算(suàn)機自(zì)動處理(lǐ),可利用(yòng)相應的軟件工(gōng)具對(duì)規格說明(míng)進行分析、查錯和(hé)驗證。形式化方法是以一定的數學概念和(hé)理(lǐ)論作(zuò)基礎來(lái)指導軟件的開(kāi)發的,所以具有嚴格、規範的優點。同時(shí)也(yě)因爲要有較強的數學基礎,不能(néng)被普遍接受,形式化規格說明(míng)的理(lǐ)論和(hé)技術尚處于研究階段,未成熟到(dào)工(gōng)程應用(yòng)的程度,因此該方法不太實用(yòng)。
軟件開(kāi)發方法有哪些(xiē)之-可視(shì)化方法
可視(shì)化開(kāi)發90年代軟件界最大(dà)的兩個熱點之一。随着圖形用(yòng)戶界面的興起,用(yòng)戶界面在軟件系統中所占的比例也(yě)越來(lái)越大(dà),有的高(gāo)達60~70%。産生這(zhè)一問題的原因是圖形界面元素的生成很(hěn)不方便。爲此Windows提供了(le)應用(yòng)程序設計(jì)接口API(Application Programming Interface),它包含了(le)600多個函數,極大(dà)地方便了(le)圖形用(yòng)戶界面的開(kāi)發。但(dàn)是在這(zhè)批函數中,大(dà)量的函數參數和(hé)使用(yòng)數量更多的有關常量,使基于Windows API的開(kāi)發變得相當困難。爲此Borland C++推出了(le)Object Windows編程。它将API的各部分用(yòng)對(duì)象類進行封裝,提供了(le)大(dà)量預定義的類,并爲這(zhè)些(xiē)定義了(le)許多成員函數。利用(yòng)子類對(duì)父類的繼承性,以及實例對(duì)類的函數的引用(yòng),應用(yòng)程序的開(kāi)發可以省卻大(dà)量類的定義,省卻大(dà)量成員函數的定義或隻需作(zuò)少量修改以定義子類。Object Windows還提供了(le)許多标準的缺省處理(lǐ),大(dà)大(dà)減少了(le)應用(yòng)程序開(kāi)發的工(gōng)作(zuò)量。但(dàn)要掌握它們,對(duì)非專業人員來(lái)說仍是一個沉重的負擔。爲此人們利用(yòng)Windows API或Borland C++的Object Windows開(kāi)發了(le)一批可視(shì)開(kāi)發工(gōng)具。可視(shì)化開(kāi)發就是在可視(shì)開(kāi)發工(gōng)具提供的圖形用(yòng)戶界面上(shàng),通過操作(zuò)界面元素,諸如菜單(Menus)、按鈕(buttons)、對(duì)話(huà)框(dialog boxes)、編輯框(edit box)、單選框(radio buttons)、複選框(check boxes)、列表框(list boxes)和(hé)滾動條(scroll bars)等,由可視(shì)開(kāi)發工(gōng)具自(zì)動生成應用(yòng)軟件。這(zhè)類應用(yòng)軟件的工(gōng)作(zuò)方式是事(shì)件驅動。對(duì)每一事(shì)件,由系統産生相應的消息,再傳遞給相應的消息響應函數。這(zhè)些(xiē)消息響應函數是由可視(shì)開(kāi)發工(gōng)具在生成軟件時(shí)自(zì)動裝入的。
軟件開(kāi)發方法有哪些(xiē)之-軟件重用(yòng)方法
軟件重用(yòng)(Software Reuse,又稱軟件複用(yòng)或軟件再用(yòng))的概念對(duì)于大(dà)家并不陌生。早在1968年的NATO軟件工(gōng)程會(huì)議(yì)上(shàng)就已經提出可複用(yòng)庫的思想。軟件重用(yòng)的定義也(yě)很(hěn)多,比較權威和(hé)通用(yòng)的一種是:軟件重用(yòng)是利用(yòng)事(shì)先建立好(hǎo)的軟部品創建新軟件系統的過程。這(zhè)個定義蘊含着軟件重用(yòng)所必須包含的兩個方面:1)系統地開(kāi)發可重用(yòng)的軟部品。這(zhè)些(xiē)軟部品可以是代碼,但(dàn)不應該僅僅局限在代碼。我們必須從(cóng)更廣泛和(hé)更高(gāo)層次來(lái)理(lǐ)解,這(zhè)樣才會(huì)帶來(lái)更大(dà)的重用(yòng)收益。比如軟部品還可以是:分析,設計(jì),測試數據,原型,計(jì)劃,文(wén)檔,模闆,框架等等。2)系統地使用(yòng)這(zhè)些(xiē)軟部品作(zuò)爲構築模塊,來(lái)建立新的系統。
軟件重用(yòng)的好(hǎo)處 能(néng)提高(gāo)軟件生成率:①縮短開(kāi)發周期 。②降低(dī)軟件開(kāi)發和(hé)維護費用(yòng)。③生産更加标準化的軟件。 ④提高(gāo)軟件開(kāi)發質量。 ⑤增強軟件系統的互操作(zuò)性。⑥減少軟件開(kāi)發人員數量。⑦使開(kāi)發人員能(néng)比較容易的适應不同性質的項目開(kāi)發。
随着OO方法理(lǐ)論體系的完善,軟件複用(yòng)的研究已經逐漸集中到(dào)了(le)軟件構件技術上(shàng)。構件技術是一種更高(gāo)層次的對(duì)象技術,它是獨立于語言和(hé)面向應用(yòng)程序,它隻規定構件的外(wài)在表現(xiàn)形式,而不關心其内部實現(xiàn)方法,它即可用(yòng)OO 編程語言實現(xiàn),也(yě)可用(yòng)非OO 的過程語言實現(xiàn)。隻要遵循構件技術的規範,各個軟件開(kāi)發商就可以用(yòng)自(zì)己方便的語言去實現(xiàn)可被重用(yòng)的構件。構件技術改變了(le)軟件生産方式,将軟件生産劃分爲構件生産和(hé)構件集成兩個方面。開(kāi)發者專心于構件的生産,集成者充分利用(yòng)構件,專心于應用(yòng)。這(zhè)樣的生産模式具有如下(xià)優點:
(1) 有利于更合理(lǐ)地組織和(hé)使用(yòng)人力和(hé)财力資源;
(2) 考慮到(dào)跨越軟件開(kāi)發組織的資源和(hé)信息共享;
(3) 提高(gāo)了(le)軟件複用(yòng)程度,從(cóng)而提高(gāo)軟件生産率和(hé)軟件質量。
軟構件技術(Software component technology)給軟件業帶來(lái)很(hěn)大(dà)的影響。系統集成商(System integrators)不再向以前那樣大(dà)量的做程序的編碼工(gōng)作(zuò),主要工(gōng)作(zuò)将是評估和(hé)選定現(xiàn)有的軟構件,組裝成所需的系統。在未來(lái)新應用(yòng)程序将會(huì)由構築模塊構成,這(zhè)些(xiē)構築模塊(building blocks)(如軟構件和(hé)應用(yòng)程序框架)加快(kuài)了(le)産品的開(kāi)發速度和(hé)企業的應變能(néng)力。以設計(jì)模式,框架(The framework)和(hé)商業構件形勢出現(xiàn)的軟部品可以通過重用(yòng)顯著的提升開(kāi)發品質和(hé)生産力,重用(yòng)反過來(lái)也(yě)可以顯著的降低(dī)成本和(hé)縮短軟件開(kāi)發周期。未來(lái)應用(yòng)程序(The application)的開(kāi)發依存于一個開(kāi)放(fàng)的,便利構件選擇和(hé)裝配的綜合體系結構。信息系統組織必須爲基于構件開(kāi)發制定一項戰略。這(zhè)樣有助于形成明(míng)确分工(gōng)又全球共享的開(kāi)放(fàng)式軟件社會(huì)。軟構件代表了(le)新一代軟件技術的發展方向。以上(shàng)就是總結的軟件開(kāi)發方法有哪些(xiē)的八種方法,問題分析法(PAM),面向對(duì)象的軟件開(kāi)發方法(OO),形式化方法,可視(shì)化方法,軟件重用(yòng)方法.已經在上(shàng)文(wén)介紹的三種軟件開(kāi)發方法,Parnas方法,Jackson (JSP/JSD) 方法。