第一篇:軟件工程心得
學(xué)習(xí)軟件工程這門課程已經(jīng)有一個(gè)學(xué)期了,整一個(gè)學(xué)期下來,應(yīng)該說還是有許多值得肯定的地方的,其實(shí)在我看來,軟件工程與其說是一門課程,不如說是一門思想。是一個(gè)如何去分析和處理問題的過程,應(yīng)該說其范疇已經(jīng)遠(yuǎn)遠(yuǎn)不止局限于該門課程,成為了一個(gè)綜合的一個(gè)能夠解決問題的思想集合。
在上課的時(shí)候我還是很認(rèn)真地去聽老師所講述的內(nèi)容的,我覺得他的思想和我一向而來的培養(yǎng)計(jì)算機(jī)學(xué)生綜合素質(zhì)的理解還是在一定程度上不謀而合了,所謂的需求獲取,那就是一個(gè)談判,辯論,交流的過程,已經(jīng)不是單純的編編程序就能解決的問題了。從我所看到的聽到的來說,我最怕的就是計(jì)算機(jī)系的學(xué)生被別人說成是個(gè)帶著厚眼鏡的,只能夠在電腦前編編程序的,在交際場(chǎng)上不知道說什么而一個(gè)字都說不出來的人。我覺得這樣的人進(jìn)入社會(huì)之后是沒有什么前途的,起碼他們?nèi)狈α伺c人溝通交流的能力。而這門課程在一定程度上給了我們這些學(xué)生一個(gè)機(jī)會(huì)來鍛煉自己在另一方面的能力,設(shè)想一下,一個(gè)又有技術(shù)又能夠與人交流合作的人所取得的成就自然要比一個(gè)單單只會(huì)編程序的人要大得多。
其次,這門課程教給了我們?cè)谕瓿梢粋€(gè)實(shí)際項(xiàng)目時(shí)的一般程序及過程,我認(rèn)為這是一份非常具有實(shí)際意義的教學(xué)內(nèi)容。當(dāng)我們?cè)诋厴I(yè)之后,這是我們實(shí)際要運(yùn)用的一項(xiàng)非常有用的技能,而且不僅僅局限于軟件工程的范疇,我們即使是從事與其它行業(yè),不也是要從需求獲取開始,一直有條有理地到最后成品的出爐嗎?應(yīng)該說這就是這門課的價(jià)值所在。無論是在上課,還是在學(xué)生會(huì)里面做學(xué)生工作,我都深深地感覺到,技術(shù)性的工作就好比變魔術(shù),其實(shí)原理是非常簡(jiǎn)單的,甚至可以說簡(jiǎn)單的可笑,但是當(dāng)你就是做出這么一個(gè)簡(jiǎn)單的東西出來之后,一些外行們有時(shí)候會(huì)用崇拜的眼光看著你,覺得你很厲害,很高深莫測(cè)。但是制作的過程他們卻不知道,也許知道之后他們只是會(huì)啞然失笑,原來這個(gè)東西的制作過程是如此的簡(jiǎn)單。這個(gè)可以說就是技術(shù)的魅力了,而作為需求獲取及之后的一系列過程則是類似于魔術(shù)揭秘的過程,但是作為這個(gè)秘密我們并不需要一揭到底,至于揭的程度如何那就是我們那就是我們學(xué)出的程度如何了,我們要讓對(duì)方知道我們?cè)谧鍪裁??以及如何去做?這些東西需要我們以一定的技巧敘述出來,所起到的作用就是能夠讓對(duì)方了解自己的進(jìn)度,卻又能夠不讓對(duì)方來干涉自己的工作過程。因?yàn)槲覀兪羌夹g(shù)員,對(duì)方只是外行,即使對(duì)方知道了這個(gè)魔術(shù)的操作過程,也并不代表他們就能夠向變著魔術(shù)的我們來隨便修改這個(gè)魔術(shù)的變法,況且我們能夠用不同的過程來得出一個(gè)同樣的結(jié)果,這個(gè)過程的得出的主動(dòng)權(quán)如何掌握在我們的手上,就看我們?nèi)绾我愿呙鞯姆绞絹斫议_這個(gè)魔術(shù)的謎底了。
當(dāng)然了,在純粹的理論上,我覺得開設(shè)這樣一門課程是很成功的。但是畢竟現(xiàn)實(shí)里有太多的不確定的因素。最重要的因素就是授課的老師和聽課的學(xué)生。這兩個(gè)可以說是這門課成與敗的決定性的因素。
作為老師方面來說,我覺得給我們上試驗(yàn)課的老師非常的優(yōu)秀,作為一名了有十幾年工作經(jīng)驗(yàn)的老船長,看問題的確是有他自己獨(dú)特的一套方法,我的話對(duì)他也是非常崇拜的。但是周日晚上的課程我還是有比較大的意見,首先,作為學(xué)生來說,最不希望上課的時(shí)間就是周五的晚上和周日的晚上,因?yàn)檫@是個(gè)我們進(jìn)行調(diào)整的時(shí)候,前者的調(diào)整是為了假期的到來,后者的調(diào)整是為了準(zhǔn)備學(xué)習(xí)的開始,這個(gè)時(shí)候的上課一般來說都是學(xué)生比較反感的。其次,對(duì)于我來說,原來小的時(shí)候非常崇拜那些有著高學(xué)歷的人才,什么碩士,博士,博士后都是被放在神壇上的人物,覺得他們很厲害,走路都會(huì)散發(fā)光環(huán)。但是在我上了他們這些人的課之后我發(fā)覺我真的是很失望。作為一個(gè)具有高學(xué)歷的人來說,他能夠自己迅速的吸收知識(shí)這點(diǎn)的確是令人敬佩,但是他能不能夠把自身所吸收的知識(shí)傳授給他的學(xué)生,那就是一個(gè)未知之?dāng)?shù)了,雖然的確這是一門枯燥的課程,但是并不代表老師就可以在講臺(tái)上講課沒有一點(diǎn)激情,或者說沒有一點(diǎn)能夠讓我們想聽下去的欲望,這個(gè)不得不說是一件非常諷刺的事情。子不教,父之過;教不嚴(yán),師之惰。雖然學(xué)生們也有一部分的責(zé)任,但是把一切責(zé)任都推到學(xué)生們的身上那也是非常的不公平的。
作為我們學(xué)生來說,當(dāng)然也應(yīng)該負(fù)起比較主要的責(zé)任。在大學(xué)里有了太多的基礎(chǔ)課程,基礎(chǔ)課程大多都比較枯燥無味,也許在第一個(gè)學(xué)期里我們還能夠保持著新鮮感,但是在5個(gè)學(xué)期之后,可以說再有新鮮感就是一件比較困難的事情了,我們都已經(jīng)開始變得遲鈍了,現(xiàn)在出現(xiàn)了一門新鮮的課程,可能同學(xué)們比較難把那樣不好的狀態(tài)一下子改變過來。其次的,學(xué)生們沒有認(rèn)識(shí)到這門課程的價(jià)值。這門課的價(jià)值我已經(jīng)在上面說過了,是不言而喻的。但是并不是每個(gè)同學(xué)畢業(yè)之后都回從事計(jì)算機(jī)行業(yè),也不是每個(gè)同學(xué)都知道這門課程的意義已經(jīng)不僅僅局限于計(jì)算機(jī)這個(gè)范疇,但是他們不知道,無知者無畏也。既然和我沒什么關(guān)系,那我就不聽,反正聽了也沒什么用,很多同學(xué)報(bào)著的就是這么個(gè)心態(tài)。對(duì)于這樣的心態(tài),我表示理解,也表示悲哀。在沒有徹底了解一件事物的本質(zhì)之前,我們是沒有資格向這件事物隨便的指手畫腳的。最怕的就是在沒有了解之前就把這件事物否定。如果有了這樣先入為主的思想,那就比較沒救了。所以作為我們來說,還是更需要得深入了解下這門課所起到的作用之后再下結(jié)論也不遲。只是有一點(diǎn)我還是覺得比較奇怪,現(xiàn)在被人嗤之以鼻的傳銷在當(dāng)時(shí)能夠吸引如此大的一批人,而且那些受害者明知道這件事情是不好的但是還會(huì)去做,就是因?yàn)椤跋茨X者”的口才說服了他們,那作為老師來說,如何來說服學(xué)生們來上一門正確的課程應(yīng)該說是要相對(duì)的容易很多吧,但是我覺得這樣的過程在我們的大學(xué)課程里真的是少之又少啊。今天在這里寫了很多,算是我對(duì)軟件工程這門課程的一點(diǎn)點(diǎn)心得體會(huì),也許是正確的,也許在一定的程度上存在著觀點(diǎn)的偏激錯(cuò)誤,但是起碼這些東西是我覺得存在著的一些問題,但愿軟件工程這門課程能夠開的越來越好,讓更多的學(xué)生們能夠從這門課程中受益,在以后社會(huì)殘酷的競(jìng)爭(zhēng)之中存活下來!
第二篇:軟件工程課程心得
軟件工程項(xiàng)目總結(jié)
在我們整個(gè)軟件工程過程中,我體會(huì)到了許多,也學(xué)到了許多。
在項(xiàng)目要進(jìn)行自由分組后,我們的項(xiàng)目小組便誕生了。我們小組由七個(gè)成員組成,在相互商量后我們也確定了我們組的項(xiàng)目,是做一個(gè)校園 b2c電子商務(wù)網(wǎng)站。我們也隨即做了分工,由于我們團(tuán)隊(duì)只有我和另一名成員有類似的項(xiàng)目開發(fā)經(jīng)驗(yàn),所以我們便要擔(dān)負(fù)起更重的任務(wù)。最后由于在整個(gè)團(tuán)隊(duì)中,對(duì)于界面開發(fā)這一塊只有我的開發(fā)經(jīng)驗(yàn)較深,所以我便擔(dān)任了主要的界面設(shè)計(jì)人員。我們的項(xiàng)目也正式開始了。
需求調(diào)研和分析對(duì)于軟件開發(fā)過程至關(guān)重要。我們?cè)陂_發(fā)時(shí)如果不進(jìn)行調(diào)研和分析,那么對(duì)于后來的項(xiàng)目進(jìn)展將產(chǎn)生致命的后果。我們?cè)陧?xiàng)目的開發(fā)中便遇到了這樣的問題。老師作為我們的客戶,他對(duì)這個(gè)校園 b2c電子商務(wù)網(wǎng)站的要求便是我們必須了解的,我們也必須以客戶的要求為根本構(gòu)建我們的這個(gè)系統(tǒng)。我們開始自己隨意的計(jì)劃整個(gè)網(wǎng)站的設(shè)計(jì),然后報(bào)給老師,老師作為一個(gè)客戶并不是全部認(rèn)同,隨后我們也必須按著客戶的要求更改我們的設(shè)計(jì)報(bào)告。我也明白了,再做一個(gè)系統(tǒng)時(shí),必須隨時(shí)和客戶保持溝通,隨時(shí)了解他們需要什么,他們想要什么功能。如果我們不去和客戶溝通,不去調(diào)研客戶的需求,做出來的系統(tǒng)即使在我們看來是一個(gè)很好,很完美的產(chǎn)品,但是如果客戶不認(rèn)同,那么我們所做的一切都是徒勞,還要返工去修改,費(fèi)時(shí)費(fèi)力。所以在做任何一個(gè)項(xiàng)目時(shí),前期的需求調(diào)研和需求分析都是必須的,這是在做一個(gè)項(xiàng)目的基本,是關(guān)系成敗的重要一環(huán)。
對(duì)于一個(gè)項(xiàng)目,它的需求設(shè)計(jì)也非常重要。在我們的校園 b2c電子商務(wù)網(wǎng)站開發(fā)的過程中,遇到了一些問題,如客戶提交購買確認(rèn)后,我們?nèi)绾未_定應(yīng)該以什么方式將貨物給客戶,還有以什么確定貨物的送達(dá)地點(diǎn),客戶的訂單在哪里處理,訂單以什么方式驚醒處理,在管理員應(yīng)該實(shí)現(xiàn)的功能上反復(fù)增刪等,這些問題很多都是由于設(shè)計(jì)不夠清晰,不夠完善而導(dǎo)致的。出現(xiàn)的這些問題很多都是非常棘手的,我們?yōu)榱私鉀Q這些棘手的問題浪費(fèi)了大量的時(shí)間,我們不得不在工程代碼上改了又改,在數(shù)據(jù)庫里增表、刪表、加數(shù)據(jù)、減數(shù)據(jù),當(dāng)然,在文檔里也要做出相應(yīng)的修改以適應(yīng)新的功能。還好,我們能及時(shí)地發(fā)現(xiàn)問題,通過相互
溝通討論,問題也得到了解決。通過總結(jié),我們也意識(shí)到,我們大家在做需求分析和進(jìn)行需求了解時(shí)僅僅考慮了一些基本的功能,而至于管理員和客戶之間的聯(lián)系,以及具體的一些流程我們都沒有深究,而導(dǎo)致我們到后期花費(fèi)了大量的時(shí)間用于修復(fù)之前沒有考慮周全而帶來的問題。如果我們的需求設(shè)計(jì)能夠比較清晰和完善,那么我們?cè)陂_發(fā)過程中便會(huì)很明白的知道我們應(yīng)該實(shí)現(xiàn)什么樣的功能,在數(shù)據(jù)庫里應(yīng)該怎樣建表,以什么方式插入數(shù)據(jù),從而可以避免反復(fù)修改工程的問題,也能避免出現(xiàn)可能毀壞整個(gè)工程的問題。整個(gè)工程的需求設(shè)計(jì)對(duì)于一個(gè)項(xiàng)目的順利進(jìn)展至關(guān)重要。
對(duì)于文檔在軟件工程中的作用,我在這次項(xiàng)目開發(fā)過程中有了更加深刻的理解。文檔在軟件開發(fā)過程中是很有用的,文檔是一項(xiàng)必不可少的東西,但文檔也不能太多,太過繁瑣,如果是那樣就不太好了。首先我們要明確開發(fā)過程中為什么要寫這些文檔,文檔的最根本的作用是為了更好的溝通。一個(gè)項(xiàng)目或產(chǎn)品可能需要延續(xù)很長的時(shí)間,開發(fā)過程中可能需要很多的環(huán)節(jié),可能會(huì)遇到很多的問題和很多的解決的方法,這時(shí),我們需要文檔的幫助,我們需要有一個(gè)東西來記錄,我們需要有一個(gè)共同的聲音。文檔只不過是一個(gè)準(zhǔn)繩,將開發(fā)中的各個(gè)樹枝樹葉扶正。如果,這個(gè)準(zhǔn)繩太多太緊,大樹可能會(huì)發(fā)育的很高很直,但是就是有些畸形,如果這個(gè)準(zhǔn)繩太少太松,大樹可能就會(huì)變成灌木叢。文檔的多少、繁簡(jiǎn)是有度的,絕對(duì)不能說越多越好。我覺得,文檔需要說明解決問題的方法而不是解決問題的理論,因?yàn)榻鉀Q問題的理論是在文檔形成中做到的。文檔完整即可,每一份文檔說明一個(gè)問題,無需將多個(gè)文檔的內(nèi)容放在一個(gè)文檔的里面。除了重要階段形成文檔,其它部分都只是討論或者說是想法。不要讓文檔成為累贅,如果真是這樣,我認(rèn)為就是該考慮寫這些文檔的必要性的時(shí)候了。我們?cè)谖臋n的時(shí)候,一定要明白為什么要寫這些。
在整個(gè)項(xiàng)目開發(fā)過程中,我們也同時(shí)遇到了許多程序接口問題,頁面和功能相結(jié)合的問題,數(shù)據(jù)庫建表的問題,這些問題都是源于我們項(xiàng)目小組成員之間的溝通不足。我深刻認(rèn)識(shí)到,在項(xiàng)目開發(fā)時(shí),項(xiàng)目小組中各個(gè)成員之間的相互溝通是非常重要的。如果我們要在功能方面作出修改,那么程序人員和頁面人員及數(shù)據(jù)庫人員就必須相互溝通,共同對(duì)整個(gè)程序作出相應(yīng)的修改,這樣才能避免最終整合時(shí)出現(xiàn)問題。
在這十個(gè)周里,我還對(duì)軟件工程有了新的理解。在我以前的理解當(dāng)中,軟件工程,無非就是一個(gè)人或者幾個(gè)人或一個(gè)團(tuán)隊(duì)集中在一起進(jìn)行編寫代碼的工作,以實(shí)現(xiàn)開發(fā)出所用的軟件。但現(xiàn)在我明白了,軟件工程的作用,就是告訴人們?cè)鯓尤ラ_發(fā)軟件和管理軟件。具體地講,它表現(xiàn)在與軟件開發(fā)和管理有關(guān)的人員和過程上。所以,軟件工程就不僅僅是單一的編程過程了。它包括了系統(tǒng)分析->建模->概要設(shè)計(jì)->詳細(xì)設(shè)計(jì)->編碼->測(cè)試->維護(hù)。編碼可以理解為編程,這個(gè)只占總時(shí)間的20%左右。編程只是其中的一小部分。
在這次項(xiàng)目里我完成了許多工作,在界面設(shè)計(jì)上我完成了,首頁、全部的商品頁面、全部的用戶頁面及部分管理員頁面的制作,在后期項(xiàng)目整合過程中修改了功能和界面結(jié)合時(shí)出現(xiàn)的bug,還有數(shù)據(jù)庫插入數(shù)據(jù)及解決數(shù)據(jù)庫集中整合時(shí)出現(xiàn)的問題。這些工作我都順利完成了,雖然并不能算是非常的出色,但也算是盡力了。現(xiàn)在看到自己辛勞的成果,我感到很欣慰。
當(dāng)然,在這次項(xiàng)目過程中我也發(fā)現(xiàn)了自己的一些問題。如現(xiàn)在的網(wǎng)站開發(fā)技術(shù)還不夠強(qiáng),在和小組成員相互溝通上還不夠積極等。我希望以此為契機(jī),在將來的項(xiàng)目開發(fā)中能做得更好。
第三篇:軟件工程試驗(yàn)心得
心得體會(huì)
學(xué)了一個(gè)學(xué)期的軟件工程課,終于知道了個(gè)軟件工程的大概。學(xué)的時(shí)候總覺得很抽象,理解起來好像不難,但總是摸不著頭腦一種很茫然的感覺。學(xué)習(xí)的過程中和一個(gè)宿舍的同學(xué)一起做了個(gè)小型管理系統(tǒng)的開發(fā),覺得還是有點(diǎn)收獲的,對(duì)于開設(shè)這門課的意義也有所領(lǐng)悟,現(xiàn)在就將我對(duì)這門課的體會(huì)以及在項(xiàng)目開發(fā)過程中遇到的一些問題簡(jiǎn)單的歸納一下。希望在以后的學(xué)習(xí)中不斷的提高吧。
曾經(jīng)以為程序就是軟件,軟件就是程序?,F(xiàn)在知道了二者的不同之處,這是學(xué)習(xí)這門課程第一個(gè)收獲。事實(shí)上在軟件開發(fā)的早期階段這也不能說是錯(cuò)誤的。那個(gè)時(shí)候開發(fā)的軟件都比較簡(jiǎn)單。當(dāng)然可以把軟件理解成程序,直到軟件作坊的出現(xiàn),使軟件在程序的基礎(chǔ)上加了個(gè)說明。以前做過的一些小型的軟件比如加密軟件,也只是在程序旁邊附上一個(gè)軟件的說明,看來已經(jīng)很接近作坊了。不過大的項(xiàng)目沒有接觸過,用軟件工程的方法還是第一次。我想也是程序的不斷復(fù)雜化導(dǎo)致了軟件危機(jī)的發(fā)生,使得人們不得不探索新的解決方法。這個(gè)時(shí)候軟件工程應(yīng)運(yùn)而生了。
掌握軟件工程化的思想,對(duì)于負(fù)責(zé)軟件開發(fā)的管理人員(領(lǐng)導(dǎo))更為重要。曾經(jīng)看到過這么一句話,“坐在指揮臺(tái)上,如果什么也看不見,就不能叫領(lǐng)導(dǎo)。軟件工程將有能力的人團(tuán)結(jié)在一起,然后把他們變成工人,因?yàn)楣I(yè)化的生產(chǎn)是效率最高的。這就是根本所在。沒有軟件工程管理,簡(jiǎn)直就是亂來,就好象缺乏宏觀控制的國家一樣,會(huì)亂七八糟。
軟件除了程序還要有使用和維護(hù)該程序所需要的全部文檔。包括需求文檔、設(shè)計(jì)文檔、測(cè)試文檔、維護(hù)文檔以及使用手冊(cè)。
軟件開發(fā)特別是大型軟件是一項(xiàng)浩大的工程,需要幾個(gè)人、十幾個(gè)人、幾十個(gè)人甚至幾百個(gè)人合作開發(fā)幾個(gè)月、十幾個(gè)月甚至幾年。要保證系統(tǒng)的協(xié)調(diào)性、統(tǒng)一性和連續(xù)性,就需要在開發(fā)之前制定嚴(yán)格、詳細(xì)的開發(fā)規(guī)范。開發(fā)規(guī)范的制定需要花費(fèi)一定的時(shí)間和精力,但是“磨刀不誤砍柴功”,它相當(dāng)于把今后開發(fā)過程中開發(fā)人員都要遇到的問題提前做了一個(gè)考慮。有了開發(fā)規(guī)范,在后續(xù)的開發(fā)過程中,設(shè)計(jì)人員就不必每次考慮如何為一個(gè)字段命名,編程人員也不必去想某個(gè)程序的結(jié)構(gòu)和布局應(yīng)當(dāng) 怎樣,測(cè)試人員也有了判斷程序?qū)﹀e(cuò)的標(biāo)準(zhǔn)。它約束開發(fā)人員的行為和設(shè)計(jì)、編程風(fēng)格,使不同子系統(tǒng)和模塊的設(shè)計(jì)、編程人員達(dá)成默契,以便形成整個(gè)系統(tǒng)的和諧步調(diào)和統(tǒng)一風(fēng)格,也便于今后的系統(tǒng)維護(hù)和擴(kuò)展工作。
第四篇:軟件工程實(shí)踐心得
軟件工程(SE)
軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,它包括程序、相關(guān)數(shù)據(jù)及其說明文檔。軟件工程(Software Engineering,簡(jiǎn)稱為SE)是針對(duì)軟件這一具有特殊性質(zhì)的產(chǎn)品的工程化方法。SE涵蓋了軟件生命周期的所有階段,并提供了一整套工程化的方法,來指導(dǎo)軟件人員的工作。任何事物都是從無到有的,軟件當(dāng)然也不例外。上世紀(jì)中期,軟件產(chǎn)業(yè)從零開始起步,經(jīng)過半個(gè)多世紀(jì)的發(fā)展,其大致經(jīng)歷的3個(gè)階段:程序設(shè)計(jì)階段、軟件設(shè)計(jì)階段和軟件工程時(shí)代,現(xiàn)已成為推動(dòng)人類社會(huì)發(fā)展的龍頭產(chǎn)業(yè),隨著信息化時(shí)代的發(fā)展,軟件對(duì)人類社會(huì)也將越看來越重要。人們對(duì)軟件的認(rèn)識(shí)自然經(jīng)歷了一個(gè)由淺入深的過程,在得到巨大需求的同時(shí),也遇到了一系列嚴(yán)重問題,即軟件危機(jī)。所謂軟件危機(jī),是指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一些嚴(yán)重問題,其實(shí)質(zhì)是軟件產(chǎn)品的供應(yīng)趕不上需求的增長。概括的說包含兩方面的問題:
一、如何開發(fā)軟件,以滿足不斷增長,日趨復(fù)雜的要求;
二、如何維護(hù)數(shù)量不斷膨脹的軟件產(chǎn)品。為研究和解決軟件危機(jī),一門新興的學(xué)科——軟件工程,應(yīng)運(yùn)而生。
軟件工程的概念是為了有效地控制軟件危機(jī)的發(fā)生而被提出來的,它的中心目標(biāo)就是把軟件作為一種物理的工業(yè)產(chǎn)品來開發(fā),要求“采用工程化的原理與方法對(duì)軟件進(jìn)行計(jì)劃、開發(fā)和維護(hù)”,它的主要對(duì)象是大型軟件,它的最終目的是擺脫手工生產(chǎn)軟件的現(xiàn)狀,逐步實(shí)現(xiàn)軟件開發(fā)和維護(hù)的自動(dòng)化。軟件工程的概念自提出來后,經(jīng)過幾
十年的發(fā)展,雖然軟件危機(jī)沒有得到徹底的解決,但在軟件開發(fā)方法和技術(shù)方面已經(jīng)有了很大的進(jìn)步,提出了軟件工程知識(shí)體系、軟件工程三段論、軟件工程生存期模型、服用原則等等。
軟件開發(fā)過程大致經(jīng)過7個(gè)階段:可行性分析、需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼、測(cè)試、提交與維護(hù)。接下來逐一分析本人見解:
一、可行性分析:顧名思義,就是看項(xiàng)目究竟“能不能做”。有3個(gè)方面:技術(shù)可行性、經(jīng)濟(jì)可行性和操作可行性。要確定項(xiàng)目,首先要客觀的、科學(xué)的了解項(xiàng)目的規(guī)模、難度和時(shí)間限制,才可以確定應(yīng)該投入多少人力、物力和財(cái)力去做這個(gè)項(xiàng)目,必須準(zhǔn)確的估計(jì)項(xiàng)目的規(guī)模與難度??错?xiàng)目是否有價(jià)值去做,如果沒有價(jià)值,就放棄;如果有價(jià)值,就要看目前的資源是否能滿足項(xiàng)目的開發(fā)。如果項(xiàng)目有價(jià)值,且有必需的資源,那么就可以確定能做這個(gè)項(xiàng)目了。
二、需求分析階段:解決“做什么、不做什么”的問題。圍繞兩個(gè)核心問題開展需求分析:應(yīng)該了解什么?通過什么方式去了解?
一、了解什么:應(yīng)該先了解宏觀的問題,再了解細(xì)節(jié)的問題。最好為每個(gè)需求注釋“為什么”,這樣可以讓程序員了解需求的本質(zhì),以便選用最合適的技術(shù)來實(shí)現(xiàn)此需求。同時(shí),需求說明不可有額二義性,更不能前后矛盾,如果有二義性貨前后相矛盾,則要重新分析此需求。然后,選擇合適的生存周期,建立合適的需求模型;
二、通過什么方式去了解:直接與客戶交談;有些需求客戶講不清楚,分析人員又猜不透,這是就要請(qǐng)教行家。需求分析是非常重要的階段,如果做不好 的話,后果很麻煩。
三、概要設(shè)計(jì):解決“怎么做”的問題。將需求描述的“做什么”問題變?yōu)橐粋€(gè)實(shí)施方案的創(chuàng)造性過程,使得整個(gè)項(xiàng)目在邏輯上和物理上能夠得意實(shí)現(xiàn)。概要設(shè)計(jì)是第一個(gè)開發(fā)活動(dòng),也是最重要的活動(dòng),是軟件項(xiàng)目實(shí)現(xiàn)的關(guān)鍵階段。設(shè)計(jì)質(zhì)量的高低直接決定了軟件項(xiàng)目的成敗,缺乏或者沒有軟件設(shè)計(jì)的過程會(huì)產(chǎn)生一個(gè)不穩(wěn)定的、甚至是失敗的軟件系統(tǒng)。一個(gè)良好的軟件設(shè)計(jì)是進(jìn)行快速軟件開發(fā)的根本,沒有良好的設(shè)計(jì),會(huì)將時(shí)間花在不斷的調(diào)試上,無法添加新功能,修改時(shí)間越來越長,隨著給程序打上一個(gè)有一個(gè)的補(bǔ)丁,新的功能需要更多的代碼實(shí)現(xiàn),就變成一個(gè)惡性循環(huán)了。概要設(shè)計(jì)是軟件設(shè)計(jì)級(jí)別中的高級(jí)設(shè)計(jì),是從需求出發(fā),描述了總體上系統(tǒng)架構(gòu)應(yīng)該包含的要素。概要設(shè)計(jì)盡可能模塊化,因此描述了各個(gè)模塊之間的關(guān)聯(lián),主要是根據(jù)需求規(guī)格或規(guī)格定義,合理、有效地實(shí)現(xiàn)產(chǎn)品規(guī)格中定義的各項(xiàng)需求,完成軟件模塊的劃分并描述模塊之間的關(guān)系,并不斷分解系統(tǒng)模塊,從高層分解到低層分解。它注重框架設(shè)計(jì)、總體結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)、接口設(shè)計(jì)、網(wǎng)絡(luò)環(huán)境設(shè)計(jì)等,將產(chǎn)品分割成一些可以獨(dú)立設(shè)計(jì)和實(shí)現(xiàn)的部分并保證各個(gè)部分可以和諧的工作。此過程中畫數(shù)據(jù)流圖、IPO圖、E-R圖、界面設(shè)計(jì)等。
四、詳細(xì)設(shè)計(jì):解決“具體做什么”的問題,將解決問題的辦法進(jìn)行具體化。軟件設(shè)計(jì)的低級(jí)設(shè)計(jì),亦即詳細(xì)設(shè)計(jì),主要描述實(shí)現(xiàn)各個(gè)模塊的算法和數(shù)據(jù)結(jié)構(gòu)以及用特定計(jì)算機(jī)語言實(shí)現(xiàn)的初步描述,是針對(duì)程序開發(fā)部分來說的,但這個(gè)階段不是真正編寫程序,而是設(shè)計(jì)
出程序的詳細(xì)規(guī)格說明,這種規(guī)格說明類似于其他工程領(lǐng)域中工程師經(jīng)常使用的工程藍(lán)圖,程序員根據(jù)其中所包含的必要的細(xì)節(jié)寫出實(shí)際的程序代碼。用另一種方式說就是,詳細(xì)設(shè)計(jì)是將概要設(shè)計(jì)的框架內(nèi)容具體化、明細(xì)化,將概要設(shè)計(jì)轉(zhuǎn)化為 可以操作的軟件模型,但在實(shí)際項(xiàng)目進(jìn)行過程中,依據(jù)項(xiàng)目的具體情況和項(xiàng)目要求,這個(gè)過程可能可以省略(邏輯上沒有省略,表現(xiàn)在概要設(shè)計(jì)階段或者編碼階段),直接按照概要設(shè)計(jì)進(jìn)行編碼;不過,個(gè)人認(rèn)為最好有,有詳細(xì)設(shè)計(jì)可以更好的保證編碼順利的進(jìn)行,可以預(yù)先掃清編碼過程中的障礙,提高代碼的質(zhì)量和編碼的效率。主要包括模塊描述、算法描述、數(shù)據(jù)描述,可以采用圖形、表格或者文字描述等方式表達(dá)出來。
五、編碼:實(shí)現(xiàn)項(xiàng)目。由項(xiàng)目的概要設(shè)計(jì)和詳細(xì)設(shè)計(jì),將設(shè)計(jì)變?yōu)榇a需要通過編碼過程來完成。實(shí)現(xiàn)設(shè)計(jì)有很多種選擇,有很多實(shí)現(xiàn)語言、工具等可供選擇,但一般而言,在設(shè)計(jì)中會(huì)直接或間接地確定了實(shí)現(xiàn)語言。編碼過程的一個(gè)主要標(biāo)準(zhǔn)時(shí)變成與設(shè)計(jì)的對(duì)應(yīng)性和統(tǒng)一性。如果編碼沒有按設(shè)計(jì)的要求進(jìn)行,設(shè)計(jì)就失去意義了。設(shè)計(jì)過程中的算法、功能、接口、數(shù)據(jù)結(jié)構(gòu)都應(yīng)該在編碼過程中體現(xiàn)。如果需求發(fā)生變更,設(shè)計(jì)業(yè)對(duì)應(yīng)地發(fā)生變更,同時(shí)代碼也應(yīng)該一致地發(fā)生變更,這可以通過配置管理配置控制。可見,如果編碼和設(shè)計(jì)不一致,很容易“跑偏”,走火入魔。編碼時(shí)要嚴(yán)格遵循編碼標(biāo)準(zhǔn)和規(guī)范,并提供必要的程序注釋,增加可讀性。另一個(gè)就是重構(gòu)的理解,所謂重構(gòu)是對(duì)軟件內(nèi)部的一種調(diào)整,目的是在不改變軟件基本功能和性能的前提下,提高其可理解性,降低成本,當(dāng)添加功能、修改代碼和復(fù)查
代碼的時(shí)候,更不要錯(cuò)過重構(gòu),另外,重構(gòu)可以和設(shè)計(jì)互補(bǔ)。還有一點(diǎn)值得注意,要在必要的時(shí)候部署編碼文檔。
六、測(cè)試:看軟件是否符合標(biāo)準(zhǔn)。軟件編碼完成之后,將軟件提交給用戶之前,需要對(duì)軟件進(jìn)行測(cè)試,這是保證軟件產(chǎn)品質(zhì)量的一個(gè)重要標(biāo)準(zhǔn),也是評(píng)估產(chǎn)品質(zhì)量的主要手段。軟件測(cè)試是從軟件工程中演化出來的一個(gè)分支,有著非常廣泛的內(nèi)容,并且隨著軟件產(chǎn)業(yè)的發(fā)展,它已經(jīng)變得越來越重要。軟件與生俱來就可能存在缺陷,為了防止和減少這些可能存在的缺陷,進(jìn)行軟件測(cè)試是有必要的,測(cè)試是最有效的的排錯(cuò)和防止缺陷和故障的手段。最原始的測(cè)試莫過于直接運(yùn)行軟件了,后來測(cè)試手段逐漸多樣化。測(cè)試手段有靜態(tài)測(cè)試、動(dòng)態(tài)測(cè)試面向?qū)ο蟮臏y(cè)試、自動(dòng)化測(cè)試等等之分。靜態(tài)測(cè)試或稱靜態(tài)分析是指一種不通過執(zhí)行程序來進(jìn)行測(cè)試的一種技術(shù),主要是檢查軟件的表示和描述是否一致,覆蓋程序的編碼格式、程序語法、檢查獨(dú)立語句的結(jié)構(gòu)和使用等,主要包括代碼檢查、靜態(tài)結(jié)構(gòu)分析、代碼質(zhì)量等等,可以通過人工進(jìn)行,亦可借助工具(如:語法分析器)自動(dòng)進(jìn)行。動(dòng)態(tài)測(cè)試是運(yùn)行被測(cè)試的程序,通過輸入測(cè)試用例,對(duì)其運(yùn)行情況進(jìn)行分析,以達(dá)到檢測(cè)的目的,顯然動(dòng)態(tài)測(cè)試封像我們通常意義上的“測(cè)試”。動(dòng)態(tài)測(cè)試主要包括白盒測(cè)試、黑盒測(cè)試、灰盒測(cè)試(介于黑盒和白盒之間)。其他測(cè)試不再一一介紹。
七、提交與維護(hù):測(cè)試完之后,就要把軟件交給用戶使用了。提交不是剪裁,給人家就行了,還要教會(huì)客戶怎么使用這個(gè)系統(tǒng)。如果用戶不會(huì)使用系統(tǒng),就會(huì)不滿意系統(tǒng)的性能,那之前的努力就白費(fèi)了,打水漂了。為了保證成功地將我們開發(fā)的軟件提交給用戶,我們需要對(duì)用戶進(jìn)行培訓(xùn),同時(shí)提交必要的文檔及用戶手冊(cè)軟件。維護(hù)就不用多說了,就是售后服務(wù)了。維護(hù)需要分析人員、編碼人員和設(shè)計(jì)人員等角色的參與,有糾錯(cuò)行維護(hù)、適應(yīng)性維護(hù)、完善性維護(hù)、預(yù)防性維護(hù)等。維護(hù)后,要寫軟件維護(hù)過程文檔,至少提交一個(gè)軟件維護(hù)記錄。
以上是軟件工程及其幾個(gè)階段的介紹,知道怎樣開發(fā)軟件只是軟件工程的一部分,搞好團(tuán)隊(duì)合作也是很重要的。項(xiàng)目是一個(gè)很大的工程,需要一個(gè)團(tuán)隊(duì)的統(tǒng)籌規(guī)劃,團(tuán)結(jié)協(xié)作,集思廣益,舉一反三,才能夠按預(yù)期完成。
第五篇:軟件工程課程心得
軟件工程設(shè)計(jì)總結(jié)
在我們整個(gè)軟件工程過程中,我體會(huì)到了許多,也學(xué)到了許多。
在項(xiàng)目要進(jìn)行自由分組后,我們的項(xiàng)目小組便誕生了。我們小組由七個(gè)成員組成,在相互商量后我們也確定了我們組的項(xiàng)目,是做一個(gè)圖書管理系統(tǒng)。我們也隨即做了分工,由于我們團(tuán)隊(duì)只有我和另一名成員有類似的項(xiàng)目開發(fā)經(jīng)驗(yàn),所以我們便要擔(dān)負(fù)起更重的任務(wù)。最后由于在整個(gè)團(tuán)隊(duì)中,對(duì)于界面開發(fā)這一塊只有我的開發(fā)經(jīng)驗(yàn)較深,所以我便擔(dān)任了主要的界面設(shè)計(jì)人員。我們的項(xiàng)目也正式開始了。
對(duì)于文檔在軟件工程中的作用,我在這次項(xiàng)目開發(fā)過程中有了更加深刻的理解。文檔在軟件開發(fā)過程中是很有用的,文檔是一項(xiàng)必不可少的東西,但文檔也不能太多,太過繁瑣,如果是那樣就不太好了。首先我們要明確開發(fā)過程中為什么要寫這些文檔,文檔的最根本的作用是為了更好的溝通。一個(gè)項(xiàng)目或產(chǎn)品可能需要延續(xù)很長的時(shí)間,開發(fā)過程中可能需要很多的環(huán)節(jié),可能會(huì)遇到很多的問題和很多的解決的方法,這時(shí),我們需要文檔的幫助,我們需要有一個(gè)東西來記錄,我們需要有一個(gè)共同的聲音。文檔完整即可,每一份文檔說明一個(gè)問題,無需將多個(gè)文檔的內(nèi)容放在一個(gè)文檔的里面。除了重要階段形成文檔,其它部分都只是討論或者說是想法。不要讓文檔成為累贅,如果真是這樣,我認(rèn)為就是該考慮寫這些文檔的必要性的時(shí)候了。我們?cè)谖臋n的時(shí)候,一定要明白為什么要寫這些。
在這一周里,我還對(duì)軟件工程有了新的理解。在我以前的理解當(dāng)中,軟件工程,無非就是一個(gè)人或者幾個(gè)人或一個(gè)團(tuán)隊(duì)集中在一起進(jìn)行編寫代碼的工作,以實(shí)現(xiàn)開發(fā)出所用的軟件。但現(xiàn)在我明白了,軟件工程的作用,就是告訴人們?cè)鯓尤ラ_發(fā)軟件和管理軟件。具體地講,它表現(xiàn)在與軟件開發(fā)和管理有關(guān)的人員和過程上。所以,軟件工程就不僅僅是單一的編程過程了。它包括了系統(tǒng)分析->建模->概要設(shè)計(jì)->詳細(xì)設(shè)計(jì)->編碼->測(cè)試->維護(hù)。編碼可以理解為編程,這個(gè)只占總時(shí)間的20%左右。編程只是其中的一小部分。
當(dāng)然,在這次項(xiàng)目過程中我也發(fā)現(xiàn)了自己的一些問題。如現(xiàn)在的網(wǎng)站開發(fā)技術(shù)還不夠強(qiáng),在和小組成員相互溝通上還不夠積極等。我希望以此為契機(jī),在將來的項(xiàng)目開發(fā)中能做得更好。