软件工程方法
軟件工程
軟件開發(fā)方法
結(jié)構(gòu)化法
- 自上而下,逐步分解,嚴(yán)格分階段,應(yīng)變差,風(fēng)險(xiǎn)高
面向?qū)ο蟮姆椒?/h3>
- 自下而上,階段界限不明確,更好應(yīng)變,更好復(fù)用,符合思維習(xí)慣
面向服務(wù)的方法
- 粗粒度、松耦合,標(biāo)準(zhǔn)化和組件化
抽象級(jí)別:操作 -> 服務(wù) -> 業(yè)務(wù)流程
原型法(需求階段)
-
原型漸進(jìn)明細(xì),用于讓客戶更加明確自己的需求,可以與以上方法結(jié)合
- 按功能分:水平原型(界面)、垂直原型(復(fù)雜算法)
- 按最終結(jié)果分:拋棄式原型、演化式原型
形式化方法
- 基于數(shù)學(xué)模型,證明/驗(yàn)證其真?zhèn)?#xff0c;偏理想化
統(tǒng)一過程方法
-
UP
-
用例驅(qū)動(dòng)、以架構(gòu)為中心、迭代和增量
- 初始:定義最終產(chǎn)品視圖和業(yè)務(wù)模型,確定系統(tǒng)范圍
- 細(xì)化:設(shè)計(jì)及確定系統(tǒng)架構(gòu),制定工作計(jì)劃及資源要求
- 構(gòu)建:構(gòu)造產(chǎn)品并演進(jìn)包括需求,架構(gòu),計(jì)劃等,直至產(chǎn)品提交
- 交付:交付給用戶使用
敏捷方法
基于架構(gòu)的開發(fā)方法(ABSD)
軟件開發(fā)模型
瀑布模型(SDLC)
抽象級(jí)別:操作 -> 服務(wù) -> 業(yè)務(wù)流程
原型漸進(jìn)明細(xì),用于讓客戶更加明確自己的需求,可以與以上方法結(jié)合
- 按功能分:水平原型(界面)、垂直原型(復(fù)雜算法)
- 按最終結(jié)果分:拋棄式原型、演化式原型
UP
-
用例驅(qū)動(dòng)、以架構(gòu)為中心、迭代和增量
- 初始:定義最終產(chǎn)品視圖和業(yè)務(wù)模型,確定系統(tǒng)范圍
- 細(xì)化:設(shè)計(jì)及確定系統(tǒng)架構(gòu),制定工作計(jì)劃及資源要求
- 構(gòu)建:構(gòu)造產(chǎn)品并演進(jìn)包括需求,架構(gòu),計(jì)劃等,直至產(chǎn)品提交
- 交付:交付給用戶使用
(適用于需求明確穩(wěn)定的場(chǎng)景)
-
迭代模型/迭代開發(fā)方法
演化模型
-
快速應(yīng)用開發(fā)
- 模塊化:業(yè)務(wù)建模、數(shù)據(jù)建模、過程建模、應(yīng)用生成、測(cè)試與交付
增量模型
螺旋模型
-
統(tǒng)一過程/統(tǒng)一開發(fā)方法
- 以原型為基礎(chǔ)+瀑布模型,并且考慮了風(fēng)險(xiǎn)因素
原型模型
-
敏捷開發(fā)方法
噴泉模型
-
模型驅(qū)動(dòng)的開發(fā)方法
V模型
-
基于架構(gòu)的開發(fā)方法
- 測(cè)試活動(dòng)貫穿始終
- 測(cè)試活動(dòng)貫穿始終
模型關(guān)系
構(gòu)件組裝模型
(CBSD)
- 定義構(gòu)件標(biāo)準(zhǔn),根據(jù)標(biāo)準(zhǔn)獲取對(duì)應(yīng)構(gòu)件,組裝形成完整模型
增量和迭代的區(qū)別:
增量-完整功能拆分成小的部分,每次提交每個(gè)部分的最終版本
迭代-完整功能拆分成多個(gè)版本,每次提交完整功能,但新版本伴隨功能的升級(jí)和增減,每一輪迭代都要進(jìn)行測(cè)試與集成
敏捷方法
適應(yīng)性的,以人為本,增量迭代,小步快跑,比較適合小型項(xiàng)目
四大價(jià)值觀:溝通(面對(duì)面溝通)、簡(jiǎn)單(不過度設(shè)計(jì))、反饋(及時(shí)反饋)、改變(接受改變)
十二條過程實(shí)踐規(guī)則:簡(jiǎn)單設(shè)計(jì)、測(cè)試驅(qū)動(dòng)、代碼重構(gòu)、結(jié)對(duì)編程、持續(xù)集成、客戶溝通、版本小型化、代碼歸集體所有、系統(tǒng)隱喻、規(guī)劃策略、規(guī)范代碼、40小時(shí)工作制
實(shí)踐
-
極限編程
- 適用于嚴(yán)格控制費(fèi)用支出的公司
-
水晶方法
- 用最少的紀(jì)律約束團(tuán)隊(duì)
-
開放式源碼
- 源代碼對(duì)團(tuán)隊(duì)成員公開
-
SCRUM
-
明確定義可重復(fù)的方法過程
- 產(chǎn)品待辦事項(xiàng)列表 -> 排序形成迭代的待辦事項(xiàng) -> 每日站會(huì)反饋迭代進(jìn)度 -> 評(píng)審會(huì)議,確認(rèn)驗(yàn)收 -> 回顧會(huì),經(jīng)驗(yàn)總結(jié)
-
-
功用驅(qū)動(dòng)開發(fā)方法
(FDD)- 區(qū)分首席程序員和“類”程序員
-
ASD方法
- 三個(gè)非線性開發(fā)階段:猜測(cè)、合作、學(xué)習(xí)
逆向工程
簡(jiǎn)而言之,逆向工程就是設(shè)計(jì)的恢復(fù)過程
實(shí)現(xiàn)級(jí)
- 包括程序的抽象語法書、符號(hào)表、過程的設(shè)計(jì)表示
結(jié)構(gòu)級(jí)
- 反映程序各部分之間相互依賴關(guān)系,包括調(diào)用關(guān)系、數(shù)據(jù)結(jié)構(gòu)等
功能級(jí)
- 反映程序段之間關(guān)系的信息,包括數(shù)據(jù)和控制流模型
領(lǐng)域級(jí)
- 反映程序所實(shí)現(xiàn)的需求和設(shè)計(jì)信息,如實(shí)體關(guān)系模型(ER圖)等
系統(tǒng)轉(zhuǎn)換
新開發(fā)系統(tǒng)時(shí),需要完全兼容遺留系統(tǒng)的功能模型和數(shù)據(jù)模型
四種應(yīng)對(duì)策略
-
改造–針對(duì)高技術(shù)水平、高業(yè)務(wù)價(jià)值系統(tǒng)
- 對(duì)功能模型和數(shù)據(jù)模型做增強(qiáng)
-
集成–針對(duì)高技術(shù)水平、低業(yè)務(wù)價(jià)值系統(tǒng)
- “孤島”系統(tǒng),信息打通即可
-
淘汰–針對(duì)低技術(shù)水平、低業(yè)務(wù)價(jià)值系統(tǒng)
-
繼承–針對(duì)低技術(shù)水平、高業(yè)務(wù)價(jià)值系統(tǒng)
- 繼承原有系統(tǒng)的功能模型和數(shù)據(jù)模型,做技術(shù)升級(jí)
轉(zhuǎn)換割接方式
-
直接轉(zhuǎn)換
-
老系統(tǒng)下線,同時(shí)新系統(tǒng)上線,中間沒有過渡期
- 成本低,風(fēng)險(xiǎn)高
-
-
并行轉(zhuǎn)換
-
老系統(tǒng)下線前一段時(shí)間,新系統(tǒng)上線,然后老系統(tǒng)下線,新系統(tǒng)正式運(yùn)行
- 成本高、風(fēng)險(xiǎn)低
-
-
分段轉(zhuǎn)換
-
子系統(tǒng)/模塊輪流轉(zhuǎn)換,直至全部替換成老系統(tǒng)
- 成本較低、風(fēng)險(xiǎn)較低
-
數(shù)據(jù)的轉(zhuǎn)換和遷移
-
抽取
- 從老數(shù)據(jù)庫獲取數(shù)據(jù)
-
轉(zhuǎn)換
- 將抽取到的數(shù)據(jù)做一些轉(zhuǎn)換以適配新系統(tǒng)的數(shù)據(jù)庫
-
裝載
- 將轉(zhuǎn)換后的數(shù)據(jù)裝載到新系統(tǒng)的數(shù)據(jù)庫中
系統(tǒng)運(yùn)行與維護(hù)
分類
-
正確性維護(hù)
- 修復(fù)測(cè)試階段未發(fā)現(xiàn)的錯(cuò)誤或bug
-
適應(yīng)性維護(hù)
- 使適應(yīng)新的外部環(huán)境、數(shù)據(jù)環(huán)境、業(yè)務(wù)場(chǎng)景等
-
完善性維護(hù)
- 增加/擴(kuò)充新功能、改善性能
-
預(yù)防性維護(hù)
- 預(yù)防軟硬件環(huán)境變化
總結(jié)
- 上一篇: 中国程序员开发的远程桌面火了!Mac可用
- 下一篇: java必会单词_java必会的英语单词