第一篇:軟件工程學(xué)習(xí)總結(jié)和體會2015
西安交通大學(xué)
2015級研究生課程專題作業(yè)
軟 件
工 程 心 得專 業(yè): 班 級: 學(xué) 號: 姓 名: 電 話:
二○一五年十月
體 會
一、軟件生命周期各階段任務(wù)目的和主要方法
在分階段總結(jié)之前,首先要明確以下三個問題:
1、什么是軟件生存周期?
軟件生存周期是指從軟件定義、開發(fā)、使用、維護到淘汰的全過程。主要包括:
(1)問題定義;(2)可行性研究;(3)需求分析;(4)概要設(shè)計;(5)詳細設(shè)計;(6)編碼;(7)測試;
(8)軟件維護。
2、軟件生存周期為什么劃分成階段?
(1)任何一個階段的具體任務(wù)不僅獨立,而且簡單,便于不同人員分工協(xié)作,從而降低整個軟件開發(fā)工作的困難程度。
(2)可以降低每個階段任務(wù)的復(fù)雜程度,簡化不同階段的聯(lián)系,有利于工程的組織管理,也便于采用良好的技術(shù)方法。
(3)使軟件開發(fā)的全過程以一種有條不紊的方式進行,保證軟件的質(zhì)量,特別是提高了軟件的可維護性。
3、應(yīng)該怎樣來劃分階段?
(1)每一個階段的任務(wù)盡可能獨立;(2)同一階段內(nèi)的任務(wù)性質(zhì)盡可能相同;
(3)每一個階段任務(wù)的開始和結(jié)束有嚴(yán)格的標(biāo)準(zhǔn)。
下面分別對各階段進行討論:
1、問題定義
目的是將用戶提出的要求具體化、定量化,任務(wù)是確定研制系統(tǒng)的范圍,明確研制的邊界。
方法步驟:
(1)通過調(diào)查研究,了解系統(tǒng)要求;
(2)需求方與開發(fā)方討論確定系統(tǒng)的功能、性能、可靠性、安全保密性等方面的要求,以及費用、進度等方面的要求。
2、可行性研究
可行性研究說明該軟件開發(fā)項目的實現(xiàn)在技術(shù)上、經(jīng)濟上和社會條件上的可行性,評述為合理地達到開發(fā)目的可能選擇的各種方案,目標(biāo)是用最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決。
可行性研究的方法是首先需要進一步分析和澄清問題定義;然后分析員導(dǎo)出系統(tǒng)的邏輯模型;最后對未來的行動方針提出建議。
在導(dǎo)出邏輯模型的過程中,具體要根據(jù)以下四個方面分析可行性:
(1)經(jīng)濟可行性:進行成本效益分析,評估項目的開發(fā)成本,估算開發(fā)成本是否會超過項目預(yù)期的全部利潤.分析系統(tǒng)開發(fā)對其它產(chǎn)品或利潤的影響。
(2)技術(shù)可行性:根據(jù)客戶提出的系統(tǒng)功能,性能及實現(xiàn)系統(tǒng)的各項約束條件,從技術(shù)的角度研究實現(xiàn)系統(tǒng)的可行性。(3)法律可行性:研究在系統(tǒng)開發(fā)過程中可能涉及的各種合同,侵權(quán),責(zé)任以及各種于法律相抵觸的問題。
(4)開發(fā)方案的選擇性:提出并評價實現(xiàn)系統(tǒng)的各種看法方案.從中選出一種用于軟件項目開發(fā)。
3、需求分析
需求分析是為了有效解決用戶的需要而進行的一項工程活動,要考慮的問題是功能需求、數(shù)據(jù)需求、性能需求和接口需求,開發(fā)者承擔(dān)分析任務(wù),核心是用戶。
軟件項目的失敗大半源于需求分析沒有做好,軟件開發(fā)人員首先應(yīng)該明確用戶的意圖和要求,正確獲取用戶的需求,然后形成一個軟件需求規(guī)格說明,它是軟件開發(fā)的重要基礎(chǔ)。
需求分析的方法:
(1)需求獲取:獲取客戶需求,客戶泛指某個人或機構(gòu)部門等,一般方法是調(diào)查,包括訪談座談、問卷、跟班和收集資料,需求規(guī)約可表達用戶的軟件價值。
(2)需求分析與規(guī)格說明:建立需求模型,它是用戶需求的圖解,一些常用的模型有:業(yè)務(wù)樹圖、用例圖、活動圖。分別用于結(jié)構(gòu)化需求建模、系統(tǒng)業(yè)務(wù)舉例和反映系統(tǒng)工作流程。
(3)需求驗證:要驗證的主要內(nèi)容有:有效性驗證、一致性驗證、完整性驗證、現(xiàn)實性驗證和可檢驗性驗證。
需求建模的方法:
(1)關(guān)聯(lián)模型
(2)面向?qū)ο竽P?3)原型方法
4、系統(tǒng)設(shè)計
此階段主要根據(jù)需求分析的結(jié)果,對整個軟件系統(tǒng)進行設(shè)計,如系統(tǒng)框架設(shè)計,數(shù)據(jù)庫設(shè)計等,一般分為概要設(shè)計和詳細設(shè)計,好的軟件設(shè)計將為軟件程序編寫打下良好的基礎(chǔ)。
概要設(shè)計是對需求規(guī)格說明書中提供的軟件系統(tǒng)邏輯模型進行進一步的分解,從而建立軟件系統(tǒng)的總體結(jié)構(gòu)和各個子系統(tǒng)間及各個模塊間的關(guān)系,定義各子系統(tǒng)接口界面和各模塊的功能描述,并根據(jù)設(shè)計結(jié)果產(chǎn)生概 要設(shè)計文檔。
概要設(shè)計在早期有模塊化方法、功能分解方法;在60年代后期提出了面向數(shù)據(jù)流和面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法;近年來又提出面向?qū)ο蟮脑O(shè)計方法等。
詳細設(shè)計過程根據(jù)概要設(shè)計形成的結(jié)果對各個模塊的內(nèi)部實現(xiàn)進行規(guī)劃設(shè)計,并根據(jù)設(shè)計結(jié)果產(chǎn)生詳細設(shè)計文檔。
詳細設(shè)計主要方法是通過采用結(jié)構(gòu)化和面向?qū)ο蟮姆椒◤囊晥D、控制、模型三層模型上細化概要設(shè)計的各個模塊,并完成偽代碼為編碼階段做準(zhǔn)備。
5、編碼和測試
編碼是將軟件設(shè)計的結(jié)果轉(zhuǎn)換成計算機可執(zhí)行的程序代碼。主要方法是依據(jù)詳細設(shè)計文檔實現(xiàn)設(shè)計中的算法、功能、接口、數(shù)據(jù)結(jié)構(gòu),采用結(jié)構(gòu)化和面向?qū)ο蠡姆椒ň帉懘a。
編碼過程中要制定統(tǒng)一,符合標(biāo)準(zhǔn)的編寫規(guī)范,以保證程序的可讀性,易維護性,提高程序的運行效率。
軟件設(shè)計完成后要經(jīng)過嚴(yán)密的測試,以發(fā)現(xiàn)軟件在整個設(shè)計過程中存在的問題并加以糾正。整個測試過程分單元測試、組裝測試以及系統(tǒng)測試三個階段進行。
測試的方法主要有白盒測試和黑盒測試兩種。在測試過程中需要建立詳細的測試計劃并嚴(yán)格按照測試計劃進行測試,以減少測試的隨 意性。
6、軟件維護
軟件維護是軟件生命周期中持續(xù)時間最長的階段。在軟件開發(fā)完成并投入使用后,由于多方面的原因,軟件不能繼續(xù)適應(yīng)用戶的要求。要延續(xù)軟件的使用壽命,就必須對軟件進行維護。
軟件的維護包括糾錯性維護和改進性維護兩個方面。
二、課程主要收獲
《軟件工程》課程強調(diào)概念和知識的理解和掌握,側(cè)重軟件項目的分析、設(shè)計、實現(xiàn)和維護的基本技能。比較注意“點”和“面”的結(jié)合,是一門理論性和實踐性都較強的學(xué)科。作為一名已經(jīng)在IT領(lǐng)域工作十年之后又重返校園的大齡學(xué)生,雖然已經(jīng)不是第一次學(xué)習(xí)這門課程了,去年也剛在單位取得了信息系統(tǒng)項目管理高級工程師資格,從另一個側(cè)面對軟件開發(fā)過程有了更深層次的理解。不過溫故而知新,這次仍然選修這門課,我還是得到了一些新的啟示。最大的收獲就是在我看來,軟件工程與其說是一門課程,不如說是一門思想,是一個如何去分析和處理問題的過程,應(yīng)該說其范疇已經(jīng)遠遠不止局限于該門課程,它已經(jīng)成為了一個綜合的能夠解決問題的思想集合。
此外,通過對軟件開發(fā)過程的重學(xué)習(xí),并結(jié)合之前在軟件開發(fā)管理工作中的經(jīng)驗,我對自己在軟件開發(fā)主要階段管理工作中的不足有了更進一步的認(rèn)識,總結(jié)了相應(yīng)的管理要點,具體闡述如下:
1、概要設(shè)計
主要任務(wù):系統(tǒng)應(yīng)該怎樣做,或概括地說,系統(tǒng)應(yīng)該如何實現(xiàn)。本階段特點:將用戶的具體要求轉(zhuǎn)為抽象的計算機軟件設(shè)計。管理要點:
通過分析對比,從多種可能的實現(xiàn)方案和軟件結(jié)構(gòu)中選出最佳方案及最合理的,即: 設(shè)想供選擇的方案→推薦最佳方案→選取合理的方案功能分解→ 軟件設(shè)計結(jié)構(gòu) → 數(shù)據(jù)庫設(shè)計 3 確定測試要求并確定測試計劃
作為項目管理者必須從概要設(shè)計開始就應(yīng)該從全局角度開始把握整個系統(tǒng)的進展,并必須從此階段開始,時刻從全局觀的問題來發(fā)現(xiàn)問題,解決問題。
2、詳細設(shè)計
主要任務(wù):系統(tǒng)應(yīng)該怎樣具體地做,或概括地說,系統(tǒng)應(yīng)該如何具體地去實現(xiàn)所有的要求。
本階段特點:將抽象的計算機軟件設(shè)計轉(zhuǎn)為形象的,具體的,面向用戶的計算機界面設(shè)計。
管理要點:
本階段尚未涉及具體編寫程序,而是要設(shè)計出程序的“藍圖”,所以詳細設(shè)計的結(jié)果基本上決定了最終的程序代碼的質(zhì)量。邏輯是否正確性能是否滿足要求是否容易閱讀和理解 作為項目管理者在詳細設(shè)計階段,應(yīng)始終不忘從一名用戶的使用角度出發(fā),審視每一個界面的詳細設(shè)計,以保證設(shè)計出來的界面以及程序能夠滿足一般用戶希望將來的系統(tǒng)能夠通俗易懂,簡單實用的要求。
3、編碼
主要任務(wù):用某種程序設(shè)計語言書寫計算機能夠識別的程序。
本階段特點:將詳細設(shè)計書的內(nèi)容“翻譯”成計算機語言,直接關(guān)系到整個項目的質(zhì)量。
管理要點:
本階段的編碼是設(shè)計的自然結(jié)果,因此,程序的質(zhì)量主要取決于軟件設(shè)計的質(zhì)量。但是,程序設(shè)計語言的特性和編碼途徑也對程序的以下特性產(chǎn)生深遠的影響: 程序的可靠性 2 程序的可讀性 3 程序的可測試性 4 程序的可維護性
作為項目管理者在編碼階段,必須從把握進度與質(zhì)量這兩個基本方面來有效地實施對項目的管理。首先應(yīng)該根據(jù)項目進度計劃來合理地安排每一名作業(yè)成員的作業(yè)日程,并且隨時監(jiān)督每一作業(yè)的進展情況,還需要針對項目的最新變更及時對計劃進行調(diào)整,以保證項目的按時完成。同時,在項目的進展過程中還需要通過小組討論,檢查評審等形式洞察每項作業(yè)的質(zhì)量,以保證項目的保質(zhì)保量完成??梢哉f,本階段是一名項目管理者在項目開發(fā)過程中極為忙碌也異常重要的階段。
4、測試
主要任務(wù):通過單元測試和綜合測試來保證軟件工程的高質(zhì)量。
本階段特點:盡可能早地發(fā)現(xiàn)并糾正差錯,往往占到軟件開發(fā)總工作量的40%以上,是保證軟件質(zhì)量的關(guān)鍵。
管理要點:
軟件測試在軟件生命周期中橫跨兩個階段。通常在編寫出每個模塊之后就對其作必要的測試(稱之為單元測試),模塊的編寫者和測試者是同一人,編碼和單元測試屬于軟件生命周期的同一個階段。在此階段結(jié)束之后,對軟件系統(tǒng)還應(yīng)該進行各種綜合測試,這是軟件生命周期的另一個獨立階段,通常由專門的測試人員來承擔(dān)這項工作。
作為項目管理者在編碼階段,必須高度重視軟件測試工作,甚至可以說應(yīng)該把測試看作與編寫程序同等重要的任務(wù)來對待。在要求每一名開發(fā)人員完成自己分內(nèi)的單元測試,并且監(jiān)督測試人員認(rèn)真進行各項綜合測試的同時,應(yīng)該把自己完全當(dāng)成一名本軟件工程的用戶,從用戶的角度以一種高度負(fù)責(zé),甚至近乎苛刻的嚴(yán)格態(tài)度來對軟件進行徹底的測試。在本階段通過嚴(yán)把質(zhì)量關(guān)來確保軟件工程的質(zhì)量。
所以說,尤其在軟件進入具體開發(fā)階段后,能否遵循要點進行管理是很重要的。
總之,實際工作當(dāng)中軟件項目為什么會失???為什么交付日期會一拖再拖?我覺得項目失敗只有一個原因:就是項目經(jīng)理不合格。除非這個項目經(jīng)理在項目開始階段就已經(jīng)提出來了這個項目會失敗,或者是完全屬于項目之外不可抗拒的原因?qū)е率?。也許還會有一些我的同行跳出來說不服,那么請繼續(xù):
難道是新增需求的原因?qū)е率??客戶會讓你新?00個需求而要你二天交貨嗎?必然是分析設(shè)計階段沒有充分考慮好可擴展性和新增需求導(dǎo)致現(xiàn)在不可控制而失敗的!
難道是程序員人力不足導(dǎo)致?人都沒有到位,怎么會失敗,多少人做多少人的事,多少人做多少人的計劃,不會有失敗。
難道是程序員技能不夠?項目經(jīng)理是如何面試的?怎么在項目失敗了才發(fā)現(xiàn)是程序員技能不夠?有問題早提出來嘛。
難道測試人員沒有做好?少來了,測試人員只是加了一道保障證明。程序很多流程都通過不了,程序還屬于開發(fā)調(diào)試階段,與測試人員有什么關(guān)系?
我曾經(jīng)在單位參加一些項目,發(fā)現(xiàn)有這樣一個概念很多項目經(jīng)理都沒有搞清楚:什么叫開發(fā)階段?我認(rèn)為開發(fā)階段最多只能包括單元測試這一部分。綜合測試絕對不能屬于開發(fā)階段了,也就是說不能到了最后交付階段還有程序流程走不通,程序隨便正常操作都會失敗。程序隨便正常操作都出現(xiàn)好多bug屬于開發(fā)還沒有完成,絕對還沒有過單元測試階段,離綜合測試和驗收階段還早著呢。說白了,還屬于代碼審查階段。
不懂程序設(shè)計的項目經(jīng)理,往往不注重code開發(fā)人員,其實這是一個嚴(yán)重的錯誤。軟件的質(zhì)量來源于什么?由誰來保證?有的項目經(jīng)理說是由測試人員來保證,就算測試人員的測試用例寫得很詳細,把需求中的每一個功能點都測試到了,那最后就沒有問題了嗎?當(dāng)然不是,很多邏輯上的東西要程序員來保證不出問題的,而測試人員只是起一個驗證的作用,問題不應(yīng)該由測試人員來發(fā)現(xiàn),而應(yīng)該由開發(fā)人員來發(fā)現(xiàn)。也就是說,我們盡量不要讓測試人員來發(fā)現(xiàn)問題。如果第一次測試有至少25%以上的用例通不過,那說明質(zhì)量控制出了問題。這樣的版本根本就不應(yīng)該拿出來進行測試。由此可見,軟件的質(zhì)量是由程序員來保證的,而不是測試人員。
總的說來,一個項目的成敗與否,與項目的各個階段皆有關(guān)系:需求都不清楚,開發(fā)起來肯定是南轅北轍;分析設(shè)計不夠好,會讓程序員難以維護,隨著新增需求的增多,會導(dǎo)致整個系統(tǒng)混亂不可控制;編碼不好,整個系統(tǒng)不穩(wěn)定是必然的,Bug也是抓不盡的;測試不做好,系統(tǒng)是沒有保證的,少了哪個環(huán)節(jié)都不行。
所以做軟件項目開發(fā)過程管理工作,我認(rèn)為重點要放在項目計劃、進度控制、質(zhì)量控制、風(fēng)險預(yù)測這四個方面。不要說項目的失敗是因為新需求引起的,一個沒有新增需求和風(fēng)險的項目是不存在的,承認(rèn)這一點之后,我們就不會有很多怨言了。
以下針對這四個方面進行詳述:
項目計劃:沒有項目計劃,那失敗還有什么話好說?大家都知道凡事預(yù)則立,不預(yù)則廢。項目計劃一定要包括這幾方面的內(nèi)容:各階段里程碑時間點,各個里程碑的輸出結(jié)果,風(fēng)險預(yù)測,意外應(yīng)對。計劃時間一定要提前于交貨時間,并注意風(fēng)險意外是否留下足夠的應(yīng)對時間和處理方案。
進度監(jiān)控:對每個階段把握好,每個階段要完成的任務(wù)一定要完成,如果完不成,是什么原因?qū)е碌??我們的?yīng)對策略是什么?我們要信任別人,但是不要忘記鎖門。同樣的,別人說完成了,你不能就認(rèn)為別人完成了,要看到結(jié)果才能證明完成了。有的項目經(jīng)理說,我也進度監(jiān)控啦,他說完成了就完成了,誰想到?jīng)]有完成?到底是程序員不誠實還是項目沒有管理好?你沒有鎖好門,能怨別人偷你東西嗎?還有一種情況就是不懂如何鎖門,根本就不知道這一階段的輸出結(jié)果是什么?當(dāng)然進度監(jiān)控就是一句空話了。
質(zhì)量監(jiān)控:也應(yīng)該是分階段進行的,每一個階段的質(zhì)量監(jiān)控內(nèi)容有所不同。
需求分析階段的質(zhì)量監(jiān)控就是完整而又正確的理解用戶需求,需求是否清楚可懂,寫用例的測試人員是否明白需求?
分析設(shè)計階段的質(zhì)量監(jiān)控就是設(shè)計是否完全滿足需求?這個設(shè)計方案是否滿足以后新功能的擴展?以及是否有考慮到新功能的意外和設(shè)備環(huán)境,運行平臺的變化?
編碼階段的質(zhì)量監(jiān)控就是變量命名是否規(guī)范?代碼是否可讀?是否有詳細的注釋?是否有重復(fù)代碼?要知道重復(fù)代碼是必然會造成系統(tǒng)不穩(wěn)定,bug成群的??勺儾糠值拇a和不可變部分的代碼是否分離。要知道上面講的每一部分如果沒有做好,都會導(dǎo)致后期的產(chǎn)品出現(xiàn)大量問題。代碼階段還有一個重要的工作就是做code review代碼公開評審,你自己發(fā)現(xiàn)不了的問題別人也許就看得見。
單元測試階段的質(zhì)量監(jiān)控任務(wù)就是單元測試代碼是否測試通過?代碼覆蓋是否完全?單元測試報告提交情況如何?單元測試用例有沒有做好? 綜合測試階段質(zhì)量監(jiān)控任務(wù)當(dāng)然就是看用例是否完全?是否全部真正執(zhí)行?測試報告有沒有寫好?
回歸測試當(dāng)然得看以前測試的Bug是否還在,如果還在,當(dāng)然是無條件打回去重新開發(fā)。
測試階段最主要的監(jiān)控就是看用例是否真正執(zhí)行,是否有安全性測試?破壞性測試?異常測試,壓力測試?
以上的每個階段最好完成了才進行下一階段,否則會造成混亂出現(xiàn)問題的,造成想并行進行節(jié)約時間卻反而浪費了時間。
以上就是我重學(xué)《軟件工程》并結(jié)合實際工作經(jīng)驗所得到的啟示,不妥之處請劉老師批評指正!
第二篇:軟件工程學(xué)習(xí)總結(jié)
軟件工程學(xué)習(xí)總結(jié)
通過一個學(xué)期系統(tǒng)的學(xué)習(xí)軟件工程這門課,結(jié)合與小組成員一起開發(fā)設(shè)備管理系統(tǒng)的經(jīng)驗,讓我對軟件的開發(fā)有了更深的了解,學(xué)習(xí)到每一個軟件的開發(fā)都不僅僅是寫代碼,還有更加復(fù)雜的系統(tǒng)性的開發(fā)流程。
要開發(fā)一個軟件,就拿設(shè)備管理系統(tǒng)來說,我們不能一上手就開始寫代碼,這樣會浪費大量的人力物力財力還得不到理想的結(jié)果,首先我們應(yīng)該先做好市場及需求方面的調(diào)查,了解用戶需求有助于我們開發(fā)更加實用高效的軟件,做好市場調(diào)研可以讓我們對成本、利潤、市場情況等有深層了解,讓我們做出最優(yōu)決策。
調(diào)查結(jié)束后,我們要寫出詳細的報告,包括項目開發(fā)計劃書、軟件需求規(guī)格說明書等,有了這些調(diào)查結(jié)果,我們才可以系統(tǒng)的,條理的來編寫我們的軟件。從前我們寫代碼都非常的盲目,雜亂無章,想到哪寫到哪,浪費了大量的時間,寫的代碼結(jié)構(gòu)也很松散,錯誤率高。學(xué)習(xí)軟件工程后,我們學(xué)習(xí)了多種軟件開發(fā)模型,學(xué)會了模塊化的開發(fā)方法,小組成員每人完成不同的模塊,最后綜合起來,這樣能夠節(jié)省大量的時間,縮短開發(fā)時間,使代碼結(jié)構(gòu)更加緊湊,易于管理維護。如果說代碼是一種工具的話,那么軟件工程就是使用工具的經(jīng)驗指導(dǎo),他能指導(dǎo)我們更好的使用這個工具,發(fā)揮它最大的潛能,幫助我們完成項目,不管使用什么程序語言,軟件工程教給我們的開發(fā)方法都無條件適用,我們需要認(rèn)真學(xué)習(xí)理解這門課程,它將伴隨我們在程序開發(fā)的路上走下去。
第三篇:軟件工程實施體會
軟件工程實施體會
——本學(xué)期對軟件工程實驗使我學(xué)會的
軟件工程項目是需要團體作業(yè)才能夠完成的。團體作業(yè)就需要交流,有交流,就必然會有合作;有合作,就需要有分工;有分工,就需要有協(xié)調(diào);有所有這些,就需要有管理。然而一個人的項目是否不需要管理?當(dāng)然不是,因為有文檔,有代碼,有靈感,有經(jīng)驗,等等都需要管理。只是此刻的管理是自己完成的,可以更簡單一點。我們已經(jīng)有過一遍又一遍的調(diào)試以前已經(jīng)fix過的bug體驗,也有過一遍又一遍的查找以前自己實現(xiàn)過的技術(shù)的經(jīng)歷。軟件工程的理論,在開發(fā)過程中的作用,就是指導(dǎo)如何做好管理,以取得軟件的可用性、正確性和合理性。如果我們清楚知道這是它的目標(biāo),就可以拋開一些對自己不適用的枝節(jié)。
那么我們?nèi)绾螌崿F(xiàn)它呢?
我認(rèn)為軟件工程中最重要的,最有實際意義的,是它界定了工作職能,從而也確定了責(zé)任歸屬。什么意思?說白了,就是什么人做什么事,出了問題誰負(fù)責(zé)。那么它是怎么界定工作職能的?是通過對軟件開發(fā)流程的劃分來實現(xiàn)的。軟件工程把軟件的開發(fā)劃分成很多個相對獨立的階段,每一個階段都有相關(guān)的人員來實現(xiàn),也就有相關(guān)的人員來負(fù)責(zé)。分工不清,責(zé)權(quán)不明,是導(dǎo)致管理混亂的最主要的因素。所以即使是兩個人的項目,也是需要軟件工程來指導(dǎo)的,因為通過它,可以更好的知道如何可以合理分工,劃分工作職權(quán)以取得最終的成果。當(dāng)然,走教條主義的道路是非常愚蠢的。
軟件工程是針對“軟件危機”提出來的。它是一種工程,把經(jīng)驗和理論應(yīng)用到實踐中來,解決軟件開發(fā)中出現(xiàn)的各種問題。這是什么意思?就是說,軟件工程是用來解決實際問題的。如果軟件開發(fā)中沒有遇到管理問題,軟件工程就不需要管理的內(nèi)容;如果軟件開發(fā)中沒有遭遇文檔混亂,軟件工程就不需要文檔的部分。但是如果很幸運的遭遇到了這些,那么這一切都是不可或缺的。軟件工程不是一個固定的呆板的框框,而是一個有彈性的概念。
所以,如果不是要去申請iso或是cmm認(rèn)證,完全不必要一板一眼的按照iso或是cmm的規(guī)范去做。所謂“有企業(yè)特色的軟件工程”,完全可以從吸收現(xiàn)有的模式和規(guī)范中完善起來。但這并不是說所有在開發(fā)過程中出現(xiàn)的都是軟件工程,只有那些能引導(dǎo)開發(fā)走向成功的才是真正有意義的軟件工程。其他的,最多只是失敗的嘗試。
軟件工程實施的時機;
首先要知道軟件工程,理解軟件工程;然后要了解現(xiàn)有的軟件工程的模式和規(guī)范。ISO、CMM或是Agility,都定義了一套規(guī)范。這些規(guī)范是經(jīng)驗與技術(shù),以及理論的積累。它們存在很多合理的、可行的模式,可以引用和參考;但銀彈是沒有的。當(dāng)然,我們可以重頭再來,造他們造過的輪子,摔他們摔過的跤;但很明顯,這是不必要的。
實施的最好方法,也是最可行的方法,成本最小的方法,是根據(jù)開發(fā)的客觀的因素,修改那些規(guī)范,以符合我們的開發(fā)過程;但是最主要的,是修改我們的主觀認(rèn)識,以符合那些規(guī)范;而最重要的,是在實施中發(fā)現(xiàn)那些規(guī)范不合理的地方,并改正它。我們擔(dān)心過小的項目應(yīng)用軟件工程是否會陷入官僚主義,從而加重項目的負(fù)擔(dān)?我們再來看什么是軟件工程?軟件工程并沒有定義什么才是軟件工程!也沒有定義軟件工程自身的規(guī)模。軟件工程的意義在于對開發(fā)階段的劃分,以及分工和責(zé)任歸屬。這與項目的規(guī)模沒有什么沖突。相反,越是小的項目越是需要軟件工程的管理。
軟件開發(fā)的一個共識,是把一個大的項目劃分成一些小的模塊,再把小的模塊劃分成更小的模塊。如果這些小模塊是獨立的(或者原來就是一個獨立的項目),那么軟件工程至少可以提高它的重用性。對于一個軟件工程觀念不深的團隊,不要期望他們在接手大的項目的時候可以使用軟件工程,如果他們在小項目中不愿使用的話。前者的復(fù)雜度不是他們可以想象和承受的。軟件工程對工作量有什么影響?針對那些在不使用軟件工程管理的項目中很輕松的人而言的。軟件工程會使他們要么失業(yè),要么負(fù)起責(zé)任來。相對工程師而言,他們會從混亂的毫無頭緒的狀態(tài)中解放出來,他們的工作會變得有效率。損失的是以前尸位素餐的人將暴露出來——這可能是它的唯一的缺陷,同時也是它受到很多企業(yè)/個人抵制的可能原因之一。
第四篇:學(xué)習(xí)軟件工程的心得與體會
學(xué)習(xí)軟件工程的心得體會
整本書的內(nèi)容邏輯很清晰明了,由淺入深循序漸進,首先我就大概描述下我們所學(xué)的內(nèi) 容,第一章是從整體分析軟件工程這門學(xué)科的發(fā)展和所處的社會環(huán)境,接著后面的幾章深入分析了軟件開放過程和模式、軟件項目管理、計算機工程、需求分析、結(jié)構(gòu)化分析建模以及基于UML面向?qū)ο蠓治鼋5取=又揖驮敿毥榻B下我對這門課程知識點的理解概括:
軟件工程是指導(dǎo)計算機軟件開發(fā)和維護的工程學(xué)科。
軟件生存周期:一個軟件從定義到開發(fā)、使用和維護,直到最終被棄用,要經(jīng)歷一個漫長的時期,通常把軟件經(jīng)歷的這個漫長的時期稱為生存周期。軟件的生存周期可分為八個階段:①問題定義;②可行性研究;③需求分析;④總體(概要)設(shè)計;⑤詳細設(shè)計;⑥編碼與單元測試;⑦綜合測試;⑧軟件維護; 瀑布模式:原型進化模式:增量模式:螺旋模式:
軟件開發(fā)的整個過程:①需要項目團隊,組建優(yōu)秀的團隊可以開發(fā)出更搞質(zhì)量的軟件產(chǎn)品。任務(wù)開發(fā)團隊要求小而精,成員大多在8人以內(nèi),主要成員有項目負(fù)責(zé)人、開發(fā)人員、資料管理員和軟件測試員。②項目計劃是為了使軟件開發(fā)各項工作有秩序地進行,包括任務(wù)分配和基于里程碑的進度安排,甘特圖和任務(wù)網(wǎng)絡(luò)圖是用來描述進度計劃的工具。項目計劃書可以作為軟件開發(fā)的工作指南。③項目成本估算,由于項目有來自各方面的成本包括工資開支、場地費、差旅費、設(shè)備費和資料費等,但是軟件主要是對人力成本的估算,常用的方法有程序代碼成本估算法等。④軟件風(fēng)險管理包括很多不確定的風(fēng)險因素,如計劃風(fēng)險、管理風(fēng)險、需求風(fēng)險、技術(shù)風(fēng)險、人員風(fēng)險、產(chǎn)品風(fēng)險、用戶風(fēng)險和商業(yè)風(fēng)險等等,而風(fēng)險管理的主要任務(wù)是:風(fēng)險識別、風(fēng)險評估、和風(fēng)險防范。⑤軟件文檔管理,軟件文檔是工程模式軟件開發(fā)的成果體現(xiàn),包括技術(shù)文檔、管理文檔和用戶文檔。⑥軟件配置管理與軟件質(zhì)量管理,包括配置規(guī)劃、軟件變更控制、軟件版本控制和質(zhì)量控制計劃。
《軟件工程》課程既強調(diào)基本概念和基本知識的理解和掌握,又側(cè)重軟件項目的分析、設(shè)計、實現(xiàn)和維護的基本技能。比較注意“點”和“面”的結(jié)合。我還是蠻喜歡這門課的,通過對這門課的學(xué)習(xí)讓我意識到理論學(xué)習(xí)很重要,實踐更重要,實踐是檢驗真理的唯一標(biāo)準(zhǔn),只有將理論與實際結(jié)合,才更能發(fā)揮我們所學(xué)的知識的作用,更能直接的創(chuàng)造效益,社會和國家做出貢獻。
第五篇:軟件工程課程設(shè)計個人體會
數(shù)學(xué)與信息工程學(xué)院
項目名稱: 實驗室設(shè)備管理系統(tǒng) 專業(yè)班級:11計教1班
學(xué)號:1129020025 姓名:蔣一瑭
承擔(dān)角色:美工,問題處理 組號:08 同組組長:鄧?yán)?/p>
同組其他成員:王宇翔 馬富偉 江濤 指導(dǎo)教師:鐘美
完成起止日期:2014.6.12 《軟件工程課程設(shè)計個人體會》 1.美化軟件和對在設(shè)計過程中所遇到的問題進行處理 2.在設(shè)計是會出現(xiàn)兩種錯誤,一種是系統(tǒng)部分自定義錯誤和數(shù)據(jù)庫錯誤。系統(tǒng)部分自定義錯誤在權(quán)限方面,管理員出現(xiàn)錯誤,而輸入方面用戶帳號和密碼出錯,查找方面找不到符合要求的記錄。對于數(shù)據(jù)庫,代碼出錯。
對于系統(tǒng)部分 自定義錯誤,需要添加/修改操作只能給幾十對輸入數(shù)據(jù)進行驗真。分析錯誤的類新。并給出相應(yīng)的錯誤提示語句。
對于數(shù)據(jù)庫錯誤,可以在可能出錯的地方中輸入相應(yīng)的出錯語句,并將程序重置,最后返回輸入階段。
此外,還有未解決的問題:未添加設(shè)備選購數(shù)量屬性,輸入賬戶密碼后,退出登錄后,賬戶密碼自動填充。
至于美工方面,就添了一張圖片,一切從簡,只留必須要留下的。
3.軟件工程課程設(shè)計課程設(shè)想心得體味,這也激起了我爾后勤奮進修的樂趣,我想這將對我以后的進修發(fā)作主動的影響。其次,此次課程設(shè)想讓我充實熟悉到團隊協(xié)作的主要性,只要合作協(xié)作才干保證整個項目標(biāo)有條不絮。經(jīng)過此次設(shè)想,我懂得了進修的主要性,體會到實際學(xué)問與實際相連系的主要意義,學(xué)會了堅持、耐心和勤奮,這將為自己爾后的進修和任務(wù)做出了最好的表率。我感受作為一名軟件工程專業(yè)的先生,此次課程設(shè)想是很故意義的。更主要的是若何把自己日常平凡所學(xué)的工具利用到理想中。固然自己關(guān)于這門課懂的并不多,良多根本的工具都還沒有很好的放縱,感受很難,也沒有很有效的法子經(jīng)過自身去了解,可是靠著這一個多禮拜的“進修”,在小組同窗的輔佐和解說下,漸漸對這門課逐漸發(fā)作了些許的樂趣,自己起頭自動進修并逐漸從根本漸漸起頭弄懂它。
所以我以為此次的課程設(shè)想意義很深,和其他4位同窗的配合進修、配合、勤奮的進程也很歡快,別的還要感謝感動教員的耐心教育。