軟件工程心得體會

從某件事情上得到收穫以後,可以通過寫心得體會的方式將其記錄下來,從而不斷地豐富我們的思想。那麼好的心得體會都具備一些什麼特點呢?以下是小編爲大家收集的軟件工程心得體會,歡迎大家分享。

軟件工程心得體會

軟件工程心得體會1

時間飛逝,不知不覺間《軟件工程》的學習已經過了大半了。在這將近半學期的學習中,雖然我不能說我將《軟件工程》學習的有多麼的好,但是通過學習,我還是受益良多。

在以前,我一直對軟件存在一些偏見或則是誤解,認爲軟件就是程序,軟件的開發就是編寫程序,只要編完了程序,一切也就ok了,而且我還片面的認爲只要我掌握了時下最新的語言和工具,那麼我就能寫程序了。一個人,只要會編程,就能寫軟件,就是程序員;一個公司,只要招聘一些程序員,就能開發好的軟件產品。只要有幾個有經驗的程序員,再找些兼職的大學生,就能組成一個軟件公司。

但是通過了《軟件工程》這門課的學習,使我認識到了我以前的錯誤。軟件其實不僅僅是程序,軟件開發其實也不僅僅是編寫程序,軟件是思想在硬件上的載體和體現,處理的是邏輯和信息。唯有對軟件和軟件的開發過程,有充分的認識,才能更好的開發出,過程受控、質量受控的軟件產品。

而且在以前,我一直以爲軟件的開發其實是一件很輕鬆快樂的事情,只要一天坐在電腦旁敲敲鍵盤,那麼一切就可以了,但是現在我才發現,我以前的很多的思想是多麼的膚淺可笑。編程其實是一種樂趣和苦惱共存的一項創造性活動。因爲編程不僅能夠滿足我們內心深處進行創造的渴望,而且還能愉悅我們內在的情感。

而且通過學習《軟件工程》,我還學到了很多其他的東西。比如通過學習《軟件工程》,特別是老師每次用實際的軟件現場的講解,爲我提供了一個儘早接觸世界工作和真實項目的機會。讓我知道如何在以最小的成本中,訓練自己的基本工程素質和能力,如何激發自己的積極性等。而且通過學習《軟件工程》,還讓我認識和培養了我的團隊協作能力,特別是對於我們這些在校的學生來說,這種學習更是能讓我在以後工作中少走很多的彎路。

所以,通過《軟件工程》的學習,我是真的學習到了很多有用的東西,讓我明白了很多的道理。在此我對老師的辛勤教育表示感謝,因爲是你讓我學習到了這些,是我獲益良多。

軟件工程心得體會2

軟件工程心得體會未接觸軟件工程之前一直都很想學這門課程,因爲覺得這門課很牛,是那些有工程師稱號的高手才擺弄的東西。學了一個學期的軟件工程課,終於知道了個軟件工程的大概。學的時候總覺得很抽象,理解起來好像不難,但總是摸不着頭腦一種很茫然的感覺。曾經以爲程序就是軟件,軟件就是程序。學習這門課程第一個收穫是,知道了二者的不同之處。以前做過的一些小型的軟件比如加密軟件,我也只是在程序旁邊附上一個軟件的說明,看來已經很接近作坊了。不過大的項目沒有接觸過,用軟件工程的方法還是第一次。我想也是程序的不斷複雜化導致了軟件危機的發生,使得人們不得不探索新的解決方法。

經過倪老師的講解,理解了軟件工程,就是一套用於軟件的團隊開發,以提高軟件質量和程序員工作效率爲目的的'規範。其核心就是,對於軟件開發的5個重要組成部分:需求分析,設計,編碼,調試,維護,如何組織這5個部分的工作,以及如何完成每一個工作。吾生也有涯,而知也無涯,學習永無止境。起初,對軟件工程處於一知半解的狀態,分工比較混亂。

在劃分模塊後明確了各自分工,漸漸形成良性循環。在學習過程中,知道了團隊合作十分重要,爭議固然存在,但通過討論、協商,羣策羣力,在不斷磨合中能夠達成一致與默契。團隊成員中能力各有高下,互相尊重,各取所長,不宜妄自菲薄。組長多加協調,組員積極配合,才能合作愉快。學習能力體現在能儘快接受新的知識,順應變化,學爲所用。

上《軟件工程導論》這門課,我的收穫大概如下:我們爲什麼需要軟件工程呢?上面已經給出了一些原因。專業點講,軟件工程最終是爲了實現“軟件製造業”的社會化,工業化大生產,提高其勞動生產效率。只有如此,軟件業才能實現社會化,工業化大生產,才能“做大做強”。沒有管理的設計是失敗和混亂的設計,沒有設計指導的編程是無序的忙碌的。根據開發的軟件的規模,應該適當程度的運用軟件工程化的思想,需要靈活,畢竟我們開發的軟件大多數是中小型的,大型的並不多見(我是這麼認爲的)。但只要涉及人員間的交流和溝通,或多或少都要需要軟件工程才能更有效率,工作成果更穩定。

其實開發軟件,就像是解決一個邏輯問題。想想自己平時是怎樣寫程序的。首先是要有一個想法,即我寫的這個程序是要幹什麼的;然後就是對要實現的核心功能大概構思一種或多種實現方法,並從中選出一種自認爲是較好的;接下來就是將涉及的各種主要或次要功能分成各個模塊;最後就是分模塊來編碼和DEBUG。在我看來,除了第一步外,其餘的步驟應該是一個循環的過程。在編碼的過程中,你總是需要不斷地回過頭來修改原先的模塊設計,甚至最初選定的實現算法。具體到每一步的工作要怎樣完成,是非常靈活的,只要把握住大體的方向就行。在進行分析,設計,編碼,調試,維護這幾部分的工作的時候,最核心的就是文檔的編寫。

1、可行性分析就是關於當前項目能不能幹的分析結果。

2、項目描述這是在決定立項以後,對當前項目的一份扼要說明。

3、需求分析就是對客戶要求的功能的定義。

4、軟件設計這就是對程序的每一個模塊的詳細設計的說明文檔。

5、開發日誌我一直都認爲這是文檔中最有趣的部分。開發日誌相當於編碼階段的文檔,它的形式可以很隨意,主要是記錄一些在寫程序時突然萌發的靈感,或對代碼的一些微小的修改,或對程序結構的一些微小變動等,還要對上述這些修改變動作些說明。

6、測試分析用於指出程序存在或潛在的缺陷和錯誤,以及程序性能的數字描述。

軟件工程心得體會3

在本學期的軟件工程課程的學習中,我們學習了十一章的內容。第一章軟件與軟件工程的概念,這一章主要講解的是一些概念性和基礎性的內容,例如軟件的概念、特性,軟件危機的主要表現,軟件工程的概念以及軟件生存期、典型生存期模型等等。第二章軟件工程方法與工具,這一章主要對軟件工程方法進行介紹,包括三種方法:傳統方法、面向對象方法、形式化方法。還引出了工具UML。第三章軟件需求獲取與結構化分析方法,本章詳細介紹了需求獲取與需求分析階段的任務以及結構化分析方法,畫分層的數據流圖、E—R圖以及狀態圖式本節的重點。第四章結構化分析方法,這一章重點講解了使用變換型映射方法和事務型映射方法生成初始的模塊結構以及模塊結構的改進。第五章編碼,這一章重點講解了編碼的風格及規範,還告訴我們編碼規範說帶來的好處,並告誡我們將來一點要形成好的編碼風格。第六章軟件測試方法,本章講解了軟件測試相關的概念及重要性,軟件測試與開發各個階段的關係;還介紹了白盒測試技術以及黑河測試技術。第七章統一建模語言UML概述,本章詳細介紹了UML的基本模式、事物、關係及建模時用到的各種圖進行了介紹。第八章面向對象分析,這一章主要講解了面向對象分析的3種模型,包括功能模型、靜態模型和動態模型。第九章軟件體系結構與設計模式,本章對軟件體系結構的基本概念、典型風格等進行了講解。第十章面向對象設計,本章的重點是對面向對象分析時建立的對象模型進行調整和細化。第十一章軟件維護,本章主要介紹軟件維護的任務、軟件維護活動以及軟件維護方法進行了介紹。

要學習軟件工程,學會如何系統的思考,以及養成良好的編碼習慣,想學好軟件工程,就必須知道軟件工程的目標、過程和原則:軟件工程目標:生產具有正確性、可用性以及開銷合宜的產品。正確性指軟件產品達到預期功能的程度。可用性指軟件基本結構、實現及文檔爲用戶可用的程度。開銷合宜是指軟件開發、運行的整個開銷滿足用戶要求的程度。這些目標的實現不論在理論上還是在實踐中均存在很多待解決的問題,它們形成了對過程、過程模型及工程方法選取的約束。

軟件工程過程:生產一個最終能滿足需求且達到工程目標的軟件產品所需要的步驟。軟件工程過程主要包括開發過程、運作過程、維護過程。它們覆蓋了需求、設計、實現、確認以及維護等活動。需求活動包括問題分析和需求分析。問題分析獲取需求定義,又稱軟件需求規約。需求分析生成功能規約。設計活動一般包括概要設計和詳細設計。概要設計建立整個軟件系統結構,包括子系統、模塊以及相關層次的說明、每一模塊的接口定義。詳細設計產生程序員可用的模塊說明,包括每一模塊中數據結構說明及加工描述。實現活動把設計結果轉換爲可執行的程序代碼。確認活動貫穿於整個開發過程,實現完成後的確認,保證最終產品滿足用戶的要求。維護活動包括使用過程中的擴充、修改與完善。伴隨以上過程,還有管理過程、支持過程、培訓過程等。

軟件工程的原則是指圍繞工程設計、工程支持以及工程管理在軟件開發過程中必須遵循的原則。

我們學習了詳細設計的方法,其原則是過程描述是否易於理解、複審和維護,進而過程描述能夠自然地轉換成代碼,並保證詳細設計與代碼完全一致。包括程序流程圖、N—S圖、PAD圖、HIPO圖

程序流程圖:程序流程圖又稱之爲程序框圖,它是軟件開發者最熟悉的一種算法表達工具。它獨立於任何一種程序設計語言,比較直觀和清晰地描述過程的控制流程,易於學習掌握。在流程圖中只能使用下述的五種基本控制結構:順序型;選擇型;while型循環;until型循環;多情況型選擇。

N—S圖:一種符合結構化程序設計原則的圖形描述工具,稱爲盒圖,又稱爲N—S圖。在N—S圖中,爲了表示五種基本控制結構,規定了五種圖形構件。順序型;選擇型;WHILE重複型;UNTIL重複型;多分支選擇型。

PAD圖:它是用結構化程序設計思想表現程序邏輯結構的圖形工具。PAD也設置了五種基本控制結構的圖示,並允許遞歸使用。

HIPO圖:HIPO圖是由一組IPO圖加一張HC圖組成。它是美國IBM公司在軟件設計中使用的主要表達工具。

HC圖既是層次圖,用於表示軟件的分層結構。HC圖中的每一個模塊,均可用一張IPO圖來描述。IPO圖由輸入、處理和輸出三個框組成,需要時還可以增加一個數據文件框,這種圖形的優點,是能夠直觀地顯示輸入—處理—輸出三者之間的聯繫。

還有測試方法:按照測試過程是否在實際應用環境中來分,有靜態分析與動態測試。測試方法有分析方法(包括靜態分析法與白盒法)與非分析方法(稱黑盒法)。

靜態分析技術:不執行被測軟件,可對需求分析說明書、軟件設計說明書、源程序做結構檢查、流程分析、符號執行來找出軟件錯誤。

動態測試技術:當把程序作爲一個函數,輸入的全體稱爲函數的定義域,輸出的全體稱爲函數的值域,函數則描述了輸入的定義域與輸出值域的關係。

還學習了其他很多工具、語言、方法等,雖然不是都學得很透徹,但我相信在今後的學習中一定會慢慢的完善的。

軟件工程對於初學者來說,知識基礎較薄弱,對一些應用操作、概念、工具方法等理解起來較爲困難,要能從整體概念上較好地理解和把握、學好軟件工程,不是僅僅把幾本專業書籍細緻地看幾遍,然後上機練習幾次就可以成功,學習過程中要注意多看多練要注意結合實際,更要多思考,面對錯誤不要一範就問,要嘗試自己去解決。但是還要注意什麼都學,肯定是什麼都學不透的,要集中精力打攻堅戰,學習軟件工程首先要明白自己的學習目標究竟是什麼,根據自己的實際工作出發,有針對性的在相應的學習方向上進行提高,制定出詳細的學習規劃。還要注意與其他科目的相輔相成,就像我們在學習面向對象分析的時候要結合大一學習的面向對象及其方法學這一專業科目進行研究拓展;在學習語言時,要看看與C語言的聯繫,多思多想,把從各個科目學到的知識通匯貫通。

在軟件工程的學習中,我瞭解到了軟件並非是一些代碼這麼簡單,在開發軟件的過程中,編寫代碼的工作量其實只佔不到所有工程量的30%,而後期的管理和維護更是佔了60%到80%之多。一個完整的項目規劃須包括,軟件的定義,可行性分析報告,項目開發計劃,軟件需求說明書,概要設計說明書,詳細設計說明書,用戶操作手冊,測試計劃,測試分析報告,開發進度報告,項目開發總結報告,軟件維護手冊,軟件問題報告,軟件修改報告,等多個文檔,每個文檔都要上級驗收審查,而文檔數量衆多,要做好這點真的不是很容易,而恰恰寫好文檔正能保證完成軟件工程其中一個目的的關鍵,既研究如何用最小的開銷做出生存期較長的軟件,再加上各個階段都要進行周密的策劃、詳細的分工部署和人員安排,且各階段要據具體情況不斷的反覆才能達成,所以代碼只是開發軟件這個浩大的工程的一個小小的過程。

而編碼的學習中,我更瞭解到形成自己獨特的規範的編碼風格是非常重要的事。因爲這影響到了軟件後期繁重的維護,大家都要閱讀你的程序,如果你寫的程序毫無規範可言,那麼別人怎麼能讀懂你的程序?讀不懂程序,維護又從何談起呢?所以,我們在今後的學習中,一定要注意這方面的培養,在寫程序的過程中,要逐步的在規範的基礎上形成屬於自己的風格,即方便自己的修改,也方便日後他人的閱讀。

在學習中,我們還要注意比較三種方法的優缺點,例如:傳統方法雖然使軟件擺脫了混亂和無序,但其在適應需求變化的方面不夠靈活,而且傳統方法要麼面向行爲,要麼面向數據,缺乏兩者的有機結合。而面向對象方法的程序設計和問題求解更符合人們日常自然的思維習慣,適合大型、複雜及交互性比較強的系統。形式化方法則是一中基於形式化數學變換的軟件開發方法,它可將系統的規格說明轉換爲可執行的程序。

在今後的學習中要注意多讀書、多思考、多練習、多討論,不斷熟悉書本的基礎,並以此爲基礎將其擴散開來,應用於今後的實踐。不斷鍛鍊自己,向一名合格的程序設計師邁進。