《軟件開發(fā)流程》由會(huì)員分享,可在線閱讀,更多相關(guān)《軟件開發(fā)流程(29頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、軟件開發(fā)流程 軟件開發(fā)流程概述n 項(xiàng)目:l 需求來自某個(gè)別用戶,定制性能l 政府、企業(yè)、基金項(xiàng)目l 金土資源、myPKIn 產(chǎn)品: l 需求來自某類用戶,不單獨(dú)定制l Windows 1、可行性分析做不做?n 目的:為決策提供依據(jù)n 要求:真實(shí)、全面與重點(diǎn)兼顧n 內(nèi)容:l 市場可行性:成熟?對手?用戶? l 政策可行性:盜版軟件?l 技術(shù)可行性:核心技術(shù)?時(shí)間?l 成本收益分析:辦公、工資、培訓(xùn)、維護(hù)l SWOT分析: - Strengths, Weaknesses, Opportunities, Threats SWOT分析n Strengthsl 技術(shù)技能優(yōu)勢:l 資產(chǎn)優(yōu)勢:有形(先進(jìn)設(shè)施
2、)、無形(品牌)l 人力資源優(yōu)勢:l 組織體系優(yōu)勢l 競爭能力:開發(fā)周期,營銷網(wǎng)絡(luò)n Weaknesses l 缺乏核心技能技術(shù)?l 缺乏有競爭力的資產(chǎn)資源(包括人力)l n Opportunities 確認(rèn)評價(jià)每個(gè)重要機(jī)會(huì)l 客戶群的擴(kuò)展l 市場壁壘l 并購競爭對手?l 向其他地理區(qū)域擴(kuò)張?n Threatsl 市場內(nèi)的競爭對手l 市場增值率l 匯率和外貿(mào)政策l 市場需求減少l 經(jīng)濟(jì)危機(jī),國家調(diào)控政策 2、需求分析有所為有所不為n 重要性:n 難點(diǎn):l 用戶需求不斷改變、交流理解有誤差n 內(nèi)容: l 功能需求l 性能指標(biāo)l 環(huán)境需求:軟、硬件環(huán)境l 界面需求:人機(jī)交互方式n 使用工具:Rat
3、ional Rose、Visio 3、系統(tǒng)設(shè)計(jì)架構(gòu)師n 軟件體系結(jié)構(gòu)屬于系統(tǒng)設(shè)計(jì)n 可分兩個(gè)階段:總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)n 總體設(shè)計(jì):l 需求分析的結(jié)果軟件體系構(gòu)架、結(jié)構(gòu)l 復(fù)雜系統(tǒng)模塊進(jìn)行功能劃分、建立層次結(jié)構(gòu)n 詳細(xì)設(shè)計(jì): l 各個(gè)模塊的功能設(shè)計(jì) 3、系統(tǒng)設(shè)計(jì)流程 3、系統(tǒng)設(shè)計(jì)內(nèi)容 系統(tǒng)設(shè)計(jì)用戶界面設(shè)計(jì)n 用戶界面類型l 對話框:計(jì)算器l 文檔:officel 瀏覽器:outlookl 其他,如游戲界面n 界面設(shè)計(jì) l 人機(jī)界面就是系統(tǒng)本身 3、系統(tǒng)設(shè)計(jì)界面設(shè)計(jì)原則n 實(shí)用、直觀、簡潔、生動(dòng)n 對用戶友好:符合習(xí)慣、及時(shí)反饋信息n 風(fēng)格一致:Word Powerpointn 錯(cuò)誤處理:提示、撤
4、銷等n 幫助:n 盡量減少非必要信息 3、系統(tǒng)設(shè)計(jì)數(shù)據(jù)庫設(shè)計(jì)n 目的:設(shè)計(jì)表結(jié)構(gòu)存儲(chǔ)、操作數(shù)據(jù)n 步驟,分兩步:l 抽象:客觀對象抽象出 實(shí)體和聯(lián)系 模型- Entity-Relationshipl 將 (概念)模型轉(zhuǎn)化為實(shí)際數(shù)據(jù)庫系統(tǒng)支持的數(shù)據(jù)模型(物理模型)n 數(shù)據(jù)庫設(shè)計(jì)范式 l 1NF、2NF、3NF、BCNFl 使得添加、更新、刪除時(shí)少發(fā)生錯(cuò)誤n 工具:l PowerDesigner 4、模塊設(shè)計(jì)n 模塊指系統(tǒng)的各功能部件n 模塊化降低開發(fā)、測試、維護(hù)的代價(jià)n 如何劃分模塊:沒有標(biāo)準(zhǔn)答案n 模塊設(shè)計(jì)的原則l 接口公開、內(nèi)部實(shí)現(xiàn)隱藏 l 高內(nèi)聚:模塊內(nèi)部關(guān)聯(lián)度高。如果不高?l 低耦合:模
5、塊之間依賴程度應(yīng)該低。高?n 模塊設(shè)計(jì)內(nèi)容l 接口(外)、數(shù)據(jù)結(jié)構(gòu)+算法(內(nèi)) 4、模塊設(shè)計(jì)OOP設(shè)計(jì)n 類的抽象n 類的結(jié)構(gòu)層次:繼承、依賴n 類的屬性、定義n 類的實(shí)現(xiàn) 5、模塊設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)和算法n 設(shè)計(jì)理念l 為那種應(yīng)用服務(wù)?l 時(shí)間優(yōu)先還是空間優(yōu)先?l 熟悉哪些算法或數(shù)據(jù)結(jié)構(gòu)n 一般過程 l 先設(shè)計(jì)全局?jǐn)?shù)據(jù)結(jié)構(gòu)、再局部數(shù)據(jù)結(jié)構(gòu)l 優(yōu)先使用已有、成熟、合適的,再考慮自行設(shè)計(jì)l 滿足性能即可,不滿足,再優(yōu)化 6、編碼n 語言l Java:面向?qū)ο蟆⒎植际?、解釋型、可移植、多線程,- J2SE, J2EE,J2MEl .Net: 健壯、安全、統(tǒng)一、開發(fā)簡單- CLR(Common Langu
6、age Runtime): 核心,類似虛擬機(jī),負(fù)責(zé)代碼執(zhí)行、內(nèi)存管理、安全等- Framework:平臺(tái)基礎(chǔ) - C#, C+,l Unix/Linux 6、編碼編碼規(guī)范 n 目標(biāo):l 易讀、風(fēng)格統(tǒng)一、安全,可維護(hù)移植n 內(nèi)容:l 命名l 代碼書寫格式 l 其他如函數(shù)、變量等的設(shè)置要求 6、編碼開發(fā)方法n 一種軟件開發(fā)方法:極限編程XP (eXtreme Programming)l Kent Beck:1996l 理念:交流、樸素、反饋、勇氣、尊重l 將復(fù)雜的開發(fā)過程分解為 許多相對簡單的小周期。積極交流反饋,讓涉眾清楚開發(fā)進(jìn)度、問題、困難,并及時(shí)調(diào)整。相互尊重! l 極限:把所有強(qiáng)調(diào)的思想、
7、方法做到最好,其他忽略;n RUPn Agilen Scrum 6、編碼源代碼控制n 版本管理l 人員離開變動(dòng)?如何記錄重要更新?多個(gè)版本出現(xiàn),管理版本的變化?對各個(gè)小組的子模塊管理?保留修改軌跡,便于撤銷錯(cuò)誤的改動(dòng)?n 常用工具:l VSS, Microsoft Visual SouceSafe l CVS, Concurrent Versions System, - Open source 7、軟件測試n 定義(Myers,軟件測試藝術(shù)):l 為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程n 目的:保證軟件質(zhì)量n 時(shí)機(jī):在軟件交付用戶或投入運(yùn)行之前n 經(jīng)驗(yàn):錯(cuò)誤越遲被發(fā)現(xiàn),調(diào)試難度越大。n 階段: l 單元
8、測試、集成測試、系統(tǒng)測試、用戶測試 7、軟件測試n 單元測試l 由開發(fā)者編寫一段代碼,檢驗(yàn)程序基本功能是否正確。l 測試的單元:類、函數(shù)。- 例如裝配電腦,先測試顯卡、硬盤、光驅(qū)等 7、軟件測試n 集成測試:自頂向下l 樁模塊:模擬真模塊,提供數(shù)據(jù)l 建立測試驅(qū)動(dòng)模塊:以程序真正的主模塊為驅(qū)動(dòng)模塊,替換某樁模塊,輸入數(shù)據(jù),檢測輸出是否正確 l 回歸測試:做一定修改后,再次由測試部門進(jìn)行測試 7、軟件測試n 集成測試:自底向上l 組織模塊群:將部分底層模塊組裝成實(shí)現(xiàn)某個(gè)功能的模塊群l 建立測試驅(qū)動(dòng)模塊:對上一步組裝的模塊群開發(fā)一個(gè)測試程序,輸入數(shù)據(jù),測試輸出是否正確 7、軟件測試系統(tǒng)測試n 概念
9、:將完整的軟件及其所依賴的軟硬件環(huán)境整合,進(jìn)行測試n 內(nèi)容:l 性能、負(fù)載l 黑盒測試:不關(guān)心內(nèi)部,只看結(jié)果是否正確 l 白盒測試:結(jié)構(gòu)或邏輯測試,檢驗(yàn)內(nèi)部功能是否按規(guī)定正確工作。l 單元測試通常是白盒測試,而集成測試和系統(tǒng)測試往往是黑盒測試 7、軟件測試測試工具 n 單元測試:xUnit(CppUnit, Junit, Nunit)n 黑盒:l 功能測試:Rational SQA Robotl 性能測試: Rational SQA Loadn 白盒測試: l 內(nèi)存泄露:Rational Purifyl 代碼覆蓋率:Rational Purecoveragel 代碼性能:Rational Qu
10、antifyn 測試管理:Rational Test Manager 8、結(jié)項(xiàng)n 安裝盤的制作l InstallShield, Acresso公司,事實(shí)標(biāo)準(zhǔn)l VisioStudio.Net 發(fā)布程序n 版權(quán)保護(hù)l 加密:序列號n 說明書幫助文檔制作 l HLP,早期,Microsoft Help Workshopl CHM, 1998年推出, Microsoft Html Help Workshop 8、軟件維護(hù)n 未發(fā)現(xiàn)的Bugn 需求改變n 版本升級兼容n 售后培訓(xùn)n Dimensions of software complexityHigher technical complexity
11、 - Embedded, real-time, distributed, fault-tolerant - Custom, unprecedented, architecture reengineering - High performance Lower technical complexity - Mostly 4GL, or component-based - Application reengineering - Interactive performance Higher management complexity - Large scale - Contractual - Many
12、 stake holders - “Projects”Lower management complexity - Small scale - Informal - Single stakeholder - “Products” Defense MIS SystemDefense Weapon SystemTelecom SwitchCASE Tool National Air TrafficControl SystemEnterprise IS(Family of ISApplications)CommercialCompilerBusinessSpreadsheet IS Applicati
13、onDistributed Objects (Order Entry)Small ScientificSimulation Large-ScaleOrganization/EntitySimulation An average software project: - 5-10 people - 10-15 month duration - 3-5 external interfaces - Some unknowns it will be a question of complexity.Bill Raduchel, Chief Strategy Officer, Sun Microsystems