當前位置:商標查詢大全網 - 教育培訓 - 學習軟件工程體會

學習軟件工程體會

軟件工程的學習經歷

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

要學習軟件工程,學會系統思考,養成良好的編碼習慣,要學好軟件工程,就要知道軟件工程的目標、過程、原理:

軟件工程目標:生產具有正確性、可用性和適當費用的產品。正確性是指軟件產品實現預期功能的程度。可用性是指軟件的基本結構、實現和文檔對用戶可用的程度。適度成本是指軟件開發和運行的整體成本滿足用戶要求的程度。這些目標的實現在理論和實踐上都有許多問題需要解決,對工藝、工藝模型和工程方法的選擇形成制約。

軟件工程過程:生產壹個最終能夠滿足需求並實現工程目標的軟件產品所需的步驟。軟件工程過程主要包括開發過程、運行過程和維護過程。它們涵蓋需求、設計、實現、驗證和維護等活動。需求活動包括問題分析和需求分析。問題分析獲得需求的定義,也稱為軟件需求規範。需求分析產生功能規格。設計活動通常包括總體設計和詳細設計。概要設計確立了整個軟件體系結構,包括子系統、模塊和相關層次的描述,以及各個模塊的接口定義。詳細設計生成程序員可用的模塊描述,包括每個模塊中的數據結構描述和處理描述。實施活動將設計結果轉化為可執行的程序代碼。確認活動貫穿整個開發過程,實現完成後的確認,確保最終產品滿足用戶的要求。維護活動包括使用過程中的擴展、修改和改進。與上述流程相伴隨的,還有管理流程、支持流程、培訓流程等等。

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

我們學習了詳細設計的方法,其原理是流程描述是否易於理解、審查和維護,然後流程描述可以自然轉換成代碼,並保證詳細設計與代碼完全壹致。包括程序流程圖、N-S圖、PAD圖和HIPO圖。

程序流程圖:程序流程圖也叫程序框圖,是軟件開發人員最熟悉的壹種算法表達工具。它獨立於任何編程語言,直觀清晰地描述了過程的控制流程,易於學習和掌握。流程圖中只能使用以下五種基本控制結構:順序型;選擇性類型;While循環;直到循環;多情境選擇。

N-S圖:壹種符合結構化編程原理的圖形描述工具,稱為boxplot,也稱為N-S圖。在N-S圖中,為了表示五個基本控制結構,指定了五個圖形組件。順序型;選擇性類型;重復打字時;直到重復類型;多分支選擇。

PAD圖:是用結構化編程的思想表達程序邏輯結構的圖形工具。PAD還建立了五個基本控制結構的圖表,並允許遞歸使用。

HIPO圖:HIPO圖由壹組IPO圖和壹個HC圖組成。它是美國IBM在軟件設計中使用的主要表達工具。

HC圖不僅是壹個層次圖,也用來表示軟件的層次結構。HC圖中的每個模塊都可以用壹個IPO圖來描述。IPO圖由輸入、處理和輸出三個框組成,必要時可以添加壹個數據文件框。這個圖的好處是可以直觀地顯示輸入、處理、輸出之間的關系。

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

靜態分析技術:在不執行被測軟件的情況下,檢查需求分析規約、軟件設計規約和源程序的結構、過程分析和符號執行,找出軟件錯誤。

動態測試技術:當把程序看成壹個函數時,整個輸入稱為函數的定義域,整個輸出稱為函數的定義域,函數描述了輸入的定義域和輸出的定義域之間的關系。

我還學習了許多其他工具、語言、方法等。雖然沒有全部研究透徹,但相信會在以後的研究中逐步完善。

對於初學者來說,軟件工程的知識基礎比較薄弱,壹些應用操作、概念、工具、方法很難理解。從整體概念上更好地理解和掌握軟件工程,不僅僅是認真讀幾本專業書,然後在電腦上練習幾遍,而是要成功。在學習過程中,要註意多讀書多實踐,結合實際,多思考,自己想辦法解決問題。但是也要註意學習壹切,壹定要集中精力打好攻堅戰。學習軟件工程,首先要明白自己的學習目標是什麽,從工作實際出發,在相應的學習方向上提高,制定出詳細的學習計劃。還要註意與其他學科的互補性,就像我們學習面向對象分析時,要結合大壹學習的面向對象和方法論來進行研發;學習語言的時候要看和C語言的聯系,多思考多思考,把各個學科學到的知識融會貫通。

在軟件工程的學習中,我了解到軟件並不像某些代碼那麽簡單。在軟件開發過程中,寫代碼的工作量實際上只占全部工程量的不到30%,而後期的管理和維護卻占到了60%到80%之多。壹個完整的項目計劃必須包括很多文檔,如軟件定義、可行性分析報告、項目開發計劃、軟件需求說明書、總體設計說明書、詳細設計說明書、用戶操作手冊、測試計劃、測試分析報告、開發進度報告、項目開發總結報告、軟件維護手冊、軟件問題報告、軟件修改報告等。每份文件都要經過上級驗收,文件數量很大。做好這壹點真的不容易,但僅僅是寫好文檔,就成為了軟件工程的壹個目的的關鍵,那就是研究如何用最少的支出做出壽命長的軟件,每個階段都要做周密的規劃,詳細的分工和人員安排,每個階段都要根據具體情況反復進行,所以代碼只是開發軟件的壹個小過程。

在編碼的學習中,我了解到形成自己獨特的、標準化的編碼風格是非常重要的。因為這影響到軟件後期的繁重維護,所以大家要看妳的程序。如果妳的程序不規範,別人怎麽看妳的程序?看不懂程序,哪裏談維護?所以在以後的學習中,壹定要註意這方面的培養。在編寫程序的過程中,要在規範的基礎上逐漸形成自己的風格,方便自己修改,也方便以後別人閱讀。

在學習中,也要註意比較三種方法的優劣。例如,傳統方法雖然使軟件擺脫了混亂無序的狀態,但它不夠靈活,無法適應需求的變化,而且傳統方法要麽是面向行為的,要麽是面向數據的,缺乏兩者的有機結合。面向對象的編程和問題求解更符合人們日常的自然思維習慣,適用於大型、復雜、交互式系統。形式化方法是壹種基於形式化數學變換的軟件開發方法,可以將系統規格說明轉化為可執行的程序。

在以後的學習中,要註意多讀書,多思考,多實踐,多討論,不斷熟悉書本的基礎,並在此基礎上進行傳播,運用到以後的實踐中去。不斷鍛煉自己,做壹個合格的程序員。