1.前言應(yīng)用軟件系統(tǒng)是事件驅(qū)動(dòng)的軟件系統(tǒng),系統(tǒng)通過(guò)接口接受事件后,交由系統(tǒng)業(yè)務(wù)層處理,業(yè)務(wù)層處理完事件后將需要的信息存入數(shù)據(jù)庫(kù),整個(gè)應(yīng)用軟件系統(tǒng)分為三個(gè)子系統(tǒng):接口子系統(tǒng),業(yè)務(wù)子系統(tǒng),數(shù)據(jù)庫(kù)子系統(tǒng),業(yè)務(wù)子系統(tǒng)進(jìn)一步分為三個(gè)子系統(tǒng):表示層,業(yè)務(wù)層,數(shù)據(jù)接入層。
其中業(yè)務(wù)層是整個(gè)系統(tǒng)的核心,表示層負(fù)責(zé)通過(guò)接口子系統(tǒng)接收系統(tǒng)事件交給業(yè)務(wù)層處理,數(shù)據(jù)接入層供業(yè)務(wù)層使用完成數(shù)據(jù)的持久化。每個(gè)層對(duì)編程人員的技術(shù)要求是不同的,表示層需要了解的技術(shù)根據(jù)接口子系統(tǒng)選擇的不同而不同:如windows界面,需要對(duì)MFC有比較深入的了解,web界面則要求對(duì)asp,asp.net,或jsp有比較深入的了解。
數(shù)據(jù)訪問(wèn)層需要的技術(shù)則由數(shù)據(jù)庫(kù)子系統(tǒng)的選擇決定,另外還需要了解:ODBC,JDBC等。接口子系統(tǒng)的選擇:windows界面,java界面,web界面,命令行接口,CTI, API等 數(shù)據(jù)庫(kù)子系統(tǒng)的選擇:關(guān)系數(shù)據(jù)庫(kù),普通文件等基于以上對(duì)應(yīng)用軟件系統(tǒng)的理解,軟件開(kāi)發(fā)流程的輸入是用戶的業(yè)務(wù)需求,輸出就是系統(tǒng)的業(yè)務(wù)層、表示層、數(shù)據(jù)接入層的代碼,以及接口和數(shù)據(jù)庫(kù),以及各種文檔。
因此得到比較理想化的軟件開(kāi)發(fā)流程圖,該圖使用uml中的活動(dòng)圖描述。2.需求分析階段需求分析階段的常見(jiàn)問(wèn)題是:需求分析不夠深入,對(duì)問(wèn)題域沒(méi)有仔細(xì)研究,急于進(jìn)入設(shè)計(jì)階段。
造成這種問(wèn)題一方面是因?yàn)轫?xiàng)目管目趕進(jìn)度以及存在于管理人員頭腦中的根深蒂固的想法:任何時(shí)候不能讓任何人員閑著,另外很大的原因是很多人不知道如何進(jìn)一步深入研究問(wèn)題域。需求分析階段不僅要列出系統(tǒng)的use case,更重要的是要列出use case的輸入輸出和例外情況等,以及問(wèn)題域中的對(duì)象之間的靜態(tài)關(guān)系和動(dòng)態(tài)關(guān)系,如對(duì)象間的包含關(guān)系,繼承關(guān)系,調(diào)用關(guān)系等。
需求分析階段另外一個(gè)常見(jiàn)的問(wèn)題是常常將需求分析等同于數(shù)據(jù)庫(kù)設(shè)計(jì),需求分析階段定義的是系統(tǒng)作什么,而不是怎么做,需求分析的結(jié)果應(yīng)該與具體的技術(shù)實(shí)現(xiàn)無(wú)關(guān)。數(shù)據(jù)庫(kù)設(shè)計(jì)是技術(shù)實(shí)現(xiàn)的細(xì)節(jié),應(yīng)該盡可能的推遲技術(shù)細(xì)節(jié)的決策,不應(yīng)該使技術(shù)細(xì)節(jié)束縛了我們對(duì)系統(tǒng)需求的理解。
需求分析階段應(yīng)該從用戶的角度對(duì)系統(tǒng)建模,不應(yīng)將大量的技術(shù)細(xì)節(jié)暴露給用戶,導(dǎo)致系統(tǒng)易用性差。需求分析階段可以進(jìn)一步細(xì)分為業(yè)務(wù)需求分析階段和系統(tǒng)功能需求分析階段。
在很多研發(fā)性質(zhì)的系統(tǒng)中,不注重業(yè)務(wù)需求分析,只有系統(tǒng)功能需求分析,導(dǎo)致開(kāi)發(fā)人員知其然不知其所以然。系統(tǒng)功能規(guī)范文檔與業(yè)務(wù)需求文檔的重要區(qū)別有以下幾點(diǎn):內(nèi)容不同:系統(tǒng)需求分為功能需求和非功能需求,功能需求進(jìn)一步分為業(yè)務(wù)功能需求和非業(yè)務(wù)功能需求。
系統(tǒng)需求規(guī)范文檔除了包括業(yè)務(wù)需求文檔中的業(yè)務(wù)功能需求,功能規(guī)范文檔需要增加以下內(nèi)容:系統(tǒng)的非業(yè)務(wù)功能需求,由于業(yè)務(wù)需求由計(jì)算機(jī)系統(tǒng)實(shí)現(xiàn)而產(chǎn)生的功能需求,如系統(tǒng)需要系統(tǒng)管理員管理,系統(tǒng)管理員的角度產(chǎn)生一些非業(yè)務(wù)功能需求,另外需要描述系統(tǒng)非功能需求:數(shù)據(jù)量,性能要求,響應(yīng)速度,可用性要求,可靠性要求,界面語(yǔ)言要求等等。 閱讀的對(duì)象不同:業(yè)務(wù)需求文檔是用來(lái)與業(yè)務(wù)人員交流,功能規(guī)范文檔是開(kāi)發(fā)人員開(kāi)發(fā)的依據(jù) 使用的語(yǔ)言不同:業(yè)務(wù)需求文檔使用自然語(yǔ)言書寫,而功能規(guī)范文檔使用比較嚴(yán)謹(jǐn)?shù)恼Z(yǔ)言,如:uml書寫 對(duì)編寫人的要求不一樣:業(yè)務(wù)需求編寫人員只需要對(duì)業(yè)務(wù)系統(tǒng)熟悉,系統(tǒng)規(guī)范由系統(tǒng)架構(gòu)師完成 體現(xiàn)系統(tǒng)架構(gòu)師價(jià)值的地方是編寫系統(tǒng)規(guī)范文檔和業(yè)務(wù)層設(shè)計(jì), 系統(tǒng)規(guī)范文檔是下一步界面設(shè)計(jì),業(yè)務(wù)層設(shè)計(jì)和數(shù)據(jù)庫(kù)設(shè)計(jì)的依據(jù),表示層,業(yè)務(wù)層,數(shù)據(jù)訪問(wèn)層之間是相互聯(lián)系的,它們之間的關(guān)系應(yīng)該在系統(tǒng)規(guī)范文檔中找到。
3.架構(gòu)設(shè)計(jì)階段架構(gòu)設(shè)計(jì)階段的常見(jiàn)問(wèn)題是將架構(gòu)設(shè)計(jì)理解為技術(shù)架構(gòu)設(shè)計(jì),實(shí)際上架構(gòu)設(shè)計(jì)分為技術(shù)架構(gòu)設(shè)計(jì)和業(yè)務(wù)架構(gòu)設(shè)計(jì)。技術(shù)架構(gòu)一般由系統(tǒng)軟件商提供,可以在不同的應(yīng)用軟件系統(tǒng)中使用,例如:微軟的MFC, SUN的J2EE等。
對(duì)于一個(gè)應(yīng)用軟件系統(tǒng),更重要的是業(yè)務(wù)架構(gòu)的設(shè)計(jì),也就是將需求分析階段中得到的各種關(guān)系,根據(jù)系統(tǒng)的非功能需求將需求分析轉(zhuǎn)變?yōu)榇a。其實(shí)沒(méi)有業(yè)務(wù)架構(gòu)的設(shè)計(jì)也是可以的,很多項(xiàng)目中直接將對(duì)象之間的各種關(guān)系以數(shù)據(jù)庫(kù)的方式實(shí)現(xiàn),這樣的系統(tǒng)不是面向?qū)ο蟮?,因此面向?qū)ο笤O(shè)計(jì)的很多好處不能體現(xiàn)。
由于在架構(gòu)設(shè)計(jì)階段中沒(méi)有進(jìn)一步細(xì)分,通常會(huì)導(dǎo)致不能準(zhǔn)確估計(jì)任務(wù)量,造成項(xiàng)目計(jì)劃變成擺設(shè)。4.詳細(xì)設(shè)計(jì)階段詳細(xì)設(shè)計(jì)階段一個(gè)重要的任務(wù)是系統(tǒng)持久化設(shè)計(jì)。
對(duì)應(yīng)用系統(tǒng)而言,持久化設(shè)計(jì)只是管理存儲(chǔ)的機(jī)制,有多種技術(shù)手段可以選擇:可以是面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng),簡(jiǎn)單的文件,或者是關(guān)系數(shù)據(jù)庫(kù),也可以是使用ORM工具等。總之應(yīng)該把它留到最后作為細(xì)節(jié)處理。
我們不應(yīng)該將我們的系統(tǒng)和任何特定的技術(shù)綁定在一起。我們可以根據(jù)需求自由選擇需要的持久化技術(shù),并且保留在將來(lái)需要時(shí)更改持久化技術(shù)的自由。
5.編碼階段編碼階段還處于小農(nóng)經(jīng)濟(jì),自給自足,沒(méi)有分工合作。編碼階段以u(píng)se case為粒度安排工作,這樣的安排方式要求每一個(gè)開(kāi)發(fā)人員必須對(duì)表示層,業(yè)務(wù)層,數(shù)據(jù)接入層的所有技術(shù)都要有比較深入的了解,由于每個(gè)開(kāi)發(fā)人員各自只對(duì)自己的use 。
軟件開(kāi)發(fā)的內(nèi)容是:需求、設(shè)計(jì)、編程和測(cè)試!
需求:不僅僅是用戶需求,應(yīng)該是開(kāi)發(fā)中遇到的所有的需求。比如,你首先要知道做這個(gè)項(xiàng)目是為了解決什么問(wèn)題;測(cè)試案例中應(yīng)該輸入什么數(shù)據(jù)……為了清楚地知道這些需求,你經(jīng)常要和客戶、項(xiàng)目經(jīng)理等交流。
設(shè)計(jì):編碼前,肯定有個(gè)計(jì)劃告訴你要做什么,結(jié)構(gòu)是怎樣等等。你一定要按照這個(gè)來(lái)做,否則可能會(huì)一團(tuán)糟。
編程:如果在項(xiàng)目截止日,你的程序不能跑起來(lái)或達(dá)不到客戶的要求,你就拿不到錢。
測(cè)試:目的是讓你知道,什么時(shí)候算是完成了。如果你聰明,你就應(yīng)該先寫測(cè)試,這樣可以及時(shí)知道你是否真地完成了。否則,你經(jīng)常會(huì)不知道,到底有哪些功能是真正完成了,離預(yù)期目標(biāo)還差多遠(yuǎn)。
軟件開(kāi)發(fā)中,客戶和開(kāi)發(fā)人員都有自己的基本權(quán)利和義務(wù)。
客戶:
定義每個(gè)用戶需求的商業(yè)優(yōu)先級(jí);
制訂總體計(jì)劃,包括用多少投資、經(jīng)過(guò)多長(zhǎng)時(shí)間、達(dá)到什么目的;
在項(xiàng)目開(kāi)發(fā)過(guò)程中的每個(gè)工作周,都能讓投資獲得最大的收益;
通過(guò)重復(fù)運(yùn)行你所指定的功能測(cè)試,準(zhǔn)確地掌握項(xiàng)目進(jìn)展情況;
一般來(lái)說(shuō)軟件開(kāi)發(fā)是根據(jù)用戶要求建造出軟件系統(tǒng)或者系統(tǒng)中的軟件部分的過(guò)程。
軟件開(kāi)發(fā)是一項(xiàng)包括需求捕捉、需求分析、設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試的系統(tǒng)工程。軟件一般是用某種程序設(shè)計(jì)語(yǔ)言來(lái)實(shí)現(xiàn)的。通常采用軟件開(kāi)發(fā)工具可以進(jìn)行開(kāi)發(fā)。軟件分為系統(tǒng)軟件和應(yīng)用軟件,并不只是包括可以在計(jì)算機(jī)上運(yùn)行的程序,與這些程序相關(guān)的文件一般也被認(rèn)為是軟件的一部分。
軟件設(shè)計(jì)思路和方法的一般過(guò)程,包括設(shè)計(jì)軟件的功能和實(shí)現(xiàn)的算法和方法、軟件的總體結(jié)構(gòu)設(shè)計(jì)和模塊設(shè)計(jì)、編程和調(diào)試、程序聯(lián)調(diào)和測(cè)試以及編寫、提交程序。
常見(jiàn)的軟件開(kāi)發(fā)語(yǔ)言:JAVA、C/C++/php/JSP/ASP/POWERBUILDER/DELPHI/.NET/C#/vb/等。
與應(yīng)用最關(guān)鍵的需要用到數(shù)據(jù)庫(kù),常見(jiàn)數(shù)據(jù)庫(kù):MySQL/SQLSERVER/ORACLE等。
1、結(jié)構(gòu)化方法 結(jié)構(gòu)化開(kāi)發(fā)方法是由E.Yourdon 和 L.L.Constantine 提出的,即所謂的SASD 方 法,也可稱為面向功能的軟件開(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)。它給出了兩類典型的軟件結(jié)構(gòu)(變換型和事務(wù)型)使軟件開(kāi)發(fā)的成功率大大提高,這里精簡(jiǎn)來(lái)說(shuō)就是ADP,就是分析、設(shè)計(jì)、編程。
2、面向數(shù)據(jù)結(jié)構(gòu)的軟件開(kāi)發(fā)方法這種方法是把軟件基本的結(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)題的分析法它的基本思想是考慮到輸入、輸出數(shù)據(jù)結(jié)構(gòu),指導(dǎo)系統(tǒng)的分解,在系統(tǒng)分析指導(dǎo)下逐步綜合。這一方法的具體步驟是:從輸入、輸出數(shù)據(jù)結(jié)構(gòu)導(dǎo)出基本處理框;分析這些處理框之間的先后關(guān)系;按先后關(guān)系逐步綜合處理框,直到畫出整個(gè)系統(tǒng)的PAD圖。這一方法本質(zhì)上是綜合的自底向上的方法,但在逐步綜合之前已進(jìn)行了有目的的分解,這個(gè)目的就是充分考慮系統(tǒng)的輸入、輸出數(shù)據(jù)結(jié)構(gòu)。PAM方法的另一個(gè)優(yōu)點(diǎn)是使用PAD圖。這是一種二維樹形結(jié)構(gòu)圖,是到目前為止最好的詳細(xì)設(shè)計(jì)表示方法之一。當(dāng)然由于在輸入、輸出數(shù)據(jù)結(jié)構(gòu)與整個(gè)系統(tǒng)之間同樣存在著鴻溝,這一方法仍只適用于中小型問(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)。想必我們有很多人現(xiàn)在在采用也就是微軟的自帶的framework框架,它主要包含概念設(shè)計(jì)、邏輯設(shè)計(jì)、物理設(shè)計(jì)。概念設(shè)計(jì)是從客戶角度出發(fā)進(jìn)行大模塊的設(shè)計(jì),邏輯設(shè)計(jì)則是設(shè)計(jì)操縱數(shù)據(jù)流程,物理設(shè)計(jì)則是細(xì)節(jié)到每個(gè)接口、對(duì)象等等。
運(yùn)用現(xiàn)代科學(xué)技術(shù)知識(shí)來(lái)設(shè)計(jì)并構(gòu)造計(jì)算機(jī)程序及為開(kāi)發(fā)、運(yùn)行和維護(hù)這些程序所必需的相關(guān)文件資料。
IEEE在軟件工程術(shù)語(yǔ)匯編中的定義:軟件工程是:1.將系統(tǒng)化的、嚴(yán)格約束的、可量化的方法應(yīng)用于軟件的開(kāi)發(fā)、運(yùn)行和維護(hù),即將工程化應(yīng)用于軟件;2.在1中所述方法的研究
Fritz Bauer在NATO會(huì)議上給出的定義:建立并使用完善的工程化原則,以較經(jīng)濟(jì)的手段獲得能在實(shí)際機(jī)器上有效運(yùn)行的可靠軟件的一系列方法。
目前比較認(rèn)可的一種定義認(rèn)為:軟件工程是研究和應(yīng)用如何以系統(tǒng)性的、規(guī)范化的、可定量的過(guò)程化方法去開(kāi)發(fā)和維護(hù)軟件,以及如何把經(jīng)過(guò)時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來(lái)。
《計(jì)算機(jī)科學(xué)技術(shù)百科全書》中的定義:軟件工程是應(yīng)用計(jì)算機(jī)科學(xué)、數(shù)學(xué)及管理科學(xué)等原理,開(kāi)發(fā)軟件的工程。軟件工程借鑒傳統(tǒng)工程的原則、方法,以提高質(zhì)量、降低成本。其中,計(jì)算機(jī)科學(xué)、數(shù)學(xué)用于構(gòu)建模型與算法,工程科學(xué)用于制定規(guī)范、設(shè)計(jì)范型(paradigm)、評(píng)估成本及確定權(quán)衡,管理科學(xué)用于計(jì)劃、資源、質(zhì)量、成本等管理。
軟件開(kāi)發(fā)的內(nèi)容是:需求、設(shè)計(jì)、編程和測(cè)試!需求:不僅僅是用戶需求,應(yīng)該是開(kāi)發(fā)中遇到的所有的需求。
比如,你首先要知道做這個(gè)項(xiàng)目是為了解決什么問(wèn)題;測(cè)試案例中應(yīng)該輸入什么數(shù)據(jù)……為了清楚地知道這些需求,你經(jīng)常要和客戶、項(xiàng)目經(jīng)理等交流。設(shè)計(jì):編碼前,肯定有個(gè)計(jì)劃告訴你要做什么,結(jié)構(gòu)是怎樣等等。
你一定要按照這個(gè)來(lái)做,否則可能會(huì)一團(tuán)糟。編程:如果在項(xiàng)目截止日,你的程序不能跑起來(lái)或達(dá)不到客戶的要求,你就拿不到錢。
測(cè)試:目的是讓你知道,什么時(shí)候算是完成了。如果你聰明,你就應(yīng)該先寫測(cè)試,這樣可以及時(shí)知道你是否真地完成了。
否則,你經(jīng)常會(huì)不知道,到底有哪些功能是真正完成了,離預(yù)期目標(biāo)還差多遠(yuǎn)。軟件開(kāi)發(fā)中,客戶和開(kāi)發(fā)人員都有自己的基本權(quán)利和義務(wù)。
客戶:定義每個(gè)用戶需求的商業(yè)優(yōu)先級(jí);制訂總體計(jì)劃,包括用多少投資、經(jīng)過(guò)多長(zhǎng)時(shí)間、達(dá)到什么目的;在項(xiàng)目開(kāi)發(fā)過(guò)程中的每個(gè)工作周,都能讓投資獲得最大的收益;通過(guò)重復(fù)運(yùn)行你所指定的功能測(cè)試,準(zhǔn)確地掌握項(xiàng)目進(jìn)展情況;。
聲明:本網(wǎng)站尊重并保護(hù)知識(shí)產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請(qǐng)?jiān)谝粋€(gè)月內(nèi)通知我們,我們會(huì)及時(shí)刪除。
蜀ICP備2020033479號(hào)-4 Copyright ? 2016 學(xué)習(xí)鳥. 頁(yè)面生成時(shí)間:3.111秒