第一篇:軟件工程學(xué)習(xí)總結(jié)
軟件工程學(xué)習(xí)總結(jié)
通過一個(gè)學(xué)期系統(tǒng)的學(xué)習(xí)軟件工程這門課,結(jié)合與小組成員一起開發(fā)設(shè)備管理系統(tǒng)的經(jīng)驗(yàn),讓我對(duì)軟件的開發(fā)有了更深的了解,學(xué)習(xí)到每一個(gè)軟件的開發(fā)都不僅僅是寫代碼,還有更加復(fù)雜的系統(tǒng)性的開發(fā)流程。
要開發(fā)一個(gè)軟件,就拿設(shè)備管理系統(tǒng)來(lái)說,我們不能一上手就開始寫代碼,這樣會(huì)浪費(fèi)大量的人力物力財(cái)力還得不到理想的結(jié)果,首先我們應(yīng)該先做好市場(chǎng)及需求方面的調(diào)查,了解用戶需求有助于我們開發(fā)更加實(shí)用高效的軟件,做好市場(chǎng)調(diào)研可以讓我們對(duì)成本、利潤(rùn)、市場(chǎng)情況等有深層了解,讓我們做出最優(yōu)決策。
調(diào)查結(jié)束后,我們要寫出詳細(xì)的報(bào)告,包括項(xiàng)目開發(fā)計(jì)劃書、軟件需求規(guī)格說明書等,有了這些調(diào)查結(jié)果,我們才可以系統(tǒng)的,條理的來(lái)編寫我們的軟件。從前我們寫代碼都非常的盲目,雜亂無(wú)章,想到哪寫到哪,浪費(fèi)了大量的時(shí)間,寫的代碼結(jié)構(gòu)也很松散,錯(cuò)誤率高。學(xué)習(xí)軟件工程后,我們學(xué)習(xí)了多種軟件開發(fā)模型,學(xué)會(huì)了模塊化的開發(fā)方法,小組成員每人完成不同的模塊,最后綜合起來(lái),這樣能夠節(jié)省大量的時(shí)間,縮短開發(fā)時(shí)間,使代碼結(jié)構(gòu)更加緊湊,易于管理維護(hù)。如果說代碼是一種工具的話,那么軟件工程就是使用工具的經(jīng)驗(yàn)指導(dǎo),他能指導(dǎo)我們更好的使用這個(gè)工具,發(fā)揮它最大的潛能,幫助我們完成項(xiàng)目,不管使用什么程序語(yǔ)言,軟件工程教給我們的開發(fā)方法都無(wú)條件適用,我們需要認(rèn)真學(xué)習(xí)理解這門課程,它將伴隨我們?cè)诔绦蜷_發(fā)的路上走下去。
第二篇:軟件工程學(xué)習(xí)總結(jié)和體會(huì)2015
西安交通大學(xué)
2015級(jí)研究生課程專題作業(yè)
軟 件
工 程 心 得專 業(yè): 班 級(jí): 學(xué) 號(hào): 姓 名: 電 話:
二○一五年十月
體 會(huì)
一、軟件生命周期各階段任務(wù)目的和主要方法
在分階段總結(jié)之前,首先要明確以下三個(gè)問題:
1、什么是軟件生存周期?
軟件生存周期是指從軟件定義、開發(fā)、使用、維護(hù)到淘汰的全過程。主要包括:
(1)問題定義;(2)可行性研究;(3)需求分析;(4)概要設(shè)計(jì);(5)詳細(xì)設(shè)計(jì);(6)編碼;(7)測(cè)試;
(8)軟件維護(hù)。
2、軟件生存周期為什么劃分成階段?
(1)任何一個(gè)階段的具體任務(wù)不僅獨(dú)立,而且簡(jiǎn)單,便于不同人員分工協(xié)作,從而降低整個(gè)軟件開發(fā)工作的困難程度。
(2)可以降低每個(gè)階段任務(wù)的復(fù)雜程度,簡(jiǎn)化不同階段的聯(lián)系,有利于工程的組織管理,也便于采用良好的技術(shù)方法。
(3)使軟件開發(fā)的全過程以一種有條不紊的方式進(jìn)行,保證軟件的質(zhì)量,特別是提高了軟件的可維護(hù)性。
3、應(yīng)該怎樣來(lái)劃分階段?
(1)每一個(gè)階段的任務(wù)盡可能獨(dú)立;(2)同一階段內(nèi)的任務(wù)性質(zhì)盡可能相同;
(3)每一個(gè)階段任務(wù)的開始和結(jié)束有嚴(yán)格的標(biāo)準(zhǔn)。
下面分別對(duì)各階段進(jìn)行討論:
1、問題定義
目的是將用戶提出的要求具體化、定量化,任務(wù)是確定研制系統(tǒng)的范圍,明確研制的邊界。
方法步驟:
(1)通過調(diào)查研究,了解系統(tǒng)要求;
(2)需求方與開發(fā)方討論確定系統(tǒng)的功能、性能、可靠性、安全保密性等方面的要求,以及費(fèi)用、進(jìn)度等方面的要求。
2、可行性研究
可行性研究說明該軟件開發(fā)項(xiàng)目的實(shí)現(xiàn)在技術(shù)上、經(jīng)濟(jì)上和社會(huì)條件上的可行性,評(píng)述為合理地達(dá)到開發(fā)目的可能選擇的各種方案,目標(biāo)是用最小的代價(jià)在盡可能短的時(shí)間內(nèi)確定問題是否能夠解決。
可行性研究的方法是首先需要進(jìn)一步分析和澄清問題定義;然后分析員導(dǎo)出系統(tǒng)的邏輯模型;最后對(duì)未來(lái)的行動(dòng)方針提出建議。
在導(dǎo)出邏輯模型的過程中,具體要根據(jù)以下四個(gè)方面分析可行性:
(1)經(jīng)濟(jì)可行性:進(jìn)行成本效益分析,評(píng)估項(xiàng)目的開發(fā)成本,估算開發(fā)成本是否會(huì)超過項(xiàng)目預(yù)期的全部利潤(rùn).分析系統(tǒng)開發(fā)對(duì)其它產(chǎn)品或利潤(rùn)的影響。
(2)技術(shù)可行性:根據(jù)客戶提出的系統(tǒng)功能,性能及實(shí)現(xiàn)系統(tǒng)的各項(xiàng)約束條件,從技術(shù)的角度研究實(shí)現(xiàn)系統(tǒng)的可行性。(3)法律可行性:研究在系統(tǒng)開發(fā)過程中可能涉及的各種合同,侵權(quán),責(zé)任以及各種于法律相抵觸的問題。
(4)開發(fā)方案的選擇性:提出并評(píng)價(jià)實(shí)現(xiàn)系統(tǒng)的各種看法方案.從中選出一種用于軟件項(xiàng)目開發(fā)。
3、需求分析
需求分析是為了有效解決用戶的需要而進(jìn)行的一項(xiàng)工程活動(dòng),要考慮的問題是功能需求、數(shù)據(jù)需求、性能需求和接口需求,開發(fā)者承擔(dān)分析任務(wù),核心是用戶。
軟件項(xiàng)目的失敗大半源于需求分析沒有做好,軟件開發(fā)人員首先應(yīng)該明確用戶的意圖和要求,正確獲取用戶的需求,然后形成一個(gè)軟件需求規(guī)格說明,它是軟件開發(fā)的重要基礎(chǔ)。
需求分析的方法:
(1)需求獲取:獲取客戶需求,客戶泛指某個(gè)人或機(jī)構(gòu)部門等,一般方法是調(diào)查,包括訪談座談、問卷、跟班和收集資料,需求規(guī)約可表達(dá)用戶的軟件價(jià)值。
(2)需求分析與規(guī)格說明:建立需求模型,它是用戶需求的圖解,一些常用的模型有:業(yè)務(wù)樹圖、用例圖、活動(dòng)圖。分別用于結(jié)構(gòu)化需求建模、系統(tǒng)業(yè)務(wù)舉例和反映系統(tǒng)工作流程。
(3)需求驗(yàn)證:要驗(yàn)證的主要內(nèi)容有:有效性驗(yàn)證、一致性驗(yàn)證、完整性驗(yàn)證、現(xiàn)實(shí)性驗(yàn)證和可檢驗(yàn)性驗(yàn)證。
需求建模的方法:
(1)關(guān)聯(lián)模型
(2)面向?qū)ο竽P?3)原型方法
4、系統(tǒng)設(shè)計(jì)
此階段主要根據(jù)需求分析的結(jié)果,對(duì)整個(gè)軟件系統(tǒng)進(jìn)行設(shè)計(jì),如系統(tǒng)框架設(shè)計(jì),數(shù)據(jù)庫(kù)設(shè)計(jì)等,一般分為概要設(shè)計(jì)和詳細(xì)設(shè)計(jì),好的軟件設(shè)計(jì)將為軟件程序編寫打下良好的基礎(chǔ)。
概要設(shè)計(jì)是對(duì)需求規(guī)格說明書中提供的軟件系統(tǒng)邏輯模型進(jìn)行進(jìn)一步的分解,從而建立軟件系統(tǒng)的總體結(jié)構(gòu)和各個(gè)子系統(tǒng)間及各個(gè)模塊間的關(guān)系,定義各子系統(tǒng)接口界面和各模塊的功能描述,并根據(jù)設(shè)計(jì)結(jié)果產(chǎn)生概 要設(shè)計(jì)文檔。
概要設(shè)計(jì)在早期有模塊化方法、功能分解方法;在60年代后期提出了面向數(shù)據(jù)流和面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法;近年來(lái)又提出面向?qū)ο蟮脑O(shè)計(jì)方法等。
詳細(xì)設(shè)計(jì)過程根據(jù)概要設(shè)計(jì)形成的結(jié)果對(duì)各個(gè)模塊的內(nèi)部實(shí)現(xiàn)進(jìn)行規(guī)劃設(shè)計(jì),并根據(jù)設(shè)計(jì)結(jié)果產(chǎn)生詳細(xì)設(shè)計(jì)文檔。
詳細(xì)設(shè)計(jì)主要方法是通過采用結(jié)構(gòu)化和面向?qū)ο蟮姆椒◤囊晥D、控制、模型三層模型上細(xì)化概要設(shè)計(jì)的各個(gè)模塊,并完成偽代碼為編碼階段做準(zhǔn)備。
5、編碼和測(cè)試
編碼是將軟件設(shè)計(jì)的結(jié)果轉(zhuǎn)換成計(jì)算機(jī)可執(zhí)行的程序代碼。主要方法是依據(jù)詳細(xì)設(shè)計(jì)文檔實(shí)現(xiàn)設(shè)計(jì)中的算法、功能、接口、數(shù)據(jù)結(jié)構(gòu),采用結(jié)構(gòu)化和面向?qū)ο蠡姆椒ň帉懘a。
編碼過程中要制定統(tǒng)一,符合標(biāo)準(zhǔn)的編寫規(guī)范,以保證程序的可讀性,易維護(hù)性,提高程序的運(yùn)行效率。
軟件設(shè)計(jì)完成后要經(jīng)過嚴(yán)密的測(cè)試,以發(fā)現(xiàn)軟件在整個(gè)設(shè)計(jì)過程中存在的問題并加以糾正。整個(gè)測(cè)試過程分單元測(cè)試、組裝測(cè)試以及系統(tǒng)測(cè)試三個(gè)階段進(jìn)行。
測(cè)試的方法主要有白盒測(cè)試和黑盒測(cè)試兩種。在測(cè)試過程中需要建立詳細(xì)的測(cè)試計(jì)劃并嚴(yán)格按照測(cè)試計(jì)劃進(jìn)行測(cè)試,以減少測(cè)試的隨 意性。
6、軟件維護(hù)
軟件維護(hù)是軟件生命周期中持續(xù)時(shí)間最長(zhǎng)的階段。在軟件開發(fā)完成并投入使用后,由于多方面的原因,軟件不能繼續(xù)適應(yīng)用戶的要求。要延續(xù)軟件的使用壽命,就必須對(duì)軟件進(jìn)行維護(hù)。
軟件的維護(hù)包括糾錯(cuò)性維護(hù)和改進(jìn)性維護(hù)兩個(gè)方面。
二、課程主要收獲
《軟件工程》課程強(qiáng)調(diào)概念和知識(shí)的理解和掌握,側(cè)重軟件項(xiàng)目的分析、設(shè)計(jì)、實(shí)現(xiàn)和維護(hù)的基本技能。比較注意“點(diǎn)”和“面”的結(jié)合,是一門理論性和實(shí)踐性都較強(qiáng)的學(xué)科。作為一名已經(jīng)在IT領(lǐng)域工作十年之后又重返校園的大齡學(xué)生,雖然已經(jīng)不是第一次學(xué)習(xí)這門課程了,去年也剛在單位取得了信息系統(tǒng)項(xiàng)目管理高級(jí)工程師資格,從另一個(gè)側(cè)面對(duì)軟件開發(fā)過程有了更深層次的理解。不過溫故而知新,這次仍然選修這門課,我還是得到了一些新的啟示。最大的收獲就是在我看來(lái),軟件工程與其說是一門課程,不如說是一門思想,是一個(gè)如何去分析和處理問題的過程,應(yīng)該說其范疇已經(jīng)遠(yuǎn)遠(yuǎn)不止局限于該門課程,它已經(jīng)成為了一個(gè)綜合的能夠解決問題的思想集合。
此外,通過對(duì)軟件開發(fā)過程的重學(xué)習(xí),并結(jié)合之前在軟件開發(fā)管理工作中的經(jīng)驗(yàn),我對(duì)自己在軟件開發(fā)主要階段管理工作中的不足有了更進(jìn)一步的認(rèn)識(shí),總結(jié)了相應(yīng)的管理要點(diǎn),具體闡述如下:
1、概要設(shè)計(jì)
主要任務(wù):系統(tǒng)應(yīng)該怎樣做,或概括地說,系統(tǒng)應(yīng)該如何實(shí)現(xiàn)。本階段特點(diǎn):將用戶的具體要求轉(zhuǎn)為抽象的計(jì)算機(jī)軟件設(shè)計(jì)。管理要點(diǎn):
通過分析對(duì)比,從多種可能的實(shí)現(xiàn)方案和軟件結(jié)構(gòu)中選出最佳方案及最合理的,即: 設(shè)想供選擇的方案→推薦最佳方案→選取合理的方案功能分解→ 軟件設(shè)計(jì)結(jié)構(gòu) → 數(shù)據(jù)庫(kù)設(shè)計(jì) 3 確定測(cè)試要求并確定測(cè)試計(jì)劃
作為項(xiàng)目管理者必須從概要設(shè)計(jì)開始就應(yīng)該從全局角度開始把握整個(gè)系統(tǒng)的進(jìn)展,并必須從此階段開始,時(shí)刻從全局觀的問題來(lái)發(fā)現(xiàn)問題,解決問題。
2、詳細(xì)設(shè)計(jì)
主要任務(wù):系統(tǒng)應(yīng)該怎樣具體地做,或概括地說,系統(tǒng)應(yīng)該如何具體地去實(shí)現(xiàn)所有的要求。
本階段特點(diǎn):將抽象的計(jì)算機(jī)軟件設(shè)計(jì)轉(zhuǎn)為形象的,具體的,面向用戶的計(jì)算機(jī)界面設(shè)計(jì)。
管理要點(diǎn):
本階段尚未涉及具體編寫程序,而是要設(shè)計(jì)出程序的“藍(lán)圖”,所以詳細(xì)設(shè)計(jì)的結(jié)果基本上決定了最終的程序代碼的質(zhì)量。邏輯是否正確性能是否滿足要求是否容易閱讀和理解 作為項(xiàng)目管理者在詳細(xì)設(shè)計(jì)階段,應(yīng)始終不忘從一名用戶的使用角度出發(fā),審視每一個(gè)界面的詳細(xì)設(shè)計(jì),以保證設(shè)計(jì)出來(lái)的界面以及程序能夠滿足一般用戶希望將來(lái)的系統(tǒng)能夠通俗易懂,簡(jiǎn)單實(shí)用的要求。
3、編碼
主要任務(wù):用某種程序設(shè)計(jì)語(yǔ)言書寫計(jì)算機(jī)能夠識(shí)別的程序。
本階段特點(diǎn):將詳細(xì)設(shè)計(jì)書的內(nèi)容“翻譯”成計(jì)算機(jī)語(yǔ)言,直接關(guān)系到整個(gè)項(xiàng)目的質(zhì)量。
管理要點(diǎn):
本階段的編碼是設(shè)計(jì)的自然結(jié)果,因此,程序的質(zhì)量主要取決于軟件設(shè)計(jì)的質(zhì)量。但是,程序設(shè)計(jì)語(yǔ)言的特性和編碼途徑也對(duì)程序的以下特性產(chǎn)生深遠(yuǎn)的影響: 程序的可靠性 2 程序的可讀性 3 程序的可測(cè)試性 4 程序的可維護(hù)性
作為項(xiàng)目管理者在編碼階段,必須從把握進(jìn)度與質(zhì)量這兩個(gè)基本方面來(lái)有效地實(shí)施對(duì)項(xiàng)目的管理。首先應(yīng)該根據(jù)項(xiàng)目進(jìn)度計(jì)劃來(lái)合理地安排每一名作業(yè)成員的作業(yè)日程,并且隨時(shí)監(jiān)督每一作業(yè)的進(jìn)展情況,還需要針對(duì)項(xiàng)目的最新變更及時(shí)對(duì)計(jì)劃進(jìn)行調(diào)整,以保證項(xiàng)目的按時(shí)完成。同時(shí),在項(xiàng)目的進(jìn)展過程中還需要通過小組討論,檢查評(píng)審等形式洞察每項(xiàng)作業(yè)的質(zhì)量,以保證項(xiàng)目的保質(zhì)保量完成??梢哉f,本階段是一名項(xiàng)目管理者在項(xiàng)目開發(fā)過程中極為忙碌也異常重要的階段。
4、測(cè)試
主要任務(wù):通過單元測(cè)試和綜合測(cè)試來(lái)保證軟件工程的高質(zhì)量。
本階段特點(diǎn):盡可能早地發(fā)現(xiàn)并糾正差錯(cuò),往往占到軟件開發(fā)總工作量的40%以上,是保證軟件質(zhì)量的關(guān)鍵。
管理要點(diǎn):
軟件測(cè)試在軟件生命周期中橫跨兩個(gè)階段。通常在編寫出每個(gè)模塊之后就對(duì)其作必要的測(cè)試(稱之為單元測(cè)試),模塊的編寫者和測(cè)試者是同一人,編碼和單元測(cè)試屬于軟件生命周期的同一個(gè)階段。在此階段結(jié)束之后,對(duì)軟件系統(tǒng)還應(yīng)該進(jìn)行各種綜合測(cè)試,這是軟件生命周期的另一個(gè)獨(dú)立階段,通常由專門的測(cè)試人員來(lái)承擔(dān)這項(xiàng)工作。
作為項(xiàng)目管理者在編碼階段,必須高度重視軟件測(cè)試工作,甚至可以說應(yīng)該把測(cè)試看作與編寫程序同等重要的任務(wù)來(lái)對(duì)待。在要求每一名開發(fā)人員完成自己分內(nèi)的單元測(cè)試,并且監(jiān)督測(cè)試人員認(rèn)真進(jìn)行各項(xiàng)綜合測(cè)試的同時(shí),應(yīng)該把自己完全當(dāng)成一名本軟件工程的用戶,從用戶的角度以一種高度負(fù)責(zé),甚至近乎苛刻的嚴(yán)格態(tài)度來(lái)對(duì)軟件進(jìn)行徹底的測(cè)試。在本階段通過嚴(yán)把質(zhì)量關(guān)來(lái)確保軟件工程的質(zhì)量。
所以說,尤其在軟件進(jìn)入具體開發(fā)階段后,能否遵循要點(diǎn)進(jìn)行管理是很重要的。
總之,實(shí)際工作當(dāng)中軟件項(xiàng)目為什么會(huì)失???為什么交付日期會(huì)一拖再拖?我覺得項(xiàng)目失敗只有一個(gè)原因:就是項(xiàng)目經(jīng)理不合格。除非這個(gè)項(xiàng)目經(jīng)理在項(xiàng)目開始階段就已經(jīng)提出來(lái)了這個(gè)項(xiàng)目會(huì)失敗,或者是完全屬于項(xiàng)目之外不可抗拒的原因?qū)е率 R苍S還會(huì)有一些我的同行跳出來(lái)說不服,那么請(qǐng)繼續(xù):
難道是新增需求的原因?qū)е率??客戶?huì)讓你新增100個(gè)需求而要你二天交貨嗎?必然是分析設(shè)計(jì)階段沒有充分考慮好可擴(kuò)展性和新增需求導(dǎo)致現(xiàn)在不可控制而失敗的!
難道是程序員人力不足導(dǎo)致?人都沒有到位,怎么會(huì)失敗,多少人做多少人的事,多少人做多少人的計(jì)劃,不會(huì)有失敗。
難道是程序員技能不夠?項(xiàng)目經(jīng)理是如何面試的?怎么在項(xiàng)目失敗了才發(fā)現(xiàn)是程序員技能不夠?有問題早提出來(lái)嘛。
難道測(cè)試人員沒有做好?少來(lái)了,測(cè)試人員只是加了一道保障證明。程序很多流程都通過不了,程序還屬于開發(fā)調(diào)試階段,與測(cè)試人員有什么關(guān)系?
我曾經(jīng)在單位參加一些項(xiàng)目,發(fā)現(xiàn)有這樣一個(gè)概念很多項(xiàng)目經(jīng)理都沒有搞清楚:什么叫開發(fā)階段?我認(rèn)為開發(fā)階段最多只能包括單元測(cè)試這一部分。綜合測(cè)試絕對(duì)不能屬于開發(fā)階段了,也就是說不能到了最后交付階段還有程序流程走不通,程序隨便正常操作都會(huì)失敗。程序隨便正常操作都出現(xiàn)好多bug屬于開發(fā)還沒有完成,絕對(duì)還沒有過單元測(cè)試階段,離綜合測(cè)試和驗(yàn)收階段還早著呢。說白了,還屬于代碼審查階段。
不懂程序設(shè)計(jì)的項(xiàng)目經(jīng)理,往往不注重code開發(fā)人員,其實(shí)這是一個(gè)嚴(yán)重的錯(cuò)誤。軟件的質(zhì)量來(lái)源于什么?由誰(shuí)來(lái)保證?有的項(xiàng)目經(jīng)理說是由測(cè)試人員來(lái)保證,就算測(cè)試人員的測(cè)試用例寫得很詳細(xì),把需求中的每一個(gè)功能點(diǎn)都測(cè)試到了,那最后就沒有問題了嗎?當(dāng)然不是,很多邏輯上的東西要程序員來(lái)保證不出問題的,而測(cè)試人員只是起一個(gè)驗(yàn)證的作用,問題不應(yīng)該由測(cè)試人員來(lái)發(fā)現(xiàn),而應(yīng)該由開發(fā)人員來(lái)發(fā)現(xiàn)。也就是說,我們盡量不要讓測(cè)試人員來(lái)發(fā)現(xiàn)問題。如果第一次測(cè)試有至少25%以上的用例通不過,那說明質(zhì)量控制出了問題。這樣的版本根本就不應(yīng)該拿出來(lái)進(jìn)行測(cè)試。由此可見,軟件的質(zhì)量是由程序員來(lái)保證的,而不是測(cè)試人員。
總的說來(lái),一個(gè)項(xiàng)目的成敗與否,與項(xiàng)目的各個(gè)階段皆有關(guān)系:需求都不清楚,開發(fā)起來(lái)肯定是南轅北轍;分析設(shè)計(jì)不夠好,會(huì)讓程序員難以維護(hù),隨著新增需求的增多,會(huì)導(dǎo)致整個(gè)系統(tǒng)混亂不可控制;編碼不好,整個(gè)系統(tǒng)不穩(wěn)定是必然的,Bug也是抓不盡的;測(cè)試不做好,系統(tǒng)是沒有保證的,少了哪個(gè)環(huán)節(jié)都不行。
所以做軟件項(xiàng)目開發(fā)過程管理工作,我認(rèn)為重點(diǎn)要放在項(xiàng)目計(jì)劃、進(jìn)度控制、質(zhì)量控制、風(fēng)險(xiǎn)預(yù)測(cè)這四個(gè)方面。不要說項(xiàng)目的失敗是因?yàn)樾滦枨笠鸬?一個(gè)沒有新增需求和風(fēng)險(xiǎn)的項(xiàng)目是不存在的,承認(rèn)這一點(diǎn)之后,我們就不會(huì)有很多怨言了。
以下針對(duì)這四個(gè)方面進(jìn)行詳述:
項(xiàng)目計(jì)劃:沒有項(xiàng)目計(jì)劃,那失敗還有什么話好說?大家都知道凡事預(yù)則立,不預(yù)則廢。項(xiàng)目計(jì)劃一定要包括這幾方面的內(nèi)容:各階段里程碑時(shí)間點(diǎn),各個(gè)里程碑的輸出結(jié)果,風(fēng)險(xiǎn)預(yù)測(cè),意外應(yīng)對(duì)。計(jì)劃時(shí)間一定要提前于交貨時(shí)間,并注意風(fēng)險(xiǎn)意外是否留下足夠的應(yīng)對(duì)時(shí)間和處理方案。
進(jìn)度監(jiān)控:對(duì)每個(gè)階段把握好,每個(gè)階段要完成的任務(wù)一定要完成,如果完不成,是什么原因?qū)е碌??我們的?yīng)對(duì)策略是什么?我們要信任別人,但是不要忘記鎖門。同樣的,別人說完成了,你不能就認(rèn)為別人完成了,要看到結(jié)果才能證明完成了。有的項(xiàng)目經(jīng)理說,我也進(jìn)度監(jiān)控啦,他說完成了就完成了,誰(shuí)想到?jīng)]有完成?到底是程序員不誠(chéng)實(shí)還是項(xiàng)目沒有管理好?你沒有鎖好門,能怨別人偷你東西嗎?還有一種情況就是不懂如何鎖門,根本就不知道這一階段的輸出結(jié)果是什么?當(dāng)然進(jìn)度監(jiān)控就是一句空話了。
質(zhì)量監(jiān)控:也應(yīng)該是分階段進(jìn)行的,每一個(gè)階段的質(zhì)量監(jiān)控內(nèi)容有所不同。
需求分析階段的質(zhì)量監(jiān)控就是完整而又正確的理解用戶需求,需求是否清楚可懂,寫用例的測(cè)試人員是否明白需求?
分析設(shè)計(jì)階段的質(zhì)量監(jiān)控就是設(shè)計(jì)是否完全滿足需求?這個(gè)設(shè)計(jì)方案是否滿足以后新功能的擴(kuò)展?以及是否有考慮到新功能的意外和設(shè)備環(huán)境,運(yùn)行平臺(tái)的變化?
編碼階段的質(zhì)量監(jiān)控就是變量命名是否規(guī)范?代碼是否可讀?是否有詳細(xì)的注釋?是否有重復(fù)代碼?要知道重復(fù)代碼是必然會(huì)造成系統(tǒng)不穩(wěn)定,bug成群的??勺儾糠值拇a和不可變部分的代碼是否分離。要知道上面講的每一部分如果沒有做好,都會(huì)導(dǎo)致后期的產(chǎn)品出現(xiàn)大量問題。代碼階段還有一個(gè)重要的工作就是做code review代碼公開評(píng)審,你自己發(fā)現(xiàn)不了的問題別人也許就看得見。
單元測(cè)試階段的質(zhì)量監(jiān)控任務(wù)就是單元測(cè)試代碼是否測(cè)試通過?代碼覆蓋是否完全?單元測(cè)試報(bào)告提交情況如何?單元測(cè)試用例有沒有做好? 綜合測(cè)試階段質(zhì)量監(jiān)控任務(wù)當(dāng)然就是看用例是否完全?是否全部真正執(zhí)行?測(cè)試報(bào)告有沒有寫好?
回歸測(cè)試當(dāng)然得看以前測(cè)試的Bug是否還在,如果還在,當(dāng)然是無(wú)條件打回去重新開發(fā)。
測(cè)試階段最主要的監(jiān)控就是看用例是否真正執(zhí)行,是否有安全性測(cè)試?破壞性測(cè)試?異常測(cè)試,壓力測(cè)試?
以上的每個(gè)階段最好完成了才進(jìn)行下一階段,否則會(huì)造成混亂出現(xiàn)問題的,造成想并行進(jìn)行節(jié)約時(shí)間卻反而浪費(fèi)了時(shí)間。
以上就是我重學(xué)《軟件工程》并結(jié)合實(shí)際工作經(jīng)驗(yàn)所得到的啟示,不妥之處請(qǐng)劉老師批評(píng)指正!
第三篇:軟件工程總結(jié)
軟件工程課程總結(jié)
摘要:
計(jì)算機(jī)是20世紀(jì)最重大的科學(xué)技巧成就之一,使當(dāng)代社會(huì)的經(jīng)濟(jì)、軍事、科研、教育、服務(wù)等方面在概念和技巧上發(fā)生了性的變化,對(duì)人類社會(huì)的進(jìn)步已經(jīng)并還將產(chǎn)生極為深刻的影響。目前,計(jì)算機(jī)是世界各發(fā)達(dá)國(guó)度劇烈競(jìng)爭(zhēng)的科學(xué)技巧領(lǐng)域之一。
電子計(jì)算機(jī)早期功效主要是計(jì)算,后來(lái)已遠(yuǎn)遠(yuǎn)超越單純計(jì)算的功效,還可模擬、思維、進(jìn)行自適應(yīng)反饋處理等等,把它叫做“電腦”更為合實(shí)際。由于電子計(jì)算機(jī)功效的飛躍性發(fā)展,應(yīng)用于生產(chǎn)和生活的各個(gè)方面,直接和顯著地提高了生產(chǎn)、工作和生活的效率、節(jié)奏和水平,在軟科學(xué)研究和應(yīng)用中它也起著關(guān)鍵作用,因此它已被公認(rèn)是現(xiàn)代技巧的神經(jīng)中樞,是未來(lái)信息社會(huì)的心臟和錄魂。計(jì)算機(jī)學(xué)科分為四個(gè)領(lǐng)域,分別是計(jì)算機(jī)科學(xué),計(jì)算機(jī)工程,軟件工程和信息系統(tǒng)。
正文:
軟件工程是研究和應(yīng)用如何以系統(tǒng)性的、規(guī)范化的、可定量的過程化方法去開發(fā)和維護(hù)軟件,以及如何把經(jīng)過時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來(lái)的學(xué)科。包括項(xiàng)目管理,分析,設(shè)計(jì),程序的編寫,測(cè)試和質(zhì)量控制。它涉及到程序設(shè)計(jì)語(yǔ)言、數(shù)據(jù)庫(kù)、軟件開發(fā)工具、系統(tǒng)開發(fā)平臺(tái)、標(biāo)準(zhǔn)、設(shè)計(jì)模式等方面。
學(xué)了《軟件工程》這門課程和一些有關(guān)資料后,感覺一些東西都曾經(jīng)接觸過,但在實(shí)際工作中有些理論要完全遵循可能還有些障礙,軟件工程只是提供了理論上的一些結(jié)論,但對(duì)項(xiàng)目的具體可操作性的規(guī)范的制定方面卻做的很少,《軟件工程》發(fā)展了幾十年,光是開發(fā)模型就達(dá)到了10多種,對(duì)不同的項(xiàng)目采用合適的開發(fā)模式,有些項(xiàng)目在不同的開發(fā)階段可能還要轉(zhuǎn)換開發(fā)模式,把它們靈活的應(yīng)用到實(shí)際中還是很困難的。
軟件技術(shù)是信息技術(shù)產(chǎn)業(yè)的核心之一,軟件技術(shù)的發(fā)展是與信息技術(shù)產(chǎn)業(yè)的發(fā)展互相促進(jìn)的。當(dāng)今世界,信息技術(shù)正處于新一輪重大技術(shù)突破的前夜。預(yù)計(jì)今后 20~30 年是信息科學(xué)技術(shù)的變革突破期,可能導(dǎo)致 21 世紀(jì)下半葉一場(chǎng)新的信息技術(shù)革命。近年來(lái),從 IT 界到一些國(guó)家首腦,都高度關(guān)注以物聯(lián)網(wǎng)為標(biāo)志的新一輪信息技術(shù)的發(fā)展態(tài)勢(shì),認(rèn)為這是繼 20 世紀(jì) 80 年代 PC 機(jī)、90 年代互聯(lián)網(wǎng)、移動(dòng)通信網(wǎng)之后,將引發(fā) IT 業(yè)突破性發(fā)展的第三次 IT 產(chǎn)業(yè)化浪潮。每一次重大的技術(shù)變革都會(huì)引起企業(yè)間、產(chǎn)業(yè)間甚至國(guó)家間競(jìng)爭(zhēng)格局的重大變化,也促進(jìn)了軟件技術(shù)與軟件產(chǎn)業(yè)的重大變革與發(fā)展。
近年來(lái),信息技術(shù)、軟件技術(shù)、軟件系統(tǒng)與軟件產(chǎn)業(yè)的發(fā)展備受關(guān)注,已有不少論述、分析與判斷。近10 年內(nèi)網(wǎng)絡(luò)技術(shù)經(jīng)歷寬帶化、移動(dòng)化和三網(wǎng)融合將走向基于 Ipv6 的下一代互聯(lián)網(wǎng),2010 年 1 月,國(guó)家 863 計(jì)劃信息技術(shù)領(lǐng)域辦公室和國(guó)家 863 計(jì)劃信息技術(shù)領(lǐng)域?qū)<医M,在上海舉辦“信息-物理融合系統(tǒng) CPS發(fā)展戰(zhàn)略論壇”,提出“信息-物理融合系統(tǒng) CPS 是一個(gè)綜合計(jì)算、網(wǎng)絡(luò)和物理環(huán)境的多維復(fù)雜系統(tǒng),是信息和物理世界的深度的融合交互,可實(shí)現(xiàn)大型工程系統(tǒng)的實(shí)時(shí)感知、動(dòng)態(tài)控制和信息服務(wù),使系統(tǒng)更加可靠、高效與實(shí)時(shí)協(xié)同,使得人類物理現(xiàn)實(shí)和虛擬邏輯逐步融合,具有重要而廣泛的應(yīng)用前景。業(yè)界關(guān)于軟件工程的代表性觀點(diǎn)創(chuàng)立與使用健全的工程原則,以便經(jīng)濟(jì)地獲得可靠且高效率的軟件。應(yīng)用系統(tǒng)化,遵從原則,可被計(jì)量的方法來(lái)發(fā)展、操作及維護(hù)軟件;也就是把工程應(yīng)用到軟件上。與開發(fā)、管理及更新軟件產(chǎn)品有關(guān)的理論、方法及工具。一種知識(shí)或?qū)W科,目標(biāo)是生產(chǎn)品質(zhì)良好、準(zhǔn)時(shí)交貨、符合預(yù)算,滿足用戶所需的軟件。實(shí)際應(yīng)用科學(xué)知識(shí)在設(shè)計(jì)、建構(gòu)電腦程序,與相伴而來(lái)所產(chǎn)生的文件,以及后續(xù)的操作和維護(hù)上。
6使用與系統(tǒng)化生產(chǎn)和維護(hù)軟件產(chǎn)品有關(guān)之技術(shù)與管理的知識(shí),使軟件開發(fā)與修改可在有限的時(shí)間與費(fèi)用下進(jìn)行。
7建造由工程師團(tuán)隊(duì)所開發(fā)之大型軟件系統(tǒng)有關(guān)的知識(shí)學(xué)科。對(duì)軟件分析、設(shè)計(jì)、實(shí)施及維護(hù)的一種系統(tǒng)化方法。系統(tǒng)化地應(yīng)用工具和技術(shù)于開發(fā)以計(jì)算機(jī)為主的應(yīng)用。
10軟件工程是關(guān)于設(shè)計(jì)和開發(fā)優(yōu)質(zhì)軟件。
《軟件工程》是一門綜合性和實(shí)踐性很強(qiáng)的核心課程,它屬于是一門交叉學(xué)科,包含有:軟件開發(fā)技術(shù)(軟件開發(fā)方法學(xué)、軟件開發(fā)過程、軟件工具和軟件工程環(huán)境)、軟件工程管理(軟件管理學(xué)、軟件經(jīng)濟(jì)學(xué)、軟件心理學(xué))。主要內(nèi)容包括軟件工程概述、可行性分析、需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、面向?qū)ο蠓治雠c設(shè)計(jì)、編碼、軟件測(cè)試、項(xiàng)目計(jì)劃與管理。
本課程是面向準(zhǔn)備從事軟件開發(fā)的畢業(yè)生而開設(shè)的一門專業(yè)課程。針對(duì)計(jì)算機(jī)教學(xué)中軟件工程這一薄弱環(huán)結(jié),結(jié)合目前軟件開發(fā)商對(duì)人才的要求,對(duì)計(jì)算機(jī)專業(yè)的畢業(yè)生進(jìn)行軟件工程強(qiáng)化培訓(xùn),目的是使畢業(yè)生能夠了解和掌握軟件工程的基本理論和方法,并在實(shí)際軟件開發(fā)中運(yùn)用這些方法。
我理解,軟件工程是按照工程學(xué)的管理方式,有組織、有計(jì)劃的,在一定的質(zhì)量基礎(chǔ)、時(shí)間限度和成本范圍內(nèi),實(shí)現(xiàn)功能明確的軟件系統(tǒng)。而且,軟件工程在企業(yè)范圍內(nèi)運(yùn)行,一定需要企業(yè)資源的支持,要與企業(yè)的經(jīng)營(yíng)、決策、管理體系聯(lián)系在一起,才能夠被踏踏實(shí)實(shí)的落實(shí)下來(lái)。
軟件工程項(xiàng)目是一個(gè)需要一步一步的計(jì)算,分析思考而來(lái)的,需要不斷思考,研究不斷進(jìn)步,軟件業(yè)作為一個(gè)服務(wù)業(yè),要想得到發(fā)展,首先必須形成一個(gè)對(duì)軟件服務(wù)有迫切需要的市場(chǎng)。其次,這個(gè)市場(chǎng)中的消費(fèi)者必須具備足夠的購(gòu)買力。軟件的消費(fèi)群體簡(jiǎn)單一點(diǎn),可以分為個(gè)體消費(fèi)和企業(yè)消費(fèi)。中國(guó)的企業(yè)群體,數(shù)量龐大,但是質(zhì)量不高。上規(guī)模的企業(yè)極少。國(guó)內(nèi)目前能夠形成比較大規(guī)模的獨(dú)立市場(chǎng)的,肯定是小規(guī)模的軟件系統(tǒng)。
隨著信息化時(shí)代的到來(lái)其地位越來(lái)越受到人們的重視,軟件工程從一個(gè)學(xué)科,或是某一個(gè)研究方向來(lái)說,人員僅僅是過程,方法的執(zhí)行者,所以人員素質(zhì)往往被忽略,軟件工程是一門實(shí)踐性很強(qiáng)的學(xué)科,所以在實(shí)際的軟件研究過程中,人員的素質(zhì)占有很重要的地位。要有出色的軟件問世,研發(fā)人員的素質(zhì)至關(guān)重要!
作為軟件工程的學(xué)習(xí)者應(yīng)該不斷創(chuàng)新,不斷嘗試、實(shí)踐,不斷研究和學(xué)習(xí),中國(guó)的軟件工程技術(shù)依舊滯后于國(guó)外一些軟件工程技術(shù),作為新一代的學(xué)習(xí)者應(yīng)該擔(dān)當(dāng)起振興起中國(guó)軟件事業(yè),使中國(guó)科技得到高速發(fā)展!
現(xiàn)在已經(jīng)是信息化時(shí)代,信息化潮流不斷涌現(xiàn),想要掌握主動(dòng)權(quán)就是掌握信息化的發(fā)展方向,這就需要我們不斷學(xué)習(xí),時(shí)間,研究,學(xué)習(xí)國(guó)外的先進(jìn)技術(shù),轉(zhuǎn)變自己的技術(shù),然后融合,創(chuàng)新。
軟件技術(shù)不是一成不變的,是隨著社會(huì)的進(jìn)步的不斷進(jìn)步,不需要不斷的創(chuàng)新,不斷的改善的,需要我們不斷的學(xué)習(xí),不斷的研究,不斷進(jìn)步。
第四篇:軟件工程總結(jié)
1.Software is a product and can be manufactured using the same technologies used for other engineering artifacts Answer: b 2.WebApps are a mixture of print publishing and software development, making their development outside the realm of software engineering practice.Answer: b 3.Software engineering umbrella activities are only applied during the initial phases of software development projects.Answer: b 4.Planning ahead for software reuse reduces the cost and increases the value of the systems into which they are incorporated.Answer: a 5.The essence of software engineering practice might be described as understand the problem, plan a solution, carry out the plan, and examine the result for accuracy.Answer: a 6.In agile process models the only deliverable work product is the working program.Answer: b 7.A most software development projects are initiated to try to meet some business need.Answer: a 8.In general software only succeeds if its behavior is consistent with the objectives of its designers.Answer: b 9.Software processes can be constructed out of pre-existing software patterns to best meet the needs of a software project.Answer: a 10.Process technology tools allow software organizations to compress schedules by skipping unimportant activities.Answer: b 11.It is generally accepted that one cannot have weak software processes and create high quality end products.Answer: a 1.Requirements engineering is a generic process that does not vary from one software project to another.Answer: a 2.A stakeholder is anyone who will purchase the completed software system under development.Answer: b 3.It is relatively common for different customers to propose conflicting requirements, each arguing that his or her version is the right one.Answer: a 4.Developers and customers create use-cases to help the software team understand how different classes of end-users will use functions.Answer: a 5.Use-case actors are always people, never system devices.Answer: b 6.Analysis patterns facilitate the transformation of the analysis model into a design model by suggesting reliable solutions to common problems.Answer: a 7.In win-win negotiation, the customer’s needs are met even though the developer’s need may not be.Answer: b 8.In requirements validation the requirements model is reviewed to ensure its technical feasibility.Answer: b
1.Object-oriented domain analysis is concerned with the identification and specification of reusable capabilities within an application domain.Answer: a 2.In structured analysis models focus on the structure of the classes defined for a system along with their interactions.Answer: b 3.Creation and refinement of use cases if an important part of scenario-based modeling.Answer: a 4.It is important to consider alternative actor interactions when creating a preliminary use case.Answer: b 5.Brainstorming is one technique that may be used to derive a complete set of use case exceptions.Answer: a 6.In many cases there is no need to create a graphical representation of a usage scenario.Answer: a 7.One or more attributes of a data object must be defined as a key to allow the location of an instance of the data object.Answer: a 8.Attributes are chosen for an object by examining the problem statement and identifying the entities that appear to be related.Answer: b 9.An analysis package involves the categorization of analysis model elements into useful groupings.Answer: a 10.The data flow diagram must be augmented by min-spec that can serve as a guide the design of the software component that will implement the process.Answer: a 11.The UML sequence diagram show the order in which system events are processed.Answer: b 12.Analysis patterns are discovered, they are not explicitly created.Answer: a 13.It is not possible to justify the time required for WebApp requirements analysis.Answer: b 14.UML activity diagrams can be used to represent the user observable functionality delivered by the WebApp as well as the operations contained in each analysis class.Answer: a 15.Configuration analysis focuses on the architecture of the user’s web browsing environment.Answer: b 16.Content objects are extracted from use cases by examining the scenario description for direct or indirect content references.Answer: a 1.With thorough testing it is possible to remove all defects from a program prior to delivery to the customer.Answer: b 2.Program flow graphs are identical to program flowcharts.Answer: b 3.The cyclomatic complexity of a program can be computed directly from a PDL representation of an algorithm without drawing a program flow graph.Answer: a 4.Graph-based testing methods can only be used for object-oriented systems Answer: b 5.Equivalence testing divides the input domain into classes of data from which test cases can be derived to reduce the total number of test cases that must be developed.Answer: a 6.Boundary value analysis can only be used to do white-box testing.Answer: b 7.Orthogonal array testing enables the test designer to maximize the coverage of the test cases devised for relatively small input domains.Answer: a 8.Client/server architectures cannot be properly tested because network load is highly variable.Answer: b 1.The best representation of system architecture is an operational software prototype.Answer: b 2.The architectural representations can be an enabler for communication among project stakeholders.Answer: a 3.An architectural description is often documented using an architecture template.Answer: b 4.An architectural genre will often dictate the architectural approach that may used for the structure to be built.Answer: a 5.Before an architectural pattern can be chosen for use in a specific system it must have a code implementation to facilitate its reuse.Answer: b 6.Once selected, archetypes always need to be refined further as architectural design proceeds.Answer: a 7.Quantitative methods for assessing the quality of proposed architectural designs are readily available.Answer: b
Chapter 10 Self-Check Quiz
1.In the most general sense a component is a modular building block for computer software.a.True b.False
Answer: a(Section 10.1)
2.In the context of object-oriented software engineering a component contains
a.attributes and operations b.instances of each class c.roles for each actor(device or user)d.set of collaborating classes
Answer: d(Section 10.1.1)
3.In traditional software engineering modules must serve in which of the following roles?
a.Control component b.Infrastructure component c.Problem domain component d.All of the above
Answer: d(Section 10.1.2)
4.Software engineers always need to cerate components from scratch in order to meet customer expectations fully.a.True b.False
Answer: b(Section 10.1.3)
5.Which of the following is not one of the four principles used to guide component-level design?
a.Dependency Inversion Principle b.Interface Segregation Principle c.Open-Closed Principle d.Parsimonious Complexity Principle
Answer: d(Section 10.2.1)
6.The use of stereotypes can help identify the nature of components at the detailed design level.a.True b.False
Answer: a(Section 10.2.2)
7.Classes and components that exhibit functional, layer, or communicational cohesion are relatively easy to implement, test, and maintain.a.True b.False
Answer: a(Section 10.2.3)
8.Software coupling is a sign of poor architectural design and can always be avoided in every system.a.True b.False
Answer: b(Section 10.2.4)
9.WebApp content design at the component level focuses on content objects and the manner in which they interact.a.True b.False
Answer: b(Section 10.4.1)
10.A WebApp functional architecture describes the key functional components and how they interact with each other.a.True b.False
Answer: a(Section 10.4.2)
11.Which of these is a graphical notation for depicting procedural detail?
a.box diagram b.decision table c.ER diagram d.flowchart
Answer: d(Section 10.5.1)
12.A decision table should be used
a.to document all conditional statements b.to guide the development of the project management plan c.only when building an expert system d.when a complex set of conditions and actions appears in a component
Answer: d(Section 10.5.2)
13.A program design language(PDL)is often a
a.combination of programming constructs and narrative text b.legitimate programming language in its own right c.machine readable software development language d.useful way to represent software architecture
Answer: a(Section 10.5.3)
14.In component-based software engineering, the development team examines the requirements to see which are amenable to composition, rather than construction, before beginning detailed design tasks.a.True b.False
Answer: a(Section 10.6)
15.Which of the following is not one of the major activities of domain engineering?
a.analysis b.construction c.dissemination d.validation
Answer: d(Section 10.6.1)
16.Which of the following factors would not be considered during component qualification?
a.application programming interface(API)b.development and integration tools required c.exception handling d.testing equipment required
Answer: d(Section 10.6.2)
17.Which is the following is a technique used for component wrapping?
a.black-box wrapping b.clear-box wrapping c.gray-box wrapping d.white-box wrapping
Answer: b(Section 10.6.2)
18.Which of the following is not one of the issues that form a basis for design for reuse?
a.object-oriented programming b.program templates c.standard data d.standard interface protocols
Answer: a(Section 10.6.3)
19.In a reuse environment, library queries are often characterized using the ________ element of the 3C Model.a.concept b.content c.context d.all of the above
Answer: c(Section 10.6.4)
1.The importance of software design can be summarized in a single word a.b.c.d.Answer: d(Section 8.1)
2.Which of the following is not a characteristic common to all design methods?
a.configuration management b.functional component representation c.quality assessment guidelines d.refinement heuristics
Answer: a(Section 8.2.2)
3.Which of the following can be used to represent the architectural design of a piece of software?
a.Dynamic models b.Functional models c.Structural models d.All of the above
Answer: d(Section 8.3.2)
4.Design patterns are not applicable to the design of object-oriented software?
a.True b.False
Answer: b(Section 8.3.3)
5.Since modularity is an important design goal it is not possible to have too many modules in a proposed design.a.True b.False
Answer: b(Section 8.3.5)
6.Information hiding makes program maintenance easier by hiding data and procedure from unaffected parts of the program.accuracy complexity efficiency quality
a.True b.False
Answer: a(Section 8.3.6)
7.Cohesion is a qualitative indication of the degree to which a module
a.can be written more compactly.b.focuses on just one thing.c.is able to complete its function in a timely manner.d.is connected to other modules and the outside world.Answer: b(Section 8.3.7)
8.Coupling is a qualitative indication of the degree to which a module
a.can be written more compactly.b.focuses on just one thing.c.is able to complete its function in a timely manner.d.is connected to other modules and the outside world.Answer: d(Section 8.3.7)
9.When using structured design methodologies the process of stepwise refinement is unnecessary.a.True b.False
Answer: b(Section 8.3.8)
10.Software designs are refactored to allow the creation of software that is easier to integrate, easier to test, and easier to maintain.a.True b.False
Answer: a(Section 8.3.10)
11.Which of the following is not one of the five design class types
a.Business domain classes b.Entity classes c.Process classes d.User interface classes
Answer: b(Section 8.3.13)
12.Which design model elements are used to depict a model of information represented from the user’s view?
a.Architectural design elements b.Component-level design elements c.Data design elements d.Interface design elements
Answer: c(Section 8.4.1)
13.Which design is equivalent to the floor plan of a house?
a.Architectural design b.Component-level design c.Data design d.Interface design
Answer: a(Section 8.4.2)
14.Which design model is equivalent to the detailed drawings of the access points and external utilities for a house?
a.Architectural design b.Component-level design c.Data design d.Interface design
Answer: d(Section 8.4.3)
15.Which design model is equivalent to a set of detailed drawings for each room in a house?
a.Architectural design b.Component-level design c.Data design d.Interface design
Answer: b(Section 8.4.4)
16.The deployment design elements specify the build order for the software components.a.True b.False
Answer: b(Section 8.4.5)
第五篇:軟件工程總結(jié)
第一章軟件與軟件工程的概念
軟件的概念:軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,軟件包括程序,數(shù)據(jù),及其相關(guān)文檔的完整集合。程序是按事先設(shè)計(jì)的功能和性能要求執(zhí)行的指令序列。數(shù)據(jù)是使程序能夠正確地處理信息的數(shù)據(jù)結(jié)構(gòu)。文檔是與程序開發(fā),維護(hù)和使用有關(guān)的圖文資料。
程序的最小單位是函數(shù)及子程序,程序與數(shù)據(jù)是分離的,在面向?qū)ο蟪绦蛟O(shè)計(jì)時(shí)代,程序的最小單位是類,在類中封裝了相關(guān)的數(shù)據(jù)及指令代碼。
軟件的特性,判斷正誤:1.軟件是無(wú)形的、不可見的邏輯實(shí)體,因此,軟件是無(wú)法描述的。(錯(cuò))
2、軟件的開發(fā)特性是指軟件需要大量手工勞動(dòng),難以自動(dòng)化生產(chǎn)。(對(duì))
3、有缺陷的軟件就是廢品。(錯(cuò))
4、軟件的生產(chǎn)指的是軟件的復(fù)制。(錯(cuò))
5、由于軟件的開發(fā)充滿人的個(gè)性特點(diǎn),因此管理并不決定軟件開發(fā)的成敗(錯(cuò))。
6、軟件的開發(fā)環(huán)境往往就是軟件的運(yùn)行環(huán)境,或者與其兼容。(對(duì))
7、合格的軟件產(chǎn)品不需要維護(hù),軟件需要維護(hù)說明其質(zhì)量不合格。(錯(cuò))
8、軟件可以不斷改進(jìn),因此軟件不需要廢棄。(錯(cuò))
軟件的分類:1,系統(tǒng)軟件:能與計(jì)算機(jī)硬件緊密配合在一起,使計(jì)算機(jī)系統(tǒng)各個(gè)部件,相關(guān)的軟件和數(shù)據(jù)協(xié)調(diào),高效的工作的軟件。2,應(yīng)用軟件,是在系統(tǒng)軟件的支持下,在特定區(qū)域內(nèi)開發(fā),為特定目的服務(wù)的一類軟件。3,支撐軟件,也叫工具軟件,是協(xié)助用戶開發(fā)軟件的工具性軟件。4,可復(fù)用軟件,最初實(shí)現(xiàn)的典型的可復(fù)用軟件是各種標(biāo)準(zhǔn)函數(shù)庫(kù),通常是由計(jì)算機(jī)廠商提供的系統(tǒng)軟件的一部分。
IEEE給出的定義:軟件工程是開發(fā),運(yùn)行,維護(hù)和修復(fù)軟件的系統(tǒng)方法。軟件的定義:計(jì)算機(jī)程序,方法,規(guī)則,相關(guān)的文檔資料一集在計(jì)算機(jī)上運(yùn)行時(shí)所必需的數(shù)據(jù)。
軟件危機(jī)的典型表現(xiàn)
1、成本太高,預(yù)算不準(zhǔn)
2、超過預(yù)計(jì)時(shí)間
3、軟件質(zhì)量標(biāo)準(zhǔn)不明確
4、生產(chǎn)率低
5、缺乏文檔資料,難以維護(hù)。原因:1,缺乏軟件開發(fā)的經(jīng)驗(yàn)和有關(guān)軟件開發(fā)數(shù)據(jù)的積累,使得開發(fā)工作的計(jì)劃很難制定。2.軟件人員與用戶的交流存在障礙,除了知識(shí)背景的差異,缺少合適的交流方法及需求描述工具。3,軟件開發(fā)過程不規(guī)范,缺少方法和規(guī)范的指導(dǎo)。4,隨著軟件規(guī)模的增大,其復(fù)雜性往往會(huì)呈指數(shù)級(jí)升高。5,缺少有效的軟件評(píng)測(cè)手段,提交用戶的軟件質(zhì)量差。
軟件危機(jī)發(fā)生的主要原因有:
1、遇到了無(wú)法解決的高難度技術(shù)問題(不是)
2、無(wú)法招聘到足夠的編程高手(不是)
3、軟件人員與用戶互相不理解(是)
4、計(jì)劃和管理不科學(xué)、落實(shí)不力(是)
5、軟件質(zhì)量標(biāo)準(zhǔn)不明確(是)
軟件的質(zhì)量特性包括(選擇)問題1:
1、功能性
2、可靠性
3、使用性
4、經(jīng)濟(jì)性(不包括)
軟件的質(zhì)量特性包括(選擇)問題2:
1、效率
2、可維護(hù)性
3、可移植性
4、經(jīng)濟(jì)性(不包括)
軟件工程的目標(biāo)是運(yùn)用先進(jìn)的軟件開發(fā)技術(shù)和管理方法來(lái)提高軟件的質(zhì)量和生產(chǎn)率,也就是要以較短的周期,較低的成本生產(chǎn)出高質(zhì)量的軟件產(chǎn)品,并最終實(shí)現(xiàn)軟件的工業(yè)化生產(chǎn)。軟件生存期:軟件的孕育,誕生,成長(zhǎng),成熟,衰亡的生存過程。軟件生存期由軟件定義,軟件開發(fā)和運(yùn)行維護(hù)三個(gè)時(shí)期組成,每個(gè)時(shí)期又可劃分為若干個(gè)階段。
2、軟件定義時(shí)期的任務(wù)主要任務(wù)是解決“做什么”的問題,確定工程的總目標(biāo)和可行性;實(shí)現(xiàn)工程目標(biāo)的策略及系統(tǒng)功能;估計(jì)需要的資源和成本;制訂工程進(jìn)度表。通常又分為3個(gè)階段:?jiǎn)栴}定義,可行性研究,需求分析。
3、軟件開發(fā)時(shí)期的任務(wù)和包含階段主要任務(wù)是解決“如何做”的問題,設(shè)計(jì)和實(shí)現(xiàn)定義的軟件。由概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼和測(cè)試4個(gè)階段組成。
4、軟件運(yùn)行維護(hù)時(shí)期的主要任務(wù)是使軟件持久地滿足用戶的需要,通常有4類維護(hù)活動(dòng):改正性維護(hù);適應(yīng)性維護(hù);完善性維護(hù);預(yù)防性維護(hù)。開發(fā)過程中的典型文檔:軟件需求規(guī)格說明書。項(xiàng)目計(jì)劃。軟件測(cè)試計(jì)劃。軟件設(shè)計(jì)說明書。用戶手冊(cè)。軟件工程各個(gè)階段的基本任務(wù)
1、問題定義與可行性研究:解決什么問題?能否解決問題?是否值得做?”
2、需求分析:做什么
3、軟件設(shè)計(jì):如何實(shí)現(xiàn)
4、程序編碼和單元測(cè)試:實(shí)現(xiàn)設(shè)計(jì)
5、集成和系統(tǒng)測(cè)試:組裝連接測(cè)試、功能驗(yàn)證測(cè)試
6、軟件運(yùn)行和維護(hù):修改 第二章軟件工程方法與工具
軟件工具:是指能支持軟件生存周期中某一階段(如系統(tǒng)定義,需求分析,設(shè)計(jì),編碼,測(cè)試,維護(hù)等)的需要而使用的軟件工具。
需求分析工具
1、結(jié)構(gòu)化圖形工具箱。通過數(shù)據(jù)流程圖DFD進(jìn)行功能分析。包括DFD圖形工具,實(shí)體-關(guān)系圖(E-R)圖形工具,Jackson圖形工具,Warnier圖形工具,Visio綜合工具,2、面向?qū)ο蠊ぞ?,Rational Rose,PowerDesigner,Visio 設(shè)計(jì)工具(1)概要設(shè)計(jì)工具:設(shè)計(jì)目標(biāo)軟件的體系結(jié)構(gòu)、控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。軟件的體系結(jié)構(gòu)通常用模塊結(jié)構(gòu)圖來(lái)描述。模塊的數(shù)據(jù)結(jié)構(gòu)通常用實(shí)體-關(guān)系圖來(lái)描述。Visio。Rational Rose 詳細(xì)設(shè)計(jì)工具。設(shè)計(jì)模塊的算法和內(nèi)部實(shí)現(xiàn)細(xì)節(jié)。詳細(xì)設(shè)計(jì)描述方法有輸入-處理-輸出(IPO)圖。問題分析圖(PAD)。盒圖(NS圖)。流程圖(FC)。程序設(shè)計(jì)語(yǔ)言(PDL)。結(jié)構(gòu)化語(yǔ)言。判定表。判定樹
第三章軟件需求獲取與結(jié)構(gòu)化分析方法 需求獲取的主要任務(wù)是與用戶溝通,了解系統(tǒng)或產(chǎn)品的目標(biāo)是什么,客戶或用戶想要實(shí)現(xiàn)什么,系統(tǒng)和產(chǎn)品如何滿足業(yè)務(wù)的要求,最終系統(tǒng)或產(chǎn)品如何用于日常工作。獲取并理解用戶的需求是軟件工程師所面對(duì)的最困難的任務(wù)之一。
需求分析的困難體現(xiàn):系統(tǒng)的目標(biāo)或范圍問題;需求不準(zhǔn)確性問題;需求的易變問題
需求獲取的任務(wù):發(fā)現(xiàn)和分析問題,并分析問題的原因,結(jié)果關(guān)系。與用戶進(jìn)行各種方式的交流,并使用調(diào)查研究方法收集信息。按照三個(gè)成分即數(shù)據(jù),過程和接口觀察問題的不同側(cè)面。將獲取的需求文檔化,形式有用例,決策表,決策樹等。需求獲取的原則:深入淺出,以流程為主線。
獲取具體的需求的途徑1,與用戶交流。2,現(xiàn)有產(chǎn)品或競(jìng)爭(zhēng)產(chǎn)品的描述文檔。3,系統(tǒng)需求規(guī)格說明。4,當(dāng)前系統(tǒng)的問題報(bào)告和改進(jìn)要求。5,市場(chǎng)調(diào)查和用戶問卷調(diào)查。6,觀察用戶如何工作。
關(guān)于需求獲取問題的認(rèn)識(shí)辨析:
1、沒有與用戶交流就不可能獲取系統(tǒng)需求。(不能獲取準(zhǔn)確、全面的系統(tǒng)需求)
2、沒有經(jīng)過與用戶交流而獲取的需求都是不真實(shí)的需求。(一些需求從用戶以外的途徑獲取)
3、系統(tǒng)開發(fā)必須獨(dú)立完成,參考類似系統(tǒng)及技術(shù)文檔屬于抄襲行為,應(yīng)予避免。(系統(tǒng)開發(fā)包含研究行為,應(yīng)了解對(duì)手產(chǎn)品,取長(zhǎng)補(bǔ)短)
4、系統(tǒng)開發(fā)包含改進(jìn)當(dāng)前系統(tǒng)的缺陷和不足。(對(duì))
5、需求調(diào)查時(shí),用戶所說的需求未必是真實(shí)、準(zhǔn)確的需求,因此需求分析需要依賴用戶,但是不能過分迷信用戶。(對(duì),需求描述是困難的)
6、觀察用戶如何工作也是一種需求調(diào)查行為。(對(duì))
軟件需求分析階段的任務(wù):需求獲取,需求分析,需求定義,需求驗(yàn)證。完整性,正確性,合理性,可行性,充分性。
結(jié)構(gòu)化分析方法:是一種建模技術(shù)。核心是數(shù)據(jù)字典。
功能模型用數(shù)據(jù)流圖(DFD)來(lái)描述使用實(shí)體—關(guān)系圖(ER圖)建立數(shù)據(jù)模型。使用狀態(tài)轉(zhuǎn)換圖(簡(jiǎn)稱狀態(tài)圖)建立系統(tǒng)行為模型。數(shù)據(jù)字典。加工規(guī)格說明。需求建模的依據(jù)是需求描述
數(shù)據(jù)建模,ER圖,需要認(rèn)真看。
第四章結(jié)構(gòu)化設(shè)計(jì)方法
結(jié)構(gòu)化設(shè)計(jì)方法是在模塊化,自頂向下逐步細(xì)化及結(jié)構(gòu)化程序設(shè)計(jì)技術(shù)基礎(chǔ)上發(fā)展起來(lái)的,結(jié)構(gòu)化設(shè)計(jì)方法可分為兩類:一類是根據(jù)系統(tǒng)的數(shù)據(jù)流進(jìn)行設(shè)計(jì),稱為面向數(shù)據(jù)流的設(shè)計(jì),或稱過程驅(qū)動(dòng)設(shè)計(jì),另一類是根據(jù)系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行設(shè)計(jì),稱為面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì),或稱數(shù)據(jù)驅(qū)動(dòng)的設(shè)計(jì)。
軟件的體系結(jié)構(gòu)設(shè)計(jì),模塊化設(shè)計(jì)都是分而治之策略的具體表現(xiàn)。模塊化是將整體軟件劃分為獨(dú)立命名且可獨(dú)立訪問的模塊,不同的模塊通常具有不用的功能或指責(zé),每個(gè)模塊可獨(dú)立開發(fā),測(cè)試,最后組裝成完整的軟件。模塊是構(gòu)成軟件的基本構(gòu)件。模塊并不是越小越好,當(dāng)模塊數(shù)目增加時(shí),每個(gè)模塊的規(guī)模將減小,開發(fā)單個(gè)模塊的成本確實(shí)減少了,但是隨著模塊數(shù)目增加,模塊之間關(guān)系的復(fù)雜程度也會(huì)增加,設(shè)計(jì)模塊間接口所需要的工作量也將增加。
模塊的獨(dú)立性是指軟件系統(tǒng)中每個(gè)模塊只涉及軟件要求的具體的子功能,而與軟件系統(tǒng)中其他模塊的接口是簡(jiǎn)單的,若一個(gè)模塊只具有單一的功能且與其他模塊沒有太多的聯(lián)系,那么稱此模塊有獨(dú)立性。
自頂向下,逐步細(xì)化:抽象是指忽視一個(gè)主題中與當(dāng)前目標(biāo)無(wú)關(guān)的方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面,當(dāng)我們進(jìn)行軟件設(shè)計(jì)時(shí),設(shè)計(jì)開始時(shí)應(yīng)盡量提高軟件的抽象層次,按抽象級(jí)別從高到低進(jìn)行軟件設(shè)計(jì),將軟件的體系結(jié)構(gòu)按自頂向下方式,對(duì)各個(gè)層次的過程細(xì)節(jié)和數(shù)據(jù)細(xì)節(jié)逐層細(xì)化,直到用程序設(shè)計(jì)語(yǔ)言的語(yǔ)句能夠?qū)崿F(xiàn)為止,從而最后確定整個(gè)系統(tǒng)的體系結(jié)構(gòu),這就是自頂向下逐步細(xì)化過程。
復(fù)用是指同一事物不做修改或稍加修改就可以多次重復(fù)使用,將服用的思想用于軟件開發(fā),稱為軟件復(fù)用。1是盡量使用已有的構(gòu)件。2是如果確實(shí)需要?jiǎng)?chuàng)建新的構(gòu)件,則在設(shè)計(jì)時(shí)應(yīng)該考慮將來(lái)的可重復(fù)使用性。軟件設(shè)計(jì)的階段與任務(wù):從工程管理的角度,可以將軟件設(shè)計(jì)分為概要設(shè)計(jì)階段和詳細(xì)設(shè)計(jì)階段。從技術(shù)的角度,傳統(tǒng)的結(jié)構(gòu)化方法將軟件設(shè)計(jì)劃分為體系結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、接口設(shè)計(jì)和過程設(shè)計(jì)4部分;概要設(shè)計(jì)包括體系結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、接口設(shè)計(jì)。詳細(xì)設(shè)計(jì)即過程設(shè)計(jì),對(duì)結(jié)構(gòu)表示進(jìn)行細(xì)化,得到軟件詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和算法。
軟件設(shè)計(jì)各項(xiàng)設(shè)計(jì)工作的依據(jù):體系結(jié)構(gòu)設(shè)計(jì),定義軟件模塊及其之間的關(guān)系,依賴于數(shù)據(jù)流圖。數(shù)據(jù)設(shè)計(jì),依賴于ER圖。接口設(shè)計(jì),依賴于頂層數(shù)據(jù)流圖。過程設(shè)計(jì):依賴于加工規(guī)格說明、狀態(tài)圖
基于數(shù)據(jù)流方法的設(shè)計(jì)過程:1.復(fù)查并精化數(shù)據(jù)流圖。2.確定數(shù)據(jù)流圖中數(shù)據(jù)流的類型,典型的數(shù)據(jù)流類型有變換型數(shù)據(jù)流和事務(wù)型數(shù)據(jù)流。3.導(dǎo)出初始的軟件結(jié)構(gòu)圖。4.逐級(jí)分解。5.精化軟件結(jié)構(gòu)。6.導(dǎo)出接口描述和全局?jǐn)?shù)據(jù)結(jié)構(gòu)。
軟件模塊結(jié)構(gòu)的改進(jìn)方法:1,模塊功能的完善化。2,消除重復(fù)功能,改善軟件結(jié)構(gòu)。3,模塊的作用范圍應(yīng)在控制范圍之內(nèi)。4,盡可能減少高扇出結(jié)構(gòu),隨著深度增大扇入。5,避免或減少使用病態(tài)連接。6,模塊的大小要適中。接口設(shè)計(jì)的依據(jù)是數(shù)據(jù)流圖中的自動(dòng)化系統(tǒng)邊界。
自頂向下,逐步細(xì)化的設(shè)計(jì)過程主要包括兩個(gè)方面:一是將復(fù)雜問題的解法分析和細(xì)化成由若干個(gè)模塊組成的層次結(jié)構(gòu),二是將每個(gè)模塊的功能逐步分解細(xì)化為一系列的處理。第五章編碼
編碼容易出現(xiàn)的風(fēng)格不足
1、變量或函數(shù)名字缺乏具體含義
2、變量或函數(shù)名字與其用途不符
3、變量或函數(shù)未加上必要的注釋
4、函數(shù)未說明其功能、參數(shù)的意義
5、引用的符號(hào)未加以解釋和說明
6、對(duì)循環(huán)等重要的程序語(yǔ)句未注釋
7、對(duì)用到的重要庫(kù)函數(shù)沒有解釋說明
8、對(duì)結(jié)構(gòu)體等復(fù)雜數(shù)據(jù)結(jié)構(gòu)的組成成分沒有解釋說明
9、缺乏必要的提示語(yǔ)句 第六章軟件測(cè)試方法
軟件測(cè)試是在軟件投入生產(chǎn)性運(yùn)行之前,對(duì)軟件需求分析,設(shè)計(jì)規(guī)格說明和編碼的最終復(fù)審,是軟件質(zhì)量控制的關(guān)鍵步驟。軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程。