軟件工程總體設(shè)計(jì)的原則(軟件系統(tǒng)總體設(shè)計(jì)原則)
今天給各位分享軟件工程總體設(shè)計(jì)的原則的知識(shí),其中也會(huì)對(duì)軟件系統(tǒng)總體設(shè)計(jì)原則進(jìn)行解釋?zhuān)绻芘銮山鉀Q你現(xiàn)在面臨的問(wèn)題,別忘了關(guān)注本站,現(xiàn)在開(kāi)始吧!
本文目錄一覽:
- 1、軟件工程總體設(shè)計(jì)階段的主要目的是什么
- 2、在開(kāi)發(fā)軟件中設(shè)計(jì)階段包括哪些
- 3、軟件工程里面總體設(shè)計(jì)的原則是什么
- 4、問(wèn)些關(guān)于軟件工程的問(wèn)題~~誰(shuí)能幫小弟解釋下
軟件工程總體設(shè)計(jì)階段的主要目的是什么
1、劃分出組成系統(tǒng)的物理元素——程序、文件、數(shù)據(jù)庫(kù)、人工過(guò)程和文檔等。
2、設(shè)計(jì)系統(tǒng)的結(jié)構(gòu),也就是要確定系統(tǒng)中每個(gè)程序是由哪些模塊組成的,以及這些模塊相互間的關(guān)系。
總體設(shè)計(jì)時(shí)必修遵守原理:
1、模塊化:把復(fù)雜的問(wèn)題分解成許多容易解決的小問(wèn)題,原來(lái)的問(wèn)題也就容易解決了。
2、抽象:在實(shí)踐中認(rèn)識(shí)到,在現(xiàn)實(shí)世界中一定事物、狀態(tài)和過(guò)程之間從存在某些相似的方面(共性)。把這些相似的方面集中和概括起來(lái),暫時(shí)忽略它們之間的差異,這就是抽象?;蛘哒f(shuō)抽象就是考慮事物間被關(guān)注的特性而不考慮它們其他的細(xì)節(jié)。
擴(kuò)展資料:
總體設(shè)計(jì)階段的工作步驟:
1、尋找實(shí)現(xiàn)系統(tǒng)的各種不同的解決方案,參照需求分析階段得到的數(shù)據(jù)流程圖來(lái)做。
2、分析員從這些供選擇的方案中選出若干個(gè)合理的方案進(jìn)行分析,為每個(gè)方案都準(zhǔn)備一份系統(tǒng)流程圖,列出組成系統(tǒng)的所有物理元素,進(jìn)行成本\效益分析,并且制定這個(gè)方案的進(jìn)度計(jì)劃。
3、分析員綜合分析比較這些合理的方案,從中選擇一個(gè)最佳方案向用戶和使用部門(mén)負(fù)責(zé)人推薦。
4、對(duì)最終確定的解決方案進(jìn)行優(yōu)化和改進(jìn),從而得到更合理的結(jié)構(gòu),進(jìn)行必要的數(shù)據(jù)庫(kù)設(shè)計(jì),確定測(cè)試要求并且制定測(cè)試計(jì)劃。
在開(kāi)發(fā)軟件中設(shè)計(jì)階段包括哪些
的:
倡導(dǎo)以工程的原理、原則和方法進(jìn)行軟件開(kāi)發(fā),以解決當(dāng)時(shí)出現(xiàn)的軟件危機(jī)。
2. 軟件危機(jī):
在計(jì)算機(jī)軟件開(kāi)發(fā)和維護(hù)過(guò)程中所遇到的一系列問(wèn)題。
3. 軟件及組成:
計(jì)算機(jī)系統(tǒng)中的程序和文檔稱(chēng)為軟件,程序是計(jì)算機(jī)任務(wù)的處理對(duì)象和處理規(guī)則的描述,文檔是為了理解程序所需的闡述性資料。
4. 軟件工程定義:
軟件工程是一類(lèi)求解軟件的工程,它應(yīng)用計(jì)算機(jī)科學(xué)、數(shù)學(xué)及管理科學(xué)等原理,借鑒傳統(tǒng)工程的原則、方法,創(chuàng)建軟件以達(dá)到提高質(zhì)量、降低成本的目的。其中,計(jì)算機(jī)科學(xué)、數(shù)學(xué)用于構(gòu)造模型與算法,工程科學(xué)用于制定規(guī)范、設(shè)計(jì)范型、評(píng)估成本及確定權(quán)衡,管理科學(xué)用于計(jì)劃、資源、質(zhì)量、成本等管理。軟件工程是一門(mén)指導(dǎo)計(jì)算機(jī)軟件開(kāi)發(fā)和維護(hù)的工程學(xué)科。
5. 軟件工程框架及其內(nèi)容:
目標(biāo)、活動(dòng)和原則。軟件工程的目標(biāo)為,生產(chǎn)具有正確性、可用性以及開(kāi)銷(xiāo)合宜的產(chǎn)品。軟件工程活動(dòng)定義為,生產(chǎn)一個(gè)最終滿足需求且達(dá)到工程目標(biāo)的軟件產(chǎn)品所需要的步驟,主要包括需求、設(shè)計(jì)、實(shí)現(xiàn)、確認(rèn)以及支持等活動(dòng)。軟件工程設(shè)計(jì)原則為,選取適宜的開(kāi)發(fā)模型,采用合適的設(shè)計(jì)方法,提供高質(zhì)量的工程支持,重視開(kāi)發(fā)過(guò)程的管理。(參考教材教材第2頁(yè)圖1.1,更有利于記憶)
6. 軟件工程研究的內(nèi)容:
軟件開(kāi)發(fā)模型、軟件開(kāi)發(fā)方法、軟件過(guò)程、軟件工具、軟件開(kāi)發(fā)環(huán)境、計(jì)算機(jī)輔助軟件工程(CASE)、軟件經(jīng)濟(jì)學(xué)等。
7. 軟件開(kāi)發(fā)方法學(xué)定義:
是一種已定義好的技術(shù)集和符號(hào)表示習(xí)慣,來(lái)組織軟件開(kāi)發(fā)的過(guò)程,一般表示為一系列步驟,包括結(jié)構(gòu)化方法、面向?qū)ο蠓椒?、Jackson方法等等。
第二章 軟件開(kāi)發(fā)模型
1. 軟件開(kāi)發(fā)模型定義:
是軟件開(kāi)發(fā)全部過(guò)程、活動(dòng)和任務(wù)的結(jié)構(gòu)框架。
2. 瀑布模型內(nèi)容及特點(diǎn):
瀑布模型將軟件生存周期的各項(xiàng)活動(dòng)規(guī)定為依固定順序連接的軟干階段工作,是一種線性模型。各階段活動(dòng)為,提出系統(tǒng)需求、提出軟件需求、需求分析、設(shè)計(jì)、編碼、測(cè)試和運(yùn)行。每個(gè)開(kāi)發(fā)階段具有以下特征,從上一階段接受本階段工作的對(duì)象作為輸入,對(duì)上述輸入實(shí)施本階段的活動(dòng),給出本階段的工作成果作為輸出傳入下一階段,對(duì)本階段工作進(jìn)行評(píng)審,若本階段工作得到確認(rèn),則繼續(xù)下階段工作,否則返回前一階段甚至更前階段。瀑布模型最為突出的缺點(diǎn)是該模型缺乏靈活性。
3. 演化模型內(nèi)容及特點(diǎn):
演化模型主要針對(duì)事先不能完整定義需求的軟件開(kāi)發(fā),其開(kāi)發(fā)過(guò)程一般是首先開(kāi)發(fā)核心系統(tǒng),當(dāng)核心系統(tǒng)投入運(yùn)行后,軟件開(kāi)發(fā)人員根據(jù)用戶的反饋,實(shí)施開(kāi)發(fā)的迭代過(guò)程,每一迭代過(guò)程均由需求、設(shè)計(jì)、編碼、測(cè)試、集成等階段組成,直到軟件開(kāi)發(fā)結(jié)束。演化模型在一定程度上減少了軟件開(kāi)發(fā)活動(dòng)的盲目性。
4. 螺旋模型內(nèi)容及特點(diǎn):
它是在瀑布模型和演化模型的基礎(chǔ)上,加入兩者所忽略的風(fēng)險(xiǎn)分析所建立的一種軟件開(kāi)發(fā)模型。沿螺旋模型順時(shí)針?lè)较?,依次表達(dá)了四個(gè)方面的活動(dòng),制定計(jì)劃、風(fēng)險(xiǎn)分析、實(shí)施工程、客戶評(píng)估。
5. 噴泉模型內(nèi)容及特點(diǎn):
它體現(xiàn)了軟件創(chuàng)建所固有的迭代和無(wú)間隙特征,噴泉模型主要用于支持面向?qū)ο箝_(kāi)發(fā)過(guò)程。
6. 增量模型內(nèi)容:
在設(shè)計(jì)了軟件系統(tǒng)整體體系結(jié)構(gòu)之后,首先完整的開(kāi)發(fā)系統(tǒng)的一個(gè)初始子集,繼之,根據(jù)這一子集,建造一個(gè)更加精細(xì)的版本,如此不斷的進(jìn)行系統(tǒng)的增量開(kāi)發(fā)。
7. 瀑布模型、演化模型、螺旋模型之間的聯(lián)系:相同點(diǎn)是這三個(gè)模型都分為多個(gè)階段,而瀑布模型一次完成軟件,演化模型分為多次完成,每次迭代完成軟件的一個(gè)部分,螺旋模型也分為多次完成,每次完成軟件的一個(gè)新原型,并考慮風(fēng)險(xiǎn)分析。
8. 演化模型和增量模型之間的區(qū)別
演化模型首先開(kāi)發(fā)核心系統(tǒng),每次迭代為系統(tǒng)增加一個(gè)子集,整個(gè)系統(tǒng)是增量開(kāi)發(fā)和增量提交,增量模型首先完整的開(kāi)發(fā)系統(tǒng)的一個(gè)初始子集,然后不斷的建造更精細(xì)的版本。
軟件工程里面總體設(shè)計(jì)的原則是什么
系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)是要根據(jù)系統(tǒng)分析的要求和組主的實(shí)際情況來(lái)對(duì)新系統(tǒng)的總體結(jié)構(gòu)形式和可利用的阻援進(jìn)行大致的設(shè)計(jì),是宏觀上的規(guī)劃。在總體設(shè)計(jì)階段應(yīng)該將系統(tǒng)的物理元素劃分出來(lái)——程序、文件、數(shù)據(jù)庫(kù)、人工過(guò)程和文檔
問(wèn)些關(guān)于軟件工程的問(wèn)題~~誰(shuí)能幫小弟解釋下
軟件工程(Software Engineering,簡(jiǎn)稱(chēng)為SE)是一門(mén)研究用工程化方法構(gòu)建和維護(hù)有效的、實(shí)用的和高質(zhì)量的軟件的學(xué)科。它涉及到程序設(shè)計(jì)語(yǔ)言,數(shù)據(jù)庫(kù),軟件開(kāi)發(fā)工具,系統(tǒng)平臺(tái),標(biāo)準(zhǔn),設(shè)計(jì)模式等方面。
在現(xiàn)代社會(huì)中,軟件應(yīng)用于多個(gè)方面。典型的軟件比如有電子郵件,嵌入式系統(tǒng),人機(jī)界面,辦公套件,操作系統(tǒng),編譯器,數(shù)據(jù)庫(kù),游戲等。同時(shí),各個(gè)行業(yè)幾乎都有計(jì)算機(jī)軟件的應(yīng)用,比如工業(yè),農(nóng)業(yè),銀行,航空,政府部門(mén)等。這些應(yīng)用促進(jìn)了經(jīng)濟(jì)和社會(huì)的發(fā)展,使得人們的工作更加高效,同時(shí)提高了生活質(zhì)量。
軟件工程師是對(duì)應(yīng)用軟件創(chuàng)造軟件的人們的統(tǒng)稱(chēng),軟件工程師按照所處的領(lǐng)域不同可以分為系統(tǒng)分析員,軟件設(shè)計(jì)師,系統(tǒng)架構(gòu)師,程序員,測(cè)試員等等。人們也常常用程序員來(lái)泛指各種軟件工程師。
軟件工程(SoftWare Engineering)的框架可概括為:目標(biāo)、過(guò)程和原則。
(1)軟件工程目標(biāo):生產(chǎn)具有正確性、可用性以及開(kāi)銷(xiāo)合宜的產(chǎn)品。正確性指軟件產(chǎn)品達(dá)到預(yù)期功能的程度??捎眯灾杠浖窘Y(jié)構(gòu)、實(shí)現(xiàn)及文檔為用戶可用的程度。開(kāi)銷(xiāo)合宜是指軟件開(kāi)發(fā)、運(yùn)行的整個(gè)開(kāi)銷(xiāo)滿足用戶要求的程度。這些目標(biāo)的實(shí)現(xiàn)不論在理論上還是在實(shí)踐中均存在很多待解決的問(wèn)題,它們形成了對(duì)過(guò)程、過(guò)程模型及工程方法選取的約束。
(2)軟件工程過(guò)程:生產(chǎn)一個(gè)最終能滿足需求且達(dá)到工程目標(biāo)的軟件產(chǎn)品所需要的步驟。軟件工程過(guò)程主要包括開(kāi)發(fā)過(guò)程、運(yùn)作過(guò)程、維護(hù)過(guò)程。它們覆蓋了需求、設(shè)計(jì)、實(shí)現(xiàn)、確認(rèn)以及維護(hù)等活動(dòng)。需求活動(dòng)包括問(wèn)題分析和需求分析。問(wèn)題分析獲取需求定義,又稱(chēng)軟件需求規(guī)約。需求分析生成功能規(guī)約。設(shè)計(jì)活動(dòng)一般包括概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。概要設(shè)計(jì)建立整個(gè)軟件系統(tǒng)結(jié)構(gòu),包括子系統(tǒng)、模塊以及相關(guān)層次的說(shuō)明、每一模塊的接口定義。詳細(xì)設(shè)計(jì)產(chǎn)生程序員可用的模塊說(shuō)明,包括每一模塊中數(shù)據(jù)結(jié)構(gòu)說(shuō)明及加工描述。實(shí)現(xiàn)活動(dòng)把設(shè)計(jì)結(jié)果轉(zhuǎn)換為可執(zhí)行的程序代碼。確認(rèn)活動(dòng)貫穿于整個(gè)開(kāi)發(fā)過(guò)程,實(shí)現(xiàn)完成后的確認(rèn),保證最終產(chǎn)品滿足用戶的要求。維護(hù)活動(dòng)包括使用過(guò)程中的擴(kuò)充、修改與完善。伴隨以上過(guò)程,還有管理過(guò)程、支持過(guò)程、培訓(xùn)過(guò)程等。
(3)軟件工程的原則是指圍繞工程設(shè)計(jì)、工程支持以及工程管理在軟件開(kāi)發(fā)過(guò)程中必須遵循的原則。
一、軟件工程概述
概念:應(yīng)需而生
軟件工程是一類(lèi)工程。工程是將理論和知識(shí)應(yīng)用于實(shí)踐的科學(xué)。就軟件工程而言,它借鑒了傳統(tǒng)工程的原則和方法,以求高效地開(kāi)發(fā)高質(zhì)量軟件。其中應(yīng)用了計(jì)算機(jī)科學(xué)、數(shù)學(xué)和管理科學(xué)。計(jì)算機(jī)科學(xué)和數(shù)學(xué)用于構(gòu)造模型與算法,工程科學(xué)用于制定規(guī)范、設(shè)計(jì)范型、評(píng)估成本及確定權(quán)衡,管理科學(xué)用于計(jì)劃、資源、質(zhì)量和成本的管理。
軟件工程這一概念,主要是針對(duì)20世紀(jì)60年代“軟件危機(jī)”而提出的。它首次出現(xiàn)在1968年NATO(北大西洋公約組織)會(huì)議上。自這一概念提出以來(lái),圍繞軟件項(xiàng)目,開(kāi)展了有關(guān)開(kāi)發(fā)模型、方法以及支持工具的研究。其主要成果有:提出了瀑布模型,開(kāi)發(fā)了一些結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言(例如PASCAL語(yǔ)言,Ada語(yǔ)言)、結(jié)構(gòu)化方法等。并且圍繞項(xiàng)目管理提出了費(fèi)用估算、文檔復(fù)審等方法和工具。綜觀60年代末至80年代初,其主要特征是,前期著重研究系統(tǒng)實(shí)現(xiàn)技術(shù),后期開(kāi)始強(qiáng)調(diào)開(kāi)發(fā)管理和軟件質(zhì)量。
70年代初,自“軟件工廠”這一概念提出以來(lái),主要圍繞軟件過(guò)程以及軟件復(fù)用,開(kāi)展了有關(guān)軟件生產(chǎn)技術(shù)和軟件生產(chǎn)管理的研究與實(shí)踐。其主要成果有:提出了應(yīng)用廣泛的面向?qū)ο笳Z(yǔ)言以及相關(guān)的面向?qū)ο蠓椒ǎ罅﹂_(kāi)展了計(jì)算機(jī)輔助軟件工程的研究與實(shí)踐。尤其是近幾年來(lái),針對(duì)軟件復(fù)用及軟件生產(chǎn),軟件構(gòu)件技術(shù)以及軟件質(zhì)量控制技術(shù)、質(zhì)量保證技術(shù)得到了廣泛的應(yīng)用。目前各個(gè)軟件企業(yè)都十分重視資質(zhì)認(rèn)證,并想通過(guò)這些工作進(jìn)行企業(yè)管理和技術(shù)的提升。軟件工程所涉及的要素可概括如下:
根據(jù)這一框架,可以看出:軟件工程涉及了軟件工程的目標(biāo)、軟件工程原則和軟件工程活動(dòng)。
目標(biāo):我的眼里只有“產(chǎn)品”
軟件工程的主要目標(biāo)是:生產(chǎn)具有正確性、可用性以及開(kāi)銷(xiāo)合宜的產(chǎn)品。正確性意指軟件產(chǎn)品達(dá)到預(yù)期功能的程度??捎眯灾杠浖窘Y(jié)構(gòu)、實(shí)現(xiàn)及文檔為用戶可用的程度。開(kāi)銷(xiāo)合宜性是指軟件開(kāi)發(fā)、運(yùn)行的整個(gè)開(kāi)銷(xiāo)滿足用戶要求的程度。這些目標(biāo)的實(shí)現(xiàn)不論在理論上還是在實(shí)踐中均存在很多問(wèn)題有待解決,它們形成了對(duì)過(guò)程、過(guò)程模型及工程方法選取的約束。
軟件工程活動(dòng)是“生產(chǎn)一個(gè)最終滿足需求且達(dá)到工程目標(biāo)的軟件產(chǎn)品所需要的步驟”。主要包括需求、設(shè)計(jì)、實(shí)現(xiàn)、確認(rèn)以及支持等活動(dòng)。需求活動(dòng)包括問(wèn)題分析和需求分析。問(wèn)題分析獲取需求定義,又稱(chēng)軟件需求規(guī)約。需求分析生成功能規(guī)約。設(shè)計(jì)活動(dòng)一般包括概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。概要設(shè)計(jì)建立整個(gè)軟件體系結(jié)構(gòu),包括子系統(tǒng)、模塊以及相關(guān)層次的說(shuō)明、每一模塊接口定義。詳細(xì)設(shè)計(jì)產(chǎn)生程序員可用的模塊說(shuō)明,包括每一模塊中數(shù)據(jù)結(jié)構(gòu)說(shuō)明及加工描述。實(shí)現(xiàn)活動(dòng)把設(shè)計(jì)結(jié)果轉(zhuǎn)換為可執(zhí)行的程序代碼。確認(rèn)活動(dòng)貫穿于整個(gè)開(kāi)發(fā)過(guò)程,實(shí)現(xiàn)完成后的確認(rèn),保證最終產(chǎn)品滿足用戶的要求。支持活動(dòng)包括修改和完善。伴隨以上活動(dòng),還有管理過(guò)程、支持過(guò)程、培訓(xùn)過(guò)程等。
框架:四項(xiàng)基本原則是基石
軟件工程圍繞工程設(shè)計(jì)、工程支持以及工程管理,提出了以下四項(xiàng)基本原則:
第一,選取適宜開(kāi)發(fā)范型。該原則與系統(tǒng)設(shè)計(jì)有關(guān)。在系統(tǒng)設(shè)計(jì)中,軟件需求、硬件需求以及其他因素之間是相互制約、相互影響的,經(jīng)常需要權(quán)衡。因此,必須認(rèn)識(shí)需求定義的易變性,采用適宜的開(kāi)發(fā)范型予以控制,以保證軟件產(chǎn)品滿足用戶的要求。
第二,采用合適的設(shè)計(jì)方法。在軟件設(shè)計(jì)中,通常要考慮軟件的模塊化、抽象與信息隱蔽、局部化、一致性以及適應(yīng)性等特征。合適的設(shè)計(jì)方法有助于這些特征的實(shí)現(xiàn),以達(dá)到軟件工程的目標(biāo)。
第三,提供高質(zhì)量的工程支持?!肮び破涫?,必先利其器”。在軟件工程中,軟件工具與環(huán)境對(duì)軟件過(guò)程的支持頗為重要。軟件工程項(xiàng)目的質(zhì)量與開(kāi)銷(xiāo)直接取決于對(duì)軟件工程所提供的支撐質(zhì)量和效用。
第四,重視開(kāi)發(fā)過(guò)程的管理。軟件工程的管理,直接影響可用資源的有效利用,生產(chǎn)滿足目標(biāo)的軟件產(chǎn)品,提高軟件組織的生產(chǎn)能力等問(wèn)題。因此,僅當(dāng)軟件過(guò)程得以有效管理時(shí),才能實(shí)現(xiàn)有效的軟件工程。
這一軟件工程框架告訴我們,軟件工程的目標(biāo)是可用性、正確性和合算性;實(shí)施一個(gè)軟件工程要選取適宜的開(kāi)發(fā)范型,要采用合適的設(shè)計(jì)方法,要提供高質(zhì)量的工程支撐,要實(shí)行開(kāi)發(fā)過(guò)程的有效管理;軟件工程活動(dòng)主要包括需求、設(shè)計(jì)、實(shí)現(xiàn)、確認(rèn)和支持等活動(dòng),每一活動(dòng)可根據(jù)特定的軟件工程,采用合適的開(kāi)發(fā)范型、設(shè)計(jì)方法、支持過(guò)程以及過(guò)程管理。根據(jù)軟件工程這一框架,軟件工程學(xué)科的研究?jī)?nèi)容主要包括:軟件開(kāi)發(fā)范型、軟件開(kāi)發(fā)方法、軟件過(guò)程、軟件工具、軟件開(kāi)發(fā)環(huán)境、計(jì)算機(jī)輔助軟件工程(CASE) 及軟件經(jīng)濟(jì)學(xué)等。
作用:高效開(kāi)發(fā)高質(zhì)量軟件
自從軟件工程概念提出以來(lái),經(jīng)過(guò)30多年的研究與實(shí)踐,雖然“軟件危機(jī)”沒(méi)得到徹底解決,但在軟件開(kāi)發(fā)方法和技術(shù)方面已經(jīng)有了很大的進(jìn)步。尤其應(yīng)該指出的是,自80年代中期,美國(guó)工業(yè)界和政府部門(mén)開(kāi)始認(rèn)識(shí)到,在軟件開(kāi)發(fā)中,最關(guān)鍵的問(wèn)題是軟件開(kāi)發(fā)組織不能很好地定義和管理其軟件過(guò)程,從而使一些好的開(kāi)發(fā)方法和技術(shù)都起不到所期望的作用。也就是說(shuō),在沒(méi)有很好定義和管理軟件過(guò)程的軟件開(kāi)發(fā)中,開(kāi)發(fā)組織不可能在好的軟件方法和工具中獲益。
根據(jù)調(diào)查,中國(guó)的現(xiàn)狀幾乎和美國(guó)10多年前的情況一樣,軟件開(kāi)發(fā)過(guò)程沒(méi)有明確規(guī)定,文檔不完整,也不規(guī)范,軟件項(xiàng)目的成功往往歸功于軟件開(kāi)發(fā)組的一些杰出個(gè)人或小組的努力。這種依賴(lài)于個(gè)別人員上的成功并不能為全組織的軟件生產(chǎn)率和質(zhì)量的提高奠定有效的基礎(chǔ),只有通過(guò)建立全組織的過(guò)程改善,采用嚴(yán)格的軟件工程方法和管理,并且堅(jiān)持不懈地付諸實(shí)踐,才能取得全組織的軟件過(guò)程能力的不斷提高。
這一事實(shí)告訴我們,只有堅(jiān)持軟件工程的四條基本原則,既重視軟件技術(shù)的應(yīng)用,又重視軟件工程的支持和管理,并在實(shí)踐中貫徹實(shí)施,才能高效地開(kāi)發(fā)出高質(zhì)量的軟件。
二、軟件工程的七條基本原理
自從1968年提出“軟件工程”這一術(shù)語(yǔ)以來(lái),研究軟件工程的專(zhuān)家學(xué)者們陸續(xù) 提出了100多條關(guān)于軟件工程的準(zhǔn)則或信條。 美國(guó)著名的軟件工程專(zhuān)家 Boehm 綜合這些專(zhuān)家的意見(jiàn),并總結(jié)了TRW公司多年的開(kāi)發(fā)軟件的經(jīng)驗(yàn),于1983年提出了軟件工程的七條基本原理。
Boehm 認(rèn)為,著七條原理是確保軟件產(chǎn)品質(zhì)量和開(kāi)發(fā)效率的原理的最小集合。
它們是相互獨(dú)立的,是缺一不可的最小集合;同時(shí),它們又是相當(dāng)完備的。
人們當(dāng)然不能用數(shù)學(xué)方法嚴(yán)格證明它們是一個(gè)完備的集合,但是可以證明,在此之前已經(jīng)提出的100多條軟件工程準(zhǔn)則都可以有這七條原理的任意組合蘊(yùn)含或派生。
下面簡(jiǎn)要介紹軟件工程的七條原理:
1 用分階段的生命周期計(jì)劃嚴(yán)格管理
這一條是吸取前人的教訓(xùn)而提出來(lái)的。統(tǒng)計(jì)表明,50%以上的失敗項(xiàng)目是由于計(jì)劃不周而造成的。在軟件開(kāi)發(fā)與維護(hù)的漫長(zhǎng)生命周期中,需要完成許多性質(zhì)各異的工作。這條原理意味著,應(yīng)該把軟件生命周期分成若干階段,并相應(yīng)制定出切實(shí)可行的計(jì)劃,然后嚴(yán)格按照計(jì)劃對(duì)軟件的開(kāi)發(fā)和維護(hù)進(jìn)行管理。 Boehm 認(rèn)為,在整個(gè)軟件生命周期中應(yīng)指定并嚴(yán)格執(zhí)行6類(lèi)計(jì)劃:項(xiàng)目概要計(jì)劃、里程碑計(jì)劃、項(xiàng)目控制計(jì)劃、產(chǎn)品控制計(jì)劃、驗(yàn)證計(jì)劃、運(yùn)行維護(hù)計(jì)劃。
2 堅(jiān)持進(jìn)行階段評(píng)審
統(tǒng)計(jì)結(jié)果顯示: 大部分錯(cuò)誤是在編碼之前造成的,大約占63%; 2 錯(cuò)誤發(fā)現(xiàn)的越晚,改正它要付出的代價(jià)就越大,要差2到3個(gè)數(shù)量級(jí)。 因此,軟件的質(zhì)量保證工作不能等到編碼結(jié)束之后再進(jìn)行,應(yīng)堅(jiān)持進(jìn)行嚴(yán)格的階段評(píng)審,以便盡早發(fā)現(xiàn)錯(cuò)誤。
3 實(shí)行嚴(yán)格的產(chǎn)品控制
開(kāi)發(fā)人員最痛恨的事情之一就是改動(dòng)需求。但是實(shí)踐告訴我們,需求的改動(dòng)往往是不可避免的。這就要求我們要采用科學(xué)的產(chǎn)品控制技術(shù)來(lái)順應(yīng)這種要求。也就是要采用變動(dòng)控制,又叫基準(zhǔn)配置管理。當(dāng)需求變動(dòng)時(shí),其它各個(gè)階段的文檔或代碼隨之相應(yīng)變動(dòng),以保證軟件的一致性。
4 采納現(xiàn)代程序設(shè)計(jì)技術(shù)
從六、七時(shí)年代的結(jié)構(gòu)化軟件開(kāi)發(fā)技術(shù),到最近的面向?qū)ο蠹夹g(shù),從第一、第二代語(yǔ)言,到第四代語(yǔ)言,人們已經(jīng)充分認(rèn)識(shí)到:方法大似氣力。采用先進(jìn)的技術(shù)即可以提高軟件開(kāi)發(fā)的效率,又可以減少軟件維護(hù)的成本。
5 結(jié)果應(yīng)能清楚地審查
軟件是一種看不見(jiàn)、摸不著的邏輯產(chǎn)品。軟件開(kāi)發(fā)小組的工作進(jìn)展情況可見(jiàn)性差,難于評(píng)價(jià)和管理。為更好地進(jìn)行管理,應(yīng)根據(jù)軟件開(kāi)發(fā)的總目標(biāo)及完成期限, 盡量明確地規(guī)定開(kāi)發(fā)小組的責(zé)任和產(chǎn)品標(biāo)準(zhǔn),從而使所得到的標(biāo)準(zhǔn)能清楚地審查。
6 開(kāi)發(fā)小組的人員應(yīng)少而精
開(kāi)發(fā)人員的素質(zhì)和數(shù)量是影響軟件質(zhì)量和開(kāi)發(fā)效率的重要因素,應(yīng)該少而精。
這一條基于兩點(diǎn)原因:高素質(zhì)開(kāi)發(fā)人員的效率比低素質(zhì)開(kāi)發(fā)人員的效率要高幾倍到幾十倍,開(kāi)發(fā)工作中犯的錯(cuò)誤也要少的多; 當(dāng)開(kāi)發(fā)小組為N人時(shí),可能的通訊信道為N(N-1)/2, 可見(jiàn)隨著人數(shù)N的增大,通訊開(kāi)銷(xiāo)將急劇增大。
7 承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性
遵從上述六條基本原理,就能夠較好地實(shí)現(xiàn)軟件的工程化生產(chǎn)。但是,它們只是對(duì)現(xiàn)有的經(jīng)驗(yàn)的總結(jié)和歸納,并不能保證趕上技術(shù)不斷前進(jìn)發(fā)展的步伐。因此,Boehm提出應(yīng)把承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性作為軟件工程的第七條原理。根據(jù)這條原理,不僅要積極采納新的軟件開(kāi)發(fā)技術(shù),還要注意不斷總結(jié)經(jīng)驗(yàn),收集進(jìn)度和消耗等數(shù)據(jù),進(jìn)行出錯(cuò)類(lèi)型和問(wèn)題報(bào)告統(tǒng)計(jì)。這些數(shù)據(jù)既可以用來(lái)評(píng)估新的 軟件技術(shù)的效果,也可以用來(lái)指明必須著重注意的問(wèn)題和應(yīng)該優(yōu)先進(jìn)行研究的工具和技術(shù)。
面向方面的編程(Aspect Oriented Programming,簡(jiǎn)稱(chēng)AOP)被認(rèn)為是近年來(lái)軟件工程的另外一個(gè)重要發(fā)展。這里的方面指的是完成一個(gè)功能的對(duì)象和函數(shù)的集合。在這一方面相關(guān)的內(nèi)容有泛型編程(Generic Programming)和模板。
參考
胡昆山,《中國(guó)軟件產(chǎn)業(yè)發(fā)展現(xiàn)狀與人才需求》,2003年9月1日,
三、軟件工程的目標(biāo)與常用模型
軟件工程的目標(biāo)是提高軟件的質(zhì)量與生產(chǎn)率,最終實(shí)現(xiàn)軟件的工業(yè)化生產(chǎn)。質(zhì)量是軟件需求方最關(guān)心的問(wèn)題,用戶即使不圖物美價(jià)廉,也要求個(gè)貨真價(jià)實(shí)。生產(chǎn)率是軟件供應(yīng)方最關(guān)心的問(wèn)題,老板和員工都想用更少的時(shí)間掙更多的錢(qián)。質(zhì)量與生產(chǎn)率之間有著內(nèi)在的聯(lián)系,高生產(chǎn)率必須以質(zhì)量合格為前提。如果質(zhì)量不合格,對(duì)供需雙方都是壞事情。從短期效益看,追求高質(zhì)量會(huì)延長(zhǎng)軟件開(kāi)發(fā)時(shí)間并且增大費(fèi)用,似乎降低了生產(chǎn)率。從長(zhǎng)期效益看,高質(zhì)量將保證軟件開(kāi)發(fā)的全過(guò)程更加規(guī)范流暢,大大降低了軟件的維護(hù)代價(jià),實(shí)質(zhì)上是提高了生產(chǎn)率,同時(shí)可獲得很好的信譽(yù)。質(zhì)量與生產(chǎn)率之間不存在根本的對(duì)立,好的軟件工程方法可以同時(shí)提高質(zhì)量與生產(chǎn)率。
軟件供需雙方的代表能在餐桌上談笑風(fēng)生,歸功于第一線開(kāi)發(fā)人員的辛勤工作。質(zhì)量與生產(chǎn)率的提高就指望程序員與程序經(jīng)理。對(duì)開(kāi)發(fā)人員而言,如果非得在質(zhì)量與生產(chǎn)率之間分個(gè)主次不可,那么應(yīng)該是質(zhì)量第一,生產(chǎn)率第二。這是因?yàn)椋海?)質(zhì)量直接體現(xiàn)在軟件的每段程序中,高質(zhì)量自然是開(kāi)發(fā)人員的技術(shù)追求,也是職業(yè)道德的要求。(2)高質(zhì)量對(duì)所有的用戶都有價(jià)值,而高生產(chǎn)率只對(duì)開(kāi)發(fā)方有意義。(3)如果一開(kāi)始就追求高生產(chǎn)率,容易使人急功近利,留下隱患。寧可進(jìn)度慢些,也要保證每個(gè)環(huán)節(jié)的質(zhì)量,以圖長(zhǎng)遠(yuǎn)利益。
軟件的質(zhì)量因素很多,如正確性,性能、可靠性、容錯(cuò)性、易用性、靈活性、可擴(kuò)充性、可理解性、可維護(hù)性等等。有些因素相互重疊,有些則相抵觸,真要提高質(zhì)量可不容易??!
軟件工程的主要環(huán)節(jié)有:人員管理、項(xiàng)目管理、可行性與需求分析、系統(tǒng)設(shè)計(jì)、程序設(shè)計(jì)、測(cè)試、維護(hù)等,如圖1.1所示。
軟件工程模型建議用一定的流程將各個(gè)環(huán)節(jié)連接起來(lái),并可用規(guī)范的方式操作全過(guò)程,如同工廠的生產(chǎn)線。常見(jiàn)的軟件工程模型有:線性模型(圖1.2),漸增式模型(圖1.3),螺旋模型,快速原型模型,形式化描述模型等等 [Pressmam 1999, Sommerville 1992]。
最早出現(xiàn)的軟件工程模型是線性模型(又稱(chēng)瀑布模型)。線性模型太理想化,太單純,已不再適合現(xiàn)代的軟件開(kāi)發(fā)模式,幾乎被業(yè)界拋棄。偶而被人提起,都屬于被貶對(duì)象,未被留一絲惋惜。但我們應(yīng)該認(rèn)識(shí)到,“線性”是人們最容易掌握并能熟練應(yīng)用的思想方法。當(dāng)人們碰到一個(gè)復(fù)雜的“非線性”問(wèn)題時(shí),總是千方百計(jì)地將其分解或轉(zhuǎn)化為一系列簡(jiǎn)單的線性問(wèn)題,然后逐個(gè)解決。一個(gè)軟件系統(tǒng)的整體可能是復(fù)雜的,而單個(gè)子程序總是簡(jiǎn)單的,可以用線性的方式來(lái)實(shí)現(xiàn),否則干活就太累了。線性是一種簡(jiǎn)潔,簡(jiǎn)潔就是美。當(dāng)我們領(lǐng)會(huì)了線性的精神,就不要再呆板地套用線性模型的外表,而應(yīng)該用活它。例如漸增式模型實(shí)質(zhì)就是分段的線性模型,如圖1.3所示。螺旋模型則是接連的彎曲了的線性模型。在其它模型中都能夠找到線性模型的影子。
套用固定的模型不是程序員的聰明之舉。比如“程序設(shè)計(jì)”與“測(cè)試”之間的關(guān)系,習(xí)慣上總以為程序設(shè)計(jì)在先,測(cè)試在后,如圖1.4(a)所示。而對(duì)于一些復(fù)雜的程序,將測(cè)試分為同步測(cè)試與總測(cè)試更有效,如圖1.4(b)所示。
不論是什么軟件工程模型,總是少不了圖1.1中的各個(gè)環(huán)節(jié)。本書(shū)擗開(kāi)具體的軟件工程模型,順序講述人員管理、項(xiàng)目管理、可行性與需求分析、系統(tǒng)設(shè)計(jì)、程序設(shè)計(jì)、測(cè)試,以及維護(hù)與再生工程。其中程序設(shè)計(jì)部分以C++/C語(yǔ)言為例。
四、軟件體系結(jié)構(gòu)和工具的選擇
軟件體系結(jié)構(gòu)表示了一個(gè)軟件系統(tǒng)的高層結(jié)構(gòu),主要特點(diǎn)有:1)軟件系統(tǒng)結(jié)構(gòu)是一個(gè)高層次上的抽象,它并不涉及具體的系統(tǒng)結(jié)構(gòu)(比如B/S還是C/S),也不關(guān)心具體的實(shí)現(xiàn)。2)軟件體系結(jié)構(gòu)必須支持系統(tǒng)所要求的功能,在設(shè)計(jì)軟件體系結(jié)構(gòu)的時(shí)候,必須考慮系統(tǒng)的動(dòng)態(tài)行為。3)在設(shè)計(jì)軟件體系結(jié)構(gòu)的時(shí)候,必須考慮有現(xiàn)有系統(tǒng)的兼容性、安全性和可靠性。同時(shí)還要考慮系統(tǒng)以后的擴(kuò)展性和伸縮性。所以有時(shí)候必須在多個(gè)不同方向的目標(biāo)中進(jìn)行決策。
當(dāng)前已經(jīng)有一些關(guān)于規(guī)范化軟件體系結(jié)構(gòu),比如:ISO的開(kāi)放系統(tǒng)互聯(lián)模型、X Window系統(tǒng)等等。軟件系統(tǒng)的結(jié)構(gòu)通常被定義為兩個(gè)部分:一個(gè)是計(jì)算部件。另一個(gè)就是部件之間的交互。如果把軟件系統(tǒng)看成一幅圖的話,計(jì)算部件就是其中的節(jié)點(diǎn),而部件之間的交互就是節(jié)點(diǎn)之間的弧線。部件之間的連接可以被認(rèn)為是一種連接器,比如過(guò)程調(diào)用、事件廣播、數(shù)據(jù)庫(kù)查詢等等。正確的體系結(jié)構(gòu)設(shè)計(jì)是軟件系統(tǒng)成功的關(guān)鍵。
我們理解了軟件工程的重要性以后,我們沒(méi)有相應(yīng)的工具,我們也很難很好的完成一個(gè)系統(tǒng)。在需求分析和設(shè)計(jì)階段,我們需要什么樣的工具呢?
當(dāng)然最好是基于UML的CASE工具。當(dāng)前比較流行的就是Rose,它是一個(gè)很好的分析和建立對(duì)象和對(duì)象關(guān)系的工具。在具體編碼的時(shí)候,我們需要版本控制工具,MS的SourceSafe就是一個(gè)很好的版本管理工具和項(xiàng)目管理工具。具體的開(kāi)發(fā)工具當(dāng)然很多,但是如果你是一個(gè)對(duì)VC侵淫了多年的程序員,你一定會(huì)選擇它,因?yàn)樗鼤?huì)讓你感到什么是真正的面向?qū)ο蟮木幊?,而你在用VB,PowerBuilder,Delphi時(shí)很少會(huì)有同樣的感受。至于數(shù)據(jù)庫(kù)模式構(gòu)建,我一向是采用Sybase的S-Design,更好的工具就不知道了。
另外需要注意的是,我們需要建立文檔編寫(xiě)的若干模板,以便開(kāi)發(fā)人員按照這個(gè)模板編寫(xiě)規(guī)范的技術(shù)和說(shuō)明文檔。幫助文檔可以用微軟的HTML Help Workshop(hhw.exe)制作,你也可以編譯成.chm格式,它打包了文本和圖形,只有一個(gè)文件,使用和分發(fā)比較方便。最后,如果開(kāi)發(fā)人員不是集中在一個(gè)地方的話,最好建立一個(gè)郵件列表,開(kāi)發(fā)人員可以通過(guò)郵件系統(tǒng)討論開(kāi)發(fā)中的各項(xiàng)事宜。
五、軟件開(kāi)發(fā)方法綜述
國(guó)外大的軟件公司和機(jī)構(gòu)一直在研究軟件開(kāi)發(fā)方法這個(gè)概念性的東西,而且也提出了很多實(shí)際的開(kāi)發(fā)方法,比如:生命周期法、原型化方法、面向?qū)ο蠓椒ǖ鹊?。下面介紹幾種流行的開(kāi)發(fā)方法:
1、結(jié)構(gòu)化方法
結(jié)構(gòu)化開(kāi)發(fā)方法是由E.Yourdon 和 L.L.Constantine 提出的,即所謂的SASD 方 法, 也可稱(chēng)為面向功能的軟件開(kāi)發(fā)方法或面向數(shù)據(jù)流的軟件開(kāi)發(fā)方法。Yourdon方法是80年代 使用最廣泛的軟件開(kāi)發(fā)方法。它首先用結(jié)構(gòu)化分析(SA)對(duì)軟件進(jìn)行需求分析,然后用結(jié)構(gòu)化設(shè)計(jì)(SD)方法進(jìn)行總體設(shè)計(jì),最后是結(jié)構(gòu)化編程(SP)。它給出了兩類(lèi)典型的軟件結(jié)構(gòu)(變換型和事務(wù)型)使軟件開(kāi)發(fā)的成功率大大提高。
2、面向數(shù)據(jù)結(jié)構(gòu)的軟件開(kāi)發(fā)方法
Jackson方法是最典型的面向數(shù)據(jù)結(jié)構(gòu)的軟件開(kāi)發(fā)方法,Jackson方法把問(wèn)題分解為可由三種基本結(jié)構(gòu)形式表示的各部分的層次結(jié)構(gòu)。三種基本的結(jié)構(gòu)形式就是順序、選擇和重復(fù)。三種數(shù)據(jù)結(jié)構(gòu)可以進(jìn)行組合,形成復(fù)雜的結(jié)構(gòu)體系。這一方法從目標(biāo)系統(tǒng)的輸入、輸出數(shù)據(jù)結(jié)構(gòu)入手,導(dǎo)出程序框架結(jié)構(gòu),再補(bǔ)充其它細(xì)節(jié),就可得到完整的程序結(jié)構(gòu)圖。這一方法對(duì)輸入、輸出數(shù)據(jù)結(jié)構(gòu)明確的中小型系統(tǒng)特別有效,如商業(yè)應(yīng)用中的文件表格處理。該方法也可與其它方法結(jié)合,用于模塊的詳細(xì)設(shè)計(jì)。
3、 面向問(wèn)題的分析法
PAM(Problem Analysis Method)是80年代末由日立公司提出的一種軟件開(kāi)發(fā)方法。 它的基本思想是考慮到輸入、輸出數(shù)據(jù)結(jié)構(gòu),指導(dǎo)系統(tǒng)的分解,在系統(tǒng)分析指導(dǎo)下逐步綜 合。這一方法的具體步驟是:從輸入、輸出數(shù)據(jù)結(jié)構(gòu)導(dǎo)出基本處理框;分析這些處理框之間的先后關(guān)系;按先后關(guān)系逐步綜合處理框,直到畫(huà)出整個(gè)系統(tǒng)的PAD圖。這一方法本質(zhì)上是綜合的自底向上的方法,但在逐步綜合之前已進(jìn)行了有目的的分解,這個(gè)目的就是充分考慮系統(tǒng)的輸入、輸出數(shù)據(jù)結(jié)構(gòu)。PAM方法的另一個(gè)優(yōu)點(diǎn)是使用PAD圖。這是一種二維樹(shù)形結(jié)構(gòu)圖,是到目前為止最好的詳細(xì)設(shè)計(jì)表示方法之一。當(dāng)然由于在輸入、輸出數(shù)據(jù)結(jié)構(gòu)與整個(gè)系統(tǒng)之間同樣存在著鴻溝,這一方法仍只適用于中小型問(wèn)題。
4、原型化方法
產(chǎn)生原型化方法的原因很多,主要隨著我們系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)的增多,我們也發(fā)現(xiàn)并非所有的需求都能夠預(yù)先定義而且反復(fù)修改是不可避免的。當(dāng)然能夠采用原型化方法是因?yàn)殚_(kāi)發(fā)工具的快速發(fā)展,比如用VB,DELPHI等工具我們可以迅速的開(kāi)發(fā)出一個(gè)可以讓用戶看的見(jiàn)、摸的著的系統(tǒng)框架,這樣,對(duì)于計(jì)算機(jī)不是很熟悉的用戶就可以根據(jù)這個(gè)樣板提出自己的需求。
開(kāi)發(fā)原型化系統(tǒng)一般由以下幾個(gè)階段:
(1) 確定用戶需求
(2) 開(kāi)發(fā)原始模型
(3) 征求用戶對(duì)初始原型的改進(jìn)意見(jiàn)
(4) 修改原型。
原型化開(kāi)發(fā)比較適合于用戶需求不清、業(yè)務(wù)理論不確定、需求經(jīng)常變化的情況。當(dāng)系統(tǒng)規(guī)模不是很大也不太復(fù)雜時(shí)采用該方法是比較好的。
5、面向?qū)ο蟮能浖_(kāi)發(fā)方法
當(dāng)前計(jì)算機(jī)業(yè)界最流行的幾個(gè)單詞就是分布式、并行和面向?qū)ο筮@幾個(gè)術(shù)語(yǔ)。由此可以看到面向?qū)ο筮@個(gè)概念在當(dāng)前計(jì)算機(jī)業(yè)界的地位。比如當(dāng)前流行的兩大面向?qū)ο蠹夹g(shù)DCOM和CORBA就是例子。當(dāng)然我們實(shí)際用到的還是面向?qū)ο蟮木幊陶Z(yǔ)言,比如C++。不可否認(rèn),面向?qū)ο蠹夹g(shù)是軟件技術(shù)的一次革命,在軟件開(kāi)發(fā)史上具有里程碑的意義。
隨著OOP(面向?qū)ο缶幊蹋┫騉OD(面向?qū)ο笤O(shè)計(jì))和OOA(面向?qū)ο蠓治觯┑陌l(fā)展,最終形成面向?qū)ο蟮能浖_(kāi)發(fā)方法OMT (Object Modeling Technique)。這是一種自底向上和自頂向下相結(jié)合的方法,而且它以對(duì)象建模為基礎(chǔ),從而不僅考慮了輸入、輸出數(shù)據(jù)結(jié)構(gòu),實(shí)際上也包含了所有對(duì)象的數(shù)據(jù)結(jié)構(gòu)。所以O(shè)MT徹底實(shí)現(xiàn)了PAM沒(méi)有完全實(shí)現(xiàn)的目標(biāo)。不僅如此,OO技術(shù)在需求分析、可維護(hù)性和可靠性這三個(gè)軟件開(kāi)發(fā)的關(guān)鍵環(huán)節(jié)和質(zhì)量指標(biāo)上有了實(shí)質(zhì)性的突破,基本地解決了在這些方面存在的嚴(yán)重問(wèn)題。
綜上所述,面向?qū)ο笙到y(tǒng)采用了自底向上的歸納、自頂向下的分解的方法,它通過(guò)對(duì)對(duì)象模型的建立,能夠真正建立基于用戶的需求,而且系統(tǒng)的可維護(hù)性大大改善。當(dāng)前業(yè)界關(guān)于面向?qū)ο蠼5臉?biāo)準(zhǔn)是UML(Unified Modeling Language)。
這里我們需要談一下微軟的MSF(Microsoft Solutions Framework)的框架,它簡(jiǎn)單的把系統(tǒng)設(shè)計(jì)分成三個(gè)階段:概念設(shè)計(jì)、邏輯設(shè)計(jì)和物理設(shè)計(jì)。概念設(shè)計(jì)階段就是從用戶的角度出發(fā)可以得到多少個(gè)對(duì)象,并且以對(duì)象為主體,畫(huà)出業(yè)務(wù)框架。邏輯設(shè)計(jì)階段就是對(duì)概念設(shè)計(jì)階段的對(duì)象進(jìn)行再分析、細(xì)分、整合、刪除。并建立各個(gè)對(duì)象的方法屬性以及對(duì)象之間的關(guān)系。而物理設(shè)計(jì)實(shí)際上就是要確定我們實(shí)際需要的組件、服務(wù)和采用的框架結(jié)構(gòu)、具體的編程語(yǔ)言等。MCF整個(gè)結(jié)構(gòu)比較清楚是基于對(duì)象開(kāi)發(fā)的一個(gè)比較好的可操作的框架系統(tǒng)。
6、可視化開(kāi)發(fā)方法
其實(shí)可視化開(kāi)發(fā)并不能單獨(dú)的作為一種開(kāi)發(fā)方法,更加貼切的說(shuō)可以認(rèn)為它是一種輔助工具,比如用過(guò)SYBASE的S-Design的人都知道,用這個(gè)工具可以進(jìn)行顯示的圖形化的數(shù)據(jù)庫(kù)模式的建立,并可以導(dǎo)入到不同的數(shù)據(jù)庫(kù)中去。當(dāng)然用過(guò)S-Design的人不一定很多,但用過(guò)VB,DELPHI,C++ Builder等開(kāi)發(fā)工具的人一定不少,實(shí)際上你就是在使用可視化開(kāi)發(fā)工具。
當(dāng)然,不可否認(rèn)的是,你只是在編程這個(gè)環(huán)節(jié)上用了可視化,而不是在系統(tǒng)分析和系統(tǒng)設(shè)計(jì)這個(gè)高層次上用了可視化的方法。實(shí)際上,建立系統(tǒng)分析和系統(tǒng)設(shè)計(jì)的可視化工具是一個(gè)很好的賣(mài)點(diǎn),國(guó)外有很多工具都致力于這方面產(chǎn)品的設(shè)計(jì)。比如Business Object就是一個(gè)非常好的數(shù)據(jù)庫(kù)可視化分析工具。
可視化開(kāi)發(fā)使我們把注意力集中在業(yè)務(wù)邏輯和業(yè)務(wù)流程上,用戶界面可以用可視化工具方便的構(gòu)成。通過(guò)操作界面元素,諸如菜單、按鈕、對(duì)話框、編輯框、單選框、復(fù)選框、 列表框和滾動(dòng)條等,由可視開(kāi)發(fā)工具自動(dòng)生成應(yīng)用軟件。
六、怎樣培養(yǎng)軟件工程的思維與方法
作為軟件開(kāi)發(fā)人員的一個(gè)通病是在項(xiàng)目初期的時(shí)候,就喜歡談?wù)搶?shí)現(xiàn)的細(xì)節(jié),并且樂(lè)此不疲。我們更喜歡討論如何用靈活而簡(jiǎn)短的代碼來(lái)實(shí)現(xiàn)一個(gè)特定的功能,而忽略了對(duì)整個(gè)系統(tǒng)架構(gòu)的考慮。所以作為一個(gè)開(kāi)發(fā)人員,尤其是一個(gè)有經(jīng)驗(yàn)的開(kāi)發(fā)人員,應(yīng)該把自己從代碼中解脫出來(lái),更多的時(shí)候在我們的腦子里甚至?xí)簳r(shí)要放棄去考慮如何實(shí)現(xiàn)的問(wèn)題,而從項(xiàng)目或產(chǎn)品的總體去考慮一個(gè)軟件產(chǎn)品。
以下是我個(gè)人的一些經(jīng)驗(yàn):
1.考慮整個(gè)項(xiàng)目或者產(chǎn)品的市場(chǎng)前景。作為一個(gè)真正的系統(tǒng)分析人員,不僅要從技術(shù)的角度來(lái)考慮問(wèn)題,而且還要從市場(chǎng)的角度去考慮問(wèn)題。也就是說(shuō)我們同時(shí)需要考慮我們產(chǎn)品的用戶群是誰(shuí),當(dāng)我們產(chǎn)品投放到市場(chǎng)上的時(shí)候,是否具有生命力。比如即使我們采用最好的技術(shù)實(shí)現(xiàn)了一個(gè)單進(jìn)程的操作系統(tǒng),其市場(chǎng)前景也一定是不容樂(lè)觀的。
2.從用戶的角度來(lái)考慮問(wèn)題。比如一些操作對(duì)于開(kāi)發(fā)人員來(lái)講是非常顯而易見(jiàn)的問(wèn)題。但是對(duì)于一般的用戶來(lái)說(shuō)可能就非常難于掌握,也就是說(shuō),有時(shí)候,我們不得不在靈活性和易用性方面進(jìn)行折中。另外,在功能實(shí)現(xiàn)上,我們也需要進(jìn)行綜合考慮,盡管一些功能十分強(qiáng)大,但是如果用戶幾乎不怎么使用它的話,就不一定在產(chǎn)品的第一版的時(shí)候就推出。從用戶的角度考慮,也就是說(shuō)用戶認(rèn)可的才是好的,并不是開(kāi)發(fā)人員覺(jué)的好才好。
3.從技術(shù)的角度考
關(guān)于軟件工程總體設(shè)計(jì)的原則和軟件系統(tǒng)總體設(shè)計(jì)原則的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
掃描二維碼推送至手機(jī)訪問(wèn)。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。