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