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