軟件工程實踐心得
軟件工程(SE)
軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,它包括程序、相關數(shù)據(jù)及其說明文檔。軟件工程(SoftwareEngineering,簡稱為SE)是針對軟件這一具有特殊性質的產(chǎn)品的工程化方法。SE涵蓋了軟件生命周期的所有階段,并提供了一整套工程化的方法,來指導軟件人員的工作。任何事物都是從無到有的,軟件當然也不例外。上世紀中期,軟件產(chǎn)業(yè)從零開始起步,經(jīng)過半個多世紀的發(fā)展,其大致經(jīng)歷的3個階段:程序設計階段、軟件設計階段和軟件工程時代,現(xiàn)已成為推動人類社會發(fā)展的龍頭產(chǎn)業(yè),隨著信息化時代的發(fā)展,軟件對人類社會也將越看來越重要。人們對軟件的認識自然經(jīng)歷了一個由淺入深的過程,在得到巨大需求的同時,也遇到了一系列嚴重問題,即軟件危機。所謂軟件危機,是指在計算機軟件的開發(fā)和維護過程中所遇到的一些嚴重問題,其實質是軟件產(chǎn)品的供應趕不上需求的增長。概括的說包含兩方面的問題:一、如何開發(fā)軟件,以滿足不斷增長,日趨復雜的要求;二、如何維護數(shù)量不斷膨脹的軟件產(chǎn)品。為研究和解決軟件危機,一門新興的學科軟件工程,應運而生。
軟件工程的概念是為了有效地控制軟件危機的發(fā)生而被提出來的,它的中心目標就是把軟件作為一種物理的工業(yè)產(chǎn)品來開發(fā),要求“采用工程化的原理與方法對軟件進行計劃、開發(fā)和維護”,它的主要對象是大型軟件,它的最終目的是擺脫手工生產(chǎn)軟件的現(xiàn)狀,逐步實現(xiàn)軟件開發(fā)和維護的自動化。軟件工程的概念自提出來后,經(jīng)過幾
十年的發(fā)展,雖然軟件危機沒有得到徹底的解決,但在軟件開發(fā)方法和技術方面已經(jīng)有了很大的進步,提出了軟件工程知識體系、軟件工程三段論、軟件工程生存期模型、服用原則等等。
軟件開發(fā)過程大致經(jīng)過7個階段:可行性分析、需求分析、概要設計、詳細設計、編碼、測試、提交與維護。接下來逐一分析本人見解:
一、可行性分析:顧名思義,就是看項目究竟“能不能做”。有3個方面:技術可行性、經(jīng)濟可行性和操作可行性。要確定項目,首先要客觀的、科學的了解項目的規(guī)模、難度和時間限制,才可以確定應該投入多少人力、物力和財力去做這個項目,必須準確的估計項目的規(guī)模與難度?错椖渴欠裼袃r值去做,如果沒有價值,就放棄;如果有價值,就要看目前的資源是否能滿足項目的開發(fā)。如果項目有價值,且有必需的資源,那么就可以確定能做這個項目了。
二、需求分析階段:解決“做什么、不做什么”的問題。圍繞兩個核心問題開展需求分析:應該了解什么?通過什么方式去了解?一、了解什么:應該先了解宏觀的問題,再了解細節(jié)的問題。最好為每個需求注釋“為什么”,這樣可以讓程序員了解需求的本質,以便選用最合適的技術來實現(xiàn)此需求。同時,需求說明不可有額二義性,更不能前后矛盾,如果有二義性貨前后相矛盾,則要重新分析此需求。然后,選擇合適的生存周期,建立合適的需求模型;二、通過什么方式去了解:直接與客戶交談;有些需求客戶講不清楚,分析人員又猜不透,這是就要請教行家。需求分析是非常重要的階段,如果做不好
的話,后果很麻煩。
三、概要設計:解決“怎么做”的問題。將需求描述的“做什么”問題變?yōu)橐粋實施方案的創(chuàng)造性過程,使得整個項目在邏輯上和物理上能夠得意實現(xiàn)。概要設計是第一個開發(fā)活動,也是最重要的活動,是軟件項目實現(xiàn)的關鍵階段。設計質量的高低直接決定了軟件項目的成敗,缺乏或者沒有軟件設計的過程會產(chǎn)生一個不穩(wěn)定的、甚至是失敗的軟件系統(tǒng)。一個良好的軟件設計是進行快速軟件開發(fā)的根本,沒有良好的設計,會將時間花在不斷的調試上,無法添加新功能,修改時間越來越長,隨著給程序打上一個有一個的補丁,新的功能需要更多的代碼實現(xiàn),就變成一個惡性循環(huán)了。概要設計是軟件設計級別中的高級設計,是從需求出發(fā),描述了總體上系統(tǒng)架構應該包含的要素。概要設計盡可能模塊化,因此描述了各個模塊之間的關聯(lián),主要是根據(jù)需求規(guī)格或規(guī)格定義,合理、有效地實現(xiàn)產(chǎn)品規(guī)格中定義的各項需求,完成軟件模塊的劃分并描述模塊之間的關系,并不斷分解系統(tǒng)模塊,從高層分解到低層分解。它注重框架設計、總體結構設計、數(shù)據(jù)庫設計、接口設計、網(wǎng)絡環(huán)境設計等,將產(chǎn)品分割成一些可以獨立設計和實現(xiàn)的部分并保證各個部分可以和諧的工作。此過程中畫數(shù)據(jù)流圖、IPO圖、E-R圖、界面設計等。
四、詳細設計:解決“具體做什么”的問題,將解決問題的辦法進行具體化。軟件設計的低級設計,亦即詳細設計,主要描述實現(xiàn)各個模塊的算法和數(shù)據(jù)結構以及用特定計算機語言實現(xiàn)的初步描述,是針對程序開發(fā)部分來說的,但這個階段不是真正編寫程序,而是設計
出程序的詳細規(guī)格說明,這種規(guī)格說明類似于其他工程領域中工程師經(jīng)常使用的工程藍圖,程序員根據(jù)其中所包含的必要的細節(jié)寫出實際的程序代碼。用另一種方式說就是,詳細設計是將概要設計的框架內容具體化、明細化,將概要設計轉化為可以操作的軟件模型,但在實際項目進行過程中,依據(jù)項目的具體情況和項目要求,這個過程可能可以省略(邏輯上沒有省略,表現(xiàn)在概要設計階段或者編碼階段),直接按照概要設計進行編碼;不過,個人認為最好有,有詳細設計可以更好的保證編碼順利的進行,可以預先掃清編碼過程中的障礙,提高代碼的質量和編碼的效率。主要包括模塊描述、算法描述、數(shù)據(jù)描述,可以采用圖形、表格或者文字描述等方式表達出來。
五、編碼:實現(xiàn)項目。由項目的概要設計和詳細設計,將設計變?yōu)榇a需要通過編碼過程來完成。實現(xiàn)設計有很多種選擇,有很多實現(xiàn)語言、工具等可供選擇,但一般而言,在設計中會直接或間接地確定了實現(xiàn)語言。編碼過程的一個主要標準時變成與設計的對應性和統(tǒng)一性。如果編碼沒有按設計的要求進行,設計就失去意義了。設計過程中的算法、功能、接口、數(shù)據(jù)結構都應該在編碼過程中體現(xiàn)。如果需求發(fā)生變更,設計業(yè)對應地發(fā)生變更,同時代碼也應該一致地發(fā)生變更,這可以通過配置管理配置控制?梢,如果編碼和設計不一致,很容易“跑偏”,走火入魔。編碼時要嚴格遵循編碼標準和規(guī)范,并提供必要的程序注釋,增加可讀性。另一個就是重構的理解,所謂重構是對軟件內部的一種調整,目的是在不改變軟件基本功能和性能的前提下,提高其可理解性,降低成本,當添加功能、修改代碼和復查
代碼的時候,更不要錯過重構,另外,重構可以和設計互補。還有一點值得注意,要在必要的時候部署編碼文檔。
六、測試:看軟件是否符合標準。軟件編碼完成之后,將軟件提交給用戶之前,需要對軟件進行測試,這是保證軟件產(chǎn)品質量的一個重要標準,也是評估產(chǎn)品質量的主要手段。軟件測試是從軟件工程中演化出來的一個分支,有著非常廣泛的內容,并且隨著軟件產(chǎn)業(yè)的發(fā)展,它已經(jīng)變得越來越重要。軟件與生俱來就可能存在缺陷,為了防止和減少這些可能存在的缺陷,進行軟件測試是有必要的,測試是最有效的的排錯和防止缺陷和故障的手段。最原始的測試莫過于直接運行軟件了,后來測試手段逐漸多樣化。測試手段有靜態(tài)測試、動態(tài)測試面向對象的測試、自動化測試等等之分。靜態(tài)測試或稱靜態(tài)分析是指一種不通過執(zhí)行程序來進行測試的一種技術,主要是檢查軟件的表示和描述是否一致,覆蓋程序的編碼格式、程序語法、檢查獨立語句的結構和使用等,主要包括代碼檢查、靜態(tài)結構分析、代碼質量等等,可以通過人工進行,亦可借助工具(如:語法分析器)自動進行。動態(tài)測試是運行被測試的程序,通過輸入測試用例,對其運行情況進行分析,以達到檢測的目的,顯然動態(tài)測試封像我們通常意義上的“測試”。動態(tài)測試主要包括白盒測試、黑盒測試、灰盒測試(介于黑盒和白盒之間)。其他測試不再一一介紹。
七、提交與維護:測試完之后,就要把軟件交給用戶使用了。提交不是剪裁,給人家就行了,還要教會客戶怎么使用這個系統(tǒng)。如果用戶不會使用系統(tǒng),就會不滿意系統(tǒng)的性能,那之前的努力就白費了,
打水漂了。為了保證成功地將我們開發(fā)的軟件提交給用戶,我們需要對用戶進行培訓,同時提交必要的文檔及用戶手冊軟件。維護就不用多說了,就是售后服務了。維護需要分析人員、編碼人員和設計人員等角色的參與,有糾錯行維護、適應性維護、完善性維護、預防性維護等。維護后,要寫軟件維護過程文檔,至少提交一個軟件維護記錄。以上是軟件工程及其幾個階段的介紹,知道怎樣開發(fā)軟件只是軟件工程的一部分,搞好團隊合作也是很重要的。項目是一個很大的工程,需要一個團隊的統(tǒng)籌規(guī)劃,團結協(xié)作,集思廣益,舉一反三,才能夠按預期完成。
擴展閱讀:軟件工程實習總結
實習總結
光陰荏苒,時光飛逝,轉眼間到了實習結束的日子。從進公司實習到現(xiàn)在,我已經(jīng)到公司近6個月了,感受頗多,收獲頗多。期間,通過公司領導的關心和幫助,同事的指導,使我能夠很快地了解公司的管理與運作程序,我了解了公司的發(fā)展概況,熟悉了公司的流程和行業(yè)的基礎知識,使我逐步學會如何從一個剛出校門不久的實習生轉變成一個職員。以下是我這一階段的工作總結。
學習無止境,職業(yè)生涯只是學生生涯的一種延續(xù)。對于一個實習的學生,初踏入職場,進入專業(yè)的軟件公司,對開發(fā)軟件沒有一點經(jīng)驗。不論在人生的哪個階段,學習的腳步都不能停歇,要把工作視為學習的殿堂。所以在這幾個月當中,我一邊學習,一邊從最基礎的事情做起,這樣的好處在于能夠在工作的過程中,了解項目的整體布局,了解項目中的業(yè)務邏輯,了解項目中尚未完成的工作并以此作為下個階段的工作目標。在這幾個月的工作中,我的主要任務是對客戶使用的map系統(tǒng)進行測試,并且做相應的文檔記錄和一些簡單的配置修改。幾個月里,我工作勤勤懇懇,并按時完成安排的任務。盡最大的努力解決客戶在工作中遇到的問題,從中我也學到了在學校里學不到的東西,也明白了很多道理,我相信對我以后的工作都將大有裨益。其它方面,我全力協(xié)助公司的工作,在公司人手較忙的時候,為公司分擔事務,圓滿地完成公司委派的任務。在這幾個月的工作中,最初我會遇到一些我解決不了的問題,我會咨詢公司另兩位同事王鵬、孫距均。在他倆的指導和幫助下,我的技術技能不斷提升,對整個MAP系統(tǒng)和配置工具的使用逐步熟練,思維方式和工作方法也不斷提升,直至到目前我基本能解決客戶在使用MAP系統(tǒng)過程中遇到一般問題的問題。
在近6個月的工作過程中,我在領導和同事們的幫助和支持下取得了一定的進步,但我深知自己還存在很多缺點和不足,與工作需要還有一定的差距。在工作中未能考慮的各種因素還有很多,比如:對整個MAP系統(tǒng)的掌握還不夠熟練、工作的靈活性還不夠、服務意識還有待提升等等,這都有待于在今后的工作中改進。雖然我目前的工作只是做基礎方面,希望在下一年度公司能夠委派我做一些其它工作,使我在工作中不斷提升自己,同時也為公司分擔一些事務,使我逐步做一名合格的項目實施人員。做軟件的人必須要隨時充電,在今后的工作中,我要積累經(jīng)驗教訓,不斷調整自己的思維方式和工作方法,在實踐中磨練自己,我將以飽滿的熱情和進取的精神,去努力做每一件事,努力為公司的發(fā)展盡的一份薄力,成為單位需要的優(yōu)秀人才。
我是公司的一名新員工,來公司的時間比較短,對公司的資源管理、流程管理等還不是太了解,所以對公司的發(fā)展、管理也提不出什么寶貴實質的意見或建議,F(xiàn)在對于我來說最重要最本職的工作就是:作為一個學生、一名實習員工,所有的地方都是需要學習的多聽、多看、多想、多做、多溝通,向每一個員工學習他們身上的最優(yōu)秀工作習慣,豐富的專業(yè)技能,配合著實際工作不斷的進步,為公司的發(fā)展盡的一份薄力。態(tài)度決定一起,當有一份新的任務給你時要知道自己能否勝任這份工作,關鍵是看你自己對待工作的態(tài)度。態(tài)度對了,即使自己以前沒學過的知識也可以在工作中逐漸的掌握。態(tài)度不好,就算自己有知識基礎也不會把工作做好,實習項目剛開始時,根本不清楚該做些什么,并且這和我在學校讀的專業(yè)沒有必然的聯(lián)系,剛開始我覺得很頭痛,可經(jīng)過工作過程中多看別人怎樣做,多聽別人怎樣說,多想自己應該怎樣做,然后自己親自動手去多做,終于在短短幾天里對工作有了一個較系統(tǒng)的認識,慢慢的自己也可以完成相關的工作了,光用嘴巴去說是不行的,所以,我們今后不管干什么都要端正自己的態(tài)度,這樣才能把事情做好。
在這次實習過程中,我碰到很多問題,有的是我懂得的,也有很多是我不懂的,不懂的東西我要虛心向老師同學請教,當別人教我們知識的時候,我也應該虛心的接受,不要認為自己懂得一點雞毛蒜皮就飄飄然。
回首整個實習過程,我每天都有很多新的體會,想說的很多,我總結下來主要有以下幾點:
1.團隊意識是完成項目的必要保證
在我們兩個項目完成的過程中,我充分體會到了團隊合作的重要性。特別是在自己擔任項目組長分配大家完成項目期間,很難想象但是如果大家不團結一致的結果。期間通過大家的團隊合作,項目組高效且快速的完成的項目,當然最重要的是大家都參與了項目的開發(fā)。
2.熟練的專業(yè)技能
提供最佳的解決方案是我們努力的方向。ERP的核心管理思想就是實現(xiàn)對整個供應鏈的有效管理,我們在梳理了企業(yè)的各項業(yè)務之后,需要做的是提供一個最佳的解決方案,來幫助企業(yè)實現(xiàn)更加有效的管理,我們要精通MAP系統(tǒng),掌握行業(yè)專業(yè)知識,更要能融入最適宜的管理理念,這對顧問而言,無非是一個很高的要求,需要我們不斷地學習,不斷的在一個個項目中去積累經(jīng)驗,但這也正是我們?yōu)橹畩^斗的目標。
3.加強信心,堅持下去
雖然感覺自己學的還可以,但真的工作起來卻感覺力不從心。有時候遇到事情總會著急,慌張。平常信心不足,總感覺自己做不好。或許還需要一段時間的磨練吧。只有自己的知識和能力都在提升,相信自己總有一天會很勇敢的表現(xiàn)自己?傊⒃谡麄實習過程中,我有許多的收獲和歡樂,但也有苦澀和教訓,這些成功的經(jīng)驗將激勵我在以后的人生路上取得更大的成績,失敗的經(jīng)歷將使我努力去改變需要改變的地方,可以是我更快的成長,讓自己以后的日子做的更好。這些寶貴的人生經(jīng)歷激勵我在以后的人生道路上勇于實踐,敢于創(chuàng)新,為人生的輝煌奠定堅實的基礎,成為我受益終身的寶貴財富。4、良好的溝通協(xié)調能力是實施顧問的基本修養(yǎng)。在培訓的一開始我們就被分成了四個小組,學習過程中常常以小組為單位進行提問、討論、最后解決問題的學習模式,目的就是為了能在與小組成員的相互交流過程中,提高我們的溝通能力。作為一個實施顧問,做的最多的事情就是與客戶之間進行交流,但是往往我們遇見的客戶與實施人員相比,他們對MAP系統(tǒng)非常陌生,對自己所做業(yè)務也缺乏深入的思考和總結,而我們要做的就是啟發(fā)客戶思考,幫助客戶分析,總結業(yè)務流程,以及對實施過程中各部門之間出現(xiàn)的問題進行溝通、協(xié)調。因而在這期間良好的溝通協(xié)調能力也是必不可少的。這6個月的工作生活是充實且富有樂趣的,結識了很多同事和朋友,公司的氛圍是非常輕松愉快的。感謝6個月來樊曉經(jīng)理的關心,感謝部門同事的悉心指導,感謝公司各位同事的熱心幫助,感謝學校能給我們提供這次難得的實習機會,在這里,我們走出了從學生到職場人生的第一步,是邁向社會的重要的一步。通過這次生產(chǎn)實習,我學到了很多書本上學不到的東西,也有了從無知到認知,到深入了解公司和社會,從開始的磕磕碰碰到后來的工作還算順利的轉變。在這里要特別感謝的是上海博科公司和其各位老師,正是上海博科公司給我提供了良好的實習環(huán)境,使我們實習有了明顯的效果,還有其各位老師對我們在專業(yè)技能的指導,使我的技術有了很大的提高。
除此之外,還要感謝我的項目團隊成員,正是因為有大家的相互幫助和學習,共同解決遇到的問題共同挑戰(zhàn)困難我們的實習過程才能夠順利完成,我更加認識到了團隊精神的可貴,同時也收獲了最真摯的友誼。
在此再次感謝學校,感謝協(xié)助我們的所有老師和同學以及上海博科公司,我將永遠銘記這些在這次實習中的點點滴滴。謝謝你們!
友情提示:本文中關于《軟件工程實踐心得》給出的范例僅供您參考拓展思維使用,軟件工程實踐心得:該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡整理 免責聲明:本文僅限學習分享,如產(chǎn)生版權問題,請聯(lián)系我們及時刪除。