第一篇:軟件工程實(shí)踐學(xué)習(xí)心得
軟件工程實(shí)踐學(xué)習(xí)心得
這學(xué)期學(xué)習(xí)了軟件工程實(shí)踐這門(mén)課,我覺(jué)得這是對(duì)上學(xué)期的軟件工程課程學(xué)習(xí)的檢驗(yàn),上學(xué)期學(xué)習(xí)軟件工程只是我們淺顯的認(rèn)識(shí),相比之下,這學(xué)期就更加全面的說(shuō)明了開(kāi)發(fā)一個(gè)項(xiàng)目所需要的步驟以及開(kāi)發(fā)項(xiàng)目過(guò)程中所需要注意的諸多細(xì)節(jié)。如果說(shuō)上學(xué)期的課程注重理論基礎(chǔ)的話(huà),那么這學(xué)期的軟工實(shí)踐,顧名思義,就是側(cè)重我們動(dòng)手操作的能力。
原來(lái)我認(rèn)為開(kāi)發(fā)一個(gè)項(xiàng)目最重要的就是寫(xiě)代碼,似乎整個(gè)軟件都是編代碼,因?yàn)樽约簞?dòng)手能力不強(qiáng)所以就很排斥做項(xiàng)目??墒墙?jīng)過(guò)我們學(xué)習(xí)軟工課程到團(tuán)隊(duì)做項(xiàng)目再到學(xué)習(xí)軟件工程實(shí)踐課程之后,我才真正意識(shí)到實(shí)施一個(gè)軟件工程項(xiàng)目并不是說(shuō)簡(jiǎn)單的會(huì)編碼就能夠解決問(wèn)題的,因?yàn)橐粋€(gè)軟件的生命周期分為三個(gè)時(shí)期:軟件定義時(shí)期、開(kāi)發(fā)時(shí)期、維護(hù)時(shí)期,而這三個(gè)時(shí)期整體又分為七個(gè)階段,他們分別是:?jiǎn)栴}定義、可行性研究、需求分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼和單元測(cè)試、綜合測(cè)試,由此可看出,當(dāng)我們開(kāi)發(fā)一個(gè)項(xiàng)目時(shí),更多的精力不是放在編碼上,編碼只是一個(gè)很小的模塊,而是項(xiàng)目的整體結(jié)構(gòu)上。
在寫(xiě)軟工實(shí)踐體會(huì)之前,我想在這里總結(jié)一下上學(xué)期三人團(tuán)隊(duì)做 項(xiàng)目的相關(guān)事宜。上學(xué)期我們?nèi)藞F(tuán)隊(duì)根據(jù)軟件開(kāi)發(fā)的步驟開(kāi)發(fā)一個(gè)名為“西大老鄉(xiāng)‘薈’”的社交系統(tǒng),主要是為西大學(xué)子提供一個(gè)找老鄉(xiāng)的平臺(tái)。雖然只進(jìn)行到詳細(xì)設(shè)計(jì)階段,沒(méi)有進(jìn)一步實(shí)現(xiàn),但是我還是從中學(xué)到很多東西的。首先要先確定項(xiàng)目主題,也就是這個(gè)項(xiàng)目用來(lái)做什么,可以解決什么問(wèn)題。接著就是這個(gè)項(xiàng)目是否有研究的必要以及是否有解決的辦法,針對(duì)我們的項(xiàng)目,我們對(duì)西大的一些學(xué)生做了問(wèn)卷調(diào)查,并從調(diào)查中繼續(xù)完善系統(tǒng)本身的做用戶(hù)。第三步根據(jù)我們確定的項(xiàng)目主題進(jìn)行需求分析,這一步驟當(dāng)時(shí)做的不是很好,比如所畫(huà)E-R圖、數(shù)據(jù)流圖等都有考慮不周的問(wèn)題,導(dǎo)致接下來(lái)的概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)進(jìn)行的很困難,有些步驟甚至還需要返工。
從我們?cè)谛枨蠓治鲋谐霈F(xiàn)的問(wèn)題,使我們明白了軟件定義階段對(duì)于一個(gè)項(xiàng)目的開(kāi)發(fā)是至關(guān)重要的,當(dāng)軟件定義階段完成時(shí)必須要用正式的文檔準(zhǔn)確的地記錄目標(biāo)系統(tǒng)的需求。只有前期的準(zhǔn)備工作做得好,后面的工作才能順利進(jìn)行。雖然項(xiàng)目最后沒(méi)有完全實(shí)現(xiàn),但是起碼我們已經(jīng)初步體會(huì)到軟件項(xiàng)目開(kāi)發(fā)的步驟,以及每一步所需要完成的文檔等內(nèi)容。
這學(xué)期的軟件工程實(shí)踐雖然不是親自動(dòng)手開(kāi)發(fā)一個(gè)系統(tǒng),但是張?jiān)嚼蠋熞浴拔锫?lián)網(wǎng)物流倉(cāng)儲(chǔ)管理系統(tǒng)”為主給我們講解了一個(gè)真實(shí)系統(tǒng)的開(kāi)發(fā)過(guò)程,從計(jì)劃到項(xiàng)目系統(tǒng)的發(fā)布實(shí)施,以及每一步必須生成的文檔。我主要從以下五個(gè)方面談一下我的心得體會(huì)。
第一、行業(yè)背景說(shuō)明方面
對(duì)于一個(gè)軟件系統(tǒng)的開(kāi)發(fā),第一步就是問(wèn)題定義,了解所開(kāi)發(fā)系統(tǒng)的行業(yè)背景,制定計(jì)劃。當(dāng)我們計(jì)劃確定以后就要對(duì)項(xiàng)目系統(tǒng)本身進(jìn)行可行性研究,主要從技術(shù)可行性、經(jīng)濟(jì)可行性和操作可行性三個(gè)方面著手。就比如《物聯(lián)網(wǎng)物流倉(cāng)庫(kù)管理系統(tǒng)》的行業(yè)背景說(shuō)明文檔中非常詳細(xì)地分析了當(dāng)下物聯(lián)網(wǎng)物流行業(yè)的整體業(yè)務(wù)說(shuō)明、應(yīng)用背景、未來(lái)發(fā)展趨勢(shì)以及相關(guān)應(yīng)用案例等四個(gè)方面,項(xiàng)目團(tuán)隊(duì)中系統(tǒng)分析員就可以根據(jù)這份文檔以及相關(guān)的調(diào)查資料對(duì)將要開(kāi)發(fā)系統(tǒng)的進(jìn)行定義等工作。
原來(lái)我們寫(xiě)這類(lèi)文檔的時(shí)候就是草草了事,不會(huì)做得這么詳細(xì),而這次看到大型項(xiàng)目的行業(yè)背景說(shuō)明也是這么詳細(xì),也讓自己認(rèn)識(shí)到不管是軟件開(kāi)發(fā)的那個(gè)階段都要認(rèn)真對(duì)待,這些瑣碎的文檔都是后期開(kāi)發(fā)項(xiàng)目的支撐,只要它們做的透徹,后面的開(kāi)發(fā)工作才能更順利的進(jìn)行。
第二、項(xiàng)目需求說(shuō)明方面
這部分項(xiàng)目需求說(shuō)明就是軟件定義時(shí)期中需求分析階段,而該階段的主要目的就是了解用戶(hù)的需要,根據(jù)用戶(hù)的需要確定系統(tǒng)必須完成那些工作,并對(duì)目標(biāo)系統(tǒng)提出完整、準(zhǔn)確、清晰、具體的要求。在需求分析結(jié)束之前系統(tǒng)分析人員要寫(xiě)出一份需求規(guī)格說(shuō)明,即為《物聯(lián)網(wǎng)物流倉(cāng)儲(chǔ)管理系統(tǒng)》項(xiàng)目需求說(shuō)明文檔。我們可以看出該文檔也是非常詳細(xì),相比之下我們之前做項(xiàng)目時(shí)寫(xiě)的需求規(guī)格說(shuō)明書(shū)就非常 不合格,不僅格式不正確內(nèi)容也是少之又少。
在這方面,這篇文檔給我啟發(fā)很大。首先就是文檔的格式,要美觀整齊,讓人看著舒服方便。其次就是文檔的內(nèi)容,原來(lái)它不是很重要,寫(xiě)文檔的時(shí)候也不知道怎么寫(xiě)就借鑒下網(wǎng)上的內(nèi)容,結(jié)果根本就沒(méi)有把自己項(xiàng)目的需求寫(xiě)明白,以至于自己最后都有些糊涂,所以根據(jù)以前的經(jīng)驗(yàn)教訓(xùn)我會(huì)對(duì)這部分更加重視。
第三、系統(tǒng)概要設(shè)計(jì)方面
這部分內(nèi)容分說(shuō)的是軟件設(shè)計(jì)時(shí)期的概要設(shè)計(jì)階段,該階段的主要目的就是實(shí)現(xiàn)系統(tǒng)的功能、設(shè)計(jì)軟件的結(jié)構(gòu)、模塊組成以及模塊之間的關(guān)系。在概要設(shè)計(jì)階段,我們可以站在全局的高度上,花較少的成本,從抽象的層次上分析對(duì)比多種可能的系統(tǒng)實(shí)現(xiàn)方案和軟件結(jié)構(gòu),從中選出最佳方案和最合理的結(jié)構(gòu)。在這個(gè)階段還會(huì)具體畫(huà)出E-R圖、數(shù)據(jù)流圖等方面的設(shè)計(jì)。
比如《物聯(lián)網(wǎng)物流倉(cāng)庫(kù)管理系統(tǒng)》的系統(tǒng)概要設(shè)計(jì)從項(xiàng)目概述、設(shè)計(jì)約束、功能單元與功能模塊設(shè)計(jì)、數(shù)據(jù)E-R圖設(shè)計(jì)、總體設(shè)計(jì)、界面設(shè)計(jì)等六個(gè)方面介紹,通過(guò)讀這個(gè)文檔,我覺(jué)得最重要的還是總體設(shè)計(jì),分別從邏輯架構(gòu)設(shè)計(jì)、物理架構(gòu)設(shè)計(jì)、技術(shù)架構(gòu)設(shè)計(jì)設(shè)計(jì)系統(tǒng)。在這個(gè)階段中模塊要做到高內(nèi)聚低耦合,這樣開(kāi)發(fā)出來(lái)的系統(tǒng)才會(huì)具有更高的獨(dú)立性。
在原來(lái)做項(xiàng)目時(shí)沒(méi)有編寫(xiě)過(guò)這類(lèi)文檔,在該階段只是畫(huà)了結(jié)構(gòu)圖、層次圖以及相關(guān)的模塊劃分,對(duì)該類(lèi)文檔尚未重視。通過(guò)張老師的講解和自己的學(xué)習(xí),我相信在以后做項(xiàng)目的時(shí)候一定會(huì)注意到這類(lèi)文檔的編寫(xiě)。
第四、詳細(xì)設(shè)計(jì)與分析方面
詳細(xì)設(shè)計(jì)階段就是把概要設(shè)計(jì)階段的每個(gè)模塊進(jìn)一步設(shè)計(jì),確定每個(gè)模塊所需要的算法和數(shù)據(jù)結(jié)構(gòu)。在這個(gè)階段還是需要我們?cè)O(shè)計(jì)出程序的詳細(xì)規(guī)格說(shuō)明,而不是編寫(xiě)程序。在詳細(xì)設(shè)計(jì)階段,系統(tǒng)設(shè)計(jì)人員可以通過(guò)使用程序流程圖、盒圖、PAD圖等過(guò)程設(shè)計(jì)的工具和Jackson圖等面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)工具進(jìn)一步設(shè)計(jì)系統(tǒng)相關(guān)接口,主要包括界面設(shè)計(jì)接口、業(yè)務(wù)單設(shè)計(jì)接口、單元模塊設(shè)計(jì)接口等,這些對(duì)于以后的編碼工作都是極其重要的。
第五、編碼和測(cè)試方案方面
關(guān)于編碼,我認(rèn)為編碼要想做的完美必備條件就是前面的軟件定義和軟件設(shè)計(jì)時(shí)期要按部就班的做,文檔一定要按要求書(shū)寫(xiě),不能偷懶也不能草草書(shū)寫(xiě)。對(duì)于編碼也要有相應(yīng)的文檔書(shū)寫(xiě)規(guī)范,要使源程序代碼的邏輯簡(jiǎn)明清晰、易讀易懂。這樣盡管我們不是設(shè)計(jì)系統(tǒng)的人員,當(dāng)看到源程序代碼的時(shí)候也能容易讀懂代碼的意思。
其次就是測(cè)試的內(nèi)容,從測(cè)試的文檔中我們可以得出,其實(shí)測(cè)試在軟件開(kāi)發(fā)中同樣占據(jù)了重要的地位,它主要就是盡可能多的找到問(wèn)題并排除其中的潛藏的錯(cuò)誤,最終把一個(gè)高質(zhì)量的軟件系統(tǒng)交給用戶(hù) 使用。它要求測(cè)試人員也要有很高的技術(shù)水平。
第二篇:《軟件工程》學(xué)習(xí)心得
《軟件工程》學(xué)習(xí)心得
時(shí)光匆匆,不知不覺(jué)間《軟件工程》的課程已經(jīng)快學(xué)完,雖說(shuō)沒(méi)有具體的項(xiàng)目來(lái)開(kāi)發(fā)應(yīng)用,但我們知道軟件工程是將系統(tǒng)化的,規(guī)范化的,可度量的方法應(yīng)用于軟件的開(kāi)發(fā),運(yùn)行和維護(hù)的過(guò)程,在整個(gè)學(xué)習(xí)期間,總的來(lái)說(shuō)還是學(xué)到了很多實(shí)用的東西,老師的介紹,教會(huì)我們?nèi)绾稳シ治龊吞幚韱?wèn)題,教會(huì)我們編寫(xiě)項(xiàng)目軟件的流程和注意事項(xiàng),總的來(lái)說(shuō)還是獲益匪淺的。
初學(xué)軟件工程,或許很多人都會(huì)迷茫,不知道軟件工程學(xué)有何用,其實(shí),軟件工程還沒(méi)有精確地定義,但老師的實(shí)例我是深有體會(huì),比如巧用建筑學(xué)知識(shí),軟件工程可以指導(dǎo)你分析出框架結(jié)構(gòu),項(xiàng)目實(shí)現(xiàn)的大體步驟及具體的細(xì)節(jié)等等,高效的開(kāi)發(fā)、使用及維護(hù)軟件,軟件工程是必不可少的。
下面我來(lái)回顧一下各章的內(nèi)容,第一章初識(shí)軟件工程,這一章主要講解的是一些概念性和基礎(chǔ)性的內(nèi)容,例如軟件的概念、特性,軟件危機(jī)的主要表現(xiàn),軟件工程的概念以及軟件生存期、典型生存期模型等等。第二章軟件需求分析,這一章主要講了需求分析的任務(wù),需求分析的步驟及各種描述工具、分析文檔;需求的各種描述工具有實(shí)體關(guān)系圖、數(shù)據(jù)流圖、數(shù)據(jù)字典、等等;這是軟件項(xiàng)目開(kāi)發(fā)的第一步。第三章軟件設(shè)計(jì),本章詳細(xì)介紹了概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)及用戶(hù)界面設(shè)計(jì),我們掌握概要設(shè)計(jì)方法及詳細(xì)設(shè)計(jì)方法。第四章程序編碼,這一章重點(diǎn)講解了結(jié)構(gòu)化程序設(shè)計(jì),設(shè)計(jì)風(fēng)格及效率,程序設(shè)計(jì)語(yǔ)言的選擇。第五章面向?qū)ο蠹夹g(shù),這一章重點(diǎn)講解了面向?qū)ο蟮母拍?、分析及設(shè)計(jì),掌握什么是面向?qū)ο螅嫦驅(qū)ο笥心男﹥?yōu)缺點(diǎn),了解面向?qū)ο蟮姆治龊驮O(shè)計(jì)方法。第六章統(tǒng)一建模語(yǔ)言UML,本章講解了靜動(dòng)態(tài)建模機(jī)制,理解UML的形成、內(nèi)容、特點(diǎn)及應(yīng)用領(lǐng)域并掌握例圖、類(lèi)圖進(jìn)行靜態(tài)建模的方法。第七章軟件測(cè)試,本章詳細(xì)介紹了軟件測(cè)試方法及黑白盒測(cè)試用例設(shè)計(jì)方法,還講解了軟件測(cè)試步驟。第八章軟件維護(hù),本章主要介紹軟件維護(hù)的任務(wù)、軟件維護(hù)活動(dòng)以及軟件維護(hù)方法進(jìn)行了介紹。
在學(xué)習(xí)軟件工程過(guò)程中,或許有諸多不解,我們要從整體概念上較好地理解和把握、學(xué)好軟件工程,學(xué)習(xí)時(shí)要注意多看多練要注意結(jié)合實(shí)際,更要多思考,面對(duì)錯(cuò)誤不要一范就問(wèn),要嘗試自己去解決。但是還要注意什么都學(xué),肯定是什么都學(xué)不透的,要集中精力打攻堅(jiān)戰(zhàn),學(xué)習(xí)軟件工程首先要明白自己的學(xué)習(xí)目標(biāo)究竟是什么,根據(jù)自己的實(shí)際工作出發(fā),有針對(duì)性的在相應(yīng)的學(xué)習(xí)方向上進(jìn)行提高,制定出詳細(xì)的學(xué)習(xí)規(guī)劃。還要注意與其他科目的相輔相成,就像我們?cè)趯W(xué)習(xí)面向?qū)ο蠓治龅臅r(shí)候要結(jié)合大一學(xué)習(xí)的面向?qū)ο蠹捌浞椒▽W(xué)這一專(zhuān)業(yè)科目進(jìn)行研究拓展,多思多想,把從各個(gè)科目學(xué)到的知識(shí)通匯貫通。
在寫(xiě)軟件的時(shí)候,我們首先要有整體的結(jié)構(gòu)和思路,這樣才能照著一定的思想一定思路去寫(xiě)下去,有人說(shuō)其實(shí)寫(xiě)軟件并不難,只要給你一個(gè)思路你就可以不斷地往下寫(xiě)。我覺(jué)得確是如此,其實(shí)我們平時(shí)寫(xiě)軟件我覺(jué)得并不是很難的事,平時(shí)即使遇到處理不了的技術(shù)問(wèn)題,哪里編譯出現(xiàn)錯(cuò)誤等等其實(shí)都可以在網(wǎng)上提問(wèn)。技術(shù)問(wèn)題一般我們都可以在網(wǎng)上得到答案,但軟件的思想不是我們看了一下就能真正理解的。寫(xiě)軟件一般都是在沿著現(xiàn)有思路一步一步地寫(xiě)下去,而軟件工程注重于宏觀的來(lái)構(gòu)思整個(gè)軟件的思路,重在創(chuàng)新。所以說(shuō)軟件工程最重要的核心就是——?jiǎng)?chuàng)新。任何產(chǎn)品的成功出現(xiàn)都是因?yàn)樗晒Φ膭?chuàng)新,雖然創(chuàng)新的程度不一樣,而軟件也一樣最重要的不是代碼的編寫(xiě)而是軟件的分析與整體構(gòu)思。學(xué)習(xí)軟件工程對(duì)軟件工程有了初步的認(rèn)識(shí),帶著軟件工程的思維或說(shuō)是眼光在做項(xiàng)目的同時(shí)不斷積累經(jīng)驗(yàn),總會(huì)有能夠獨(dú)立分析與構(gòu)思整個(gè)軟件系統(tǒng)能力的那天。但并不是說(shuō)可以獨(dú)立分析軟件系統(tǒng)就是軟件工程的最終目標(biāo),畢竟學(xué)無(wú)止境,知識(shí)是無(wú)盡頭的,我們?nèi)孕枰恍傅呐Α?/p>
下面我們來(lái)了解一下軟件工程的開(kāi)發(fā)流程,生產(chǎn)一個(gè)最終能滿(mǎn)足需求且達(dá)到工程目標(biāo)的軟件產(chǎn)品所需要的步驟如軟件工程開(kāi)發(fā)流程圖1,軟件工程過(guò)程主要包括開(kāi)發(fā) 過(guò)程、運(yùn)作過(guò)程、維護(hù)過(guò)程。它們覆蓋了需求、設(shè)計(jì)、實(shí)現(xiàn)、確認(rèn)以及維護(hù)等活動(dòng)。需求活動(dòng)包括問(wèn)題分析和需求分析。問(wèn)題分析獲取需求定義,又稱(chēng)軟件需求規(guī) 約。需求分析生成功能規(guī)約。設(shè)計(jì)活動(dòng)一般包括概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。概要設(shè)計(jì)建立整個(gè)軟件系統(tǒng)結(jié)構(gòu),包括子系統(tǒng)、模塊以及相關(guān)層次的說(shuō)明、每一模塊的接口定義。詳細(xì)設(shè)計(jì)產(chǎn)生程序員可用的模塊說(shuō)明,包括每一模塊中數(shù)據(jù)結(jié)構(gòu)說(shuō)明及加工描述。實(shí)現(xiàn)活動(dòng)把設(shè)計(jì)結(jié)果轉(zhuǎn)換為可執(zhí)行的程序代碼。確認(rèn)活動(dòng)貫穿于整個(gè)開(kāi)發(fā)過(guò)程,實(shí)現(xiàn)完成后的確認(rèn),保證最終產(chǎn)品滿(mǎn)足用戶(hù)的要求。維護(hù)活動(dòng)包括使用過(guò)程中的擴(kuò)充、修改與完善。
軟件工程開(kāi)發(fā)流程圖 1 在學(xué)習(xí)的過(guò)程中,老師讓我們開(kāi)發(fā)一個(gè)圖書(shū)管理系統(tǒng),讓我們第一次通過(guò)團(tuán)隊(duì)做項(xiàng)目開(kāi)發(fā),我們都有很多的體驗(yàn),知道團(tuán)隊(duì)的合作非常重要,爭(zhēng)議固然存在,但需要的是通過(guò)討論、協(xié)商,群策群力,在不斷地磨合中達(dá)成一致與默契,應(yīng)該注意的是團(tuán)隊(duì)的合作要合理的分工;在一個(gè)團(tuán)隊(duì)中,團(tuán)隊(duì)的成員能力各有高低,應(yīng)該互相尊重,各取所長(zhǎng),不宜妄自菲薄;組長(zhǎng)需要多加協(xié)調(diào),組員積極配合才能合作愉快,才能完全的發(fā)揮出團(tuán)體的實(shí)力。
軟件工程課程雖已結(jié)束,但我對(duì)于軟件工程的學(xué)習(xí)才剛剛開(kāi)始,張老師的課讓我受益匪淺。我體會(huì)到項(xiàng)目管理的重要性,隨著軟件規(guī)模、復(fù)雜度的不斷增加,項(xiàng)目開(kāi)發(fā)中更多的是協(xié)作、管理和控制。我學(xué)習(xí)到很多一般性的方法,例如:需求獲取、模塊化、分治、估算、計(jì)劃等等。有了軟件工程基本的知識(shí),我們無(wú)論是做項(xiàng)目還是寫(xiě)軟件都有了一套方法,這將是解決問(wèn)題的有效途徑,我們要學(xué)會(huì)合理的利用。
在這個(gè)飛速發(fā)展的軟件時(shí)代,隨著軟件應(yīng)用的日益廣泛,軟件規(guī)模日益擴(kuò)大,《軟件工程》顯得格外的重要,《軟件工程》強(qiáng)調(diào)基本概念和基本知識(shí)的理解掌握,又側(cè)重軟件項(xiàng)目的分析、設(shè)計(jì)、實(shí)現(xiàn)和維護(hù)的基本技能;我們已經(jīng)學(xué)到理論的知識(shí),但是軟件的開(kāi)發(fā)測(cè)試對(duì)邏輯思維、學(xué)習(xí)能力、反應(yīng)思維要求很高,我們?nèi)孕枰粩嗟劐憻拠?yán)密和逆向的思維,在具體的項(xiàng)目中獲得實(shí)踐的經(jīng)驗(yàn),實(shí)踐才是檢驗(yàn)真理的唯一標(biāo)準(zhǔn),只有將理論與實(shí)踐結(jié)合,才能發(fā)揮我們所學(xué)的知識(shí)的作用,才能更直接的創(chuàng)造效益,才能為國(guó)家和社會(huì)有所貢獻(xiàn)。
最后,要感謝辛勤付出的張老師,是你讓我學(xué)到這么多實(shí)用的知識(shí),讓我獲益良多,在此說(shuō)一聲“謝謝你!”
第三篇:軟件工程學(xué)習(xí)心得
學(xué)習(xí)軟件工程的過(guò)程的學(xué)習(xí)
【摘要】:軟件工程是一門(mén)研究用工程化方法構(gòu)建和維護(hù)有效的、實(shí)用的和高質(zhì)量的軟件的學(xué)科。它涉及到程序設(shè)計(jì)語(yǔ)言,數(shù)據(jù)庫(kù),軟件開(kāi)發(fā)系統(tǒng)系統(tǒng)平臺(tái),標(biāo)準(zhǔn)方面。在現(xiàn)代科學(xué)發(fā)展中軟件應(yīng)用的范圍越來(lái)越廣。一款軟件的黃金壽命有線(xiàn)。而大家主要玩的是軟件。蘋(píng)果的手機(jī)賣(mài)得很貴的一個(gè)原因是因?yàn)樗能浖?。大家玩的就蘋(píng)果的軟件和知識(shí)產(chǎn)權(quán)。
關(guān)鍵詞:軟件工程、學(xué)習(xí)、學(xué)習(xí)心得
【正文】
1)我們專(zhuān)業(yè)是軟件服務(wù)外包。這學(xué)期的學(xué)習(xí)課程有數(shù)據(jù)結(jié)構(gòu)、java語(yǔ)言、軟件服務(wù)外包與軟件企業(yè)成長(zhǎng)、CMM體系還有軟件工程。而這些學(xué)科是輔助軟件工程開(kāi)發(fā)項(xiàng)目的條件。
2)軟件是一種特殊的產(chǎn)品,認(rèn)們通??吹降氖撬妮d體,而真正具有意義的是載體上的計(jì)算機(jī)或信息
軟件既不同于通常的精神產(chǎn)品,也不同于常見(jiàn)的物質(zhì)產(chǎn)品。作家的作品是一種精神產(chǎn)品,它沒(méi)有使用價(jià)值卻可以供人閱讀欣賞。若把軟件也看成是一種作品,卻發(fā)現(xiàn)其價(jià)值在于供人們使用,無(wú)人喜歡讀它的源代碼
一、明確目的1我們要明確說(shuō)明是軟件工程。它的實(shí)質(zhì),還有他包含的內(nèi)容。軟工程包括的幾個(gè)方面。
3)可靠性:明確對(duì)系統(tǒng)進(jìn)行修改而不增加原系統(tǒng)的復(fù)雜性
4)有效性:系統(tǒng)能最有效地利用計(jì)算機(jī)的時(shí)間資源和空間資源
5)可靠性:能防止因概念、設(shè)計(jì)和結(jié)構(gòu)等方面的不完善造成的軟件系統(tǒng)失效,具有挽回因操作不當(dāng)造成軟件系統(tǒng)失效的能力。
6)可理解性:可理解性有助于控制軟件系統(tǒng)的復(fù)雜性,并支持軟件的維護(hù)、移植或重用。
二、軟件開(kāi)發(fā)的過(guò)程
1)軟件工程的7條原理
用分階段的生命周期計(jì)劃嚴(yán)格管理、堅(jiān)持進(jìn)行階段評(píng)審、實(shí)行嚴(yán)格的產(chǎn)品控制、采納現(xiàn)代程序設(shè)計(jì)技術(shù)、結(jié)果應(yīng)能清楚地審查、開(kāi)發(fā)小組的人員應(yīng)少而精、承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性【1】
用分階段的生命周期計(jì)劃嚴(yán)格管理。應(yīng)該把軟件生命周期分成若干階段,并相應(yīng)制定出切實(shí)可行的計(jì)劃,然后嚴(yán)格按照計(jì)劃對(duì)軟件的開(kāi)發(fā)和維護(hù)進(jìn)行管理。玻姆認(rèn)為,在整個(gè)軟件生命周期中應(yīng)指定并嚴(yán)格執(zhí)行6類(lèi)計(jì)劃:項(xiàng)目概要計(jì)劃、計(jì)劃、項(xiàng)目控制計(jì)劃、產(chǎn)品控制計(jì)劃、驗(yàn)證計(jì)劃、運(yùn)行維護(hù)計(jì)劃。
實(shí)施嚴(yán)格的產(chǎn)品控制。當(dāng)需求變動(dòng)時(shí),其它各個(gè)階段的文檔或代碼隨之相
應(yīng)變動(dòng),以保證軟件的一致性。開(kāi)發(fā)人員的素質(zhì)和數(shù)量是影響軟件質(zhì)量和開(kāi)發(fā)效率的重要因素,應(yīng)該少而精。
2)軟件過(guò)程的目標(biāo)、在給定成本、進(jìn)度的前提下,開(kāi)發(fā)出具有可修改性、有效性、可靠性、可理解性、可維護(hù)性、可重用性、可適應(yīng)性、可移植性、可追蹤性和可互操作性并且滿(mǎn)足用戶(hù)需求的軟件產(chǎn)品。追求這些目標(biāo)有助于提高軟件
【2】產(chǎn)品的質(zhì)量和開(kāi)發(fā)效率,減少維護(hù)的困難。
3軟件上的的生存周期
1可行性研究:根據(jù)用戶(hù)提出的工程項(xiàng)目的性質(zhì)、目標(biāo)和規(guī)模,進(jìn)一步了解用戶(hù)的要求及現(xiàn)有的環(huán)境及條件,從技術(shù)、經(jīng)濟(jì)和社會(huì)等多方面研究并論證該項(xiàng)目的可行性。
2需求分析:任務(wù)是用戶(hù)對(duì)軟件的功能需要,指定系統(tǒng)必須提供的服務(wù)。通過(guò)需求分析,指定出相應(yīng)的性能。還包括可靠性、可用性、出錯(cuò)處理需求、接口需求等。盡可能的明確當(dāng)前系統(tǒng)的系統(tǒng)開(kāi)發(fā)范疇。
3概要設(shè)計(jì):概要設(shè)計(jì)建立的是目標(biāo)系統(tǒng)的邏輯模型,與計(jì)算機(jī)無(wú)關(guān)。概要設(shè)計(jì)有多種方法。在早期有模塊化方法、功能分解方法;在60年代后期提出了面向數(shù)據(jù)流和面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法;近年來(lái)又提出面向?qū)ο蟮脑O(shè)計(jì)方法等。
4詳細(xì)設(shè)計(jì):詳細(xì)設(shè)計(jì)的工具包括圖形工具、表格工具、語(yǔ)言工具等來(lái)輔助詳細(xì)設(shè)計(jì)文檔。概要設(shè)計(jì)是詳細(xì)設(shè)計(jì)的基礎(chǔ),必須在詳細(xì)設(shè)
5實(shí)現(xiàn):是對(duì)軟件文檔變成計(jì)算機(jī)表現(xiàn)形式。編碼的主要任務(wù)是根據(jù)詳細(xì)設(shè)計(jì)規(guī)格說(shuō)明,用某種選定的程序設(shè)計(jì)語(yǔ)言把詳細(xì)設(shè)計(jì)的結(jié)果轉(zhuǎn)化為機(jī)器可運(yùn)行的源程序模塊,這是一個(gè)編程和調(diào)試程序的過(guò)程。
6組裝測(cè)試:測(cè)試系統(tǒng)各模塊間的連接是否正確,系統(tǒng)或子系統(tǒng)的正確處理能力、容錯(cuò)能力、輸入/輸出處理是否達(dá)到要求。
7驗(yàn)收測(cè)試:按照驗(yàn)收測(cè)試計(jì)劃和準(zhǔn)則對(duì)軟件系統(tǒng)進(jìn)行測(cè)試,看其是否達(dá)到了需求規(guī)格說(shuō)明中定義的全部功能和性能等方面的需求。
8使用與維護(hù):,軟件在使用的過(guò)程中,應(yīng)及時(shí)收集被發(fā)現(xiàn)的軟件錯(cuò)誤,并定期撰寫(xiě)“軟件問(wèn)題報(bào)告
三、學(xué)習(xí)要求
1、老師要求
掌握軟件項(xiàng)目開(kāi)發(fā)和維護(hù)的一般過(guò)程,掌握軟件開(kāi)發(fā)的傳統(tǒng)方法和最新方法,能用軟件工程的方法參與軟件項(xiàng)目的分析、設(shè)計(jì)、實(shí)現(xiàn)和維護(hù),為更深入地學(xué)習(xí)和今后從事軟件工程的實(shí)踐打下良好的基礎(chǔ)。按5個(gè)人一個(gè)小組。進(jìn)行項(xiàng)目開(kāi)發(fā)。做自己的軟件,編寫(xiě)自己的文檔。完成論文。
2個(gè)人對(duì)軟件工程的看法
20世紀(jì)末開(kāi)始流行的Internet給人們提供了一種全球范圍的信息基礎(chǔ)設(shè)施,形成了一個(gè)資源豐富的計(jì)算平臺(tái),未來(lái)如何在Internet平臺(tái)上進(jìn)一步整合資源,形成巨型的、高效的、可信的虛擬環(huán)境,使所有資源能夠高效、可信地為所有用戶(hù)服務(wù),成為軟件技術(shù)的研究熱點(diǎn)。Internet平臺(tái)具有一些傳統(tǒng)軟件平臺(tái)不具備的特征:分布性、節(jié)點(diǎn)的高度自治性、開(kāi)放性、異構(gòu)性、不可預(yù)測(cè)性、測(cè)試系統(tǒng)各模塊間的連接是否正確,系統(tǒng)或子系統(tǒng)的正確處理能力、容錯(cuò)能力、輸入/輸出處理是否達(dá)到要求。
連接環(huán)境的多樣性等。這對(duì)軟件工程的發(fā)展提出了新的問(wèn)題。軟件工程需要新的理論、方法和技術(shù)和平臺(tái)來(lái)應(yīng)對(duì)這個(gè)問(wèn)題。目前投入很大精力研究的中間件技術(shù)就是這方面的典型代表。
綜上所述,Internet及其上應(yīng)用的快速發(fā)展與普及,使計(jì)算機(jī)軟件所面臨的環(huán)境開(kāi)始從靜態(tài)封閉逐步走向開(kāi)放、動(dòng)態(tài)和多變。軟件系統(tǒng)為了適應(yīng)這樣一種發(fā)展趨勢(shì),將會(huì)逐步呈現(xiàn)出柔性、多目標(biāo)、連續(xù)反應(yīng)式的網(wǎng)構(gòu)軟件系統(tǒng)的形態(tài)。面對(duì)這種新型的軟件形態(tài),傳統(tǒng)的軟件理論、方法、技術(shù)和平臺(tái)面臨了一系列挑戰(zhàn)。從宏觀上看,這種挑戰(zhàn)為我們研究軟件理論、方法和技術(shù)提供了難得的機(jī)遇,使我們有可能建立一套適合于Internet開(kāi)放、動(dòng)態(tài)和多變環(huán)境的新型軟件理論、方法和技術(shù)體系。從微觀的角度來(lái)看,Internet的發(fā)展將使系統(tǒng)軟件和支撐平臺(tái)的研究重點(diǎn)開(kāi)始從操作系統(tǒng)等轉(zhuǎn)向新型中間件平臺(tái),而網(wǎng)構(gòu)軟件的理論、方法和技術(shù)的突破必將導(dǎo)致在建立新型中間件平臺(tái)創(chuàng)新技術(shù)方面的突破
【1】 Xx老師課件
【2】 軟件工程與實(shí)踐
第四篇:軟件工程學(xué)習(xí)心得
軟件工程學(xué)習(xí)心得
在本學(xué)期的軟件工程課程的學(xué)習(xí)中,我們學(xué)習(xí)了十一章的內(nèi)容。
第一章軟件與軟件工程的概念,這一章主要講解的是一些概念性和基礎(chǔ)性的內(nèi)容,例如軟件的概念、特性,軟件危機(jī)的主要表現(xiàn),軟件工程的概念以及軟件生存期、典型生存期模型等等。第二章軟件工程方法與工具,這一章主要對(duì)軟件工程方法進(jìn)行介紹,包括三種方法:傳統(tǒng)方法、面向?qū)ο蠓椒?、形式化方法。還引出了工具UML。第三章軟件需求獲取與結(jié)構(gòu)化分析方法,本章詳細(xì)介紹了需求獲取與需求分析階段的任務(wù)以及結(jié)構(gòu)化分析方法,畫(huà)分層的數(shù)據(jù)流圖、E-R圖以及狀態(tài)圖式本節(jié)的重點(diǎn)。第四章結(jié)構(gòu)化分析方法,這一章重點(diǎn)講解了使用變換型映射方法和事務(wù)型映射方法生成初始的模塊結(jié)構(gòu)以及模塊結(jié)構(gòu)的改進(jìn)。第五章編碼,這一章重點(diǎn)講解了編碼的風(fēng)格及規(guī)范,還告訴我們編碼規(guī)范說(shuō)帶來(lái)的好處,并告誡我們將來(lái)一點(diǎn)要形成好的編碼風(fēng)格。第六章軟件測(cè)試方法,本章講解了軟件測(cè)試相關(guān)的概念及重要性,軟件測(cè)試與開(kāi)發(fā)各個(gè)階段的關(guān)系;還介紹了白盒測(cè)試技術(shù)以及黑河測(cè)試技術(shù)。第七章統(tǒng)一建模語(yǔ)言UML概述,本章詳細(xì)介紹了UML的基本模式、事物、關(guān)系及建模時(shí)用到的各種圖進(jìn)行了介紹。第八章面向?qū)ο蠓治?,這一章主要講解了面向?qū)ο蠓治龅?種模型,包括功能模型、靜態(tài)模型和動(dòng)態(tài)模型。第九章軟件體系結(jié)構(gòu)與設(shè)計(jì)模式,本章對(duì)軟件體系結(jié)構(gòu)的基本概念、典型風(fēng)格等進(jìn)行了講解。第十章面向?qū)ο笤O(shè)計(jì),本章的重點(diǎn)是對(duì)面向?qū)ο蠓治鰰r(shí)建立的對(duì)象模型進(jìn)行調(diào)整和細(xì)化。第十一章軟件維護(hù),本章主要介紹軟件維護(hù)的任務(wù)、軟件維
護(hù)活動(dòng)以及軟件維護(hù)方法進(jìn)行了介紹。
要學(xué)習(xí)軟件工程,學(xué)會(huì)如何系統(tǒng)的思考,以及養(yǎng)成良好的編碼習(xí)慣,想學(xué)好軟件工程,就必須知道軟件工程的目標(biāo)、過(guò)程和原則:軟件工程目標(biāo):生產(chǎn)具有正確性、可用性以及開(kāi)銷(xiāo)合宜的產(chǎn)品。正確性指軟件產(chǎn)品達(dá)到預(yù)期功能的程度??捎眯灾杠浖窘Y(jié)構(gòu)、實(shí)現(xiàn)及文檔為用戶(hù)可用的程度。開(kāi)銷(xiāo)合宜是指軟件開(kāi)發(fā)、運(yùn)行的整個(gè)開(kāi)銷(xiāo)滿(mǎn)足用戶(hù)要求的程度。這些目標(biāo)的實(shí)現(xiàn)不論在理論上還是在實(shí)踐中均存在很多待解決的問(wèn)題,它們形成了對(duì)過(guò)程、過(guò)程模型及工程方法選取的約束。
軟件工程過(guò)程:生產(chǎn)一個(gè)最終能滿(mǎn)足需求且達(dá)到工程目標(biāo)的軟件產(chǎn)品所需要的步驟。軟件工程過(guò)程主要包括開(kāi)發(fā)過(guò)程、運(yùn)作過(guò)程、維護(hù)過(guò)程。它們覆蓋了需求、設(shè)計(jì)、實(shí)現(xiàn)、確認(rèn)以及維護(hù)等活動(dòng)。需求活動(dòng)包括問(wèn)題分析和需求分析。問(wèn)題分析獲取需求定義,又稱(chēng)軟件需求規(guī)約。需求分析生成功能規(guī)約。設(shè)計(jì)活動(dòng)一般包括概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。概要設(shè)計(jì)建立整個(gè)軟件系統(tǒng)結(jié)構(gòu),包括子系統(tǒng)、模塊以及相關(guān)層次的說(shuō)明、每一模塊的接口定義。詳細(xì)設(shè)計(jì)產(chǎn)生程序員可用的模塊說(shuō)明,包括每一模塊中數(shù)據(jù)結(jié)構(gòu)說(shuō)明及加工描述。實(shí)現(xiàn)活動(dòng)把設(shè)計(jì)結(jié)果轉(zhuǎn)換為可執(zhí)行的程序代碼。確認(rèn)活動(dòng)貫穿于整個(gè)開(kāi)發(fā)過(guò)程,實(shí)現(xiàn)完成后的確認(rèn),保證最終產(chǎn)品滿(mǎn)足用戶(hù)的要求。維護(hù)活動(dòng)包括使用過(guò)程中的擴(kuò)充、修改與完善。伴隨以上過(guò)程,還有管理過(guò)程、支持過(guò)程、培訓(xùn)過(guò)程等。
軟件工程的原則是指圍繞工程設(shè)計(jì)、工程支持以及工程管理在軟
件開(kāi)發(fā)過(guò)程中必須遵循的原則。
我們學(xué)習(xí)了詳細(xì)設(shè)計(jì)的方法,其原則是過(guò)程描述是否易于理解、復(fù)審和維護(hù),進(jìn)而過(guò)程描述能夠自然地轉(zhuǎn)換成代碼,并保證詳細(xì)設(shè)計(jì)與代碼完全一致。包括程序流程圖、N-S圖、PAD圖、HIPO圖
程序流程圖:程序流程圖又稱(chēng)之為程序框圖,它是軟件開(kāi)發(fā)者最熟悉的一種算法表達(dá)工具。它獨(dú)立于任何一種程序設(shè)計(jì)語(yǔ)言,比較直觀和清晰地描述過(guò)程的控制流程,易于學(xué)習(xí)掌握。在流程圖中只能使用下述的五種基本控制結(jié)構(gòu):順序型;選擇型;while型循環(huán);until型循環(huán);多情況型選擇。
N-S圖:一種符合結(jié)構(gòu)化程序設(shè)計(jì)原則的圖形描述工具,稱(chēng)為盒圖,又稱(chēng)為N-S圖。在N-S圖中,為了表示五種基本控制結(jié)構(gòu),規(guī)定了五種圖形構(gòu)件。順序型;選擇型;WHILE重復(fù)型;UNTIL重復(fù)型;多分支選擇型。
PAD圖:它是用結(jié)構(gòu)化程序設(shè)計(jì)思想表現(xiàn)程序邏輯結(jié)構(gòu)的圖形工具。PAD也設(shè)置了五種基本控制結(jié)構(gòu)的圖示,并允許遞歸使用。
HIPO圖:HIPO圖是由一組IPO圖加一張HC圖組成。它是美國(guó)IBM公司在軟件設(shè)計(jì)中使用的主要表達(dá)工具。
HC圖既是層次圖,用于表示軟件的分層結(jié)構(gòu)。HC圖中的每一個(gè)模塊,均可用一張IPO圖來(lái)描述。IPO 圖由輸入、處理和輸出三個(gè)框組成,需要時(shí)還可以增加一個(gè)數(shù)據(jù)文件框,這種圖形的優(yōu)點(diǎn),是能夠直觀地顯示輸入—處理—輸出三者之間的聯(lián)系。
還有測(cè)試方法:按照測(cè)試過(guò)程是否在實(shí)際應(yīng)用環(huán)境中來(lái)分,有靜態(tài)分析與動(dòng)態(tài)測(cè)試。測(cè)試方法有分析方法(包括靜態(tài)分析法與白盒法)與非分析方法(稱(chēng)黑盒法)。
靜態(tài)分析技術(shù):不執(zhí)行被測(cè)軟件,可對(duì)需求分析說(shuō)明書(shū)、軟件設(shè)
計(jì)說(shuō)明書(shū)、源程序做結(jié)構(gòu)檢查、流程分析、符號(hào)執(zhí)行來(lái)找出軟件錯(cuò)誤。
動(dòng)態(tài)測(cè)試技術(shù):當(dāng)把程序作為一個(gè)函數(shù),輸入的全體稱(chēng)為函數(shù)的定義域,輸出的全體稱(chēng)為函數(shù)的值域,函數(shù)則描述了輸入的定義域與輸出值域的關(guān)系。
還學(xué)習(xí)了其他很多工具、語(yǔ)言、方法等,雖然不是都學(xué)得很透徹,但我相信在今后的學(xué)習(xí)中一定會(huì)慢慢的完善的。
軟件工程對(duì)于初學(xué)者來(lái)說(shuō),知識(shí)基礎(chǔ)較薄弱,對(duì)一些應(yīng)用操作、概念、工具方法等理解起來(lái)較為困難,要能從整體概念上較好地理解和把握、學(xué)好軟件工程,不是僅僅把幾本專(zhuān)業(yè)書(shū)籍細(xì)致地看幾遍,然后上機(jī)練習(xí)幾次就可以成功,學(xué)習(xí)過(guò)程中要注意多看多練要注意結(jié)合實(shí)際,更要多思考,面對(duì)錯(cuò)誤不要一范就問(wèn),要嘗試自己去解決。但是還要注意什么都學(xué),肯定是什么都學(xué)不透的,要集中精力打攻堅(jiān)戰(zhàn),學(xué)習(xí)軟件工程首先要明白自己的學(xué)習(xí)目標(biāo)究竟是什么,根據(jù)自己的實(shí)際工作出發(fā),有針對(duì)性的在相應(yīng)的學(xué)習(xí)方向上進(jìn)行提高,制定出詳細(xì)的學(xué)習(xí)規(guī)劃。還要注意與其他科目的相輔相成,就像我們?cè)趯W(xué)習(xí)面向?qū)ο蠓治龅臅r(shí)候要結(jié)合大一學(xué)習(xí)的面向?qū)ο蠹捌浞椒▽W(xué)這一專(zhuān)業(yè)科目進(jìn)行研究拓展;在學(xué)習(xí)語(yǔ)言時(shí),要看看與C語(yǔ)言的聯(lián)系,多思多想,把從各個(gè)科目學(xué)到的知識(shí)通匯貫通。
在軟件工程的學(xué)習(xí)中,我了解到了軟件并非是一些代碼這么簡(jiǎn)單,在開(kāi)發(fā)軟件的過(guò)程中,編寫(xiě)代碼的工作量其實(shí)只占不到所有工程量的30%,而后期的管理和維護(hù)更是占了60%到80%之多。一個(gè)完整的項(xiàng)目規(guī)劃須包括,軟件的定義,可行性分析報(bào)告,項(xiàng)目開(kāi)發(fā)計(jì)劃,軟件需求說(shuō)明書(shū),概要設(shè)計(jì)說(shuō)明書(shū),詳細(xì)設(shè)計(jì)說(shuō)明書(shū),用戶(hù)操作手冊(cè),測(cè)試
計(jì)劃,測(cè)試分析報(bào)告,開(kāi)發(fā)進(jìn)度報(bào)告,項(xiàng)目開(kāi)發(fā)總結(jié)報(bào)告,軟件維護(hù)手冊(cè),軟件問(wèn)題報(bào)告,軟件修改報(bào)告,等多個(gè)文檔,每個(gè)文檔都要上級(jí)驗(yàn)收審查,而文檔數(shù)量眾多,要做好這點(diǎn)真的不是很容易,而恰恰寫(xiě)好文檔正能保證完成軟件工程其中一個(gè)目的的關(guān)鍵,既研究如何用最小的開(kāi)銷(xiāo)做出生存期較長(zhǎng)的軟件,再加上各個(gè)階段都要進(jìn)行周密的策劃、詳細(xì)的分工部署和人員安排,且各階段要據(jù)具體情況不斷的反復(fù)才能達(dá)成,所以代碼只是開(kāi)發(fā)軟件這個(gè)浩大的工程的一個(gè)小小的過(guò)程。
而編碼的學(xué)習(xí)中,我更了解到形成自己獨(dú)特的規(guī)范的編碼風(fēng)格是非常重要的事。因?yàn)檫@影響到了軟件后期繁重的維護(hù),大家都要閱讀你的程序,如果你寫(xiě)的程序毫無(wú)規(guī)范可言,那么別人怎么能讀懂你的程序?讀不懂程序,維護(hù)又從何談起呢?所以,我們?cè)诮窈蟮膶W(xué)習(xí)中,一定要注意這方面的培養(yǎng),在寫(xiě)程序的過(guò)程中,要逐步的在規(guī)范的基礎(chǔ)上形成屬于自己的風(fēng)格,即方便自己的修改,也方便日后他人的閱讀。
在學(xué)習(xí)中,我們還要注意比較三種方法的優(yōu)缺點(diǎn),例如:傳統(tǒng)方法雖然使軟件擺脫了混亂和無(wú)序,但其在適應(yīng)需求變化的方面不夠靈活,而且傳統(tǒng)方法要么面向行為,要么面向數(shù)據(jù),缺乏兩者的有機(jī)結(jié)合。而面向?qū)ο蠓椒ǖ某绦蛟O(shè)計(jì)和問(wèn)題求解更符合人們?nèi)粘W匀坏乃季S習(xí)慣,適合大型、復(fù)雜及交互性比較強(qiáng)的系統(tǒng)。形式化方法則是一中基于形式化數(shù)學(xué)變換的軟件開(kāi)發(fā)方法,它可將系統(tǒng)的規(guī)格說(shuō)明轉(zhuǎn)換為可執(zhí)行的程序。
在今后的學(xué)習(xí)中要注意多讀書(shū)、多思考、多練習(xí)、多討論,不斷熟悉書(shū)本的基礎(chǔ),并以此為基礎(chǔ)將其擴(kuò)散開(kāi)來(lái),應(yīng)用于今后的實(shí)踐。不斷鍛煉自己,向一名合格的程序設(shè)計(jì)師邁進(jìn)。
班級(jí):計(jì)科091姓名:趙俊采學(xué)號(hào):0920020200
第五篇:《軟件工程》學(xué)習(xí)心得
《軟件工程》學(xué)習(xí)心得
一、軟件工程的定義
軟件工程(Software Engineering,簡(jiǎn)稱(chēng)為SE)是一門(mén)研究用工程化方法構(gòu)建和維護(hù)有效的、實(shí)用的和高質(zhì)量的軟件的學(xué)科。它涉及到程序設(shè)計(jì)語(yǔ)言,數(shù)據(jù)庫(kù),軟件開(kāi)發(fā)工具,系統(tǒng)平臺(tái),標(biāo)準(zhǔn),設(shè)計(jì)模式等方面。在現(xiàn)代社會(huì)中,軟件應(yīng)用于多個(gè)方面。典型的軟件比如有電子郵件,嵌入式系統(tǒng),人機(jī)界面,辦公套件,操作系統(tǒng),編譯器,數(shù)據(jù)庫(kù),游戲等。同時(shí),各個(gè)行業(yè)幾乎都有計(jì)算機(jī)軟件的應(yīng)用,比如工業(yè),農(nóng)業(yè),銀行,航空,政府部門(mén)等。這些應(yīng)用促進(jìn)了經(jīng)濟(jì)和社會(huì)的發(fā)展,使得人們的工作更加高效,同時(shí)提高了生活質(zhì)量。
二、軟件工程的目標(biāo)
在給定成本、進(jìn)度的前提下,開(kāi)發(fā)出具有可修改性、有效性、可靠性、可理解性、可維護(hù)性、可重用性、可適應(yīng)性、可移植性、可追蹤性和可互操作性并且滿(mǎn)足用戶(hù)需求的軟件產(chǎn)品。
三、軟件工程的原則
是指圍繞工程設(shè)計(jì)、工程支持以及工程管理在軟件開(kāi)發(fā)過(guò)程中必須遵循的原則。軟件工程的原則有以下四項(xiàng)基本原則:1)選取適宜開(kāi)發(fā)范型;2)采用合適的設(shè)計(jì)方法;3)提供高質(zhì)量的工程支持;4)重視開(kāi)發(fā)過(guò)程的管理。
四、軟件工程的由來(lái)
據(jù)說(shuō)上個(gè)世紀(jì)60年代的程序員都是天才,寫(xiě)程式就像寫(xiě)日記一樣,吃過(guò)晚飯沒(méi)事干隨手就可以寫(xiě)幾個(gè)出來(lái)玩,第二天還可以拿去賣(mài)錢(qián)。所以那時(shí)候程序員在大家眼中,跟那些搞美術(shù),音樂(lè)的是一類(lèi)的,被稱(chēng)為“藝術(shù)家”。
但事過(guò)境遷,就像任何人都不會(huì)嫌錢(qián)多一樣,永遠(yuǎn)都不會(huì)有人嫌CPU快的。于是,隨之而來(lái)的就是硬件的迅猛發(fā)展和越來(lái)越變態(tài)的軟件。記得以前常去同學(xué)家拷游戲,通常幾張軟盤(pán)就可以搞定,而現(xiàn)在的游戲,兩三張CD-ROM都算少的了。像如此龐大復(fù)雜的怪物,就算你是如何的天才,一個(gè)人肯定是搞不定的,否則,等你把程式寫(xiě)出來(lái),人家Intel連奔騰N都開(kāi)發(fā)出來(lái)了。既要開(kāi)發(fā)大型的軟件還要追求速度(這樣才能賺錢(qián)),于是很自然地,合作的概念被提了出來(lái)。
在開(kāi)始合作的初期,由于大家都習(xí)慣了當(dāng)很有個(gè)性的“藝術(shù)家”,結(jié)果可想而知,一個(gè)是畢加索派的,而另一個(gè)是意大利印象派的,再加上一個(gè)畫(huà)潑墨山水畫(huà)的,要是像這樣湊出來(lái)的東西都能不出問(wèn)題的話(huà),那么Bill早就轉(zhuǎn)行了。所以,那時(shí)侯的大型軟件,據(jù)說(shuō)“藍(lán)屏”比WINDOWS 98還多。
馬克思告訴我們,萬(wàn)物都是從量變到質(zhì)變的。隨著問(wèn)題的不斷涌現(xiàn),一些master們開(kāi)始嘗試去總結(jié)經(jīng)驗(yàn),并歸納了一些規(guī)范去指導(dǎo)軟件的分析,設(shè)計(jì),實(shí)現(xiàn),測(cè)試,維護(hù),人員交流協(xié)作,項(xiàng)目預(yù)算及時(shí)限控制等方方面面,這就是軟件工程的前身。
軟件工程到現(xiàn)在已發(fā)展了30多年,可以說(shuō)是相當(dāng)成熟的了?,F(xiàn)在開(kāi)發(fā)軟件,據(jù)說(shuō)都是一大幫人排排坐,按著一整套的規(guī)章制度來(lái)干活。于是,軟件開(kāi)發(fā)成了“工程”,程序員也就淪為“工人”了。
五、軟件工程的核心
軟件工程,說(shuō)白了,就是這樣一套用于軟件的團(tuán)隊(duì)開(kāi)發(fā),以提高軟件質(zhì)量和程序員工作效率為目的的規(guī)范。其核心就是,對(duì)于軟件開(kāi)發(fā)的5個(gè)重要組成部分:需求分析,設(shè)計(jì),編碼,調(diào)試,維護(hù),如何組織這5個(gè)部分的工作,以及如何完成每一個(gè)工作。簡(jiǎn)單來(lái)說(shuō),就是對(duì)于總體的組織和對(duì)于局部的實(shí)現(xiàn)。
六、軟件開(kāi)發(fā)過(guò)程
開(kāi)發(fā)軟件,就像是解決一個(gè)邏輯問(wèn)題。想想自己平時(shí)是怎樣寫(xiě)程序的。首先是要有一個(gè)想法,即我寫(xiě)的這個(gè)程序是要干什么的;然后就是對(duì)要實(shí)現(xiàn)的核心功能大概構(gòu)思一種或多種實(shí)現(xiàn)方法,并從中選出一種自認(rèn)為是較好的;接下來(lái)就是將涉及的各種主要或次要功能分成各個(gè)模塊;最后就是分模塊來(lái)編碼和DEBUG。除了第一步外,其余的步驟應(yīng)該是一個(gè)循環(huán)的過(guò)程。既然軟件開(kāi)發(fā)是一個(gè)具有不可預(yù)知性和變化性的動(dòng)態(tài)的過(guò)程,那么,對(duì)其每一個(gè)步驟的組織,即周期模型,就必須包容它的這種性質(zhì)。
具體到每一步的工作要怎樣完成,是非常靈活的,只要把握住大體的方向就行。在進(jìn)行分析,設(shè)計(jì),編碼,調(diào)試,維護(hù)這幾部分的工作的時(shí)候,最核心的就是文檔的編寫(xiě)。文檔的作用在于以下3個(gè)方面:一是可以幫助整理思路。把要完成的目標(biāo),系統(tǒng)的結(jié)構(gòu),每一個(gè)模塊的功能等整理一下,然后分門(mén)別類(lèi)地寫(xiě)下來(lái),這樣在開(kāi)發(fā)的過(guò)程中,就有據(jù)可依,在需要回過(guò)頭來(lái)修改設(shè)計(jì)的時(shí)候,也有證可考。二是便于交流。想象一下開(kāi)會(huì)時(shí)的情形。一大幫子人爭(zhēng)先恐后,激烈辯論,然后會(huì)終人散,思想靈感也就隨之散了,結(jié)果是開(kāi)了半天會(huì),什么也沒(méi)討論出來(lái)。這就是后來(lái)會(huì)議記錄被發(fā)明出來(lái)的原因。在腦子里的東西一多,就會(huì)散而且亂,用語(yǔ)言表達(dá)的時(shí)候,很容易會(huì)丟三落四,別人也很難把握住你的思想。但經(jīng)過(guò)整理寫(xiě)在紙上以后,則會(huì)清晰得多,無(wú)論是別人還是自己,看起來(lái)都可以一目了然。三是可以作為以后維護(hù)時(shí)的參考資料。有一句名言:“筆和紙永遠(yuǎn)都比大腦可靠”,意思就是說(shuō),放在大腦里的東西說(shuō)不準(zhǔn)哪天就忘了,但寫(xiě)在紙上的東西,只要不發(fā)生什么意外,一般是丟不了的。當(dāng)過(guò)了一段時(shí)間,你需要再回過(guò)頭來(lái)修改你的程序的時(shí)候,你就會(huì)發(fā)現(xiàn),你以前寫(xiě)下的文檔實(shí)在太有價(jià)值了。別指望你的源代碼,對(duì)于復(fù)雜一點(diǎn)的程序來(lái)說(shuō),單純的源代碼幾乎會(huì)扼殺掉你所有的時(shí)間。
可行性分析 就是關(guān)于當(dāng)前項(xiàng)目能不能干的分析結(jié)果。主要考慮的方面包括:是否能把這個(gè)項(xiàng)目開(kāi)發(fā)出來(lái);假如可以的話(huà),預(yù)計(jì)需要多少時(shí)間,能否滿(mǎn)足客人的時(shí)間要求;需要多少人力和資金的投入;最重要的是,這個(gè)項(xiàng)目能否賺錢(qián),能賺多少。還要對(duì)可能存在的風(fēng)險(xiǎn)進(jìn)行評(píng)估。
七、軟件工程學(xué)習(xí)感悟
時(shí)間飛逝,不知不覺(jué)間《軟件工程》的學(xué)習(xí)完了。在這將近半學(xué)期的學(xué)習(xí)中,雖然我不能說(shuō)我將《軟件工程》學(xué)習(xí)的有多么的好,但是通過(guò)學(xué)習(xí),我還是受益良多。
在以前,我一直對(duì)軟件存在一些偏見(jiàn)或則是誤解,認(rèn)為軟件就是程序,軟件的開(kāi)發(fā)就是編寫(xiě)程序,只要編完了程序,一切也就ok了,而且我還片面的認(rèn)為只要我掌握了時(shí)下最新的語(yǔ)言和工具,那么我就能寫(xiě)程序了。一個(gè)人,只要會(huì)編程,就能寫(xiě)軟件,就是程序員;一個(gè)公司,只要招聘一些程序員,就能開(kāi)發(fā)好的軟件產(chǎn)品。只要有幾個(gè)有經(jīng)驗(yàn)的程序員,再找些兼職的大學(xué)生,就能組成一個(gè)軟件公司。
但是通過(guò)了《軟件工程》這門(mén)課的學(xué)習(xí),使我認(rèn)識(shí)到了我以前的錯(cuò)誤。軟件其實(shí)不僅僅是程序,軟件開(kāi)發(fā)其實(shí)也不僅僅是編寫(xiě)程序,軟件是思想在硬件上的載體和體現(xiàn),處理的是邏輯和信息。唯有對(duì)軟件和軟件的開(kāi)發(fā)過(guò)程,有充分的認(rèn)識(shí),才能更好的開(kāi)發(fā)出,過(guò)程受控、質(zhì)量受控的軟件產(chǎn)品。
而且在以前,我一直以為軟件的開(kāi)發(fā)其實(shí)是一件很輕松快樂(lè)的事情,只要一天坐在電腦旁敲敲鍵盤(pán),那么一切就可以了,但是現(xiàn)在我才發(fā)現(xiàn),我以前的很多的思想是多么的膚淺可笑。編程其實(shí)是一種樂(lè)趣和苦惱共存的一項(xiàng)創(chuàng)造性活動(dòng)。因?yàn)榫幊滩粌H能夠滿(mǎn)足我們內(nèi)心深處進(jìn)行創(chuàng)造的渴望,而且還能愉悅我們內(nèi)在的情感。
而且通過(guò)學(xué)習(xí)《軟件工程》,我還學(xué)到了很多其他的東西。比如通過(guò)學(xué)習(xí)《軟件工程》,特別是教員的課程講解和每次用實(shí)際的軟件現(xiàn)場(chǎng)的講解,為我提供了一個(gè)盡早接觸世界工作和真實(shí)項(xiàng)目的機(jī)會(huì)。讓我知道如何在以最小的成本中,訓(xùn)練自己的基本工程素質(zhì)和能力,如何激發(fā)自己的積極性等。而且通過(guò)學(xué)習(xí)《軟件工程》,還讓我認(rèn)識(shí)和培養(yǎng)了我的團(tuán)隊(duì)協(xié)作能力,特別是對(duì)于我們這些在校的學(xué)生來(lái)說(shuō),這種學(xué)習(xí)更是能讓我在以后工作中少走很多的彎路。
所以,通過(guò)《軟件工程》的學(xué)習(xí),我是真的學(xué)習(xí)到了很多有用的東西,讓我明白了很多的道理。在此我對(duì)教員的辛勤教育表示感謝,因?yàn)槭悄阕屛覍W(xué)習(xí)到了這些,是我獲益良多。