閱讀屋>心得體會> 軟體工程心得體會

軟體工程心得體會

軟體工程心得體會(精選11篇)

  導語:真正的意識到實施一個軟體工程並不是說簡單的會編碼就能夠解決問題的,我們更多的精力不是放在編碼上,編碼只是一個很小的模組,只佔到那麼小的一個部分。以下小編為大家介紹軟體工程心得體會文章,僅供參考!

  軟體工程心得體會 篇1

  在這次軟體工程課程中,我學到了很多東西,第一次深刻的體會到了什麼叫做用工程化的思想來編寫軟體,以前自己也寫過一些小型軟體,沒有做過大型的專案,直到這次課堂我擔任組長並組織組員共同完成“個人圖書管理系統”這個專案,第一次和別人合作,才發現運用工程化的思想來做是如此的有必要。

  從這裡,我才真正的意識到實施一個軟體工程並不是說簡單的會編碼就能夠解決問題的,我們更多的精力不是放在編碼上,編碼只是一個很小的模組,只佔到那麼小的一個部分。這個事實在很大程度上顛覆了我以前的思想,在我以前的認識中,似乎整個軟體就是編碼,除此無它,還好有老師的指導,不然真的會出現老師所說的,撞得頭破血流之後才想起來用軟體工程的思想來完成這個工作。

  剛真正開始工作之前,我們費了很多的時間來完成一些前端工作,如需求分析和可行性分析,這塊工作在別人看來可能是相對無關緊要,甚至是多於的,其實,換做在以前,我也會這麼認為。可是,我現在算是深深地明白了磨刀不誤砍柴工的道理,這些工作的完成太有必要了,太重要了,要想你的軟體有用有市場,能被別人接受和認可,在進行過程中不會出現崩潰性的問題,這些工作缺一不可。

  還有就是接下來的一些設計模組,此模組與軟體編碼涉及比較緊密,主要是解決一些引數傳遞和介面通訊的問題,此模組對我的觸動遠沒有上兩個模組對我的影響大,因此再次也不做過多的介紹。

  在整個活動的完成過程中,作為組長,我收穫很多,我發現,要是組裡有個人不怎麼想做事情時,他對於整個組織的影響是毀滅性的,正所謂“一顆老鼠屎,能壞一倉谷”,以後我的組織裡要是出現這樣的人,我絕不會給他繼續留下來的機會,我會在第一時間將他清除出去。還有就是,作為組長,你要做的最重要的事情,不是發揮自己的聰明才智,而是創造出一個平臺,讓別人去發揮,你所要做得,出了保證這個平臺的完整性和公平性外,還有就是協調好各組員之間的關係。

  這就是我的實習感想。

  軟體工程心得體會 篇2

  時間過的很快,轉眼間已經實習將近5個月,其中有2個月是屬於完全被流放的。最先在內部系統組參與內部管理系統開發(struts+mysql+spring+hibernate),之後是去做網路交換機軟體的指令碼測試。現在又迴歸內部系統,雖然在指令碼組期間,編碼能力被別人甩在後頭,但至少具有了一些測試經驗。

  至少自己做的東西,是真正交付到了客戶手上,到也稍微有些成就感。

  1、淺談測試

  一直以來,我都認為測試是脫離了軟體工程範圍的工作,不以為屑。但在實際情況中,測試是既重要且難以精湛的.其真正的壓力,在於找不到bug,責任在你,而不在於編碼人員。一般的測試人員不懂編碼,他們靠的是日以累計的經驗總結和想象力。而要做到高階測試工程師,則一定要懂編碼,因為這是你完全掌握整個系統的方方面面具體運作的前提。但占主導地位的,還是大型系統的整合測試經驗。實際專案中,編碼時間一般只佔30%左右,真正耗費時間的是IT階段的找 bug與對應bug,此階段基本評定了coder的編碼質量。

  2、程式設計師的困惑

  有些人,以為教學影片和程式碼看多,自己就懂的多,實際做起來,卻不知從何下手,

  問題在那?如何定位?如何解決?通通跟一樣能力有關,debug追蹤能力,也稱除錯。在專案組工作不愁原始碼資源,但問題是蛋糕擺在面前,你如何去消化?

  有位同事告訴我:程式碼看幾遍都沒用,要去抄,例如一個查詢模組,在此基礎上去做具體記錄的歷史記錄查詢模組,你可能會覺得很簡單,但實際情況卻往往報一堆異常,配置問題涉及到方方面面,以及資料庫欄位,傳值問題等等,一大堆對於新人來說很鬱悶的問題。但不用怕,只要學會除錯,一個個問題去追蹤,一個個去解決,自然而然,那段“原始碼”才真正屬於你。

  3、如何除錯追蹤

  如果你能在短短的時間內就看到問題點在那,放下斷點去追蹤,出去找工作,絕對沒問題。出現問題的時候,不要光看程式碼,要用實際行動去追蹤執行期間的具體值,那是最好途徑。eclipse是個很爽的ide,這點做的很好。例如頁面內容顯示不是自己想要的資料,我們要先從資料庫查詢語句去下手,設定斷點,一步一步step over,讓sql欄位(存取最終sql語句的字串)執行到有值,inspect進去看,如果還看不出來,就點選它,copy後在sql客戶端去實際執行,看看實際查詢出來的表是什麼,如果是對的,有可能就是頁面呼叫的錯誤或者action邏輯的傳值問題。

  頁面錯誤的除錯,基本方法是用右鍵點選實際網頁檢視原始碼,copy到editplus,就能看到具體錯誤發生在那幾行。通常有幾種常見的錯誤,例如:缺少物件這種很多時候是有些被你呼叫的欄位有可能為空的情況出現的,可以加if(xxx=null)語句加保護。追蹤的方法基本就是用alert語句,放在有可能出錯的地方。

  4、一些習慣

  遇到問題先自己思考,無從下手再找高手幫忙看看,注意他幫你看的思路,別在一旁閒著,看多了自己也會了,不然你一輩子都停留在那種水平,從人身上學到的東西遠遠比書多的多。

  解決了一個問題後,要去究根問底去找到問題產生的起因,以防你下次遇到類似的問題再浪費同樣的時間。

  把程式碼寫的漂亮,註釋、空行、規範一樣不能少,可讀性是放在第一位。曾經看過一個高手寫的程式碼,真的一看就是不同水平的人寫的,幾乎很完美,讀起來很流暢,方便自己也方便別人。

  任務完後不要待著,去要求經理給你更有挑戰性的任務,只要你肯去嘗試,他們就會對你另言相看,把三天的任務一天加班搞定,效率和忠誠都有了,路也比較好走了。

  軟體工程心得體會 篇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%之多。一個完整的專案規劃須包括,軟體的定義,可行性分析報告,專案開發計劃,軟體需求說明書,概要設計說明書,詳細設計說明書,使用者操作手冊,測試計劃,測試分析報告,開發進度報告,專案開發總結報告,軟體維護手冊,軟體問題報告,軟體修改報告,等多個文件,每個文件都要上級驗收審查,而文件數量眾多,要做好這點真的不是很容易,而恰恰寫好文件正能保證完成軟體工程其中一個目的的關鍵,既研究如何用最小的開銷做出生存期較長的軟體,再加上各個階段都要進行周密的策劃、詳細的分工部署和人員安排,且各階段要據具體情況不斷的反覆才能達成,所以程式碼只是開發軟體這個浩大的工程的一個小小的過程。

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

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

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

  軟體工程心得體會 篇4

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

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

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

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

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

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

  軟體工程心得體會 篇5

  早在我選擇民政職業技術學院就讀軟體開發與專案管理這門專業的時候,我一直認為軟體開發無非是努力的敲程式碼,從敲程式碼的過程中去體會各行程式碼的意思和用處,在沒學軟體工程時我一直都是努力的敲程式碼去學習軟體開發這門專業。在大一的時候我敲程式碼的激情很好,但是到大二的時候就出現問題了,我根本就不喜歡敲程式碼了,看見程式碼就頭疼。所以感覺厭惡這門專業,對學習也不感興趣了。而且,還有一件更頭疼的事是在寫一個簡單的程式時竟然老是出錯,難一點的,複雜一點的程式竟然無從下手。但是去看程式的參考答案時都看得懂,又感覺很容易。學了軟體工程以後,我就感覺我以前的學習方法是錯誤的。以前我只注重於程式碼,而不注重理論知識以及程式設計的思路,程式的架構。以至於在些程式時沒有寫程式的思路,不能形成程式的架構。只想到看腦袋裡是否有與此類似的程式碼。越想程式越亂,最後腦袋裡一片空白。不知道程式從哪個方面下手了。

  軟體工程這門課程是做軟體開發的人必學的課程,透過學這門課程,程式設計師就會注重軟體開發的理論知識,以及做專案開發的思路。學了這門課程後你寫程式就不會去盲目的去套用程式碼,而是理清此程式的架構以及思路。程式該從什麼時候開始,什麼時候結束。在中間需要新增什麼樣的功能,以完善該軟體。其實學軟體工程並不難,而且很容易。軟體工程與日常生活聯絡起來的話,就是在一天中你該先做什麼,後做什麼。理解了先做什麼,後做什麼了以後寫程式就不是那麼難了,再複雜的程式也可以分成幾大塊。你理清程式的思路後就可以一步步的解決其中的難題,最終實現軟體的功能。如果沒學軟體工程不知道理清程式的思路的話,做一個大的專案開發,那麼多的程式碼,沒有一個很好的結構,最終只會導致程式混亂,錯誤百出,知道程式碼再多也會素手無策的。

  總而言之,作為一個程式設計師學習軟體工程這門課程是至關必要的,如果沒學習軟體工程,你就不會做專案開發,也不可能開發出一個完善的軟體出來。

  軟體工程心得體會 篇6

  曾經看過一本書叫《道法自然》,內容略記得一二,但我最欣賞的是它的書名。軟體設計沒什麼太神秘有東西,只要用心體會,其實一切都很自然。軟體的設計之“道”,也不在於設計有多麼的華麗、精巧,而在於其樸實、自然,最終達到“以無招勝有招”,進入一個全新的境界。

  一、軟體設計理論的層次

  以我的拙見,軟體設計領域中的各種概念,可以分為以下幾個層次來進行理解:

  1、軟體設計的目的:重用性、擴充套件性。

  這是最高的層次,是應對軟體危機的需要。

  2、設計原則:低耦合、高聚合。

  各種軟體設計的原則,如依賴倒置原則、單一職則原則、面向介面等,以及各種設計模式,其根本的目的其實只是為了降低耦合這麼簡單。因為只有低耦合才能更好的適應變化,更好的重用和擴充套件。

  3、實現方法:運用設計模式封裝變化、降低耦合。

  設計模式只是用來“封裝變化、降低耦合”的工具而已。它是面向物件設計時代的產物,其本質就是充分運用面向物件的三個特性,即:封裝、繼承和多型,進行靈活的組合運用。

  二、關於耦合

  1、耦合的粒度

  耦合無論如何也是不可避免的。當我們實現介面、繼承父類的時候,就會不可避免的產生耦合。耦合是有不同粒度的,我們解耦到什麼粒度為止,我認為應以模組的重用粒度為準。儘量解除重用模組或物件之間的耦合。而重用模組之內的耦合,應屬於聚合的範疇,所以不要盲目的去解耦,否則就陷入了誤區。

  2、解耦的原理

  怎樣才能解耦呢,或者說為什麼各種設計模式能達到解耦的目的呢?我覺得有以下幾個思路:

  (1)將具體的東西抽象處理

  (2)將分散的東西集中處理

  而面向物件中的介面、繼承正為我們提供了這樣的一種機制。透過訪問介面或基類或抽象類,而不是具體的實現類,從而與具體的實現類達到了解耦的目的。我們還可以設計一些控制類,像潤滑劑一樣,協調各實現類之間的訪問,也可以達到耦的目的。

  事實上,各種設計模式的基本思想也就是這樣。建立型模式是為了解除建立物件時產生的耦合,實際上是解除對類稱名的依賴,而結構型和行為型是為了解除物件屬性或方法的直接呼叫。不管什麼設計模式,都是將對具體實現類的訪問提升為對介面、基類或用於協調的控制類的訪問。

  三、關於介面

  這一節更具體,談一談介面,因為使用介面是軟體設計的重要手段,但已經不屬於“道”了~

  1、介面與繼承

  介面描述的是物件某一個方面行為特徵。使用介面與使用繼承關係各有優缺點,使用子類繼承可以繼承父類的功能,體現了重用的精神。而接品更加靈活,因為它解除了子類與父類之間的高度耦合,它體現在靈活擴充套件的精神。

  2、介面與純虛類

  理論上介面可以由純虛基類實現類似的功能,那為什麼還我們不去掉介面的概念,而直接使用虛類呢?

  介面存在的理由就是它更加靈活,關係簡單,易於理解。比如一個類可以實現十幾個甚至幾十個介面,但一般開發工具只支援單繼承(由於多繼承太容易導致混亂和衝突),如果要繼承十幾層,系統結構想必會無法理解了,我以為這是介面存在的最重要的原因。

  如果介面和虛類繼承結合使用,可以產生強大的威力,這也是許多設計模式的“殺手鐧”。

  以上算是總結一下自己的心得。肯定有不少片面之處,請各位指教。

  軟體工程心得體會 篇7

  經過這學期軟體工程實驗的學習,深深感到使用者需求對軟體的重要性。成功的軟體產品是建立在成功的需求基礎之上的,而高質量的需求來源於使用者與開發人員之間有效的溝通與合作。當用戶有一個問題可以用計算機系統來解決,而開發人員開始幫助使用者解決這個問題,溝通就開始了。

  需求獲取可能是最困難、最關鍵、最易出錯及最需要溝通交流的活動。對需求的獲取往往有錯誤的認識:使用者知道需求是什麼,我們所要做的就是和他們交談從他們那裡得到需求,只要問使用者系統的目標特徵,什麼是要完成的,什麼樣的系統能適合商業需要就可以了,但是實際上需求獲取並不是想象的這樣簡單,這條溝通之路佈滿了荊棘。首先需求獲取要定義問題範圍,系統的邊界往往是很難明確的,使用者不瞭解技術實現的細節,這樣造成了系統目標的混淆。

  其次是對問題的理解,使用者對計算機系統的能力和限制缺乏瞭解,任何一個系統都會有很多的使用者或者不同型別的使用者,每個使用者只知道自己需要的系統,而不知道系統的整體情況,他們不知道系統作為一個整體怎麼樣工作效率更好,也不太清楚那些工作可以交給軟體完成,他們不清楚需求是什麼,或者說如何以一種精確的方式來描述需求,他們需要開發人員的協助和指導,但是使用者與開發人員之間的交流很容易出現障礙,忽略了那些被認為是"很明顯"的資訊。最後是需求的確認,因為需求的不穩定性往往隨著時間的推移產生變動,使之難以確認。為了克服以上的問題,必須有組織的執行需求的獲取活動。

  需求獲取活動要完成的任務或者步驟的過程如下:

  1、編寫專案檢視和範圍文件

  系統的需求包括四個不同的層次:業務需求、使用者需求和功能需求、非功能性需求。業務需求說明了提供給使用者新系統的最初利益,反映了組織機構或使用者對系統、產品高層次的目標要求,它們在專案檢視與範圍文件中予以說明。使用者需求文件描述了使用者使用產品必須要完成的任務,這在使用例項文件或方案指令碼說明中予以說明。功能需求定義了開發人員必須實現的軟體功能,使得使用者能完成他們的任務,從而滿足了業務需求。

  非功能性需求是使用者對系統良好運作提出的期望,包括了易用性、反應速度、容錯性、健壯性等等質量屬性。需求獲取就是根據系統業務需求去獲得系統使用者需求,然後透過需求分析得到系統的功能需求和非功能需求。專案檢視和範圍文件就是從高層次上描述系統的業務需求,應該包括高層的產品業務目標,評估問題解決方案的商業和技術可行性,所有的使用例項和功能需求都必須遵從的標準。而範圍文件定義了專案產品所包括的所有工作及產生產品所用的過程。專案相關人員對專案的目標和範圍能達成共識,整個專案組都應該把注意力集中在專案目標和範圍上。

  2、使用者群分類

  系統使用者在很多方面存在著差異,例如:使用系統的頻度和程度、應用領域和計算機系統知識、所使用的系統特性、所進行的業務過程、訪問許可權、地理上的佈局以及個人的素質和喜好等等。根據這些差異,你可以把這些不同的使用者分成不同的使用者類。與ULM中Usecase的Actor概念一樣,使用者類不一定都指人,也可以包括其他應用系統、介面或者硬體,這樣做使得與系統邊界外的介面也成為系統需求。將使用者群分類並歸納各自特點,並詳細描述出它們的個性特點及任務狀況,將有助於需求的獲取和系統設計。

  3、建立核心隊

  通常使用者和開發人員不自覺的都有一種"我們和他們"的想法,產生一種對立關係,把彼此放在對立面,每一方都定義自己的"邊界",只想自己的利益而忽略對方的想法。他們透過文件、記錄和對話來溝通,而不是作為一個合作的整體去識別和確定需求完成任務。實踐證明這樣的方法是不正確的,不會給雙方帶來一點益處,良好的溝通關係沒有建立導致了誤解和忽略重要的資訊。只有當雙方參與者都明白要成功自己需要什麼,同時也知道要成功對方需要什麼時,才能建立起一種合作關係。

  為了建立合作關係通常採取一種組隊的方式來獲取需求,建立一個由使用者代表和開發人員組成的聯合小組作為需求獲取的核心隊伍。聯合小組將負責識別需求、分析解決方案和協商分歧,小組成員可以採用會議、電子郵件、綜合辦公系統等方式進行交流,但交流時應注意以下原則:小組會議應該由中立方來組織和主持,使用者和開發人員都要參加;交流預先要確定準備和參與的規則;議題要明確並覆蓋所有關鍵點,但資訊來源應該自由;交流目標要明確,並告知所有的成員。

  4、確定使用例項

  從使用者代表處收集他們將使用系統完成所需任務的描述,討論使用者與系統間的互動方式和對話要求,這就是使用例項,一個單一的使用例項可能包括完成某項任務的許多邏輯相關任務和互動順序。使用例項方法給需求獲取帶來的好處來自於該方法是用以任務為中心和以使用者為中心的觀點,比起使用以功能為中心和以開發者為中心的方法,使用例項方法可以使使用者更清楚地理解和認識到新系統允許他們做什麼和怎麼做。描寫使用例項的時候要注意使用簡潔直白的表述,儘量使用主動語態,用"系統"或者"使用者"作為主語,比如"使用者提交使用者密碼,系統驗證使用者密碼是否正確",還有一點在描述中不要設計介面細節,比如"使用者從下拉框中選擇產品型別"。使用例項為以後寫用例場景描述中的基本路徑和擴充套件路徑提供了素材。

  5、分析使用者工作流程

  分析使用者工作流程觀察使用者執行業務任務的過程,透過分析使用例項得到系統的用例圖。編制用例圖文件將有助於明確系統的使用例項和功能需求,統一建模語言的使用有助於與使用者進一步交流。每個用例的描述應包括:編號,為每個用例分配一個唯一的編號,為需求的追溯提供了方便;參與者,與這個用例互動的 actor;前置條件,開始用例前所必須具備的系統狀態;後置條件,用例完成後系統達到的狀態;基本路徑,用例完成的關鍵路徑,也是使用者期望的路徑;擴充套件點,基本路徑的分枝,表示意外情況;欄位說明,路徑中名稱的進一步分解說明,對以後類屬性的定義和資料庫欄位設計起作用;設計約束,實現用例的非功能約束。

  6、檢查問題報告

  透過檢查當前已經執行系統的問題報告來進一步完善需求客戶的問題報告及補充需求為新系統或新版本提供了大量豐富的改進及增加特性的想法,負責提供使用者支援及幫助的人能為收集需求過程提供極有價值的資訊。

  7、需求重用

  如果客戶要求的功能與已有的系統很相似,則可檢視需求是否有足夠的靈活性以允許重用一些已有的軟體元件。業務建模和領域建模式需求重用的最好方法,像分析模式和設計模式一樣,需求也有自己的模式。

  總結:經過一學期的軟工實驗,深刻感到其重要性的同時也學到了不少的東西 ,將對我在今後的軟體開發過程中起極大的作用。

  軟體工程心得體會 篇8

  在這次軟體工程課程中,我學到了很多東西,第一次深刻的體會到了什麼叫做用工程化的思想來編寫軟體,以前自己也寫過一些小型軟體,沒有做過大型的專案,直到這次課堂我擔任組長並組織組員共同完成“個人圖書管理系統”這個專案,第一次和別人合作,才發現運用工程化的思想來做是如此的有必要。

  從這裡,我才真正的意識到實施一個軟體工程並不是說簡單的會編碼就能夠解決問題的,我們更多的精力不是放在編碼上,編碼只是一個很小的模組,只佔到那麼小的一個部分。這個事實在很大程度上顛覆了我以前的思想,在我以前的認識中,似乎整個軟體就是編碼,除此無它,還好有老師的指導,不然真的會出現老師所說的,撞得頭破血流之後才想起來用軟體工程的思想來完成這個工作。

  剛真正開始工作之前,我們費了很多的時間來完成一些前端工作,如需求分析和可行性分析,這塊工作在別人看來可能是相對無關緊要,甚至是多於的,其實,換做在以前,我也會這麼認為。可是,我現在算是深深地明白了磨刀不誤砍柴工的道理,這些工作的完成太有必要了,太重要了,要想你的軟體有用有市場,能被別人接受和認可,在進行過程中不會出現崩潰性的問題,這些工作缺一不可。

  還有就是接下來的一些設計模組,此模組與軟體編碼涉及比較緊密,主要是解決一些引數傳遞和介面通訊的問題,此模組對我的觸動遠沒有上兩個模組對我的影響大,因此再次也不做過多的介紹。

  在整個活動的完成過程中,作為組長,我收穫很多,我發現,要是組裡有個人不怎麼想做事情時,他對於整個組織的影響是毀滅性的,正所謂“一顆老鼠屎,能壞一倉谷”,以後我的組織裡要是出現這樣的人,我絕不會給他繼續留下來的機會,我會在第一時間將他清除出去。還有就是,作為組長,你要做的最重要的事情,不是發揮自己的聰明才智,而是創造出一個平臺,讓別人去發揮,你所要做得,出了保證這個平臺的完整性和公平性外,還有就是協調好各組員之間的關係。

  這就是我的實習感想。

  軟體工程心得體會 篇9

  學習了這門課程, 還有老師們的多元化教課,不但讓我從理論上掌握軟體工程,還有從不同的例項,讓理論和實踐得到了很好的結合。整一個學期下來,總的來說還是學到了很多東西的,有很多地方是值得肯定的,其實在我看來,軟體工程與其說是一門課程,不如說是一門思想。是一個如何去分析和處理問題的過程,應該說其範疇已經遠遠不止侷限於該門課程,成為了一個綜合的一個能夠解決問題的思想集合。

  整本書的內容邏輯很清晰明瞭,由淺入深循序漸進,首先我就大概描述下我們所學的內容,第一章是從整體分析軟體工程這門學科的發展和所處的社會環境,接著後面的幾章深入分析了軟體開放過程和模式、軟體專案管理、計算機工程、需求分析、結構化分析建模以及基於UML面向物件分析建模等。接著我就詳細介紹下我對這門課程知識點的理解概括:

  軟體:軟體是能夠完成預定功能和效能的可執行的計算機程式和使程式正常執行所需要的資料,加上描述程式的操作和使用的文件。軟體的特徵:①軟體是一種邏輯實體,而不是具體的物理實體,因而它具有抽象性。②軟體是透過人們的智力活動,把知識與技術轉化成資訊的一種產品。③軟體成為產品後,其生產只是簡單的複製,不同於硬體製造。④維護過程比硬體複雜的多,甚至會引發新的錯誤。軟體危機:指的是軟體開發和維護過程中遇到的一系列嚴重問題。出現軟體危機的原因:①軟體維護費用急劇上升,直接威脅計算機應用的擴大。②軟體生產技術進步緩慢。軟體工程是指導計算機軟體開發和維護的工程學科。 軟體生存週期:一個軟體從定義到開發、使用和維護,直到最終被棄用,要經歷一個漫長的時期,通常把軟體經歷的這個漫長的時期稱為生存週期。軟體的生存週期可分為八個階段:①問題定義;②可行性研究;③需求分析;④總體(概要)設計;⑤詳細設計;⑥編碼與單元測試;⑦綜合測試;⑧軟體維護;

  瀑布模式:是傳統的軟體開發模式,其中的“瀑布”是對這個模式的形象表達,由山頂傾瀉下來的水,自頂向下、逐漸細化。其特點是:線性化過程;分為分析、設計、編碼、整合等幾個階段,並且各階段逐級推進,不允許跨越。里程碑管理;階段評審;文件驅動;簡潔便於工程應用的線性化過程步驟,並可以透過里程碑管理機制而使專案程序量化。其明顯的優點就是沒個階段結束前都要對所完成的階段成果進行評審,這使得軟體的錯誤能夠在個階段內儘早發現並儘早解決,總的來說瀑布模式具有良好的質量保證機制,有很強的生命力。

  原型進化模式:對軟體進行直接模擬或模擬,只需要分析需求框架後進行原型建立,再對原型系統進行逐步細化與完善,透過版本更新逐步滿足使用者對於軟體的多方面需要。

  增量模式:開發過程有三個任務域,分別是設計結構、開發構件和整合系統,它既有完善的工程管理機制,又能適應使用者需求變更,有利於質量的監控,並且各區域性基於構件構造,有利於逐步構建與完善;由於先交付核心構件可利於降低專案的技術風險。

  螺旋模式:是一種可較好的規避開發風險過程的模式,專案是基於任務的螺旋式推進,每個螺旋由內之外分別是需求分析、軟體設計、系統整合、驗證與交付。

  軟體開發的整個過程:①需要專案團隊,組建優秀的團隊可以開發出更搞質量的軟體產品。任務開發團隊要求小而精,成員大多在8人以內,主要成員有項

  目負責人、開發人員、資料管理員和軟體測試員。②專案計劃是為了使軟體開發各項工作有秩序地進行,包括任務分配和基於里程碑的進度安排,甘特圖和任務網路圖是用來描述進度計劃的工具。專案計劃書可以作為軟體開發的工作指南。③專案成本估算,由於專案有來自各方面的成本包括工資開支、場地費、差旅費、裝置費和資料費等,但是軟體主要是對人力成本的估算,常用的方法有程式程式碼成本估演算法等。④軟體風險管理包括很多不確定的風險因素,如計劃風險、管理風險、需求風險、技術風險、人員風險、產品風險、使用者風險和商業風險等等,而風險管理的主要任務是:風險識別、風險評估、和風險防範。⑤軟體文件管理,軟體文件是工程模式軟體開發的成果體現,包括技術文件、管理文件和使用者文件。 ⑥軟體配置管理與軟體質量管理,包括配置規劃、軟體變更控制、軟體版本控制和質量控制計劃。

  計算機系統由硬體、軟體、資料資源、網路資源、使用系統的人等諸多元素。有三種典型的計算機體系結構:①主機結構,主機集中了全部智慧,並依靠終端介面與外部裝置連線。②Client/Server結構,智慧分佈於伺服器與客戶機,並依靠網路連線成系統,其中,伺服器處於核心位置,提供被動核心服務;客戶機處於邊緣位置,可主動訪問伺服器,尋求服務支援。③Browser/server結構,可適應網際網路遠端互動的特殊結構,基於Web伺服器構建。

  需求分析:系統開發前期需求分析很重要,它是為了有效解決使用者問題的需要進行的一項工程活動,所需要考慮的需求問題是功能需求、資料需求、效能需求和介面需求,開發者承擔分析任務,核心是使用者。其步驟有三個:①獲取客戶需求,客戶泛指某個人或機構部門等,一般方法是調查,包括訪談、座談、問卷、跟班和收集資料,需求規約可表達使用者的軟體價值。②建立需求模型,它是使用者需求的圖解,一些常用的模型有:業務樹圖、用例圖、活動圖。分別用於結構化需求建模、系統業務舉例和反映系統工作流程。③進行需求驗證,要驗證的主要內容有:有效性驗證、一致性驗證、完整性驗證、現實性驗證和可檢驗性驗證。 結構化分析建模:它是建立在需求規約基礎上的,對軟體問題進行全面解說,包括四個方面:①資料建模,它與資料庫設計密切相關,ER圖涉及實體、關係、屬性等圖形元素,在業務層面建立資料庫概念模型,一般用於前期的建模構想。②功能建模,是對系統資料加工的圖解,資料流程圖是常用的建模工具,涉及資料介面、資料處理、資料流、資料儲存等圖形元素,用於描述系統資料加工細節。③行為建模,行為模型用於說哦名軟體系統與環境的互動,狀態轉換圖常用的軟體行為建模工具涉及狀態、事件等圖形元素。⑤資料字典,是用於定義軟體的元素,使軟體元素獲得嚴肅的、詳密的、精確的規格說明。需求分析模型中的資料、功能、行為等諸多方面的元素,都有必要透過資料字典給予細節說明,以達到對系統較完整全面的規格定義。

  基於UML物件面向物件分析建模:UML是統一建模語言,有統一的語法、語義和語用規則,其建模過程的特點是:用例驅動、以構架為中心和增量迭代,透過包實現對模型的有效的一體化管理。包括三部分:①用例建模,它面向使用者需求的,能夠反映系統的使用者價值,用例圖的基本元素有用例、參與者、交流;用例之間有泛化、延伸和包含關係。②活動建模,活動圖用於描述系統動態過程,主要圖形元素有:活動、轉換、起點、終點、判斷、併發、同步、泳道等。可描述高層業務級活動,涉及整個業務流程,針對每個用例活動建模,反映用例內部活動細節。③類分析建模,這裡就只考慮實體類,實體類所代表的資料相互之間通常有一定的關係,依靠這種關係可形成有組織的程式資料結構。實體類之間的

  主要資料關係有:關聯、聚類、泛化。

  接下來我就簡單說下我上這門課的簡單的心得體會,我們是大四的學生了,也只有這個學期有課了,剛開始課表安排出來的時候覺得挺意外的,只有前八週有課,當時我還是有點小感動的,大四事情很多,有要考研的和工作的,大家也都有各自的事情,如果有16周的課,那麼每週課不是特別多,但是時間特別分散,也不能集中某段時間去做什麼事情。但是相對於老師的壓力也有,課程壓縮了相當於每節課的教學任務大大增加了,在加上有些假期沖掉課,就感覺我們好像上課學不到什麼東西,也只是一些關鍵的和考試掛鉤的才重點講,完全沒有擴充套件的時間和空間了。但是總的來說,學校開了這門課,我們上了這門課,總是學到了點東西的,不可能明明上了軟體工程這門課,卻像沒上一樣什麼都不懂。在上課的時候我還是很認真地去聽老師所講述的內容的,我覺得他的思想和我一向而來的培養計算機學生綜合素質的理解還是在一定程度上不謀而合了,所謂的需求獲取,那就是一個談判,辯論,交流的過程,已經不是單純的編程式設計序就能解決的問題了。從我所看到的聽到的來說,我最怕的就是計算機系的學生被別人說成是個帶著厚眼鏡的,只能夠在電腦前編程式設計序的,在交際場上不知道說什麼而一個字都說不出來的人。我覺得這樣的人進入社會之後是沒有什麼前途的,起碼他們缺乏了與人溝通交流的能力。而這門課程在一定程度上給了我們這些學生一個機會來鍛鍊自己在另一方面的能力,設想一下,一個又有技術又能夠與人交流合作的人所取得的成就自然要比一個單單隻會程式設計序的人要大得多。其次,這門課程教給了我們在完成一個實際專案時的一般程式及過程,我認為這是一份非常具有實際意義的教學內容。當我們在畢業之後,這是我們實際要運用的一項非常有用的技能,而且不僅僅侷限於軟體工程的範疇,我們即使是從事與其它行業,不也是要從需求獲取開始,一直有條有理地到最後成品的出爐嗎?應該說這就是這門課的價值所在。無論是在上課,還是在學生會里面做學生工作,我都深深地感覺到,技術性的工作就好比變魔術,其實原理是非常簡單的,甚至可以說簡單的可笑,但是當你就是做出這麼一個簡單的東西出來之後,一些外行們有時候會用崇拜的眼光看著你,覺得你很厲害,很高深莫測。但是製作的過程他們卻不知道,也許知道之後他們只是會啞然失笑,原來這個東西的製作過程是如此的簡單。這個可以說就是技術的魅力了,而作為需求獲取及之後的一系列過程則是類似於魔術揭秘的過程,但是作為這個秘密我們並不需要一揭到底,至於揭的程度如何那就是我們那就是我們學出的程度如何了,我們要讓對方知道我們在做什麼?以及如何去做?這些東西需要我們以一定的技巧敘述出來,所起到的作用就是能夠讓對方瞭解自己的進度,卻又能夠不讓對方來干涉自己的工作過程。因為我們是技術員,對方只是外行,即使對方知道了這個魔術的操作過程,也並不代表他們就能夠向變著魔術的我們來隨便修改這個魔術的變法,況且我們能夠用不同的過程來得出一個同樣的結果,這個過程的得出的`主動權如何掌握在我們的手上,就看我們如何以高明的方式來揭開這個魔術的謎底了。當然了,在純粹的理論上,我覺得開設這樣一門課程是很成功的。但是畢竟現實裡有太多的不確定的因素。最重要的因素就是授課的老師和聽課的學生。這兩個可以說是這門課成與敗的決定性的因素。

  作為我們學生來說,應該負起比較主要的責任。在大學裡有了太多的基礎課程,基礎課程大多都比較枯燥無味,也許在第一個學期裡我們還能夠保持著新鮮感,但是在6學期之後,可以說再有新鮮感就是一件比較困難的事情了,我們都已經開始變得遲鈍了。其次的,沒有認識到這門課程的價值。這門課的價值我已

  經在上面說過了,是不言而喻的。但是並不是每個同學畢業之後都回從事計算機行業,也不是每個同學都知道這門課程的意義已經不僅僅侷限於計算機這個範疇。或許有些人覺得反正以後不是這個發展方向,也就不在乎這個課程吧。我個人覺得這門課確實是挺好的,如果認真學必能學到很多東西,動手實踐能力和從整個大體分析系統開發的邏輯性思維也會明顯增強,不管以後從事哪個方面的工作,這對以後來說都是一筆很大的隱性財富。說到我自己對這麼課的學習,還是有點愧疚的,前面四周我每週每節課都去上的,並且上課也認真聽,一邊聽老師講課一邊自己看書本的介紹,但是後來我上這門課的次數就降低了,因為覺得時間很緊吧,而且老師上課的節奏我個人覺得有點慢,我都可以自己預習看到後面去了,但是這門課我還是每週至少上一節課的,雖然我早上7點多一點就出門,在自習室,但是有時候明明知道到了上課的時間,明明上課的地方離自習的地方不遠也不太想去。我記得有次上課時候老師生氣了,說來上課的人少,我仔細環顧了下四周發現確實人很少,稀稀疏疏的分散著,看起來確實不太舒服,讓我不得不反思了,這大學的教育到底怎麼了,怎麼到了大四大家都不來上課,雖然我不是每節課都來,但是我還是時不時來上課的,可能是比較浮躁吧,快畢業了,覺得上課學不到什麼實際的東西,要麼實際一點好好考研繼續深造,要麼去培訓增強實踐能力這樣才能較好的為找個滿意的工作做好鋪墊。

  《軟體工程》課程既強調基本概念和基本知識的理解和掌握,又側重軟體專案的分析、設計、實現和維護的基本技能。比較注意“點”和“面”的結合。我還是蠻喜歡這門課的,透過對這門課的學習讓我意識到理論學習很重要,實踐更重要,實踐是檢驗真理的唯一標準,只有將理論與實際結合,才更能發揮我們所學的知識的作用,更能直接的創造效益,社會和國家做出貢獻。

  軟體工程心得體會 篇10

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

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

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

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

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

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

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

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

  4、軟體設計這就是對程式的每一個模組的詳細設計的說明文件。

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

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

  軟體工程心得體會 篇11

  一、需求分析和概要設計。

  1)需求分析

  按照軟體工程的軟體過程來說:

  1需求分析產生了軟體功能規格說明書,需要確定使用者對軟體的需求,要作到明確、無歧義。不涉及具體實現方法。使用者能看得明白,開發人員也可據此進行下面的工作(概要設計)。

  2.概要設計產生了軟體概要設計說明書,說明系統模組劃分、選擇的技術路線等,整體說明軟體的實現思路。並且需要指出關鍵技術難點等。

  在進行需求分析時,我們既是開發者又是使用者,本系統的業務流程與業務分類的定義比較難。我們的團隊進行了研討,還充分運用了身邊的各種資源,大量的查找了很多網路上關於工資系統的資料。透過資料的進行討論、根據我們的課題進行分析,最後確定了使用者的需求為:

  1.本系統在高校應用後高校工資管理方面的教職工將減少至目前的50%左右;

  2.本系統在高校應用後將在高校各方面的成本將會有所降低;

  3.本系統在高校應用後將教職工的工資達到完全透明,計算更加精確教職工因糾紛事件減少到1%。 根據分析將系統的功能從一般教職工與系統管理者兩個角度將功能劃分為7個模組,當然介於我們的知識有限,有的功能沒有實現:員工工資與考勤直接掛鉤,但本系統無法與員工考勤系統掛鉤相連,由於涉及此係統時該高校並沒有員工考勤系統,而且我們在最初進行商量的時候也沒有提出該要求。

  2)概要設計

  從概要階段開發正式進入軟體的實際開發階段,本階段完成系統的大致設計並明確系統的資料結構與軟體結構。在軟體設計階段主要是把一個軟體需求轉化為軟體表示的過程,這種表示只是描繪出軟體的總的概貌。由概要設計說產生大的概要說明書的目的就是進一步細化軟體設計階段得出的軟體總體概貌,把它加工成在程式細節上非常接近於源程式的軟體表示。

  在本階段主要涉及處理流程的設計、總體結構和模組外部設計、功能分配。在介面設計上有使用者介面、外部介面、內部介面;資料結構設計有邏輯結構設計、物理結構設計等等。在介面設計時參考了大量的資料。

  最後就是編寫文件——軟體需求說明書、概要分析說明書。

  而文件的作用在於:一是可以幫助整理思路。把要完成的目標,系統的結構,每一個模組的功能等整理一下,然後分門別類地寫下來,這樣在開發的過程中,就有據可依,在需要回過頭來修改設計的時候,也有證可考。二是便於交流。三是可以作為以後維護時的參考資料。

  三、軟體工程課程設計——心得體會

  我們進行了為期一週的課程設計。透過這次課程設計,我拓寬了知識面,鍛鍊了能力,綜合素質得到較大提高。安排課程設計的基本目的,在於透過理論與實際的結合、人與人的溝通,進一步提高思想覺悟。尤其是觀察、分析和解決問題的實際工作能力,以便培養成為能夠主動適應社會主義現代化建設需要的高素質的複合型人才。作為整個學習體系的有機組成部分,課程設計雖然安排在一週進行,但並不具有絕對獨立的意義。它的一個重要功能,在於運用學習成果,檢驗學習成果。運用學習成果,把課堂上學到的系統化的理論知識,嘗試性地應用於實際設計工作,並從理論的高度對設計工作的現代化提出一些有針對性的建議和設想。檢驗學習成果,看一看課堂學習與實際工作到底有多大距離,並透過綜合分析,找出學習中存在的不足,以便為完善學習計劃,改變學習內容與方法提供實踐依據。對我們資訊管理與資訊系統專業的學生來說,實際能力的培養至關重要,而這種實際能力的培養單靠課堂教學是遠遠不夠的,必須從課堂走向實踐。這也是一次預演和準備畢業設計工作。透過課程設計,讓我們找出自身狀況與實際需要的差距,並在以後的學習期間及時補充相關知識,為求職與正式工作做好充分的知識、能力準備,從而縮短從校園走向社會的心理轉型期。課程設計促進了我係人才培養計劃的完善和課程設定的調整。

  在一個星期的課程設計之後,我們普遍感到不僅實際動手能力有所提高,更重要的是透過對軟體開發流程的瞭解,進一步激發了我們對專業知識的興趣,並能夠結合實際存在的問題在專業領域內進行更深入的學習。

  軟體工程課程雖已結束,但我對於軟體工程的學習才剛剛開始。我體會到專案管理的重要性,隨著軟體規模、複雜度的不斷增加,專案開發中更多的是協作、管理和控制。我學習到很多一般性的方法,例如:需求獲取、模組化、計劃等等。同時,我也認識到使用計算機解決實際問題的複雜性,人們認識表達的過程不斷反覆、逐步深化,軟體工程方法要提供給程式設計師們一種更加有效的對客觀世界問題域進行形式化的過程方法。

【軟體工程心得體會】相關文章: