目錄
一、軟件過(guò)程模型??????
? ? ? ? 1、瀑布模型
? ? ? ? 2、V模型【瀑布變種】
? ? ? ? 3、原型模型
? ? ? ? 4、螺旋模型【原型+瀑布】
? ? ? ? 5、構(gòu)件組裝模型/基于構(gòu)件的開(kāi)發(fā)方法
? ? ? ? 6、快速應(yīng)用開(kāi)發(fā)RAD【瀑布+構(gòu)件組裝】????????????????
? ? ? ? 7、統(tǒng)一過(guò)程/統(tǒng)一開(kāi)發(fā)方法(RUP)
? ? ? ? 8、敏捷開(kāi)發(fā)方法
二、逆向工程? ? ???
三、凈室軟件工程
一、軟件過(guò)程模型??????
? ? ? ? (1)瀑布模型、(2)V模型【瀑布變種】、(3)原型模型、
????????(4)螺旋模型【原型+瀑布】、(5)構(gòu)件組裝模型/基于構(gòu)件的開(kāi)發(fā)方法、
????????(6)快速應(yīng)用開(kāi)發(fā)RAD【瀑布+構(gòu)件組裝】、(7)統(tǒng)一過(guò)程/統(tǒng)一開(kāi)發(fā)方法、
????????(8)敏捷開(kāi)發(fā)方法
? ? ? ? 1、瀑布模型
????????????????
? ? ? ? ? ? ? ? 【特點(diǎn)】:
? ? ? ? ? ? ? ? ? ? ? ? (1)嚴(yán)格區(qū)分階段,每個(gè)階段因果關(guān)系緊密相連
? ? ? ? ? ? ? ? ? ? ? ? (2)只適合需求明確的項(xiàng)目
? ? ? ? ? ? ? ? 【缺點(diǎn)】:
? ? ? ? ? ? ? ? ? ? ? ? (1)軟件需求完整性、正確性難確定
? ? ? ? ? ? ? ? ? ? ? ? (2)嚴(yán)格串行化,很長(zhǎng)時(shí)間才能看到結(jié)果
? ? ? ? ? ? ? ? ? ? ? ? (3)瀑布模型要求每個(gè)階段一次性完全解決該階段工作,這不現(xiàn)實(shí)
? ? ? ? 2、V模型【瀑布變種】
? ? ? ? ? ? ? ? 瀑布的改進(jìn),測(cè)試貫穿于始終,測(cè)試分階段,測(cè)試計(jì)劃提前。
????????????????
? ? ? ? 3、原型模型
? ? ? ? ? ? ? ? 設(shè)計(jì)一個(gè)簡(jiǎn)易系統(tǒng),了解用戶的需求,客戶可以看到他們想要改變的,有利于提高用戶界面的接受程度,適合需求不明確的項(xiàng)目,原型主要用在需求階段。
? ? ? ? ? ? ? ? 原型模型兩個(gè)階段:
? ? ? ? ? ? ? ? (1)原型開(kāi)發(fā)階段:通過(guò)做一個(gè)簡(jiǎn)易原型,向客戶了解具體需求。
? ? ? ? ? ? ? ? (2)目標(biāo)軟件開(kāi)發(fā)階段:通過(guò)獲取到的具體需求,完成目標(biāo)軟件的開(kāi)發(fā)。
? ? ? ? ? ? ? ? 原型相關(guān)模型:
????????????????
????????????????(1)螺旋模型
? ? ? ? ? ? ? ? (2)拋棄型原型(也叫快速原型模型):用戶需求確定之后即不再繼續(xù)開(kāi)發(fā)此原型。
? ? ? ? ? ? ? ? (3)演化型原型:逐步改進(jìn)和細(xì)化原型,將原型進(jìn)化為最終系統(tǒng)。
? ? ? ? ? ? ? ? (4)增量模型:在建立軟件總體設(shè)計(jì)基礎(chǔ)上,采用增量開(kāi)發(fā)方法,使原型成為最終系統(tǒng)。
? ? ? ? ? ? ? ????????? 迭代與增量模型區(qū)別:
?????????????????
?????????????????????????????????
? ? ? ? 4、螺旋模型【原型+瀑布】
? ? ? ? ? ? ? ? 兼顧了快速原型的迭代的特征以及瀑布模型的系統(tǒng)化與嚴(yán)格監(jiān)控。螺旋模型最大的特點(diǎn)在于引入了其他模型不具備的風(fēng)險(xiǎn)分析,使軟件在無(wú)法排除重大風(fēng)險(xiǎn)時(shí)有機(jī)會(huì)停止,以減小損失。同時(shí),在每個(gè)迭代階段構(gòu)建原型是螺旋模型用以減小風(fēng)險(xiǎn)的途徑。螺旋模型更適合大型的昂貴的系統(tǒng)級(jí)的軟件應(yīng)用。
?????????????????
????????????????
(1)制定計(jì)劃:確定目標(biāo),選定實(shí)施方案,弄清項(xiàng)目開(kāi)發(fā)的限制條件;
(2)風(fēng)險(xiǎn)分析:分析評(píng)估所選方案,考慮如何識(shí)別和消除風(fēng)險(xiǎn);
(3)實(shí)施工程:實(shí)施軟件開(kāi)發(fā)和驗(yàn)證;
(4)客戶評(píng)估:評(píng)價(jià)開(kāi)發(fā)工作,提出修正建議,制定下一步計(jì)劃。
? ? ? ? 5、構(gòu)件組裝模型/基于構(gòu)件的開(kāi)發(fā)方法
? ? ? ? ? ? ? ? 【優(yōu)點(diǎn)】易擴(kuò)展、易重用、降低成本、安排任務(wù)更靈活。
? ? ? ? ? ? ? ? 【缺點(diǎn)】構(gòu)件設(shè)計(jì)要求經(jīng)驗(yàn)豐富的架構(gòu)師、設(shè)計(jì)不好的構(gòu)件難重用、強(qiáng)調(diào)重用可能犧牲其他指標(biāo)(如性能)、第三方構(gòu)件質(zhì)量難控制。
? ? ? ? ? ? ? ? 【示例】方艙醫(yī)院、樂(lè)高積木
????????????????構(gòu)件 --> 服務(wù) --> 微服務(wù)(一種標(biāo)準(zhǔn)化程度很高的構(gòu)件)
????????????????
? ? ? ? ? ? ? ? 基于構(gòu)件的軟件工程(CBSE):
? ? ? ? ? ? ? ? ? ? ? ? CBSE體現(xiàn)了【購(gòu)買(mǎi)而不是重新構(gòu)造】的哲學(xué)。
? ? ? ? ? ? ? ? ? ? ? ? 【CBSE構(gòu)件應(yīng)該具備的特征】:
? ? ? ? ? ? ? ? ? ? ? ? (1)可組裝性:所有外部交互必須通過(guò)公開(kāi)定義的接口進(jìn)行。
? ? ? ? ? ? ? ? ? ? ? ? (2)可部署性:構(gòu)件總是二進(jìn)制形式的,能作為一個(gè)獨(dú)立實(shí)體在平臺(tái)上運(yùn)行。
? ? ? ? ? ? ? ? ? ? ? ? (3)文檔化:用戶根據(jù)文檔來(lái)判斷構(gòu)件是否滿足要求。
? ? ? ? ? ? ? ? ? ? ? ? (4)獨(dú)立性:可以在無(wú)其他特殊構(gòu)件的情況下進(jìn)行組裝和部署。
? ? ? ? ? ? ? ? ? ? ? ? (5)標(biāo)準(zhǔn)化:符合某種標(biāo)準(zhǔn)化的構(gòu)件模型。
? ? ? ? ? ? ? ? ? ? ? ? 【構(gòu)件的組裝】:
? ? ? ? ? ? ? ? ? ? ? ? (1)順序組裝:按順序調(diào)用已經(jīng)存在的構(gòu)件,可以用兩個(gè)已經(jīng)存在的構(gòu)件來(lái)創(chuàng)造一個(gè)新的構(gòu)件。
? ? ? ? ? ? ? ? ? ? ? ? (2)層次組裝:被調(diào)用構(gòu)件的 ”提供“ 接口必須和調(diào)用構(gòu)件的 ”請(qǐng)求“ 接口兼容。
? ? ? ? ? ? ? ? ? ? ? ? (3)疊加組裝:多個(gè)構(gòu)件合并成新構(gòu)件,新構(gòu)件整合原構(gòu)件的功能,對(duì)外提供新的接口。
? ? ? ? 6、快速應(yīng)用開(kāi)發(fā)RAD【瀑布+構(gòu)件組裝】????????????????
? ? ?
? ? ? ? 7、統(tǒng)一過(guò)程/統(tǒng)一開(kāi)發(fā)方法(RUP)
????????????????
? ? ? ? ? ? ? ? 初始:(1)定義最終產(chǎn)品視圖和業(yè)務(wù)模型(2)確定系統(tǒng)范圍
? ? ? ? ? ? ? ? 細(xì)化:(1)設(shè)計(jì)及確定系統(tǒng)架構(gòu)(2)制定工作計(jì)劃及資源要求
? ? ? ? ? ? ? ? 構(gòu)造:(1)開(kāi)發(fā)剩余構(gòu)件和應(yīng)用程序功能,把這些構(gòu)件集成為產(chǎn)品,并進(jìn)行詳細(xì)測(cè)試
? ? ? ? ? ? ? ? 移交:(1)確保軟件對(duì)最終用戶是可用的,進(jìn)行β3測(cè)試,制作產(chǎn)品發(fā)布版本
?
? ? ? ? 8、敏捷開(kāi)發(fā)方法
? ? ? ? ? ? ? ? 1、極限編程(XP):價(jià)值觀【交流、樸素、反饋、勇氣】、近螺旋式的開(kāi)發(fā)方法。
? ? ? ? ? ? ? ? 2、水晶方法:提倡 “機(jī)動(dòng)性” 的方法,擁有對(duì)不用類型項(xiàng)目非常有效的敏捷過(guò)程。
? ? ? ? ? ? ? ? 3、迭代式增量軟件開(kāi)發(fā)過(guò)程(SCRUM):側(cè)重于項(xiàng)目管理。
? ? ? ? ? ? ? ? 4、特征驅(qū)動(dòng)開(kāi)發(fā)方法(FDD):認(rèn)為有效的軟件開(kāi)發(fā)需要3要素【人、過(guò)程、技術(shù)】。定義了6種關(guān)鍵的項(xiàng)目角色:項(xiàng)目經(jīng)理、首席架構(gòu)師、開(kāi)發(fā)經(jīng)理、主程序員、程序員和領(lǐng)域?qū)<?/span>。
? ? ? ? ? ? ? ? 5、開(kāi)放式源碼:程序開(kāi)發(fā)人員在地域上分布很廣【其他方法強(qiáng)調(diào)集中辦公】。
? ? ? ? ? ? ? ? 6、自適應(yīng)軟件開(kāi)發(fā)(ASD):其核心是三個(gè)非線性的、重疊的開(kāi)發(fā)階段:猜測(cè)、合作與學(xué)習(xí)。
? ? ? ? ? ? ? ? 7、動(dòng)態(tài)系統(tǒng)開(kāi)發(fā)方法(DSDM):倡導(dǎo)以業(yè)務(wù)為核心。
? ? ? ? ? ? ? ? 敏捷宣言:
? ? ? ? ? ? ? ? ? ? ? ? (1)個(gè)體和交互勝過(guò)過(guò)程和工具(2)可工作的軟件勝過(guò)大量的文檔
? ? ? ? ? ? ? ? ? ? ? ? (3)客戶合作勝過(guò)合同談判(4)響應(yīng)變化勝過(guò)遵循計(jì)劃
? ? ? ? ? ? ? ? 敏捷方法 - XP?(極限編程):
? ? ? ? ? ? ? ? ? ? ? ? 4大價(jià)值觀:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (1)溝通【加強(qiáng)面對(duì)面溝通】(2)簡(jiǎn)單【不過(guò)度設(shè)計(jì)】
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (3)反饋【及時(shí)反饋】(4)勇氣【接受變更的勇氣】
? ? ? ? ? ? ? ? ? ? ? ? 12條過(guò)程實(shí)踐規(guī)則:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (1)簡(jiǎn)單設(shè)計(jì)(2)測(cè)試驅(qū)動(dòng)(3)代碼重構(gòu)(4)結(jié)對(duì)編程
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (5)持續(xù)集成(6)現(xiàn)場(chǎng)客戶(7)發(fā)行版本小型化(8)系統(tǒng)隱喻
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (9)代碼集體所有制(10)規(guī)劃策略(11)規(guī)劃代碼(12)40小時(shí)工作制
? ? ? ? ? ? ? ? 敏捷方法 - SCRUM(迭代式增量軟件開(kāi)發(fā)過(guò)程):
????????????????Scrum的工作流程包括以下幾個(gè)步驟:????????????
????????????????????????1、產(chǎn)品負(fù)責(zé)人確定產(chǎn)品需求和優(yōu)先級(jí),將它們整理成一個(gè)產(chǎn)品待辦列表。
????????????????????????2、Scrum Master和開(kāi)發(fā)團(tuán)隊(duì)一起參加迭代計(jì)劃會(huì)議,確定下一個(gè)迭代的目標(biāo)和計(jì)劃。
????????????????????????3、在迭代周期內(nèi),開(kāi)發(fā)團(tuán)隊(duì)每日進(jìn)行短暫的站立會(huì)議,交流進(jìn)展和遇到的問(wèn)題。
????????????????????????4、在迭代開(kāi)發(fā)結(jié)束時(shí),開(kāi)發(fā)團(tuán)隊(duì)進(jìn)行回顧會(huì)議,評(píng)估完成的工作和改進(jìn)方法。
????????????????????????5、根據(jù)產(chǎn)品待辦列表,確定下一個(gè)迭代的目標(biāo)和計(jì)劃,開(kāi)始新的迭代周期。
????????????????Scrum的優(yōu)勢(shì),
????????????????????????1、更快的交付:通過(guò)迭代和增量的方法,團(tuán)隊(duì)可以更快地交付高質(zhì)量的成果。
? ? ? ? ? ? ? ? ? ? ? ? 2、更好的合作:Scrum鼓勵(lì)團(tuán)隊(duì)成員之間的互動(dòng)和交流,促進(jìn)了更好的合作和協(xié)作。
? ? ? ? ? ? ? ? ? ? ? ? 3、更好的控制:Scrum的固定時(shí)間和可視化進(jìn)度可以幫助團(tuán)隊(duì)更好地控制項(xiàng)目進(jìn)度。
? ? ? ? ? ? ? ? ? ? ? ? 4、更好的風(fēng)險(xiǎn)管理:Scrum的迭代式方法可以幫助團(tuán)隊(duì)更好地管理風(fēng)險(xiǎn)和問(wèn)題。?
二、逆向工程? ? ???
? ? ? ? ?與逆向工程相關(guān)的概念有重構(gòu)、設(shè)計(jì)恢復(fù)、再工程和正向工程。
? ? ? ? (1)重構(gòu)/重組(Restructuring):重構(gòu)是指在【同一抽象級(jí)別】上【轉(zhuǎn)換系統(tǒng)描述形式】。是對(duì)源代碼、數(shù)據(jù)進(jìn)行修改,使其易于修改和維護(hù),以適應(yīng)將來(lái)的變更。
? ? ? ? (2)設(shè)計(jì)恢復(fù)(Design Recovery):設(shè)計(jì)恢復(fù)是指借助工具從已有程序中抽象出有關(guān)數(shù)據(jù)設(shè)計(jì)、總體結(jié)構(gòu)設(shè)計(jì)和過(guò)程設(shè)計(jì)等方面信息。
? ? ? ? (3)逆向工程(Reverse Engineering):逆向工程是分析程序,力圖在比源代碼更高抽象層次上建立程序的表示過(guò)程,逆向工程是設(shè)計(jì)的恢復(fù)過(guò)程。
? ? ? ? (4)正向工程(Forward Engineering):正向工程是指不僅從現(xiàn)有系統(tǒng)中恢復(fù)設(shè)計(jì)信息,而且使用該信息去改變或重構(gòu)現(xiàn)有系統(tǒng),以改善其整體質(zhì)量。
? ? ? ? (5)再工程/重構(gòu)工程(Re-engineering):再工程是對(duì)現(xiàn)有系統(tǒng)的重新開(kāi)發(fā)過(guò)程,包括逆向工程、新需求的考慮過(guò)程和正向工程三個(gè)步驟。
三、凈室軟件工程
? ? ? ? 屬于形式化方法,數(shù)學(xué)理論為基礎(chǔ),以驗(yàn)證為導(dǎo)向,而不是測(cè)試。
? ? ? ? 1、凈室即無(wú)塵室、潔凈室。也就是一個(gè)受控污染級(jí)別的環(huán)境。
? ? ? ? 2、使用盒結(jié)構(gòu)規(guī)約(或形式化方法)進(jìn)行分析和設(shè)計(jì)建模,并且強(qiáng)調(diào)將正確性驗(yàn)證,而不是測(cè)試,作為發(fā)現(xiàn)和消除錯(cuò)誤的主要機(jī)制。
? ? ? ? 3、使用統(tǒng)計(jì)的測(cè)試來(lái)獲取認(rèn)證被交付的軟件的可開(kāi)行所必需的出錯(cuò)率信息。
? ? ? 【技術(shù)手段】
? ? ? ? ? ? ? ? 1、統(tǒng)計(jì)過(guò)程控制下的增量開(kāi)發(fā):控制迭代
? ? ? ? ? ? ? ? 2、基于函數(shù)的規(guī)范和設(shè)計(jì):盒子結(jié)構(gòu)
????????????????????????定義三種抽象層次:行為視圖(黑盒)-> 有限狀態(tài)機(jī)視圖(狀態(tài)盒) -> 過(guò)程視圖(明盒)
? ? ? ? ? ? ? ? 3、正確性驗(yàn)證:凈室工程核心。
? ? ? ? ? ? ? ? 4、統(tǒng)計(jì)測(cè)試和軟件認(rèn)證:使用統(tǒng)計(jì)學(xué)原理,總體太大時(shí)必須采用抽樣方法。
? ? ? ? ?【缺點(diǎn)】
? ? ? ? ? ? ? ? 1、太理論化,正確性驗(yàn)證的步驟比較困難且耗時(shí)。
? ? ? ? ? ? ? ? 2、開(kāi)發(fā)小組不進(jìn)行傳統(tǒng)的模塊測(cè)試,這是不現(xiàn)實(shí)的。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-516499.html
? ? ? ? ? ? ? ? 3、脫胎于傳統(tǒng)軟件工程。不可避免帶有傳統(tǒng)軟件工程的一些弊端。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-516499.html
到了這里,關(guān)于系統(tǒng)架構(gòu)設(shè)計(jì)師-軟件工程(1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!