寫心得體會可以幫助我們提升自己的表達和思考能力。那么,如何寫一篇有價值的心得體會呢?首先,我們要實事求是,如實記錄自己的所思所感,并結合自己的實際經歷進行分析和總結。其次,我們要思考問題的深度,要有自己的見解和思考,不能只是簡單地陳述和描述。再次,我們要突出重點,將最重要的觀點和體會進行歸納,可以采用提煉法、分類法等方法進行。最后,我們要注意語言的準確性和表達的清晰性,使用簡明扼要的語言,將自己的心得體會傳達給讀者。建議大家看看下面這些心得體會范文,或許能幫助大家提升寫作水平。
學習軟件工程的心得體會篇一
軟件工程概論是一門引導人們正確開展軟件開發(fā)的學科,它包括軟件開發(fā)的常用流程、方法和工具等。我們是計算機專業(yè)的學生,而且都了解軟件開發(fā)的基礎,但是能夠真正了解軟件工程概論的學生是相對比較少的。因此,這門課程將會是我們學習過的最重要的課程之一。
次段:軟件工程概論的重要內容
軟件工程概論具有如下幾個重要的內容:軟件生命周期模型、軟件需求分析、軟件設計、軟件開發(fā)流程和軟件測試。其中軟件生命周期模型是最重要的內容之一,它為開發(fā)過程提供了全方位的指導,確保開發(fā)人員始終按照正確的流程進行開發(fā)。這些內容將會幫助我們了解整個開發(fā)過程,如何規(guī)劃項目并嚴格遵循項目的開發(fā)流程。
第三段:軟件工程概論帶給我們的啟示
軟件工程概論是一個非常實用的課程,它為我們提供了很多關于如何正確開發(fā)軟件的知識和指導。同時也帶給我們很多啟示。首先,軟件開發(fā)不是孤立的,它是一個整體的系統(tǒng),任何一部分出現(xiàn)問題都會影響到整個系統(tǒng)。其次,軟件開發(fā)過程是非常復雜的,需要較高的技能和知識。因此人力成本將會是非常高的,同時對開發(fā)人員的素質和能力也有很高的要求。
第四段:如何應用軟件工程概論在實際工作中
首先需要掌握全面的軟件工程概論知識,以此來指導整個開發(fā)過程。其次需要確定一個比較好的軟件生命周期模型,以確保開發(fā)過程的順利進行,并嚴格按照開發(fā)流程來開發(fā)。同時需要掌握一些常用的軟件開發(fā)和管理工具,以提高開發(fā)效率和質量。
尾段:總結
通過學習軟件工程概論,我們深入了解了軟件開發(fā)過程的核心內容和方法。這些知識將會對我們未來的職業(yè)生涯以及軟件開發(fā)工作有很大的指導意義。因此我們需要把所學的知識和方法運用到實際的工作當中去。同時,我們也要繼續(xù)學習和積累,以應對日新月異的技術發(fā)展。
學習軟件工程的心得體會篇二
談到機械工程先來講講機械,中國的機械發(fā)展有著悠久的歷史,五千年前的紡織機械、晉朝時期的連機錐和水碾、西漢時期的指南車和鼔車、東漢的地震儀、秦始皇時期的銅車馬??國外機械的產生要追溯到18世紀初,第一次工業(yè)革命產生蒸汽機和一些以蒸汽機為動力的近代機械的雛形,再到19世紀代左右的第二次工業(yè)革命,內燃機的產生帶來了新的動力機械,開始了機械的迅猛發(fā)展。從機械和社會的發(fā)展來看,一個社會機械水平越高,生產力水平越強?,F(xiàn)代社會也是一樣,機械是現(xiàn)代社會進行生產和服務的六大要素(人、資金、信息、能量、材料和機械)之一,機械工業(yè)是國民經濟的支柱工業(yè)之一,是社會生產力發(fā)展水平的重要標志。綜上可見,機械是一個國家發(fā)展、民族復興的重要保證。
機械社會發(fā)展中的地位如此之高,那機械工程呢?機械工程是運用數(shù)學、物理等基礎理論和有關機械方面的專門知識,結合生產實際經驗,經濟有效地解決在設計、研究、制造和運行各種機械中遇到的實際問題。從定義上可以看出,機械工程是一個系統(tǒng)性的全面的工程,可以盡可能合理的創(chuàng)造和最大化的利用機械??梢?,在21世紀這樣一個充滿市場競爭和需要不斷創(chuàng)新的時代,機械工程運用的好與不好,往小一點說,直接關系到一個企業(yè)的存亡問題,往大一點說,直接決定了一個國家機械工業(yè)方面的軟實力。機械工程對國家發(fā)展如此之重要,對于未來希望成為工程師的大學生的我來說,沒有理由不好好的了解機械工程。
工程中力學包含:理論力學、流體力學、材料力學、震動力學、計算力學。這些力學是進行機械設計和制造的基礎,學好這些理論才能知道運動以怎樣的機構傳遞,能量以怎樣的機器傳遞。
機械設計包含了很多的設計方法,除去傳統(tǒng)設計方法不說,現(xiàn)代設計方法包含:優(yōu)化設計、可靠性設計、有限元分析、并行設計、綠色設計、創(chuàng)新設計、模塊化設計和反求設計。其中有限元分析、綠色設計和反求設計令我印象深刻。利用電腦軟件對設想的機械部件進行有限元分析,可以確保設計的合理性和可利用行,如此以來,可以在不做出模型的情況下就可以清楚的了解結構的性能,節(jié)約了時間不說更節(jié)約了大量的人力、物力財力。在綠色設計方面,美國的廢舊汽車利用可謂楷模,報廢汽車再利用率達到了百分之九十五,再利用零部件重量超過舊車的總重量的百分之七十五,可以說節(jié)約了大量的資源,對環(huán)境有了一個很好的保護,這點反觀我的祖國,確實有必要學習一下,我國現(xiàn)在汽車每年的購買量都在大幅度上漲,隨之而來的必然會有大量的報廢汽車,這是新的產業(yè),也是一個新的經濟增長點,不但節(jié)約資源保護環(huán)境,還可以促進經濟增長,真是一舉兩得的好事啊。這些設計方法中,最讓我眼睛一亮的要數(shù)“反求設計”,二戰(zhàn)戰(zhàn)敗國日本就是運用這種方法,以“一代引進,二代國產化,三代改進口、四代占領國際市場”方針,迅速的崛起為世界第二大經濟體。日本的成果是對這種方法實質的最好詮釋,中國也在使用這種方法,不過是歪曲了的,只顧模仿不懂得吃透他人的技術再創(chuàng)新,是中國科學技術落后與發(fā)達國家的一個重要因素。模仿不可怕,可怕的是照搬照套!用好“反求設計”實現(xiàn)“比他人做得更好”。
機械制造技術包含兩方面含義:
1、指用機械加工零件的技術;
2、指制造某種機械的技術。在制造技術方面,先進制造技術顯得更適合現(xiàn)代化,通過將多方面的技術進行交叉、融合和集成,綜合應用于產品全生命周期的制造過程,可以更經濟更有效率更好的制造出適應市場需求的產品。特別是三維打印技術,可以通過電腦造型,再通過3d打印機打印出模型來觀察產品的合理性和可用性,方便效率高。
最后談談機電一體化技術,機器人現(xiàn)在是各個國家研究的熱門項目,每個國家都希望在這方面領先全球,機器人就是典型的利用了機電一體化技術的產品,是機械和電子的有機結合。從20世紀中后期,機電一體化就代表了現(xiàn)代機械工程的發(fā)展方向,產生了眾多高新機械產品,如:火箭、衛(wèi)星、宇宙飛船、航空母艦、深海探測器??梢?,機電一體化的前景非常不錯,不過要想學好這么技術,作為機械專業(yè)的學生來說,就有必要好好的學學計算機和信息類的知識,畢竟機電一體化中電子占了很大的比重,為了自己未來的發(fā)展,也為了趕上現(xiàn)代化的機械工程方向,我要努力的學好機械專業(yè)課的同時,多涉獵一些電子類的書籍,為未來的發(fā)展奠定基礎。
學習軟件工程的心得體會篇三
15天的實訓結束了,今天做的是紙牌游戲軟件和趣味打字游戲。今天的東西對我來說有點難度,最后沒有能過完全做完。但是我還是覺得這是一個不錯的實訓,在這種集體的環(huán)境里和同學們一起學習,每天的生活過的也是非常的充實。
此次實踐課我的收獲很多。我和同學們這一次真正自己動手制作了一個小軟件,雖然還存在很多的問題,而且我做的軟件在使用起來還是很不可行的,但是我們從中受到了很多知識,不僅是專業(yè)的知識,更讓我明白了一個軟件從設計到實現(xiàn)的每一個環(huán)節(jié)真的很不容易,不僅需要扎實的專業(yè)知識,更需要一個團隊的配合,這才是一個軟件成功的關鍵。這就告訴我們,一個人的出色不算什么,一個團隊的出色才是真正有用的。
剛開始拿到題目我們組員都不知如何下手,經過小組成員一起查找資料,并且開會討論,我們確定了設計的設計目標以及具體實現(xiàn)方式,包括如何將java的思想運用到實際系統(tǒng)的詳細設計之中。
在實驗課上,我學會了很多學習的方法。而這是日后最實用的。要面對社會的挑戰(zhàn),只有不斷的學習、實踐,再學習、再實踐。這對于我的將來也有很大的幫助。以后,不管有多苦,我想我都能變苦為樂,找尋有趣的事情,發(fā)現(xiàn)其中珍貴的事情。就像中國提倡的艱苦奮斗一樣,我都可以在實驗結束之后變的更加成熟,會面對需要面對的事情,以及學會遇到問題,不急不慌,慢慢解決它。
雖然過程辛苦是不可避免,但收獲還是令人感到尤其的欣慰。在這次的軟件設計中不僅檢驗了我所學習的知識,也培養(yǎng)了我的實踐能力,讓我知道遇到一個問題,如何去尋找思路,如何去解決問題,最終完成整個事情。在設計過程中,與同學分工設計,和同學們相互探討,相互學習,相互監(jiān)督。學會了合作,學會了寬容,學會了理解,也學會了做人與處世。課程設計是我們專業(yè)課程知識綜合應用的實踐訓練,是我們邁向社會,從事職業(yè)工作前一個必不少的過程。實驗過程中,也十分感謝實驗指導老師陳中育老師的指點與教導。這次軟件設計不僅是對這學期所學知識的一種綜合檢驗,而且也是對自己動手能力的一種提高,增強了自己實踐能力。通過這次課程設計使我明白了自己知識還比較欠缺,只是學習書本知識還是遠遠不夠的,自己不會的東西還有太多,學習需要自己長期的積累,在以后的學習、工作中都應該不斷的學習,將課本的理論知識與生活中的實踐知識相結合,不斷提高自己文化知識和實踐能力。
學習軟件工程的心得體會篇四
1.1什么是軟件危機?它有哪些典型表現(xiàn)?為什么會出現(xiàn)軟件危機?
答:軟件危機是指在計算機軟件開發(fā)和維護過程中所遇到的一系列的嚴重問題。
它的典型表現(xiàn):1.軟件開發(fā)成本高,成本難以控制。2.研究周期長,軟件開發(fā)進度難以控制,周期拖得很長。3.正確性難以保證,軟件質量差,可靠性難以保證。4.軟件維護困難,維護人員和維護費用不斷增長。5.軟件發(fā)展跟不上硬件的發(fā)展和用戶的要求。
它出現(xiàn)的原因一方面是由于軟件生產本身存在著復雜性,另一方面是與軟件開發(fā)所使用的方法和技術有關。軟件不同于硬件,它是計算機系統(tǒng)中的邏輯部件而不是物理部件。管理和控制軟件開發(fā)工程相當困難,軟件是規(guī)模龐大,而且程序復雜性將隨著程序規(guī)模的增加而呈指數(shù)上升。目前相當多的軟件專業(yè)技術人員對軟件開發(fā)和維護還有不省糊涂觀念,在實踐過程中或多或少地采用了錯誤的方法和技術,這是使軟件問題發(fā)展成為軟件危機的主要原因。
1.2什么是軟件工程?它有哪些本質特性?怎樣用軟件工程消除軟件危機?
答:軟件工程是將系統(tǒng)化的,規(guī)范化的,可度量的方法應用于軟件開發(fā),運行和維護的過程,即將工程化應用于軟件中。
它的本質特性:1.軟件工程關注于大型程序的構造2.軟件工程的中心課題是控制復雜性3.軟件經?;?.開發(fā)軟件的效率非常重要5.和諧地合作是開發(fā)軟件的關鍵6.軟件必須有效地支持它的用戶7.在軟件工程領域中是由一種文化背景的人替具有另一種文化背景的人創(chuàng)造產品。
基本原理:1.用分階段的生命周期計劃嚴格管理2.堅持進行階段評審3.實行嚴格的產品控制4.采用現(xiàn)代程序設計的技術5.結果應能清楚地審查6.開發(fā)小組的人員應該少而精7.承認不斷改進軟件工程實踐的必要性。
1.3什么是軟件?它有什么特點?
答:軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,它是包括程序,數(shù)據(jù)結構及其相關文檔的完整集合。
1.4什么是軟件過程?它與軟件工程方法學有何關系?
答:軟件過程是為了開發(fā)出高質量的軟件產品所需完成的一系列任務的框架,它規(guī)定了完成各項任務的工作步驟。
軟件過程定義了運用技術方法的順序,應該交付的文檔資料,為保證軟件質量和協(xié)調軟件變化必須采用的管理措施,以及標志完成了相應開發(fā)活動的里程碑。軟件過程是軟件工程方法學的3個重要組成部分之一。軟件工程的基礎是軟件過程。
1.5什么是軟件生命周期模型?試比較瀑布模型、原型模型、增量模型和螺旋模型的優(yōu)缺點,說明每種模型的適用范圍。
答:軟件生命周期模型是軟件開發(fā)全部過程,活動和任務的結構框架,它能直觀表達軟件開發(fā)全過程,明確規(guī)定要完成的主要活動,任務和開發(fā)策略。也叫軟件開發(fā)模型。
瀑布模型優(yōu)點:有利于大型軟件開發(fā)過程中人員的組織,管理,有利于軟件開發(fā)方法和工具的研究,從而提高了大型軟件項目開發(fā)的質量和效率。
缺點:1,開發(fā)過程一般不能逆轉,否則代價太大2.實際的項目開發(fā)很難嚴格按
照該模型進行3.客戶往往很難清楚地給出所有的需求,而該模型卻要求如此4.軟件的實際情況必須到項目開發(fā)的后期客戶才能看到,這要求客戶有足夠的耐心。
適用范圍:1.用戶的需求非常清楚全面,且在開發(fā)過程中沒有或變化很少2.開發(fā)人員對軟件的應用領域很熟悉3.用戶的使用環(huán)境非常穩(wěn)定4.開發(fā)工作隊用戶參與的要求很低。
原型模型優(yōu)點:1.可以得到比較良好的需求定義,容易適應需求的變化2.有利于開發(fā)與培訓的同步3.開發(fā)費用低,開發(fā)周期短且隊用戶更友好。
適用范圍:1.對所開發(fā)的領域比較熟悉而且有快速的原型開發(fā)工具2.項目投標時,可以以原型模型作為軟件的開發(fā)模型3.進行產品移植或升級時,或對已有產品原型進行客戶化工作時,原型模型非常合適。
增量模型優(yōu)點:1.采用增量模型的優(yōu)點是人員分配靈活,剛開始不用投入大量的人力資源
2.如果核心產品很受歡迎,則可增加人力實現(xiàn)下一個增量3.可先發(fā)部分功能給客戶,對客戶起到鎮(zhèn)靜劑的作用。
缺點:1.并行開發(fā)構件有可能遇到不能集成的風險,軟件必須具備開放式的體系結構2.增量模型的靈活性可以使其適應這種變化的能力大于優(yōu)于瀑布模型和原型模型,但也很容易退化為邊做邊改模型,從而使軟件過程的控制失去整體性。
適用范圍:1.進行已有產品升級或新版本開發(fā),增量模型是非常適合的2.對完成期限嚴格要求的產品,可以使用增量模型3.對所開發(fā)的領域比較熟悉而且已有原型系統(tǒng),增量模型也非常適合。
螺旋模型優(yōu)點:1.實際上的靈活性,可以再項目的各個階級進行變更2.以小的分段來構建大型系統(tǒng),是成本計算變得簡單容易3.客戶始終參與每個階段的開發(fā),保證了項目不偏離正確方向以及項目的可控性4.隨著項目推進,客戶始終掌握項目的最新消息,從而是他或她能夠和管理層有效地交互。
缺點:1.采用螺旋模型需要具有相當豐富的風險評估經驗和專門知識,在風險較大的項目開發(fā)中,如果未能夠及時標識風險,勢必造成重大損失2.過多的迭代次數(shù)會增加開發(fā)成本,延遲提交時間。
適用范圍:只適合于大規(guī)模的軟件項目。
1.6怎么理解軟件工程的概念及其意義?
答:軟件工程是一門將理論和知識應用于實踐的工程,它借鑒了傳統(tǒng)工程的原則和方法,以求高效地開發(fā)高質量軟件。它是一種層次化技術。
意義:從歷史上講,軟件工程的作用,是為了克服上個世紀60年代出現(xiàn)的軟件危機,這種危機表現(xiàn)為軟件開發(fā)的成本大、進度慢、維護難和質量得不到保障。從當前來講,軟件工程的作用,就是告訴人們怎樣去開發(fā)軟件和管理軟件。具體地講,它表現(xiàn)在與軟件開發(fā)和管理有關的人員和過程上。
1.7軟件過程的通用過程框架包含哪兩類活動?
答:一類是框架活動,還有一類是保護性活動。
1.8描述基于構件開發(fā)的思想以及目前的發(fā)展情況。
答:基于構件開發(fā)強調將被設計的系統(tǒng)分解成功能的或邏輯的構件,構件用定義好的接口進行通信。
它是現(xiàn)在軟件復理論實用化的研究熱點,在構件對象模型的支持下,通過復用已有的構件,軟件開發(fā)者可以“即插即用”地快速構造應用軟件,這樣即可以節(jié)省時間和經費,提高工作效率,也可以產生更加規(guī)范,更加可靠的應用軟件。
1.9請簡要說明rup的9個規(guī)程(disciplines)及之間關系?
答:rup的9個規(guī)程為:業(yè)務建模,需求,分析與設計,實現(xiàn),測試,部署,配置與變更管理,項目管理以及環(huán)境。
對于一個大型項目,rup九個規(guī)程的活動不可或缺,但對于有些項目可能不需要經過所有九個規(guī)程,在項目開發(fā)時需要對這些規(guī)程涉及的活動做具體的裁剪,以適應具體項目的開發(fā)需要。
1.10說明面向切面編程的特點,有什么優(yōu)勢?
答:該范型以一種稱為切面的語言構造為基礎,切面是一種新的模塊化機制,用來描述分散在對象、類或函數(shù)中分離出來可以大大增強程序的模塊性。
優(yōu)勢:他把特定領域問題的代碼從業(yè)務邏輯中獨立出來,業(yè)務邏輯的代碼中不再含有針對特定領域問題代碼的調用,業(yè)務邏輯同特定領域問題的關系通過切面來進行封裝,維護。優(yōu)勢:面向切面編程的特點是針對業(yè)務處理過程中的切面提取,所面對的是處理過程中的某個步驟或階段,以獲得邏輯過程中各部分之間低耦合性的隔離效果,降低了耦合性。
1.11模型驅動工程中mda的基本思想是什么?
答:mda的基本思想是系統(tǒng)的功能性是用合適的規(guī)約語言以平臺無關的模型的方式定義,然后為實際的實現(xiàn)翻譯到一個或多個平臺相關的模型上。
chapter2
2.1描述面向對象的基本概念和思想。
一個實體都可以抽象為對象。
2.2面向對象分析設計的基本思路和過程是怎樣的?
答:分析過程主要包括理解、表達和驗證。設計是把分析階段得到的需求轉變成符合成本和質量要求的、抽象的系統(tǒng)實現(xiàn)方案的過程。
過程:識別系統(tǒng)的用例和角色,進行系統(tǒng)分析并抽象出類,設計系統(tǒng)并設計系統(tǒng)中的類及其行為。
2.3面向對象程序設計中的概念主要包括哪些?分別闡述其主要思想。
答:對象:封裝了數(shù)據(jù)和操作這些數(shù)據(jù)的代碼的邏輯實體。
類:具有相同類型的對象的抽象。
封裝:保證軟件部分具有優(yōu)良的模塊性的基礎。
繼承:讓某個類型對象獲得另一個類型的對象特征。
多態(tài):使不同內部結構的對象可以共享相同的外部接口,減少代碼復雜度。
動態(tài)綁定:多態(tài)實現(xiàn)的具體形式,將一個過程調用與相應代碼鏈接起來的行為。消息傳遞:使得對現(xiàn)實世界的描述更容易。
方法:定義一個類可以做的,但不一定去做的事。
2.4描述uml的主要概念和歷史。
答:uml是統(tǒng)一建模語言,用來對軟件密集系統(tǒng)進行可視化建模的一種語言。uml為面向對象開發(fā)系統(tǒng)的產品進行說明、可視化、和編制文檔的一種標準語言。
歷史:rumbaugh和booch將booch93和omt-2統(tǒng)一起來,發(fā)布了um0.8;后經過booch,rumbaugh和jacobson的共同努力,發(fā)布了uml0.9和uml0.91,并將um重命名為uml。,rational組織成立了uml合作者聯(lián)盟,以完善、加強和促進uml的定義工作。啟動了uml2.0標準的制定工作。
2.5rup是什么?應用rup對軟件開發(fā)有什么意義?
答:rup(rationalunifiedprocess)是統(tǒng)一軟件開發(fā)過程,是一個面向對象且基于網絡的程序開發(fā)方法論。
應用rup為軟件開發(fā)提供了一個模版,使得軟件開發(fā)過程規(guī)范化,統(tǒng)一化。
chapter3
3.1為什么要進行業(yè)務建模?業(yè)務建模適用什么場合的軟件項目開發(fā)?
業(yè)務知識而再進行開發(fā)的,所以需要通過“業(yè)務建?!睂ⅰ皹I(yè)務需求”準確地轉換為it技術人員所熟悉的“軟件需求”。
適用場合:規(guī)模較大的軟件項目開發(fā)。
3.2業(yè)務建模可以分哪些工作流進行?
答:評估業(yè)務狀態(tài)、描述當前業(yè)務、定義業(yè)務、探索流程自動化、開發(fā)領域模型。
3.3什么是領域模型?與業(yè)務模型的關系是什么?
答:領域模型:領域模型是描述業(yè)務用例實現(xiàn)的對象模型。它是對業(yè)務角色和業(yè)務實體之間應該如何聯(lián)系和協(xié)作以執(zhí)行業(yè)務的一種抽象。領域模型從業(yè)務角色內部的觀點定義了業(yè)務用例。該模型為產生預期效果確定了業(yè)務人員以及他們處理和使用的對象(“業(yè)務類和對象”)之間應該具有的靜態(tài)和動態(tài)關系。它注重業(yè)務中承擔的角色及其當前職責。這些模型類的對象組合在一起可以執(zhí)行所有的業(yè)務用例。
關系:開發(fā)領域模型是一個備選活動,領域模型是業(yè)務分析模型中獨立的一部分,注重于說明對于業(yè)務領域很重要的概念、產品、可交付成果和事件。這樣一個模型僅描述業(yè)務中的重要信息,并不包括人員承擔的職責。
3.4什么是系統(tǒng)上下文?明確目標系統(tǒng)的上下文有什么意義?
答:系統(tǒng)上下文:指的是目標系統(tǒng)、與之交互的用戶和外部系統(tǒng)。
意義:業(yè)務建模作為軟件需求的前一階段,了解目標系統(tǒng)的上下文是很有必要的,便于確定目標組織和業(yè)務范圍。
3.5什么是業(yè)務涉眾?業(yè)務涉眾可能來自哪些方面?
答:業(yè)務涉眾:所有跟目標業(yè)務有利害關系的人。
方面:可能來自目標組織內部及目標組織外部且跟目標組織有關系的人和組織。
3.6什么是業(yè)務愿景?怎么理解業(yè)務愿景的重要性?
答:業(yè)務愿景:定義業(yè)務建模工作所針對的一組目標。
重要性:要了解組織的業(yè)務過程,對業(yè)務進行建模,首先必須理解組織的共同愿景,業(yè)務建模時期的重要任務就是確定項目涉眾的共同愿景,而了解最有影響力的涉眾的愿望和目標是非常重要的環(huán)節(jié)。所以業(yè)務愿景對整個業(yè)務建模過程來說是十分關鍵和重要的。
3.7業(yè)務建模的作用是什么?哪些人和組織是潛在的業(yè)務執(zhí)行者?
答:作用:
(1)了解目標組織(將要在其中部署系統(tǒng)的組織)的結構和機制;
(2)了解目標組織中當前存在的問題并確定潛在改進的可能性;
(3)確??蛻?、最終用戶、開發(fā)人員和其他各方就目標組織達成共識;
(4)導出支持目標組織所需的系統(tǒng)需求;
(5)了解要部署的軟件系統(tǒng)將如何融入組織。
潛在的業(yè)務執(zhí)行者:客戶、合作伙伴、供應商、權威機構(法律、法規(guī)等制訂機構)、子公司、所有者和投資者、業(yè)務以外的信息系統(tǒng)等。
3.8結構化業(yè)務用例的三種關系是什么?
答:三種關系:包含關系、擴展關系、泛化關系。
3.9業(yè)務用例的包含與擴展關系、包含與泛化的區(qū)別是什么?
答:包含與泛化的區(qū)別:(1)對于用例泛化關系,子用例的執(zhí)行取決于父用例(重用部分)的結構和行為,而在包含關系中,基本用例的執(zhí)行只取決于包含用例(重用部分)所執(zhí)行的功能的結果。(2)在泛化關系中,子用例的用途和結構是相似的,而在包含關系中,重用同一個包含用例的基本用例可能有完全不同的用途,但需求執(zhí)行相同的功能。
包含與擴展的區(qū)別:(1)包含關系:如果基本用例的某個部分代表一個功能,而業(yè)務用例只依賴于本功能的結果,而不是產生結果的方法,那么可以將這部分分離出來,形成一個附加用例。使用包含關系,將附加部分明確包含于基本用例中。包含關系將基本用例和包含用例連接起來。
(2)擴展關系:如果基本用例的一部分是可選的,或對于理解該用例的主要目的來說不是必需的,那么可以將這部分分離出來,形成一個附加用例,以簡化基本用例的結構。利用擴展關系,將附加部分隱含地包含于基本用例中。擴展關系將擴展用例與基本用例連接起來。
3.10業(yè)務分析模型的作用是什么?與業(yè)務用例模型的之間是什么關系?
答:作用:業(yè)務分析模型描述通過與業(yè)務系統(tǒng)、業(yè)務工作者和業(yè)務實體交互來實現(xiàn)業(yè)務用例。它充當了為了執(zhí)行業(yè)務用例而所需業(yè)務系統(tǒng)、業(yè)務工作者和業(yè)務實體之間的相關和協(xié)作方式的抽象。它還定義了在執(zhí)行業(yè)務用例時由業(yè)務執(zhí)行者調用的外部業(yè)務服務。
關系:業(yè)務用例模型是從與客戶和業(yè)務流程對應的業(yè)務執(zhí)行者和業(yè)務用例的角度,對業(yè)務進行描述。業(yè)務用例模型包括工作流程說明,此說明確定完成了那些工作。所以業(yè)務用例模型描述在業(yè)務執(zhí)行者和業(yè)務之間發(fā)生了什么,對于業(yè)務結構或如何實現(xiàn)業(yè)務用例不作任何假設。而業(yè)務分析模型就是用于描述如何執(zhí)行業(yè)務用例,并具體定義業(yè)務提供的服務,內部業(yè)務工作者及其使用的信息,將它們的結構化組織描述為獨立的單元,定義業(yè)務工作者如何通過交戶來實現(xiàn)業(yè)務用例中所描述的行為。
3.11
(c)
2.以醫(yī)院為研究對象,請描述醫(yī)生、病歷的性質分別是()
(a)businessactor、businessworker
(b)businessworker、businessactor
(c)businessactor、businessentity
(d)businessworker、businessentity
3.12綜合案例分析-餐廳點菜業(yè)務分析
某餐廳的點菜服務流程與規(guī)范如下:
1.遞上菜單
(1)客人入座后,服務員詢問客人需要什么茶水。準備好茶水后,按“女士優(yōu)先,先
賓后主”的原則從右邊為客人斟上茶水。
(2)將菜單打開第一頁,按照“女士優(yōu)先”原則,用雙手從客人右側將菜單送至客人手中,然后站在客人斜后方能觀察客人面部表情的地方,上身微躬。
2.推薦介紹酒店菜品
(1)在客人點菜前,服務員應留有時間讓客人翻看菜單。
(2)在客人翻看菜單時,應及時向客人簡單介紹菜單上的菜,回答客人的詢問。
(3)向客人介紹廚師長今日特別推薦的菜品、其他的特色菜、暢銷菜和高檔菜等菜品,并介紹其樣式、味道、溫度和特點。
3.接受點菜
(1)服務員先在點菜單上記下日期、本人姓名及臺號、就餐人數(shù)等。
(2)客人點菜時,應注視客人,聽清客人點的菜名,適時幫助客人選擇菜品和主動推介菜品,準確地記錄菜名。
(3)對于特殊菜品,應介紹其特殊之處,并問清客人所需火候、配料及調料等。
(4)若客人用餐時間較緊,點的菜需時間較長,則應及時向客人征求意見;若有客人點相同的菜式,如湯和羹或兩個酸甜味型的菜時,應有禮貌地問客人是否需要更換菜式。
(5)若客人有特殊要求,應在點菜單上清楚注明,并告知傳菜服務員。
4.復述點菜內容
(1)客人點菜完畢后,服務員應清楚地重復一遍所點菜品內容,并請客人確認。
(2)復述完畢后,在點菜單的右上角寫明當時的時間,以便查詢。
(3)收回菜單并向客人致謝,同時請客人稍等,說明大致的等候時間。
5.分送點菜單
(1)服務員將點菜單的第一聯(lián)送至收銀處。
(2)將點菜單的第二聯(lián)送至廚房。
(3)將第三聯(lián)給客戶,第四聯(lián)交給傳菜員、值臺服務員留底備查。
根據(jù)案例的描述,請你完成下列任務:
1.分析餐廳的點菜業(yè)務,建立點菜業(yè)務模型。
這項業(yè)務的業(yè)務涉眾:外部涉眾:客人,
內部涉眾:服務員,收銀處,廚房,值臺服務員
分析點菜業(yè)務模型:
業(yè)務執(zhí)行者為:客人
業(yè)務用例是:入座,推薦菜品,點菜,確認內容,分送菜單,上菜
2.用活動圖描述客人點菜的活動。
3.分析點菜業(yè)務模型,找出有哪些業(yè)務工作者和業(yè)務實體,并用交互圖來說明之間的通信和交互關系。
業(yè)務工作者為:服務員,收銀處,廚房,值臺服務員
業(yè)務實體為:菜單,點菜單
chapter4
4.1需求的類別有哪些?
答:需求可分為功能性需求和非功能性需求。
功能性需求規(guī)定了系統(tǒng)無需考慮物理約束而必須能夠執(zhí)行的動作,描述支持用戶目標、任務或活動的系統(tǒng)行為(功能或服務)。
非功能性需求是功能性需求之外的需求,包含質量和約束,它們僅僅說明系統(tǒng)或系統(tǒng)環(huán)境的屬性。
4.2怎么理解文中fredbrooks關于需求的那段話?
構建軟件系統(tǒng)最難的部分是確定要構建什么(即系統(tǒng)需求)。相比其他工作,如果這個工作做錯,會嚴重影響將產生的系統(tǒng),也更難在以后矯正。
答:需求工作對于整個軟件系統(tǒng)來說是非常重要的,它是實現(xiàn)和測試的先啟階段,需求建模解釋如何理清涉眾的請求及如何把這些請求轉化為一組需求工作產品,確定要建系統(tǒng)的范圍,提供系統(tǒng)必須做的詳細要求。此階段是后續(xù)工作以及整個系統(tǒng)的基礎和關鍵,一旦這個階段出現(xiàn)問題,將會直接影響到后續(xù)工作的正常順利進行,而如果想要在以后改,代價是非常大的,并且也難糾正。
4.3系統(tǒng)用例模型可以描述什么方面的需求?補充規(guī)約主要補充哪方面的需求?
答:系統(tǒng)用例模型可以描述設計軟件系統(tǒng)方面的`需求,參與者與軟件系統(tǒng)的交互,在系統(tǒng)用例說明中書寫足夠詳細的事件流。
補充歸約主要補充那些無法在用例中記錄的需求。包括:捕捉無用例歸約的功能性需求,捕捉系統(tǒng)資量,捕捉約束,捕捉符合性需求,捕捉文檔需求。
4.4什么是系統(tǒng)執(zhí)行者?如何尋找潛在的系統(tǒng)執(zhí)行者?
答:系統(tǒng)執(zhí)行者:是指與目標系統(tǒng)交換數(shù)據(jù)的任何對象,是在系統(tǒng)之外,透過系統(tǒng)邊界與系統(tǒng)進行有意義交互的任何事物。執(zhí)行者可以是用戶、外部硬件或其它系統(tǒng)。
滿足一個或多個上面這些范疇的任何個人、小組或事物有可能就是執(zhí)行者。
4.5如何理解系統(tǒng)執(zhí)行者與業(yè)務執(zhí)行者、業(yè)務工作者的關系?
答:業(yè)務執(zhí)行者是指某人或某物與業(yè)務進行交互時所擔任的角色,它是指在業(yè)務之外和業(yè)務交互的人、組織或事物。
業(yè)務工作者代表在業(yè)務中進行操作的人、軟件或硬件的抽象。它代表業(yè)務中的一個或一組角色。
系統(tǒng)執(zhí)行者:是指與目標系統(tǒng)交換數(shù)據(jù)的任何對象,是在系統(tǒng)之外,透過系統(tǒng)邊界與系統(tǒng)進行有意義交互的任何事物。執(zhí)行者可以是用戶、外部硬件或其它系統(tǒng)。
關系:系統(tǒng)執(zhí)行者是針對軟件系統(tǒng)來說明的,而業(yè)務執(zhí)行者和業(yè)務工作者是針對業(yè)務來說明的,系統(tǒng)執(zhí)行者和業(yè)務執(zhí)行者含義相似,只是所在的描述范疇不一樣。
4.6請分析用例中的包含關系和擴展關系的相似與區(qū)別?
答:相似:都是如果用例包含的一段行為片段可以用于其他用例,則將這段行為片段歸到“包含用例”或“擴展用例”中,形成一個新的用例,原始用例就成為基本用例,對“包含用例”和“擴展用例”分別有包含關系和擴展關系。
區(qū)別:(1)擴展用例是可選的,而包含用例不是可選的;(2)基本用例沒有擴展用例是可以完成的,但沒有包含用例則不能完成;(3)擴展用例的執(zhí)行是有條件的,而包含用例沒有;(4)擴展用例會改變基本用例的行為,而包含用例不會。
4.7簡單說明把用例組織到包中有什么好處。
答:用例包是用例、執(zhí)行者、關系、圖和其他包的集合,可以通過將用例模型分成更小的部分來結構化用例模型。這樣可以使得具有大量元素的用例模型中的用例結構化,同一包中的用例彼此之間都有某種關系,更加清楚明了,便于以后模型的分析和使用。
4.8用例詳細描述中有哪三種事件流,分別表示什么場景?
答:三種事件流:主事件流、分支事件流和異常事件流。
主事件流:在描述正常過程時列出執(zhí)行者和系統(tǒng)之間相互交互或對話的動作序列。當這種對話結束時,執(zhí)行者也達到了預期的目的。
分支事件流:也可促進成功地完成任務,但它們代表了任務的細節(jié)或用于完成任務的途徑的變化部分。
異常事件流:不符合用例流正?;蚧拘袨?,引起任務不能順利完成。
4.9什么是軟件需求規(guī)約(srs)?
答:軟件需求規(guī)約是分析任務的最終產物,通過建立完整的信息描述、詳細的功能和行為描述、性能需求和設計約束的說明、合適的驗收標準,給出對目標軟件的各種需求。
4.10如何理解界面原型在需求建模中作用?
答:可以處理模糊需求,開發(fā)者和用戶可充分通信,降低開發(fā)風險。
靜態(tài)界面原型:供分析人員與用戶進行進一步交流和溝通,通過這種可視化方法,使雙方逐步就明確系統(tǒng)需求達成共識。
交互式界面原型:便于用戶可以操作,展示實際系統(tǒng)效果。
4.11選擇題
1.如圖4.11-1所示.a1、a2和a3是什么?(單選題)(c)
(a)role
(b)actress
(c)actor
(d)user
2.如圖4.11-1中,下面哪個語句是正確的?(多選題)(bcd)(a)a3可以使用uc4與系統(tǒng)交互。
(b)al可以使用ucl和uc4與系統(tǒng)交互。(c)a3,al與a2不同。
(d)uc3是沒有步驟的抽象用例。
3.如圖4.11-1所示,下面哪個語句是正確的?(多選題)(cd)(a)uc5是uc4的補充部分。(b)uc4是uc5的可選部分。(c)uc1是沒有用的。
(d)uc2是uc4的可選部分。(e)uc4是uc2的補充部分。
4.12綜合案例分析-餐廳智能移動終端無線點菜系統(tǒng)需求
根據(jù)第3章的練習3.11綜合案例分析的業(yè)務描述,來分析點餐系統(tǒng)的需求。
傳送距離可達100米,室外傳送距離可送300米。根據(jù)案例的描述,請你完成下列任務:
1.建立無線點菜系統(tǒng)的用例模型(找出所有的系統(tǒng)actor和usecase);
用例模型
系統(tǒng)actor:服務員、客戶、經理
usecase:點菜服務、自助點菜、統(tǒng)計
2.對用例進行詳細描述,包括前置條件、后置條件,以及各事件流,并用泳道圖畫出用例對應的事件流。前置條件:
服務員有掌上電腦系統(tǒng),廚房與前臺有打印機,在傳輸距離之內后置條件:
打印機打印所點菜單事件流:主事件流:1.顧客點菜;
2.服務員用掌上電腦及菜單;3.廚房和前臺打印機打印菜單分支事件流:無
異常事件流:
步驟2后步驟3未接收,無法打印,返回步驟
2
3).打印菜單用例描述:用例名稱:打印菜單
用例描述:打印點菜內容參與者:打印機前置條件:點菜完成
后置條件:打印機打印菜單給后臺,廚房和前臺主事件流:1.系統(tǒng)發(fā)送點菜單至打印機
2.打印機接收菜單3.打印機打印菜單分支事件流:無異常事件流:無泳道圖:
chapter5
5.1如何理解分析與設計的聯(lián)系?
答:“分析”是指“做什么”,強調對問題的調研而不是如何確定解決方案,重點集中在需求和應用領域上;而“設計”指“怎么做”,強調的是問題的邏輯解決方案,即系統(tǒng)怎樣才能滿足需求,重點轉移了要產生軟件的結構上。但由于分析與設計是把用戶需求轉化為實現(xiàn)的橋梁,分析和設計自始至終可以用相同的技術和類似的表示方法,它們之間的界限很難劃清,且沒有太多意義。
5.2分析設計包括哪些工作流程?
答:分析和設計過程是一個不斷迭代優(yōu)化的過程。
包括:執(zhí)行體系結構合成;定義候選體系結構;優(yōu)化體系結構;分析行為;設計構件;設計數(shù)據(jù)庫;服務識別;服務規(guī)范。
5.3分析建模的元素分哪幾類?具體是什么?答:分析建模的元素分為四大類,分別是:(1)基于場景元素:
這類元素包括:用例文本、用例圖、活動圖和泳道圖等;(2)面向流的元素:
這類元素包括數(shù)據(jù)流圖、控制流圖、處理敘述等;(3)基于類的元素:
這類元素包括類圖、分析包、crc模型、通信圖等;(4)行為的元素:
這類元素包括狀態(tài)圖、順序圖等。
5.4分析模型的靜態(tài)模型的用途是什么?靜態(tài)模型的元素有哪些?
答:用途:通過分析,可以將業(yè)務需求模型和系統(tǒng)需求模型轉化為系統(tǒng)可以處理的對象模型,并給出對象的基本屬性和對象間相互關系。
分析模型中靜態(tài)模型主要的元素是基于類的元素,包括:分析包:模型中的包,表示層次結構。類:模型中的類,由包所擁有。關系:模型中的關系,由包所擁有。
圖:模型中的類圖、協(xié)作(通信)圖,由包所擁有。
5.5動態(tài)模型的類被分為哪三類?分別在系統(tǒng)中承擔什么職責?答:邊界類、控制類和實體類。
邊界類:是用來對系統(tǒng)環(huán)境及其內部工作之間的交互建模的類。這樣的交互涉及轉換和轉移事件,并注釋系統(tǒng)表示中的更改(例如界面)。
控制類:是用于對特定于一個或一些用例的控制行為建模的類。實體類:是用來對必須存儲的信息及關聯(lián)行為建模的類。
5.6按照設計模型的不同層次和功能,設計元素可以分哪些方面?
答:(1)體系結構元素;(2)構件級元素;(3)接口/界面元素:用戶界面、構件接口、系統(tǒng)接口;(4)數(shù)據(jù)元素:數(shù)據(jù)庫設計、數(shù)據(jù)結構設計;(5)部署級元素。
5.7軟件模式有哪三個層次?分別說明之。
答:一般地,軟件模式可劃分為三個層次:體系結構模式,設計模式和代碼模式。
體系結構模式:描述軟件系統(tǒng)里的基本的結構組織或綱要。體系結構模式提供一些事先定義好的子系統(tǒng),指定它們的責任,并給出把它們組織在一起的法則和指南。
設計模型:提供一種提煉子系統(tǒng)或軟件系統(tǒng)中的構件或者兩者之間關系的綱要設計。設計模型描述普遍存在的在相互通訊的構件中重復出現(xiàn)的結構,這種結構解決在一定的背景中的具有一般性的設計問題。
代碼模型:也稱“成例”、實現(xiàn)模式。是較低層次的模式,并與編程語言密切相關。代碼模型描述怎樣利用一個特定的編程語言的特點來實現(xiàn)一個構件的某些特定的方面或關系。
5.8什么是軟件體系結構?簡述軟件體系結構的設計重要性。
答:軟件體系結構:是具有一定形式的結構化元素,即構件的集合,包括處理構件、數(shù)據(jù)構件和連接構件。處理構件負責對數(shù)據(jù)進行加工,數(shù)據(jù)構件是被加工的信息,連接構件把體系結構的不同部分組組合連接起來。這一定義注重區(qū)分處理構件、數(shù)據(jù)構件和連接構件,這一方法在其他的定義和方法中基本上得到保持。
重要性:軟件體系結構設計是高階層的設計,定義了包(子系統(tǒng)),包括包之間的依賴關系和主要的通信機制。自然清晰和簡單的結構是目標,避免幾乎沒有依賴或雙向依賴。
5.9試說明軟件體系結構的演變過程。
答:(1)單機系統(tǒng):是指只需裝在一臺電腦上,同時只能一個用戶使用的系統(tǒng),沒有服務器概念,很多早期的軟件都是單機系統(tǒng),與分布式系統(tǒng)區(qū)別。
(2)客戶機/服務器(兩層)結構:由服務器提供應用(數(shù)據(jù))服務,多臺客戶機進行連接。
(3)瀏覽器/服務器(b/s)結構:在當前internet/intranet領域,“瀏覽器/服務器”結構是非常流行的客戶機/服務器結構。這種結構最大的優(yōu)點是:客戶機統(tǒng)一采用瀏覽器,這不僅讓用戶使用方便,而且使得客戶機不存在安裝維護問題。
(4)三層結構:三層結構的客戶機/服務器模型是一種先進的協(xié)同應用程序開發(fā)模型,不是物理上,而是邏輯上將客戶機/服務器系統(tǒng)中各種各樣的部件劃分為三“層”服務,它們共同組成一個應用程序,這三層服務包括:數(shù)據(jù)訪問層、業(yè)務邏輯層和表示層。
5.10如何理解體系結構風格和模式的本質?
答:體系結構風格:定義了結構組織模式的系統(tǒng)族,用來表達一組協(xié)作的約束,使得對公共約束的特征進行溝通變得更加容易,被用作一種進行抽象的方法,而不是代表一種個性化的設計。
體系結構模式:是對某類問題域給出的一套軟件結構的解決方案,描述了軟件系統(tǒng)基本的結構化組織方案,是處理特定問題的高效、成熟的模板。
5.11什么是軟件框架?與模式的區(qū)別是什么?
答:軟件框架:軟件開發(fā)過程中提取特定領域軟件的共性部分形成的體系結構,不同領域的軟件項目有著不同的框架模型。
區(qū)別:模式提供一種思想方法的指導,應用模式的指導,可以幫助設計人員做出一個優(yōu)良的設計方案,達到事半功倍的效果。但模式不體現(xiàn)為程序,如mvc是一種體系結構的模式,對于同一軟件體系結構,可以通過多種框架來實現(xiàn)。如struts是實現(xiàn)mvc模式的著名框架,但不是唯一的。
5.12rup的4+1視圖分別是什么?答:概括而言,rup的4+1視圖是:(1)邏輯視圖:設計的對象模型。
(2)進程視圖:捕捉設計的并發(fā)和同步特征。
(3)實現(xiàn)視圖:描述了在開發(fā)環(huán)境中軟件的靜態(tài)組織結構。
(4)部署視圖:描述了軟件到硬件的映射,反映了分布式特征。
(5)用例視圖:該視圖是其他視圖的冗余(因此“+1”)。它包含用例和場景。
5.13什么是設計模式?
答:設計模式:是一套被反復使用、多數(shù)人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。毫無疑問,設計模式于己于他人于系統(tǒng)都是多贏的,設計模式使代碼編制真正工程化,設計模式是軟件工程的基石,如同大廈的一塊塊磚石一樣。
5.14簡要說明類的詳細設計分哪幾步來實現(xiàn)?
答:(1)使用設計模式和機制:使用適合設計的類或功能、符合項目設計指南的設計模式和機制。
(2)創(chuàng)建初始設計類:為指定為此任務輸入的分析類創(chuàng)建一個或多個初始設計類,并指定跟蹤依賴關系。包括設計邊界類、設計實體類和設計控制類。
(3)定義屬性:類的屬性為類實例提供信息存儲,并經常用于代表類實例的狀態(tài)。類本身保持的任何信息都是通過其屬性完成的。
(4)確定持久類:需要在永久介質上存儲其狀態(tài)的類被稱為持久類。
(5)定義操作:類的操作是類的行為特征或動態(tài)特征,表示類提供的服務。(6)定義方法:方法制定操作的實現(xiàn)。
(7)定義狀態(tài):對于一些操作,操作的行為取決于接受者對象所處的狀態(tài)。
5.15什么是實體類與持久類?說說兩者之間區(qū)別與聯(lián)系。
答:實體類:在分析期間,代表被操縱的信息單元。它們往往是被動的、持久的,并且可能被確定并與持久性分析機制相關聯(lián)。
持久類:需要在永久介質上存儲其狀態(tài)的類。
區(qū)別和聯(lián)系:持久類是針對于hibernate對數(shù)據(jù)庫的映射來說的,持久類=實體類+xml或注解配置;而實體類就是一個javabean類,有屬性,get、set方法,以及一些簡單處理的方法。
5.16開發(fā)物理數(shù)據(jù)庫設計的詳細步驟有哪些?
答:(1)定義域;(2)創(chuàng)建初始物理數(shù)據(jù)庫設計元素;(3)定義引用表;(4)創(chuàng)建主鍵和唯一性約束;(5)定義數(shù)據(jù)和參照完整性實現(xiàn)規(guī)則;(6)將數(shù)據(jù)庫設計反向規(guī)范化來為性能進行優(yōu)化;(7)優(yōu)化數(shù)據(jù)訪問;(8)定義存儲器特征;(9)設計存儲過程來將類行為分發(fā)給數(shù)據(jù)庫。
5.17進行界面設計時分析用戶的特征有什么作用?
要。
與系統(tǒng)分析人員協(xié)作,確定是否需要對用戶(主要的執(zhí)行者)描述做出更改,來反映特征描述。
5.18選擇題
(c)interfaceprojectscope
5.19綜合案例分析-餐廳pda無線點菜系統(tǒng)分析與設計
根據(jù)第4章餐廳pda無線點菜系統(tǒng)的需求,請分析設計相關系統(tǒng)。包括1.找出主要的概念實體,畫出實體類圖。
答:1.主要的概念實體:客人,點菜單,點菜記錄,打印機,服務員,菜品分類
實體類圖:
2.
3.實體類操作:1)客人:輸入已點菜品
2)點菜記錄:記錄已點菜品();確認點菜記錄();發(fā)送點菜記錄()3)打印機:打印點菜記錄()
類圖:
4.界面:
5.數(shù)據(jù)庫表結構:
.01.05
學習軟件工程的心得體會篇五
這門課的作用就是,在你真正見過豬以前,先教你怎么吃豬肉,怎么騎著豬跑。
軟件工程導論所講述的內容,其實并沒有很多人想象中的那么重要。就像是一本教你如何游泳的書。確實是一種非常重要的技能,但實際上你如果不看書,在水里撲騰幾天也就會了,只是姿勢不那么標準,游不了那么快。學會游泳非常重要,但其實并不是說你要學會這本書有多么重要。
他的內容大部分都是一些總結出來的經驗和方法。如果沒有真正的試驗過,很難有切身的體會。比如說你如果沒經歷過整天用zip壓縮當天代碼保存的工作,就不會知道版本控制有多么重要。還有那些設計模式。比如singleton,你也許會說,用個全局變量,只生成一個對象不就可以了。自己寫小項目固然可以,但軟件工程作為一種“工程”,是很難一個人包攬全部工作的。你要多項目之間配合,要多人維護同一部分代碼。你要有一種確定的手段,來保證你這個類只有一個對象。所以把它提煉出來,總結成一種模式。
至于學習上,除了完成規(guī)定的學習目標外。我認為學過這門課,至少應該了解一個項目中會有哪些分工,大概是如何運行的。各種設計模式的話,了解一下就可以了。只要你以后在工作中,能記起來有這么個東西,這種情況下,某種模式可能比較合適,具體細節(jié)到時候再查就行了。
這門課自己也說,是門導論而已。介紹一下你以后可能遇到的坑,以后再遇到那個填那個好了。
學習軟件工程的心得體會篇六
在前不久的幾周里,剛剛結束了“軟件工程導論”課程的學習。這門課程帶給了我很大的啟發(fā),讓我對軟件工程這一新興學科有了全面的,深刻的認識。盧葦老師精彩的講演,同學們積極地提問與回答,都帶給了我深刻的認識。下面是我在學完該課程后的一些啟發(fā)。
一、我對軟件行業(yè)的認識
眾所周知,計算機已經是現(xiàn)代人生活的必需品。無論是工作、學習、生活、娛樂,我們的生活每時每刻都能見到它的蹤影。大到航天飛機的研制,原子彈、氫彈的引爆,笑道一個小小的電子表,都需要會軟件會變成的人來研制它,讓其工作。所以,伴隨著計算機而生的的潛在市場是十分巨大的,無數(shù)因此成功的公司便是印證,無論是喬布斯的“蘋果”,還是比爾蓋茨的微軟,亦或是馬克·扎克伯克的facebook,都獲得了世人的肯定。他們的成功被人稱道,但是不可否認的是他們的成功是建立在如此巨大的市場空間上的。所以,首先軟件行業(yè)有著充足的市場。
其次是我國的軟件力量。我們國家面臨著一個良好的社會的環(huán)境,社會安定,政府穩(wěn)定,特別是當前經濟發(fā)展迅速,法制建設不斷完善,高新技術領域突飛猛進。但是由于法律制度不完善,并且從業(yè)人員普遍創(chuàng)新的意識不夠完善等等多方面的因素,我國的市場并非特別樂觀。我們都能清晰地看到許許多多成功的企業(yè)都未做到完全的創(chuàng)新,如“淘寶網”便是借鑒“亞馬遜”網站,而“人人網”也與facebook有極大的相似度,而騰訊更是眾所周知的山寨之王。但是換個角度看看,這正說明,我國的軟件具有極大地潛力,在未來的幾年,幾十年之間,我國的軟件行業(yè)必會重新洗牌,涌現(xiàn)出強大的軟件企業(yè),而我們,也一定有機會實現(xiàn)自己的軟件夢。
第三是我國軟件行業(yè)的人員構成。我國的軟件行業(yè)目前主要還是中低素質人員構成。打不風程序員,他們沒有系統(tǒng)的、完整的學習整個軟件工程的知識,僅僅靠自學或者短期學習,掌握到部分的、片面的知識就已經進入從業(yè)階段,這樣的學業(yè)使他們不能夠勝任自己的工作。而高端的軟件從業(yè)人員相比較而言是相對稀少的,所以我國的軟件行業(yè)并未真正崛起。我們急需那樣的高端人才,而這些人才,便是現(xiàn)在我們學院所努力培養(yǎng)的。
二、我對我們學院軟件工程專業(yè)的認識
it行業(yè)是隨著電子信息產業(yè)的發(fā)展而逐步發(fā)展起來的,并且日益得到完善。it行業(yè)的平穩(wěn)增長必然會帶來軟件工程師需求的增長,目前隨著it產品出現(xiàn)的技術融合,市場需求的巨大和專業(yè)人才的缺乏,由此可知,軟件行業(yè)還是比較樂觀的。但軟件行業(yè)需要的也是復合型人才,軟件工程師需要掌握更多的編程語言。
北京交通大學軟件學院是經教育部批準的國家示范性軟件學院。學院成立于2月,是為適應我國經濟結構戰(zhàn)略性調整的要求和軟件產業(yè)發(fā)展對人才的迫切需求,實現(xiàn)我國軟件人才培養(yǎng)的跨越式發(fā)展而建立的。學院充分發(fā)揮學校的計算機學科優(yōu)勢和it企業(yè)資源綜合優(yōu)勢,利用已有的辦學與市場資源,與國內外著名的it企業(yè)開展合作,在管理體制、運行機制、教育思想與理念、人才培養(yǎng)方案與課程體系、教學模式與方法、產學研合作等領域大膽創(chuàng)新,已探索出一條有效地培養(yǎng)“國際化、工業(yè)化、高層次、復合型”軟件人才的辦學之路。
作為教育部批準的全國36所示范性軟件學院和學校教育體制改革與辦學機制創(chuàng)新的試驗田,北交大軟件學院承載著學校的殷切期望。作為國家重要的軟件人才培養(yǎng)基地,在管理體制、運行機制、教育思想與理念、人才培養(yǎng)方案與課程體系、教學模式與方法、產學研合作等領域大膽創(chuàng)新,探索出一條有效地培養(yǎng)“國際化、工業(yè)化、高層次”軟件人才的辦學之路,推出了“2+1+1”人才培養(yǎng)模式。作為一名北京交通大學軟件學院的靴子,我感到十分自豪。
三、我未來的職業(yè)規(guī)劃
在學習完院長的導論課后,我對自己的直接規(guī)劃產生了很深的想法并且做出了很大的改變。首先,我一定要努力完成大學的學業(yè)。在大學一年級,我要認真地完成專業(yè)課程,努力學好c語言和java的課程,同時擴大自己的知識面,多多學習一些有關軟件方面的知識,不斷地充實自己。
在大學
二、三年級,我要注重學習java基礎知識、多學習項目開發(fā)經驗,了解項目開發(fā)業(yè)務知識,并在學習中掌握db2數(shù)據(jù)庫的sql語句的復雜查詢以及管理操作,并深入學習了解struts、hibernate、spring相關操作。同時在大三結束之前,我要至少了解并熟悉2門編程語言,、c++、php;并學習掌握noracle、ms-sql數(shù)據(jù)庫管理操作;掌握軟件開發(fā)各個階段的基本技能,如市場分析,可行性分析,需求分析,結構設計,詳細設計,軟件測試等。如果有時間的話,還要學習管理方面的相關知識,由技術型向管理型方面的轉移。我要多多鍛煉自己的能力,不論待人接物,還是進行演練,都要積極參見,努力爭取較大的提升。
在大學四年級,學校會安排比較多的實習,到那時候,就要好好工作,發(fā)揮自己前三年學到的知識,努力完成自己的畢業(yè)實習,最后,優(yōu)秀地完成自己的大學學業(yè)。如果能夠,我將選擇繼續(xù)深造,可以通過保研,考研等等許多途徑,努力獲得研究生的資格。同時,就業(yè)也是一個不錯的選擇,但是不論考研還是工作,我都要一如既往地補充自己,不斷提高自己的專業(yè)水平。在工作時,我會優(yōu)先選擇私人的,創(chuàng)意性比較強的公司,從中積累經驗,并且努力奮斗,成為復合型人才,我便可憑此進入大公司或者幫助自己的公司變得更加強大和成功,最后成為it行業(yè)中優(yōu)秀的一員。
四、總結
盧葦教授的“軟件工程導論”真的讓我獲益良多,對于軟件工程專業(yè)有了深刻的了解,對自己以后的道路的安排也有了深刻的認識。上課的日子總是很快,不知不覺中遍結了課,我感到如夢初醒,因為我們才敲開軟件知識的大門。路漫漫其修遠兮,吾將上下而求索。不經歷風雨怎能見彩虹。我要時刻保持一顆清醒的頭腦,隨時為自己的目標而奮斗。其實,每個人心中都有一幅畫,描述著理想、信念、追求、抱負;每個人心中都有一片森林,承載著鳥語花香的甜蜜、陰森恐懼的彷徨。一個人,若要獲得成功,必須拿出勇氣,付出努力、拼搏、奮斗、成功。機遇不同情眼淚的憂傷、不相信頹廢的絕望,只期待愛打拼、時刻準備著的人。
學習軟件工程的心得體會篇七
軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,它包括程序、相關數(shù)據(jù)及其說明文檔。軟件工程(softwareengineering,簡稱為se)是針對軟件這一具有特殊性質的產品的工程化方法。se涵蓋了軟件生命周期的所有階段,并提供了一整套工程化的方法,來指導軟件人員的工作。任何事物都是從無到有的,軟件當然也不例外。上世紀中期,軟件產業(yè)從零開始起步,經過半個多世紀的發(fā)展,其大致經歷的3個階段:程序設計階段、軟件設計階段和軟件工程時代,現(xiàn)已成為推動人類社會發(fā)展的龍頭產業(yè),隨著信息化時代的發(fā)展,軟件對人類社會也將越看來越重要。人們對軟件的認識自然經歷了一個由淺入深的過程,在得到巨大需求的同時,也遇到了一系列嚴重問題,即軟件危機。所謂軟件危機,是指在計算機軟件的開發(fā)和維護過程中所遇到的一些嚴重問題,其實質是軟件產品的供應趕不上需求的增長。概括的說包含兩方面的問題:一、如何開發(fā)軟件,以滿足不斷增長,日趨復雜的要求;二、如何維護數(shù)量不斷膨脹的軟件產品。為研究和解決軟件危機,一門新興的學科軟件工程,應運而生。
軟件工程的概念是為了有效地控制軟件危機的發(fā)生而被提出來的,它的中心目標就是把軟件作為一種物理的工業(yè)產品來開發(fā),要求“采用工程化的原理與方法對軟件進行計劃、開發(fā)和維護”,它的主要對象是大型軟件,它的最終目的是擺脫手工生產軟件的現(xiàn)狀,逐步實現(xiàn)軟件開發(fā)和維護的自動化。軟件工程的概念自提出來后,經過幾十年的發(fā)展,雖然軟件危機沒有得到徹底的解決,但在軟件開發(fā)方法和技術方面已經有了很大的進步,提出了軟件工程知識體系、軟件工程三段論、軟件工程生存期模型、服用原則等等。
軟件開發(fā)過程大致經過7個階段:可行性分析、需求分析、概要設計、詳細設計、編碼、測試、提交與維護。接下來逐一分析本人見解:
一、可行性分析:顧名思義,就是看項目究竟“能不能做”。有3個方面:技術可行性、經濟可行性和操作可行性。要確定項目,首先要客觀的、科學的了解項目的規(guī)模、難度和時間限制,才可以確定應該投入多少人力、物力和財力去做這個項目,必須準確的估計項目的規(guī)模與難度??错椖渴欠裼袃r值去做,如果沒有價值,就放棄;如果有價值,就要看目前的資源是否能滿足項目的開發(fā)。如果項目有價值,且有必需的資源,那么就可以確定能做這個項目了。
2、通過什么方式去了解:直接與客戶交談;有些需求客戶講不清楚,分析人員又猜不透,這是就要請教行家。需求分析是非常重要的階段,如果做不好的話,后果很麻煩。
三、概要設計:解決“怎么做”的問題。將需求描述的“做什么”問題變?yōu)橐粋€實施方案的創(chuàng)造性過程,使得整個項目在邏輯上和物理上能夠得意實現(xiàn)。概要設計是第一個開發(fā)活動,也是最重要的活動,是軟件項目實現(xiàn)的關鍵階段。設計質量的高低直接決定了軟件項目的成敗,缺乏或者沒有軟件設計的過程會產生一個不穩(wěn)定的、甚至是失敗的軟件系統(tǒng)。一個良好的軟件設計是進行快速軟件開發(fā)的根本,沒有良好的設計,會將時間花在不斷的調試上,無法添加新功能,修改時間越來越長,隨著給程序打上一個有一個的補丁,新的功能需要更多的代碼實現(xiàn),就變成一個惡性循環(huán)了。概要設計是軟件設計級別中的高級設計,是從需求出發(fā),描述了總體上系統(tǒng)架構應該包含的要素。概要設計盡可能模塊化,因此描述了各個模塊之間的關聯(lián),主要是根據(jù)需求規(guī)格或規(guī)格定義,合理、有效地實現(xiàn)產品規(guī)格中定義的各項需求,完成軟件模塊的劃分并描述模塊之間的關系,并不斷分解系統(tǒng)模塊,從高層分解到低層分解。它注重框架設計、總體結構設計、數(shù)據(jù)庫設計、接口設計、網絡環(huán)境設計等,將產品分割成一些可以獨立設計和實現(xiàn)的部分并保證各個部分可以和諧的工作。此過程中畫數(shù)據(jù)流圖、ipo圖、e-r圖、界面設計等。
出程序的詳細規(guī)格說明,這種規(guī)格說明類似于其他工程領域中工程師經常使用的工程藍圖,程序員根據(jù)其中所包含的必要的細節(jié)寫出實際的程序代碼。用另一種方式說就是,詳細設計是將概要設計的框架內容具體化、明細化,將概要設計轉化為可以操作的軟件模型,但在實際項目進行過程中,依據(jù)項目的具體情況和項目要求,這個過程可能可以省略(邏輯上沒有省略,表現(xiàn)在概要設計階段或者編碼階段),直接按照概要設計進行編碼;不過,個人認為最好有,有詳細設計可以更好的保證編碼順利的進行,可以預先掃清編碼過程中的障礙,提高代碼的質量和編碼的效率。主要包括模塊描述、算法描述、數(shù)據(jù)描述,可以采用圖形、表格或者文字描述等方式表達出來。
代碼的時候,更不要錯過重構,另外,重構可以和設計互補。還有一點值得注意,要在必要的時候部署編碼文檔。
六、測試:看軟件是否符合標準。軟件編碼完成之后,將軟件提交給用戶之前,需要對軟件進行測試,這是保證軟件產品質量的一個重要標準,也是評估產品質量的主要手段。軟件測試是從軟件工程中演化出來的一個分支,有著非常廣泛的內容,并且隨著軟件產業(yè)的發(fā)展,它已經變得越來越重要。軟件與生俱來就可能存在缺陷,為了防止和減少這些可能存在的缺陷,進行軟件測試是有必要的,測試是最有效的的排錯和防止缺陷和故障的手段。最原始的測試莫過于直接運行軟件了,后來測試手段逐漸多樣化。測試手段有靜態(tài)測試、動態(tài)測試面向對象的測試、自動化測試等等之分。靜態(tài)測試或稱靜態(tài)分析是指一種不通過執(zhí)行程序來進行測試的一種技術,主要是檢查軟件的表示和描述是否一致,覆蓋程序的編碼格式、程序語法、檢查獨立語句的結構和使用等,主要包括代碼檢查、靜態(tài)結構分析、代碼質量等等,可以通過人工進行,亦可借助工具(如:語法分析器)自動進行。動態(tài)測試是運行被測試的程序,通過輸入測試用例,對其運行情況進行分析,以達到檢測的目的,顯然動態(tài)測試封像我們通常意義上的“測試”。動態(tài)測試主要包括白盒測試、黑盒測試、灰盒測試(介于黑盒和白盒之間)。其他測試不再一一介紹。
打水漂了。為了保證成功地將我們開發(fā)的軟件提交給用戶,我們需要對用戶進行培訓,同時提交必要的文檔及用戶手冊軟件。維護就不用多說了,就是售后服務了。維護需要分析人員、編碼人員和設計人員等角色的參與,有糾錯行維護、適應性維護、完善性維護、預防性維護等。維護后,要寫軟件維護過程文檔,至少提交一個軟件維護記錄。以上是軟件工程及其幾個階段的介紹,知道怎樣開發(fā)軟件只是軟件工程的一部分,搞好團隊合作也是很重要的。項目是一個很大的工程,需要一個團隊的統(tǒng)籌規(guī)劃,團結協(xié)作,集思廣益,舉一反三,才能夠按預期完成。
學習軟件工程的心得體會篇八
我們沒有進行過系統(tǒng)化軟件設計的教育和學習,對如何進行軟件的開發(fā)基本上就是想什么寫什么。根本沒有過系統(tǒng)化的設計。比如需求分析,可行性研究等。更不知道用什么模型來設計軟件。這在我們以后的工作中是完全不行的,沒有系統(tǒng)化的設計,是不可能滿足客戶的需求的。
胡老師讓我們分組進行軟件互換的形式來進行軟件的修改。其實胡老師就是想讓我們了解以后工作中,軟件是如何設計的和制作的。對于以前的編程,我們只能按照自己的想法,想一步做一步。根本沒有系統(tǒng)化的設計。通過對軟件工程導論這門課程的學習,一遍學習一遍實驗,實踐與理論相結合。開始其實我根本不理解各種圖的作用,覺得它們根本沒有用,就是照貓畫虎,沒有任何的實際意義。但是通過后面的學習和理解,對他們有了獨特的理解和想法。比如對uml來說。它是一種標準化交流的語言,它可以讓開發(fā)人員與客戶之間輕松的交流。用圖的形式向客戶展示軟件設計的流程,從中傳遞信息。簡單的說就是客戶和設計人員交流的手段。
這學習,不管是實驗小組的實驗還是老師您要求的程序,基本都是我一個人做的,所以對各種圖還是比較了解和掌握的。雖然對實驗報告的制作感覺到十分的吃力,工作量很大,但是還是通過幾個晚上的專心學習和制作,最后還是完成了。但是好多圖畫的還是很有問題,沒有真正的完全理解和掌握。但是在后面的學習和復習中,有了更正。
下面我對實驗進行一下總結。首先是實驗一結構化分析和設計,主要理解dfd圖,數(shù)據(jù)字典,erd圖和問題描述進行設計和學習。dfd圖主要分為三個方面,數(shù)據(jù)的源點,數(shù)據(jù)流和數(shù)據(jù)存儲。它將信息流和數(shù)據(jù)從輸入移動到輸出的工程中所經受的變化。簡單的說就是主體,動作和數(shù)據(jù)單元的問題。接下來是數(shù)據(jù)字典,主要進行軟件操作單元的數(shù)據(jù)定義,格式化和功能說明。然后就是erd圖,根據(jù)短信系統(tǒng)的問題描述,可得到軟件實體,從而得到此圖。其次是實驗二和三面向對象分析和設計。主要進行用例圖,場景描述,初始化類圖,協(xié)作圖的制作。先是從需求到業(yè)務用例圖,根據(jù)客戶需求(也就是我們軟件的需求)畫出用例圖。它的作用其實就是描述該實現(xiàn)什么業(yè)務或者說是功能。接下來就是場景描述,簡單來說就是軟件實際的操作的某個步驟的具體說明。跟著就是初始化類圖,重要作用就是顯示系統(tǒng)有哪些實體,實體的具體操作,實體間的關系。然后就是協(xié)作圖,主要作用是針對某個軟件的功能,進行交互過程的解釋,簡單來說就是具體業(yè)務的具體操作,而且是所有涉及到的操作。動態(tài)模型和靜態(tài)模型的建立,在面向對象的系統(tǒng)中,業(yè)務流程表現(xiàn)在為對象之間的交互,對動態(tài)模型和靜態(tài)模型分析和總結,從而產生順序圖。面向對象設計就是對實體類進行定義和說明,所有的類都是跟軟件里的類相對應。就是真正的類。最后就是實驗三編碼和測試,實驗主要對測試和編碼進行總結。從中總結制作過程和測試過程。
實驗對我來說可能很辛苦,但是我從中學到了很多。了解了很多圖的作用,也了解了以后工作的具體流程,這對我們以后的實際工作提供很多幫助。對我來說辛苦著收獲著快樂著。跟您的交流中也學到了很多知識??傊液軡M足。
學習軟件工程的心得體會篇九
按照軟件工程的軟件過程來說:
1需求分析產生了軟件功能規(guī)格說明書,需要確定用戶對軟件的需求,要作到明確、無歧義。不涉及具體實現(xiàn)方法。用戶能看得明白,開發(fā)人員也可據(jù)此進行下面的工作(概要設計)。
2.概要設計產生了軟件概要設計說明書,說明系統(tǒng)模塊劃分、選擇的技術路線等,整體說明軟件的實現(xiàn)思路。并且需要指出關鍵技術難點等。
在進行需求分析時,我們既是開發(fā)者又是用戶,本系統(tǒng)的業(yè)務流程與業(yè)務分類的定義比較難。我們的團隊進行了研討,還充分運用了身邊的各種資源,大量的查找了很多網絡上關于工資系統(tǒng)的資料。通過資料的進行討論、根據(jù)我們的課題進行分析,最后確定了用戶的需求為:
1.本系統(tǒng)在高校應用后高校工資管理方面的教職工將減少至目前的50%左右;
2.本系統(tǒng)在高校應用后將在高校各方面的成本將會有所降低;
3.本系統(tǒng)在高校應用后將教職工的工資達到完全透明,計算更加精確教職工因糾紛事件減少到1%。 根據(jù)分析將系統(tǒng)的功能從一般教職工與系統(tǒng)管理者兩個角度將功能劃分為7個模塊,當然介于我們的知識有限,有的功能沒有實現(xiàn):員工工資與考勤直接掛鉤,但本系統(tǒng)無法與員工考勤系統(tǒng)掛鉤相連,由于涉及此系統(tǒng)時該高校并沒有員工考勤系統(tǒng),而且我們在最初進行商量的時候也沒有提出該要求。
從概要階段開發(fā)正式進入軟件的實際開發(fā)階段,本階段完成系統(tǒng)的大致設計并明確系統(tǒng)的數(shù)據(jù)結構與軟件結構。在軟件設計階段主要是把一個軟件需求轉化為軟件表示的過程,這種表示只是描繪出軟件的總的概貌。由概要設計說產生大的概要說明書的目的就是進一步細化軟件設計階段得出的軟件總體概貌,把它加工成在程序細節(jié)上非常接近于源程序的軟件表示。
在本階段主要涉及處理流程的設計、總體結構和模塊外部設計、功能分配。在接口設計上有用戶接口、外部接口、內部接口;數(shù)據(jù)結構設計有邏輯結構設計、物理結構設計等等。在接口設計時參考了大量的資料。
最后就是編寫文檔——軟件需求說明書、概要分析說明書。
而文檔的作用在于:一是可以幫助整理思路。把要完成的目標,系統(tǒng)的結構,每一個模塊的功能等整理一下,然后分門別類地寫下來,這樣在開發(fā)的過程中,就有據(jù)可依,在需要回過頭來修改設計的時候,也有證可考。二是便于交流。三是可以作為以后維護時的參考資料。
我們進行了為期一周的課程設計。通過這次課程設計,我拓寬了知識面,鍛煉了能力,綜合素質得到較大提高。安排課程設計的基本目的,在于通過理論與實際的結合、人與人的溝通,進一步提高思想覺悟。尤其是觀察、分析和解決問題的實際工作能力,以便培養(yǎng)成為能夠主動適應社會主義現(xiàn)代化建設需要的高素質的復合型人才。作為整個學習體系的有機組成部分,課程設計雖然安排在一周進行,但并不具有絕對獨立的意義。它的一個重要功能,在于運用學習成果,檢驗學習成果。運用學習成果,把課堂上學到的系統(tǒng)化的理論知識,嘗試性地應用于實際設計工作,并從理論的高度對設計工作的現(xiàn)代化提出一些有針對性的建議和設想。檢驗學習成果,看一看課堂學習與實際工作到底有多大距離,并通過綜合分析,找出學習中存在的不足,以便為完善學習計劃,改變學習內容與方法提供實踐依據(jù)。對我們信息管理與信息系統(tǒng)專業(yè)的學生來說,實際能力的培養(yǎng)至關重要,而這種實際能力的培養(yǎng)單靠課堂教學是遠遠不夠的,必須從課堂走向實踐。這也是一次預演和準備畢業(yè)設計工作。通過課程設計,讓我們找出自身狀況與實際需要的差距,并在以后的學習期間及時補充相關知識,為求職與正式工作做好充分的知識、能力準備,從而縮短從校園走向社會的心理轉型期。課程設計促進了我系人才培養(yǎng)計劃的完善和課程設置的調整。
在一個星期的課程設計之后,我們普遍感到不僅實際動手能力有所提高,更重要的是通過對軟件開發(fā)流程的了解,進一步激發(fā)了我們對專業(yè)知識的興趣,并能夠結合實際存在的問題在專業(yè)領域內進行更深入的學習。
軟件工程課程雖已結束,但我對于軟件工程的學習才剛剛開始。我體會到項目管理的重要性,隨著軟件規(guī)模、復雜度的不斷增加,項目開發(fā)中更多的是協(xié)作、管理和控制。我學習到很多一般性的方法,例如:需求獲取、模塊化、計劃等等。同時,我也認識到使用計算機解決實際問題的復雜性,人們認識表達的過程不斷反復、逐步深化,軟件工程方法要提供給程序員們一種更加有效的對客觀世界問題域進行形式化的過程方法。
學習軟件工程的心得體會篇十
軟件工程心得體會未接觸軟件工程之前一直都很想學這門課程,因為覺得這門課很牛,是那些有工程師稱號的高手才擺弄的東西。學了一個學期的軟件工程課,終于知道了個軟件工程的大概。學的時候總覺得很抽象,理解起來好像不難,但總是摸不著頭腦一種很茫然的感覺。曾經以為程序就是軟件,軟件就是程序。學習這門課程第一個收獲是,知道了二者的不同之處。以前做過的一些小型的軟件比如加密軟件,我也只是在程序旁邊附上一個軟件的說明,看來已經很接近作坊了。不過大的項目沒有接觸過,用軟件工程的方法還是第一次。我想也是程序的不斷復雜化導致了軟件危機的發(fā)生,使得人們不得不探索新的解決方法。
經過倪老師的講解,理解了軟件工程,就是一套用于軟件的團隊開發(fā),以提高軟件質量和程序員工作效率為目的的規(guī)范。其核心就是,對于軟件開發(fā)的5個重要組成部分:需求分析,設計,編碼,調試,維護,如何組織這5個部分的工作,以及如何完成每一個工作。吾生也有涯,而知也無涯,學習永無止境。起初,對軟件工程處于一知半解的狀態(tài),分工比較混亂。
在劃分模塊后明確了各自分工,漸漸形成良性循環(huán)。在學習過程中,知道了團隊合作十分重要,爭議固然存在,但通過討論、協(xié)商,群策群力,在不斷磨合中能夠達成一致與默契。團隊成員中能力各有高下,互相尊重,各取所長,不宜妄自菲薄。組長多加協(xié)調,組員積極配合,才能合作愉快。學習能力體現(xiàn)在能盡快接受新的知識,順應變化,學為所用。
上《軟件工程導論》這門課,我的收獲大概如下:我們?yōu)槭裁葱枰浖こ棠?上面已經給出了一些原因。專業(yè)點講,軟件工程最終是為了實現(xiàn)“軟件制造業(yè)”的社會化,工業(yè)化大生產,提高其勞動生產效率。只有如此,軟件業(yè)才能實現(xiàn)社會化,工業(yè)化大生產,才能“做大做強”。沒有管理的設計是失敗和混亂的設計,沒有設計指導的編程是無序的忙碌的。根據(jù)開發(fā)的軟件的規(guī)模,應該適當程度的運用軟件工程化的思想,需要靈活,畢竟我們開發(fā)的軟件大多數(shù)是中小型的,大型的并不多見(我是這么認為的)。但只要涉及人員間的交流和溝通,或多或少都要需要軟件工程才能更有效率,工作成果更穩(wěn)定。
其實開發(fā)軟件,就像是解決一個邏輯問題。想想自己平時是怎樣寫程序的。首先是要有一個想法,即我寫的這個程序是要干什么的;然后就是對要實現(xiàn)的核心功能大概構思一種或多種實現(xiàn)方法,并從中選出一種自認為是較好的;接下來就是將涉及的各種主要或次要功能分成各個模塊;最后就是分模塊來編碼和debug。在我看來,除了第一步外,其余的步驟應該是一個循環(huán)的過程。在編碼的過程中,你總是需要不斷地回過頭來修改原先的模塊設計,甚至最初選定的實現(xiàn)算法。具體到每一步的工作要怎樣完成,是非常靈活的,只要把握住大體的方向就行。在進行分析,設計,編碼,調試,維護這幾部分的工作的時候,最核心的就是文檔的編寫。
1.可行性分析就是關于當前項目能不能干的分析結果。
2.項目描述這是在決定立項以后,對當前項目的一份扼要說明。
3.需求分析就是對客戶要求的功能的定義。
4.軟件設計這就是對程序的每一個模塊的詳細設計的說明文檔。
5.開發(fā)日志我一直都認為這是文檔中最有趣的部分。開發(fā)日志相當于編碼階段的文檔,它的形式可以很隨意,主要是記錄一些在寫程序時突然萌發(fā)的靈感,或對代碼的一些微小的修改,或對程序結構的一些微小變動等,還要對上述這些修改變動作些說明。
6.測試分析用于指出程序存在或潛在的缺陷和錯誤,以及程序性能的數(shù)字描述。
學習軟件工程的心得體會篇十一
軟件工程及未來發(fā)展趨勢心得體會軟件工程是一門研究用工程方法構建和維護有效的、實用的和高質量的軟件的學科。它的成果是為軟件設計和開發(fā)人員提供思想方法和工具。
商業(yè)形態(tài)從最開始的硬件輔助到代碼核心競爭力到后來的服務階段。30多年來,隨著軟件工程的研究和實踐取得了跨越性的進步,it和制造業(yè)以及各種行業(yè)的結合,進入軟件定義時代的階段。同時獲得了一些具有里程碑意義的進展,盡管目前離徹底解決“軟件危機”還有一些差距,但軟件工程的方法對軟件產業(yè)的發(fā)展還是起到了很大的推動作用。軟件產業(yè)也邁入了高質量發(fā)展的階段,并且有一定的成績。
20xx年中國軟件產業(yè)年會的召開以“軟件定義的時代-數(shù)字、融合與生態(tài)”為主題,中國工程院院士孫家廣在主旨演講中表示,“軟件是信息技術之魂,經濟轉型之擎、網絡安全之盾、數(shù)字社會之基、大國博弈之焦、高質量發(fā)展的抓手,軟件賦能、賦值、賦智作用日益明顯?!彼硎?,軟件開源是我國成為軟件強國的根本舉措和保障。中國工程院院士廖湘科也在報告中提出,工業(yè)軟件要向建設信息技術和先進制造技術深度融合、控制管理整個生產模式的基礎軟件平臺發(fā)展。在真實世界感知的數(shù)據(jù)進入到虛擬世界,進行關聯(lián)和跨域關聯(lián)的分析,在進行智能處理之后,再反饋到真實世界。運行平臺基于云端的硬件結構,在未來設計軟件的過程中,我們要考慮的是不再針對一臺服務器設計軟件,在設計的時候需要考慮云端,在這樣的前提下去設計軟件??偟膩碚f,整個軟件體系就是一個生態(tài)鏈,市場通過軟件平臺來控制,所有的技術和商業(yè)模式的競爭都堆積在it軟件平臺,各個行業(yè)的it從業(yè)人員可以協(xié)同,硬件追求越來越快,軟件追求規(guī)模。生態(tài)鏈需要協(xié)同創(chuàng)新,學科交叉。軟件是靈魂的載體,它具體應用在知識領域在生活智能方面的應用。東軟集團股份有限公司董事長兼ceo劉積仁作題為“軟件的賦能時代”,表明,企業(yè)也是軟件的載體。軟件在今后具有無限的發(fā)展空間,我們應該為從事這個行業(yè)而感到幸運。軟件在今后的發(fā)展中不僅僅表現(xiàn)的是licenseip的價值,軟件可以承載一個嶄新的創(chuàng)業(yè)的公司創(chuàng)造資本市場的奇跡。核心就是軟件表達的方式從我們單純賣解決方案、賣服務,軟件從我們過去依賴于軟件工程師,最后我們要成為在新經濟的發(fā)展、新消費發(fā)展的一個新的平臺。
信息革命的核心體現(xiàn)在,集成電路是細胞,通訊網絡是動脈,計算機工具是大腦,信息資源是血漿,應用需求是心臟,安全是免疫系統(tǒng),軟件是靈魂。軟件產業(yè)是第一大產業(yè),面向對象是軟件技術的基本指導思想,它的發(fā)展過程從最初的個人技巧,到結構化,再到最終的面向對象,覆蓋范圍也發(fā)展到運行技術、工具技術、到過程技術。軟件理論方法技術應用于x應用場景。應用場景的'構建主要是體現(xiàn)在,可感知+可編程+可計算+可調控等方面。軟件很大程度上改變了我們的生產生活方式,在現(xiàn)在社會中,對于軟件的開發(fā),我們不在只是單純的系統(tǒng)開發(fā),文檔手冊,還要考慮到所處的環(huán)境以及大數(shù)據(jù),智能算法等多方面的綜合考量。
軟件同時也在驅動著世界經濟的變革。在世界經濟全球化發(fā)展的趨勢下,軟件行業(yè)也在向全球化發(fā)展,在今天,軟件的開發(fā)也不再是一個國家或者一個行業(yè)自身的發(fā)展而是整個社會的發(fā)展趨勢。當前軟件行業(yè)無論國內還是國際上整體處于手工作坊式階段,以項目組或產品組為單位組織開發(fā)人員,圍繞一個項目或者一個產品的某一迭代版本進行收工作業(yè)。其服務模式始終停留在并行開發(fā)多個無關的小型項目。對于這樣的情況,單單只是依靠某個國家自身的實力是很難實現(xiàn)軟件技術全面提升的。微觀層面來看,光學相機被數(shù)碼相機取代,移動磁盤、光盤基本上被u盤取代。智能手機的出現(xiàn)也帶來了it產業(yè)格局的重塑。it產業(yè)巨變的核心動力是用戶群體的快速增加以及it擴散的范圍迅速。繼智能手機、平板電腦被軟件重新定義后,其他it產品也在不斷被軟件重新定義,增加一個操作系統(tǒng)之后,物理功能被無限的簡化,功能被無限的拓展,不斷地豐富。整個經濟社會加快在網絡空間的映射,形成現(xiàn)實與網絡交融的數(shù)字世界。信息物理系統(tǒng)(cps)實現(xiàn)大型工程系統(tǒng)的實時感知、動態(tài)控制和信息服務。
數(shù)據(jù)表征、智能處理、軟件定義,三元融合將打造一個全新的世界。大數(shù)據(jù)在消費it領域的作用更加明顯,只要用pc上網或者手機瀏覽信息,性別、年齡、愛好、蹤跡等等便被大數(shù)據(jù)刻畫,從而根據(jù)現(xiàn)有信息推斷出你可能要做的事。總的來說,大數(shù)據(jù)不僅是傳統(tǒng)產業(yè)升級的助推器,同時也是新興產業(yè)的催化劑。軟件的定位已經從服務軟件發(fā)展到定義硬件,也許在不久的將來,軟件不僅僅是改變世界,而是重新定義我們已知的世界,正如大數(shù)據(jù)的出現(xiàn),或許不久的將來,產品經銷商會比我們更了解自己的需求。
隨著軟件市場的競爭壓力越來越大,我們所面臨的it環(huán)境更為復雜化,為了應對來自各方面的挑戰(zhàn)問題,我們需要更多的創(chuàng)新能力和業(yè)務靈活性。提高模塊化思想,從根本上解決所面臨的問題。
學習軟件工程的心得體會篇十二
在本學期的軟件工程課程的學習中,我們學習了十一章的內容。第一章軟件與軟件工程的概念,這一章主要講解的是一些概念性和基礎性的內容,例如軟件的概念、特性,軟件危機的主要表現(xiàn),軟件工程的概念以及軟件生存期、典型生存期模型等等。第二章軟件工程方法與工具,這一章主要對軟件工程方法進行介紹,包括三種方法:傳統(tǒng)方法、面向對象方法、形式化方法。還引出了工具uml。第三章軟件需求獲取與結構化分析方法,本章詳細介紹了需求獲取與需求分析階段的任務以及結構化分析方法,畫分層的數(shù)據(jù)流圖、e—r圖以及狀態(tài)圖式本節(jié)的重點。第四章結構化分析方法,這一章重點講解了使用變換型映射方法和事務型映射方法生成初始的模塊結構以及模塊結構的改進。第五章編碼,這一章重點講解了編碼的風格及規(guī)范,還告訴我們編碼規(guī)范說帶來的好處,并告誡我們將來一點要形成好的編碼風格。第六章軟件測試方法,本章講解了軟件測試相關的概念及重要性,軟件測試與開發(fā)各個階段的關系;還介紹了白盒測試技術以及黑河測試技術。第七章統(tǒng)一建模語言uml概述,本章詳細介紹了uml的基本模式、事物、關系及建模時用到的各種圖進行了介紹。第八章面向對象分析,這一章主要講解了面向對象分析的3種模型,包括功能模型、靜態(tài)模型和動態(tài)模型。第九章軟件體系結構與設計模式,本章對軟件體系結構的基本概念、典型風格等進行了講解。第十章面向對象設計,本章的重點是對面向對象分析時建立的對象模型進行調整和細化。第十一章軟件維護,本章主要介紹軟件維護的任務、軟件維護活動以及軟件維護方法進行了介紹。
要學習軟件工程,學會如何系統(tǒng)的思考,以及養(yǎng)成良好的編碼習慣,想學好軟件工程,就必須知道軟件工程的目標、過程和原則:軟件工程目標:生產具有正確性、可用性以及開銷合宜的產品。正確性指軟件產品達到預期功能的程度??捎眯灾杠浖窘Y構、實現(xiàn)及文檔為用戶可用的程度。開銷合宜是指軟件開發(fā)、運行的整個開銷滿足用戶要求的程度。這些目標的實現(xiàn)不論在理論上還是在實踐中均存在很多待解決的問題,它們形成了對過程、過程模型及工程方法選取的約束。
軟件工程過程:生產一個最終能滿足需求且達到工程目標的軟件產品所需要的步驟。軟件工程過程主要包括開發(fā)過程、運作過程、維護過程。它們覆蓋了需求、設計、實現(xiàn)、確認以及維護等活動。需求活動包括問題分析和需求分析。問題分析獲取需求定義,又稱軟件需求規(guī)約。需求分析生成功能規(guī)約。設計活動一般包括概要設計和詳細設計。概要設計建立整個軟件系統(tǒng)結構,包括子系統(tǒng)、模塊以及相關層次的說明、每一模塊的接口定義。詳細設計產生程序員可用的模塊說明,包括每一模塊中數(shù)據(jù)結構說明及加工描述。實現(xiàn)活動把設計結果轉換為可執(zhí)行的程序代碼。確認活動貫穿于整個開發(fā)過程,實現(xiàn)完成后的確認,保證最終產品滿足用戶的要求。維護活動包括使用過程中的擴充、修改與完善。伴隨以上過程,還有管理過程、支持過程、培訓過程等。
軟件工程的原則是指圍繞工程設計、工程支持以及工程管理在軟件開發(fā)過程中必須遵循的原則。
我們學習了詳細設計的方法,其原則是過程描述是否易于理解、復審和維護,進而過程描述能夠自然地轉換成代碼,并保證詳細設計與代碼完全一致。包括程序流程圖、n—s圖、pad圖、hipo圖。
程序流程圖:程序流程圖又稱之為程序框圖,它是軟件開發(fā)者最熟悉的一種算法表達工具。它獨立于任何一種程序設計語言,比較直觀和清晰地描述過程的控制流程,易于學習掌握。在流程圖中只能使用下述的五種基本控制結構:順序型;選擇型;while型循環(huán);until型循環(huán);多情況型選擇。
n—s圖:一種符合結構化程序設計原則的圖形描述工具,稱為盒圖,又稱為n—s圖。在n—s圖中,為了表示五種基本控制結構,規(guī)定了五種圖形構件。順序型;選擇型;while重復型;until重復型;多分支選擇型。
pad圖:它是用結構化程序設計思想表現(xiàn)程序邏輯結構的圖形工具。pad也設置了五種基本控制結構的圖示,并允許遞歸使用。
hipo圖:hipo圖是由一組ipo圖加一張hc圖組成。它是美國ibm公司在軟件設計中使用的主要表達工具。
hc圖既是層次圖,用于表示軟件的分層結構。hc圖中的每一個模塊,均可用一張ipo圖來描述。ipo圖由輸入、處理和輸出三個框組成,需要時還可以增加一個數(shù)據(jù)文件框,這種圖形的優(yōu)點,是能夠直觀地顯示輸入—處理—輸出三者之間的聯(lián)系。
還有測試方法:按照測試過程是否在實際應用環(huán)境中來分,有靜態(tài)分析與動態(tài)測試。測試方法有分析方法(包括靜態(tài)分析法與白盒法)與非分析方法(稱黑盒法)。
靜態(tài)分析技術:不執(zhí)行被測軟件,可對需求分析說明書、軟件設計說明書、源程序做結構檢查、流程分析、符號執(zhí)行來找出軟件錯誤。
動態(tài)測試技術:當把程序作為一個函數(shù),輸入的全體稱為函數(shù)的定義域,輸出的全體稱為函數(shù)的值域,函數(shù)則描述了輸入的定義域與輸出值域的關系。
還學習了其他很多工具、語言、方法等,雖然不是都學得很透徹,但我相信在今后的學習中一定會慢慢的完善的。
軟件工程對于初學者來說,知識基礎較薄弱,對一些應用操作、概念、工具方法等理解起來較為困難,要能從整體概念上較好地理解和把握、學好軟件工程,不是僅僅把幾本專業(yè)書籍細致地看幾遍,然后上機練習幾次就可以成功,學習過程中要注意多看多練要注意結合實際,更要多思考,面對錯誤不要一范就問,要嘗試自己去解決。但是還要注意什么都學,肯定是什么都學不透的,要集中精力打攻堅戰(zhàn),學習軟件工程首先要明白自己的學習目標究竟是什么,根據(jù)自己的實際工作出發(fā),有針對性的在相應的學習方向上進行提高,制定出詳細的學習規(guī)劃。還要注意與其他科目的相輔相成,就像我們在學習面向對象分析的時候要結合大一學習的面向對象及其方法學這一專業(yè)科目進行研究拓展;在學習語言時,要看看與c語言的聯(lián)系,多思多想,把從各個科目學到的知識通匯貫通。
在軟件工程的學習中,我了解到了軟件并非是一些代碼這么簡單,在開發(fā)軟件的過程中,編寫代碼的工作量其實只占不到所有工程量的30%,而后期的管理和維護更是占了60%到80%之多。一個完整的項目規(guī)劃須包括,軟件的定義,可行性分析報告,項目開發(fā)計劃,軟件需求說明書,概要設計說明書,詳細設計說明書,用戶操作手冊,測試計劃,測試分析報告,開發(fā)進度報告,項目開發(fā)總結報告,軟件維護手冊,軟件問題報告,軟件修改報告,等多個文檔,每個文檔都要上級驗收審查,而文檔數(shù)量眾多,要做好這點真的不是很容易,而恰恰寫好文檔正能保證完成軟件工程其中一個目的的關鍵,既研究如何用最小的開銷做出生存期較長的軟件,再加上各個階段都要進行周密的策劃、詳細的分工部署和人員安排,且各階段要據(jù)具體情況不斷的反復才能達成,所以代碼只是開發(fā)軟件這個浩大的工程的一個小小的過程。
而編碼的學習中,我更了解到形成自己獨特的規(guī)范的編碼風格是非常重要的事。因為這影響到了軟件后期繁重的維護,大家都要閱讀你的程序,如果你寫的程序毫無規(guī)范可言,那么別人怎么能讀懂你的程序?讀不懂程序,維護又從何談起呢?所以,我們在今后的學習中,一定要注意這方面的培養(yǎng),在寫程序的過程中,要逐步的在規(guī)范的基礎上形成屬于自己的風格,即方便自己的修改,也方便日后他人的閱讀。
在學習中,我們還要注意比較三種方法的優(yōu)缺點,例如:傳統(tǒng)方法雖然使軟件擺脫了混亂和無序,但其在適應需求變化的方面不夠靈活,而且傳統(tǒng)方法要么面向行為,要么面向數(shù)據(jù),缺乏兩者的有機結合。而面向對象方法的程序設計和問題求解更符合人們日常自然的思維習慣,適合大型、復雜及交互性比較強的系統(tǒng)。形式化方法則是一中基于形式化數(shù)學變換的軟件開發(fā)方法,它可將系統(tǒng)的規(guī)格說明轉換為可執(zhí)行的程序。
在今后的學習中要注意多讀書、多思考、多練習、多討論,不斷熟悉書本的基礎,并以此為基礎將其擴散開來,應用于今后的實踐。不斷鍛煉自己,向一名合格的程序設計師邁進。
學習軟件工程的心得體會篇十三
對于一個軟件系統(tǒng)的開發(fā),第一步就是問題定義,了解所開發(fā)系統(tǒng)的行業(yè)背景,制定計劃。當我們計劃確定以后就要對項目系統(tǒng)本身進行可行性研究,主要從技術可行性、經濟可行性和操作可行性三個方面著手。就比如《物聯(lián)網物流倉庫管理系統(tǒng)》的行業(yè)背景說明文檔中非常詳細地分析了當下物聯(lián)網物流行業(yè)的整體業(yè)務說明、應用背景、未來發(fā)展趨勢以及相關應用案例等四個方面,項目團隊中系統(tǒng)分析員就可以根據(jù)這份文檔以及相關的調查資料對將要開發(fā)系統(tǒng)的進行定義等工作。
原來我們寫這類文檔的時候就是草草了事,不會做得這么詳細,而這次看到大型項目的行業(yè)背景說明也是這么詳細,也讓自己認識到不管是軟件開發(fā)的那個階段都要認真對待,這些瑣碎的文檔都是后期開發(fā)項目的支撐,只要它們做的透徹,后面的開發(fā)工作才能更順利的進行。
第二、項目需求說明方面
這部分項目需求說明就是軟件定義時期中需求分析階段,而該階段的主要目的就是了解用戶的需要,根據(jù)用戶的需要確定系統(tǒng)必須完成那些工作,并對目標系統(tǒng)提出完整、準確、清晰、具體的要求。在需求分析結束之前系統(tǒng)分析人員要寫出一份需求規(guī)格說明,即為《物聯(lián)網物流倉儲管理系統(tǒng)》項目需求說明文檔。我們可以看出該文檔也是非常詳細,相比之下我們之前做項目時寫的需求規(guī)格說明書就非常不合格,不僅格式不正確內容也是少之又少。
在這方面,這篇文檔給我啟發(fā)很大。首先就是文檔的格式,要美觀整齊,讓人看著舒服方便。其次就是文檔的內容,原來它不是很重要,寫文檔的時候也不知道怎么寫就借鑒下網上的內容,結果根本就沒有把自己項目的需求寫明白,以至于自己最后都有些糊涂,所以根據(jù)以前的經驗教訓我會對這部分更加重視。
第三、系統(tǒng)概要設計方面
這部分內容分說的是軟件設計時期的概要設計階段,該階段的主要目的就是實現(xiàn)系統(tǒng)的功能、設計軟件的結構、模塊組成以及模塊之間的關系。在概要設計階段,我們可以站在全局的高度上,花較少的成本,從抽象的層次上分析對比多種可能的系統(tǒng)實現(xiàn)方案和軟件結構,從中選出最佳方案和最合理的結構。在這個階段還會具體畫出e-r圖、數(shù)據(jù)流圖等方面的設計。
比如《物聯(lián)網物流倉庫管理系統(tǒng)》的系統(tǒng)概要設計從項目概述、設計約束、功能單元與功能模塊設計、數(shù)據(jù)e-r圖設計、總體設計、界面設計等六個方面介紹,通過讀這個文檔,我覺得最重要的還是總體設計,分別從邏輯架構設計、物理架構設計、技術架構設計設計系統(tǒng)。在這個階段中模塊要做到高內聚低耦合,這樣開發(fā)出來的系統(tǒng)才會具有更高的獨立性。
在原來做項目時沒有編寫過這類文檔,在該階段只是畫了結構圖、層次圖以及相關的模塊劃分,對該類文檔尚未重視。通過張老師的講解和自己的學習,我相信在以后做項目的時候一定會注意到這類文檔的編寫。
第四、詳細設計與分析方面
詳細設計階段就是把概要設計階段的每個模塊進一步設計,確定每個模塊所需要的算法和數(shù)據(jù)結構。在這個階段還是需要我們設計出程序的詳細規(guī)格說明,而不是編寫程序。在詳細設計階段,系統(tǒng)設計人員可以通過使用程序流程圖、盒圖、pad圖等過程設計的工具和jackson圖等面向數(shù)據(jù)結構的設計工具進一步設計系統(tǒng)相關接口,主要包括界面設計接口、業(yè)務單設計接口、單元模塊設計接口等,這些對于以后的編碼工作都是極其重要的。
第五、編碼和測試方案方面
關于編碼,我認為編碼要想做的完美必備條件就是前面的軟件定義和軟件設計時期要按部就班的做,文檔一定要按要求書寫,不能偷懶也不能草草書寫。對于編碼也要有相應的文檔書寫規(guī)范,要使源程序代碼的邏輯簡明清晰、易讀易懂。這樣盡管我們不是設計系統(tǒng)的人員,當看到源程序代碼的時候也能容易讀懂代碼的意思。
其次就是測試的內容,從測試的文檔中我們可以得出,其實測試在軟件開發(fā)中同樣占據(jù)了重要的地位,它主要就是盡可能多的找到問題并排除其中的潛藏的錯誤,最終把一個高質量的軟件系統(tǒng)交給用戶使用。它要求測試人員也要有很高的技術水平。
學習軟件工程的心得體會篇十四
軟件工程(softwareengineering,簡稱為se)是一門研究用工程化方法構建和維護有效的、實用的和高質量的軟件的學科。它涉及到程序設計語言,數(shù)據(jù)庫,軟件開發(fā)工具,系統(tǒng)平臺,標準,設計模式等方面。在現(xiàn)代社會中,軟件應用于多個方面。典型的軟件比如有電子郵件,嵌入式系統(tǒng),人機界面,辦公套件,操作系統(tǒng),編譯器,數(shù)據(jù)庫,游戲等。同時,各個行業(yè)幾乎都有計算機軟件的應用,比如工業(yè),農業(yè),銀行,航空,政府部門等。這些應用促進了經濟和社會的發(fā)展,使得人們的工作更加高效,同時提高了生活質量。
二、軟件工程的目標
在給定成本、進度的前提下,開發(fā)出具有可修改性、有效性、可靠性、可理解性、可維護性、可重用性、可適應性、可移植性、可追蹤性和可互操作性并且滿足用戶需求的軟件產品。
三、軟件工程的原則
是指圍繞工程設計、工程支持以及工程管理在軟件開發(fā)過程中必須遵循的原則。軟件工程的原則有以下四項基本原則:1)選取適宜開發(fā)范型;2)采用合適的設計方法;3)提供高質量的工程支持;4)重視開發(fā)過程的管理。
四、軟件工程的由來
據(jù)說上個世紀60年代的程序員都是天才,寫程式就像寫日記一樣,吃過晚飯沒事干隨手就可以寫幾個出來玩,第二天還可以拿去賣錢。所以那時候程序員在大家眼中,跟那些搞美術,音樂的是一類的,被稱為“藝術家”。
但事過境遷,就像任何人都不會嫌錢多一樣,永遠都不會有人嫌cpu快的。于是,隨之而來的就是硬件的迅猛發(fā)展和越來越變態(tài)的軟件。記得以前常去同學家拷游戲,通常幾張軟盤就可以搞定,而現(xiàn)在的游戲,兩三張cd-rom都算少的了。像如此龐大復雜的怪物,就算你是如何的天才,一個人肯定是搞不定的,否則,等你把程式寫出來,人家intel連奔騰n都開發(fā)出來了。既要開發(fā)大型的軟件還要追求速度(這樣才能賺錢),于是很自然地,合作的概念被提了出來。
在開始合作的初期,由于大家都習慣了當很有個性的“藝術家”,結果可想而知,一個是畢加索派的,而另一個是意大利印象派的,再加上一個畫潑墨山水畫的,要是像這樣湊出來的東西都能不出問題的話,那么bill早就轉行了。所以,那時侯的大型軟件,據(jù)說“藍屏”比windows98還多。
馬克思告訴我們,萬物都是從量變到質變的。隨著問題的不斷涌現(xiàn),一些master們開始嘗試去總結經驗,并歸納了一些規(guī)范去指導軟件的分析,設計,實現(xiàn),測試,維護,人員交流協(xié)作,項目預算及時限控制等方方面面,這就是軟件工程的前身。
軟件工程到現(xiàn)在已發(fā)展了30多年,可以說是相當成熟的了?,F(xiàn)在開發(fā)軟件,據(jù)說都是一大幫人排排坐,按著一整套的規(guī)章制度來干活。于是,軟件開發(fā)成了“工程”,程序員也就淪為“工人”了。
五、軟件工程的核心
軟件工程,說白了,就是這樣一套用于軟件的團隊開發(fā),以提高軟件質量和程序員工作效率為目的的規(guī)范。其核心就是,對于軟件開發(fā)的5個重要組成部分:需求分析,設計,編碼,調試,維護,如何組織這5個部分的工作,以及如何完成每一個工作。簡單來說,就是對于總體的組織和對于局部的實現(xiàn)。
六、軟件開發(fā)過程
開發(fā)軟件,就像是解決一個邏輯問題。想想自己平時是怎樣寫程序的。首先是要有一個想法,即我寫的這個程序是要干什么的;然后就是對要實現(xiàn)的核心功能大概構思一種或多種實現(xiàn)方法,并從中選出一種自認為是較好的;接下來就是將涉及的各種主要或次要功能分成各個模塊;最后就是分模塊來編碼和debug。除了第一步外,其余的步驟應該是一個循環(huán)的過程。既然軟件開發(fā)是一個具有不可預知性和變化性的`動態(tài)的過程,那么,對其每一個步驟的組織,即周期模型,就必須包容它的這種性質。
具體到每一步的工作要怎樣完成,是非常靈活的,只要把握住大體的方向就行。在進行分析,設計,編碼,調試,維護這幾部分的工作的時候,最核心的就是文檔的編寫。文檔的作用在于以下3個方面:一是可以幫助整理思路。把要完成的目標,系統(tǒng)的結構,每一個模塊的功能等整理一下,然后分門別類地寫下來,這樣在開發(fā)的過程中,就有據(jù)可依,在需要回過頭來修改設計的時候,也有證可考。二是便于交流。想象一下開會時的情形。一大幫子人爭先恐后,激烈辯論,然后會終人散,思想靈感也就隨之散了,結果是開了半天會,什么也沒討論出來。這就是后來會議記錄被發(fā)明出來的原因。在腦子里的東西一多,就會散而且亂,用語言表達的時候,很容易會丟三落四,別人也很難把握住你的思想。但經過整理寫在紙上以后,則會清晰得多,無論是別人還是自己,看起來都可以一目了然。三是可以作為以后維護時的參考資料。有一句名言:“筆和紙永遠都比大腦可靠”,意思就是說,放在大腦里的東西說不準哪天就忘了,但寫在紙上的東西,只要不發(fā)生什么意外,一般是丟不了的。當過了一段時間,你需要再回過頭來修改你的程序的時候,你就會發(fā)現(xiàn),你以前寫下的文檔實在太有價值了。別指望你的源代碼,對于復雜一點的程序來說,單純的源代碼幾乎會扼殺掉你所有的時間。
可行性分析就是關于當前項目能不能干的分析結果。主要考慮的方面包括:是否能把這個項目開發(fā)出來;假如可以的話,預計需要多少時間,能否滿足客人的時間要求;需要多少人力和資金的投入;最重要的是,這個項目能否賺錢,能賺多少。還要對可能存在的風險進行評估。
七、軟件工程學習感悟
時間飛逝,不知不覺間《軟件工程》的學習完了。在這將近半學期的學習中,雖然我不能說我將《軟件工程》學習的有多么的好,但是通過學習,我還是受益良多。
在以前,我一直對軟件存在一些偏見或則是誤解,認為軟件就是程序,軟件的開發(fā)就是編寫程序,只要編完了程序,一切也就ok了,而且我還片面的認為只要我掌握了時下最新的語言和工具,那么我就能寫程序了。一個人,只要會編程,就能寫軟件,就是程序員;一個公司,只要招聘一些程序員,就能開發(fā)好的軟件產品。只要有幾個有經驗的程序員,再找些兼職的大學生,就能組成一個軟件公司。
但是通過了《軟件工程》這門課的學習,使我認識到了我以前的錯誤。軟件其實不僅僅是程序,軟件開發(fā)其實也不僅僅是編寫程序,軟件是思想在硬件上的載體和體現(xiàn),處理的是邏輯和信息。唯有對軟件和軟件的開發(fā)過程,有充分的認識,才能更好的開發(fā)出,過程受控、質量受控的軟件產品。
而且在以前,我一直以為軟件的開發(fā)其實是一件很輕松快樂的事情,只要一天坐在電腦旁敲敲鍵盤,那么一切就可以了,但是現(xiàn)在我才發(fā)現(xiàn),我以前的很多的思想是多么的膚淺可笑。編程其實是一種樂趣和苦惱共存的一項創(chuàng)造性活動。因為編程不僅能夠滿足我們內心深處進行創(chuàng)造的渴望,而且還能愉悅我們內在的情感。
而且通過學習《軟件工程》,我還學到了很多其他的東西。比如通過學習《軟件工程》,特別是教員的課程講解和每次用實際的軟件現(xiàn)場的講解,為我提供了一個盡早接觸世界工作和真實項目的機會。讓我知道如何在以最小的成本中,訓練自己的基本工程素質和能力,如何激發(fā)自己的積極性等。而且通過學習《軟件工程》,還讓我認識和培養(yǎng)了我的團隊協(xié)作能力,特別是對于我們這些在校的學生來說,這種學習更是能讓我在以后工作中少走很多的彎路。
所以,通過《軟件工程》的學習,我是真的學習到了很多有用的東西,讓我明白了很多的道理。在此我對教員的辛勤教育表示感謝,因為是你讓我學習到了這些,是我獲益良多。
學習軟件工程的心得體會篇十五
學習軟件工程一個學期以來,我在陳燁老師的教導下確實獲益匪淺。軟件工程這門課,讓我對軟件的認識有了大大的提升,從一開始對軟件工程的一無所知,到現(xiàn)在一學期下來的不斷學習,懂得了許多的知識。
軟件不僅僅是程序,而是思想在硬件上的載體和體現(xiàn),軟件工程與其說是一門課程,不如說是一門思想。讓我懂得如何去分析和處理問題的過程,綜合解決問題。
在這段時間的學習中,我明白了一個完整的項目規(guī)劃須包括,軟件的定義,可行性分析報告,項目開發(fā)計劃,軟件需求說明書,概要設計說明書,詳細設計說明書,用戶操作手冊,測試計劃,測試分析報告等多個文檔,而軟件的生存周期可分為八個階段,分別是問題定義,可行性研究,需求分析,概要設計,詳細設計,程序設計,測試,文檔,技術支持,售后服務。而可行性包括經濟,技術,法律和社會。了解了許多軟件開發(fā)模型,比如瀑布模型,增量模型和螺旋模型,也了解了uml對象面向對象建模,知道如何畫流圖,碩果累累。其實軟件和程序是兩個不同的概念,軟件除了程序還要有使用和維護該程序所需要的全部文檔。包括需求文檔、設計文檔、測試文檔、維護文檔以及使用手冊。
軟件工程對于初學者來說,知識基礎較薄弱,對一些應用操作、概念、工具方法等理解起來較為困難,需要很好的基礎知識的理解和掌握,所以說學好軟件工程不是僅僅書多看幾遍就可以成功,而是要多注意結合實際,多思考,面對錯誤不要一范就問,要嘗試自己去解決,然后舉一反三。
軟件工程這門課在我們畢業(yè)之后,是我們實際要運用的一項非常有用的技能,這門課讓我意識到理論學習很重要,而實踐更重要,實踐是檢驗真理的唯一標準,只有實踐和理論相結合,才能使效益最大化。軟件工程的課雖然快要結束了,但是我對軟件工程的學習才剛剛開始,有了這些基本知識做鋪墊,在以后做項目的時候將會是解決問題的有效措施。
學習軟件工程的心得體會篇十六
軟件工程師作為現(xiàn)代社會中越來越重要的職業(yè)之一,隨著信息技術的不斷發(fā)展,其職責也越來越廣泛和重要。作為一名軟件工程師,我在這個行業(yè)里摸爬滾打多年,深感自己的成長離不開各種經驗和心得的積累。在接下來的文字中,我將從個人視角談談自己在軟件開發(fā)過程中的心得體會。
第二段:選擇質量
在軟件開發(fā)的過程中,我最關注的是軟件的質量。因為軟件需要長期運行,不僅要滿足用戶需求,還要兼顧安全性和可維護性等方面,這需要我們在開發(fā)過程中嚴格控制每一個環(huán)節(jié),做好每一個細節(jié)。因此,我在項目開發(fā)前會認真分析需求和可能的風險,對技術框架和工具的選擇非常謹慎。我也會定期進行代碼復審和單元測試等工作,確保代碼質量達標。當然,在不斷優(yōu)化的過程中,我也意識到代碼質量的提高不僅僅在于個人級別,而更應該顧及團隊整體水平,因此深感技術學習和交流的重要性。只有不斷積累、分享,才能讓團隊的發(fā)展更加健康和持久。
第三段:溝通協(xié)作
作為一名軟件工程師,我們的工作不僅僅是編寫代碼,更包括與產品經理、UI設計師、測試工程師等各個角色之間的溝通協(xié)作。這就需要我們具備更多的軟技能。比如,要善于傾聽和引導,以便更好地理解產品需求和用戶痛點;要有清晰的表達能力,能夠清楚地向其他角色描述自己的想法和意圖;在開發(fā)過程中,也要非常注重團隊合作,及時溝通和協(xié)調出現(xiàn)的問題。整個軟件開發(fā)過程需要涵蓋從需求分析、規(guī)劃和設計,再到編碼、測試和上線等各個環(huán)節(jié),期間需要負責人與團隊的全面協(xié)作才能保證項目的順利完成。
第四段:學習成長
軟件開發(fā)是一個知識密集型的工作,要時刻緊跟技術的發(fā)展趨勢才能在激烈的競爭中取得優(yōu)勢。因此,我認為軟件工程師需要具備持續(xù)學習的能力和自我提升的意識。我會在業(yè)余時間去了解新的技術,參加相關的技術社群和活動,不斷學習和嘗試新東西,以此來增強自己的核心競爭力和解決實際問題的能力。同樣,我也會時刻關注團隊的成長和發(fā)展,希望能為團隊帶來更多的經驗和技術積累。
第五段:總結回顧
在軟件開發(fā)的過程中,我覺得最重要的是要保持持之以恒的熱情和精神狀態(tài)。無論是在技術領域還是在團隊管理中,不停地學習和成長,分享并培育團隊的創(chuàng)新精神和專業(yè)精神,才能不斷提高自己和團隊的能力和素質,做出更好的產品。取得成功需要獨立思考和勇于探索,但更需要承認團隊的重要性,在各方面展現(xiàn)出自己領導團隊的能力和擔當。在今后的工作和生活中,我也將持續(xù)關注自己的成長需求,堅定地走好自己的職業(yè)道路。
學習軟件工程的心得體會篇十七
曾經看過一本書叫《道法自然》,內容略記得一二,但我最欣賞的是它的.書名。軟件設計沒什么太神秘有東西,只要用心體會,其實一切都很自然。軟件的設計之“道”,也不在于設計有多么的華麗、精巧,而在于其樸實、自然,最終達到“以無招勝有招”,進入一個全新的境界。
一、軟件設計理論的層次
以我的拙見,軟件設計領域中的各種概念,可以分為以下幾個層次來進行理解:
1、軟件設計的目的:重用性、擴展性。
這是最高的層次,是應對軟件危機的需要。
2、設計原則:低耦合、高聚合。
各種軟件設計的原則,如依賴倒置原則、單一職則原則、面向接口等,以及各種設計模式,其根本的目的其實只是為了降低耦合這么簡單。因為只有低耦合才能更好的適應變化,更好的重用和擴展。
3、實現(xiàn)方法:運用設計模式封裝變化、降低耦合。
設計模式只是用來“封裝變化、降低耦合”的工具而已。它是面向對象設計時代的產物,其本質就是充分運用面向對象的三個特性,即:封裝、繼承和多態(tài),進行靈活的組合運用。
二、關于耦合
1、耦合的粒度
耦合無論如何也是不可避免的。當我們實現(xiàn)接口、繼承父類的時候,就會不可避免的產生耦合。耦合是有不同粒度的,我們解耦到什么粒度為止,我認為應以模塊的重用粒度為準。盡量解除重用模塊或對象之間的耦合。而重用模塊之內的耦合,應屬于聚合的范疇,所以不要盲目的去解耦,否則就陷入了誤區(qū)。
2、解耦的原理
怎樣才能解耦呢,或者說為什么各種設計模式能達到解耦的目的呢?我覺得有以下幾個思路:
(1)將具體的東西抽象處理
(2)將分散的東西集中處理
而面向對象中的接口、繼承正為我們提供了這樣的一種機制。通過訪問接口或基類或抽象類,而不是具體的實現(xiàn)類,從而與具體的實現(xiàn)類達到了解耦的目的。我們還可以設計一些控制類,像潤滑劑一樣,協(xié)調各實現(xiàn)類之間的訪問,也可以達到耦的目的。
事實上,各種設計模式的基本思想也就是這樣。創(chuàng)建型模式是為了解除創(chuàng)建對象時產生的耦合,實際上是解除對類稱名的依賴,而結構型和行為型是為了解除對象屬性或方法的直接調用。不管什么設計模式,都是將對具體實現(xiàn)類的訪問提升為對接口、基類或用于協(xié)調的控制類的訪問。
三、關于接口
這一節(jié)更具體,談一談接口,因為使用接口是軟件設計的重要手段,但已經不屬于“道”了。
1、接口與繼承
接口描述的是對象某一個方面行為特征。使用接口與使用繼承關系各有優(yōu)缺點,使用子類繼承可以繼承父類的功能,體現(xiàn)了重用的精神。而接品更加靈活,因為它解除了子類與父類之間的高度耦合,它體現(xiàn)在靈活擴展的精神。
2、接口與純虛類
接口存在的理由就是它更加靈活,關系簡單,易于理解。比如一個類可以實現(xiàn)十幾個甚至幾十個接口,但一般開發(fā)工具只支持單繼承(由于多繼承太容易導致混亂和沖突),如果要繼承十幾層,系統(tǒng)結構想必會無法理解了,我以為這是接口存在的最重要的原因。
如果接口和虛類繼承結合使用,可以產生強大的威力,這也是許多設計模式的“殺手锏”。
以上算是總結一下自己的心得??隙ㄓ胁簧倨嬷?,請各位指教。
學習軟件工程的心得體會篇十八
作為軟件工程師,我一直對自己在軟件開發(fā)領域的發(fā)展感到自豪。近年來,我一直致力于提高自己的技能,并在實踐中不斷探索和學習。在這個過程中,我收獲了許多寶貴的經驗和體會,讓我更好地理解了軟件工程師的角色和職責,特別是在團隊合作方面的重要性。
第二段:個人成長
我的軟件開發(fā)之路始于大學時期學習編程語言,并在一家創(chuàng)業(yè)公司中獲得了第一份實習工作。在這一階段,我經歷了許多挑戰(zhàn)和學習機會,計劃和設計軟件解決方案成為我的長項。在后來的工作中,我不斷提高自己的團隊合作技能,學會協(xié)調和溝通,特別是在多功能項目中尤為重要。
第三段:貢獻團隊
作為軟件工程師,我有責任在團隊中發(fā)揮重要作用,同時也需要學會尊重其他專業(yè)人員的意見和建議。我的目標是成為一名優(yōu)秀的團隊成員,通過協(xié)作和討論尋求最優(yōu)解決方案。在項目中,我總是盡力爭取更高的質量和效率,發(fā)現(xiàn)和解決問題,對團隊的發(fā)展做出貢獻。
第四段:重視學習
隨著軟件技術的不斷發(fā)展,我們必須與時俱進,不斷學習新知識和技能。我經常參加工作坊、研討會等活動,與同行交流經驗,并積極閱讀相關書籍和文章。通過不斷學習,我擴大了自己的技能和知識范圍,更好地服務于團隊和客戶。
第五段:結語
軟件工程師的工作需要我們具備多種技能和素養(yǎng),而不僅僅是編程。我們需要協(xié)作,溝通和解決問題能力,同時也需要開放心態(tài)和持續(xù)學習的意愿。我相信通過不斷的積累經驗和體會,我們將不斷提高自身能力,為軟件行業(yè)的發(fā)展做出更大的貢獻。
學習軟件工程的心得體會篇十九
軟件工程心得體會未接觸軟件工程之前一直都很想學這門課程,因為覺得這門課很牛,是那些有工程師稱號的高手才擺弄的東西。學了一個學期的軟件工程課,終于知道了個軟件工程的大概。學的時候總覺得很抽象,理解起來好像不難,但總是摸不著頭腦一種很茫然的感覺。曾經以為程序就是軟件,軟件就是程序。學習這門課程第一個收獲是,知道了二者的不同之處。以前做過的一些小型的軟件比如加密軟件,我也只是在程序旁邊附上一個軟件的說明,看來已經很接近作坊了。不過大的項目沒有接觸過,用軟件工程的方法還是第一次。我想也是程序的不斷復雜化導致了軟件危機的發(fā)生,使得人們不得不探索新的解決方法。
經過倪老師的講解,理解了軟件工程,就是一套用于軟件的團隊開發(fā),以提高軟件質量和程序員工作效率為目的的規(guī)范。其核心就是,對于軟件開發(fā)的5個重要組成部分:需求分析,設計,編碼,調試,維護,如何組織這5個部分的工作,以及如何完成每一個工作。吾生也有涯,而知也無涯,學習永無止境。起初,對軟件工程處于一知半解的狀態(tài),分工比較混亂。
在劃分模塊后明確了各自分工,漸漸形成良性循環(huán)。在學習過程中,知道了團隊合作十分重要,爭議固然存在,但通過討論、協(xié)商,群策群力,在不斷磨合中能夠達成一致與默契。團隊成員中能力各有高下,互相尊重,各取所長,不宜妄自菲薄。組長多加協(xié)調,組員積極配合,才能合作愉快。學習能力體現(xiàn)在能盡快接受新的知識,順應變化,學為所用。
上《軟件工程導論》這門課,我的收獲大概如下:我們?yōu)槭裁葱枰浖こ棠??上面已經給出了一些原因。專業(yè)點講,軟件工程最終是為了實現(xiàn)“軟件制造業(yè)”的社會化,工業(yè)化大生產,提高其勞動生產效率。只有如此,軟件業(yè)才能實現(xiàn)社會化,工業(yè)化大生產,才能“做大做強”。沒有管理的設計是失敗和混亂的設計,沒有設計指導的編程是無序的忙碌的。根據(jù)開發(fā)的軟件的規(guī)模,應該適當程度的運用軟件工程化的思想,需要靈活,畢竟我們開發(fā)的軟件大多數(shù)是中小型的,大型的并不多見(我是這么認為的)。但只要涉及人員間的交流和溝通,或多或少都要需要軟件工程才能更有效率,工作成果更穩(wěn)定。
其實開發(fā)軟件,就像是解決一個邏輯問題。想想自己平時是怎樣寫程序的。首先是要有一個想法,即我寫的這個程序是要干什么的;然后就是對要實現(xiàn)的核心功能大概構思一種或多種實現(xiàn)方法,并從中選出一種自認為是較好的;接下來就是將涉及的各種主要或次要功能分成各個模塊;最后就是分模塊來編碼和debug。在我看來,除了第一步外,其余的步驟應該是一個循環(huán)的過程。在編碼的'過程中,你總是需要不斷地回過頭來修改原先的模塊設計,甚至最初選定的實現(xiàn)算法。具體到每一步的工作要怎樣完成,是非常靈活的,只要把握住大體的方向就行。在進行分析,設計,編碼,調試,維護這幾部分的工作的時候,最核心的就是文檔的編寫。
1、可行性分析就是關于當前項目能不能干的分析結果。
2、項目描述這是在決定立項以后,對當前項目的一份扼要說明。
3、需求分析就是對客戶要求的功能的定義。
4、軟件設計這就是對程序的每一個模塊的詳細設計的說明文檔。
5、開發(fā)日志我一直都認為這是文檔中最有趣的部分。開發(fā)日志相當于編碼階段的文檔,它的形式可以很隨意,主要是記錄一些在寫程序時突然萌發(fā)的靈感,或對代碼的一些微小的修改,或對程序結構的一些微小變動等,還要對上述這些修改變動作些說明。
6、測試分析用于指出程序存在或潛在的缺陷和錯誤,以及程序性能的數(shù)字描述。
學習軟件工程的心得體會篇一
軟件工程概論是一門引導人們正確開展軟件開發(fā)的學科,它包括軟件開發(fā)的常用流程、方法和工具等。我們是計算機專業(yè)的學生,而且都了解軟件開發(fā)的基礎,但是能夠真正了解軟件工程概論的學生是相對比較少的。因此,這門課程將會是我們學習過的最重要的課程之一。
次段:軟件工程概論的重要內容
軟件工程概論具有如下幾個重要的內容:軟件生命周期模型、軟件需求分析、軟件設計、軟件開發(fā)流程和軟件測試。其中軟件生命周期模型是最重要的內容之一,它為開發(fā)過程提供了全方位的指導,確保開發(fā)人員始終按照正確的流程進行開發(fā)。這些內容將會幫助我們了解整個開發(fā)過程,如何規(guī)劃項目并嚴格遵循項目的開發(fā)流程。
第三段:軟件工程概論帶給我們的啟示
軟件工程概論是一個非常實用的課程,它為我們提供了很多關于如何正確開發(fā)軟件的知識和指導。同時也帶給我們很多啟示。首先,軟件開發(fā)不是孤立的,它是一個整體的系統(tǒng),任何一部分出現(xiàn)問題都會影響到整個系統(tǒng)。其次,軟件開發(fā)過程是非常復雜的,需要較高的技能和知識。因此人力成本將會是非常高的,同時對開發(fā)人員的素質和能力也有很高的要求。
第四段:如何應用軟件工程概論在實際工作中
首先需要掌握全面的軟件工程概論知識,以此來指導整個開發(fā)過程。其次需要確定一個比較好的軟件生命周期模型,以確保開發(fā)過程的順利進行,并嚴格按照開發(fā)流程來開發(fā)。同時需要掌握一些常用的軟件開發(fā)和管理工具,以提高開發(fā)效率和質量。
尾段:總結
通過學習軟件工程概論,我們深入了解了軟件開發(fā)過程的核心內容和方法。這些知識將會對我們未來的職業(yè)生涯以及軟件開發(fā)工作有很大的指導意義。因此我們需要把所學的知識和方法運用到實際的工作當中去。同時,我們也要繼續(xù)學習和積累,以應對日新月異的技術發(fā)展。
學習軟件工程的心得體會篇二
談到機械工程先來講講機械,中國的機械發(fā)展有著悠久的歷史,五千年前的紡織機械、晉朝時期的連機錐和水碾、西漢時期的指南車和鼔車、東漢的地震儀、秦始皇時期的銅車馬??國外機械的產生要追溯到18世紀初,第一次工業(yè)革命產生蒸汽機和一些以蒸汽機為動力的近代機械的雛形,再到19世紀代左右的第二次工業(yè)革命,內燃機的產生帶來了新的動力機械,開始了機械的迅猛發(fā)展。從機械和社會的發(fā)展來看,一個社會機械水平越高,生產力水平越強?,F(xiàn)代社會也是一樣,機械是現(xiàn)代社會進行生產和服務的六大要素(人、資金、信息、能量、材料和機械)之一,機械工業(yè)是國民經濟的支柱工業(yè)之一,是社會生產力發(fā)展水平的重要標志。綜上可見,機械是一個國家發(fā)展、民族復興的重要保證。
機械社會發(fā)展中的地位如此之高,那機械工程呢?機械工程是運用數(shù)學、物理等基礎理論和有關機械方面的專門知識,結合生產實際經驗,經濟有效地解決在設計、研究、制造和運行各種機械中遇到的實際問題。從定義上可以看出,機械工程是一個系統(tǒng)性的全面的工程,可以盡可能合理的創(chuàng)造和最大化的利用機械??梢?,在21世紀這樣一個充滿市場競爭和需要不斷創(chuàng)新的時代,機械工程運用的好與不好,往小一點說,直接關系到一個企業(yè)的存亡問題,往大一點說,直接決定了一個國家機械工業(yè)方面的軟實力。機械工程對國家發(fā)展如此之重要,對于未來希望成為工程師的大學生的我來說,沒有理由不好好的了解機械工程。
工程中力學包含:理論力學、流體力學、材料力學、震動力學、計算力學。這些力學是進行機械設計和制造的基礎,學好這些理論才能知道運動以怎樣的機構傳遞,能量以怎樣的機器傳遞。
機械設計包含了很多的設計方法,除去傳統(tǒng)設計方法不說,現(xiàn)代設計方法包含:優(yōu)化設計、可靠性設計、有限元分析、并行設計、綠色設計、創(chuàng)新設計、模塊化設計和反求設計。其中有限元分析、綠色設計和反求設計令我印象深刻。利用電腦軟件對設想的機械部件進行有限元分析,可以確保設計的合理性和可利用行,如此以來,可以在不做出模型的情況下就可以清楚的了解結構的性能,節(jié)約了時間不說更節(jié)約了大量的人力、物力財力。在綠色設計方面,美國的廢舊汽車利用可謂楷模,報廢汽車再利用率達到了百分之九十五,再利用零部件重量超過舊車的總重量的百分之七十五,可以說節(jié)約了大量的資源,對環(huán)境有了一個很好的保護,這點反觀我的祖國,確實有必要學習一下,我國現(xiàn)在汽車每年的購買量都在大幅度上漲,隨之而來的必然會有大量的報廢汽車,這是新的產業(yè),也是一個新的經濟增長點,不但節(jié)約資源保護環(huán)境,還可以促進經濟增長,真是一舉兩得的好事啊。這些設計方法中,最讓我眼睛一亮的要數(shù)“反求設計”,二戰(zhàn)戰(zhàn)敗國日本就是運用這種方法,以“一代引進,二代國產化,三代改進口、四代占領國際市場”方針,迅速的崛起為世界第二大經濟體。日本的成果是對這種方法實質的最好詮釋,中國也在使用這種方法,不過是歪曲了的,只顧模仿不懂得吃透他人的技術再創(chuàng)新,是中國科學技術落后與發(fā)達國家的一個重要因素。模仿不可怕,可怕的是照搬照套!用好“反求設計”實現(xiàn)“比他人做得更好”。
機械制造技術包含兩方面含義:
1、指用機械加工零件的技術;
2、指制造某種機械的技術。在制造技術方面,先進制造技術顯得更適合現(xiàn)代化,通過將多方面的技術進行交叉、融合和集成,綜合應用于產品全生命周期的制造過程,可以更經濟更有效率更好的制造出適應市場需求的產品。特別是三維打印技術,可以通過電腦造型,再通過3d打印機打印出模型來觀察產品的合理性和可用性,方便效率高。
最后談談機電一體化技術,機器人現(xiàn)在是各個國家研究的熱門項目,每個國家都希望在這方面領先全球,機器人就是典型的利用了機電一體化技術的產品,是機械和電子的有機結合。從20世紀中后期,機電一體化就代表了現(xiàn)代機械工程的發(fā)展方向,產生了眾多高新機械產品,如:火箭、衛(wèi)星、宇宙飛船、航空母艦、深海探測器??梢?,機電一體化的前景非常不錯,不過要想學好這么技術,作為機械專業(yè)的學生來說,就有必要好好的學學計算機和信息類的知識,畢竟機電一體化中電子占了很大的比重,為了自己未來的發(fā)展,也為了趕上現(xiàn)代化的機械工程方向,我要努力的學好機械專業(yè)課的同時,多涉獵一些電子類的書籍,為未來的發(fā)展奠定基礎。
學習軟件工程的心得體會篇三
15天的實訓結束了,今天做的是紙牌游戲軟件和趣味打字游戲。今天的東西對我來說有點難度,最后沒有能過完全做完。但是我還是覺得這是一個不錯的實訓,在這種集體的環(huán)境里和同學們一起學習,每天的生活過的也是非常的充實。
此次實踐課我的收獲很多。我和同學們這一次真正自己動手制作了一個小軟件,雖然還存在很多的問題,而且我做的軟件在使用起來還是很不可行的,但是我們從中受到了很多知識,不僅是專業(yè)的知識,更讓我明白了一個軟件從設計到實現(xiàn)的每一個環(huán)節(jié)真的很不容易,不僅需要扎實的專業(yè)知識,更需要一個團隊的配合,這才是一個軟件成功的關鍵。這就告訴我們,一個人的出色不算什么,一個團隊的出色才是真正有用的。
剛開始拿到題目我們組員都不知如何下手,經過小組成員一起查找資料,并且開會討論,我們確定了設計的設計目標以及具體實現(xiàn)方式,包括如何將java的思想運用到實際系統(tǒng)的詳細設計之中。
在實驗課上,我學會了很多學習的方法。而這是日后最實用的。要面對社會的挑戰(zhàn),只有不斷的學習、實踐,再學習、再實踐。這對于我的將來也有很大的幫助。以后,不管有多苦,我想我都能變苦為樂,找尋有趣的事情,發(fā)現(xiàn)其中珍貴的事情。就像中國提倡的艱苦奮斗一樣,我都可以在實驗結束之后變的更加成熟,會面對需要面對的事情,以及學會遇到問題,不急不慌,慢慢解決它。
雖然過程辛苦是不可避免,但收獲還是令人感到尤其的欣慰。在這次的軟件設計中不僅檢驗了我所學習的知識,也培養(yǎng)了我的實踐能力,讓我知道遇到一個問題,如何去尋找思路,如何去解決問題,最終完成整個事情。在設計過程中,與同學分工設計,和同學們相互探討,相互學習,相互監(jiān)督。學會了合作,學會了寬容,學會了理解,也學會了做人與處世。課程設計是我們專業(yè)課程知識綜合應用的實踐訓練,是我們邁向社會,從事職業(yè)工作前一個必不少的過程。實驗過程中,也十分感謝實驗指導老師陳中育老師的指點與教導。這次軟件設計不僅是對這學期所學知識的一種綜合檢驗,而且也是對自己動手能力的一種提高,增強了自己實踐能力。通過這次課程設計使我明白了自己知識還比較欠缺,只是學習書本知識還是遠遠不夠的,自己不會的東西還有太多,學習需要自己長期的積累,在以后的學習、工作中都應該不斷的學習,將課本的理論知識與生活中的實踐知識相結合,不斷提高自己文化知識和實踐能力。
學習軟件工程的心得體會篇四
1.1什么是軟件危機?它有哪些典型表現(xiàn)?為什么會出現(xiàn)軟件危機?
答:軟件危機是指在計算機軟件開發(fā)和維護過程中所遇到的一系列的嚴重問題。
它的典型表現(xiàn):1.軟件開發(fā)成本高,成本難以控制。2.研究周期長,軟件開發(fā)進度難以控制,周期拖得很長。3.正確性難以保證,軟件質量差,可靠性難以保證。4.軟件維護困難,維護人員和維護費用不斷增長。5.軟件發(fā)展跟不上硬件的發(fā)展和用戶的要求。
它出現(xiàn)的原因一方面是由于軟件生產本身存在著復雜性,另一方面是與軟件開發(fā)所使用的方法和技術有關。軟件不同于硬件,它是計算機系統(tǒng)中的邏輯部件而不是物理部件。管理和控制軟件開發(fā)工程相當困難,軟件是規(guī)模龐大,而且程序復雜性將隨著程序規(guī)模的增加而呈指數(shù)上升。目前相當多的軟件專業(yè)技術人員對軟件開發(fā)和維護還有不省糊涂觀念,在實踐過程中或多或少地采用了錯誤的方法和技術,這是使軟件問題發(fā)展成為軟件危機的主要原因。
1.2什么是軟件工程?它有哪些本質特性?怎樣用軟件工程消除軟件危機?
答:軟件工程是將系統(tǒng)化的,規(guī)范化的,可度量的方法應用于軟件開發(fā),運行和維護的過程,即將工程化應用于軟件中。
它的本質特性:1.軟件工程關注于大型程序的構造2.軟件工程的中心課題是控制復雜性3.軟件經?;?.開發(fā)軟件的效率非常重要5.和諧地合作是開發(fā)軟件的關鍵6.軟件必須有效地支持它的用戶7.在軟件工程領域中是由一種文化背景的人替具有另一種文化背景的人創(chuàng)造產品。
基本原理:1.用分階段的生命周期計劃嚴格管理2.堅持進行階段評審3.實行嚴格的產品控制4.采用現(xiàn)代程序設計的技術5.結果應能清楚地審查6.開發(fā)小組的人員應該少而精7.承認不斷改進軟件工程實踐的必要性。
1.3什么是軟件?它有什么特點?
答:軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,它是包括程序,數(shù)據(jù)結構及其相關文檔的完整集合。
1.4什么是軟件過程?它與軟件工程方法學有何關系?
答:軟件過程是為了開發(fā)出高質量的軟件產品所需完成的一系列任務的框架,它規(guī)定了完成各項任務的工作步驟。
軟件過程定義了運用技術方法的順序,應該交付的文檔資料,為保證軟件質量和協(xié)調軟件變化必須采用的管理措施,以及標志完成了相應開發(fā)活動的里程碑。軟件過程是軟件工程方法學的3個重要組成部分之一。軟件工程的基礎是軟件過程。
1.5什么是軟件生命周期模型?試比較瀑布模型、原型模型、增量模型和螺旋模型的優(yōu)缺點,說明每種模型的適用范圍。
答:軟件生命周期模型是軟件開發(fā)全部過程,活動和任務的結構框架,它能直觀表達軟件開發(fā)全過程,明確規(guī)定要完成的主要活動,任務和開發(fā)策略。也叫軟件開發(fā)模型。
瀑布模型優(yōu)點:有利于大型軟件開發(fā)過程中人員的組織,管理,有利于軟件開發(fā)方法和工具的研究,從而提高了大型軟件項目開發(fā)的質量和效率。
缺點:1,開發(fā)過程一般不能逆轉,否則代價太大2.實際的項目開發(fā)很難嚴格按
照該模型進行3.客戶往往很難清楚地給出所有的需求,而該模型卻要求如此4.軟件的實際情況必須到項目開發(fā)的后期客戶才能看到,這要求客戶有足夠的耐心。
適用范圍:1.用戶的需求非常清楚全面,且在開發(fā)過程中沒有或變化很少2.開發(fā)人員對軟件的應用領域很熟悉3.用戶的使用環(huán)境非常穩(wěn)定4.開發(fā)工作隊用戶參與的要求很低。
原型模型優(yōu)點:1.可以得到比較良好的需求定義,容易適應需求的變化2.有利于開發(fā)與培訓的同步3.開發(fā)費用低,開發(fā)周期短且隊用戶更友好。
適用范圍:1.對所開發(fā)的領域比較熟悉而且有快速的原型開發(fā)工具2.項目投標時,可以以原型模型作為軟件的開發(fā)模型3.進行產品移植或升級時,或對已有產品原型進行客戶化工作時,原型模型非常合適。
增量模型優(yōu)點:1.采用增量模型的優(yōu)點是人員分配靈活,剛開始不用投入大量的人力資源
2.如果核心產品很受歡迎,則可增加人力實現(xiàn)下一個增量3.可先發(fā)部分功能給客戶,對客戶起到鎮(zhèn)靜劑的作用。
缺點:1.并行開發(fā)構件有可能遇到不能集成的風險,軟件必須具備開放式的體系結構2.增量模型的靈活性可以使其適應這種變化的能力大于優(yōu)于瀑布模型和原型模型,但也很容易退化為邊做邊改模型,從而使軟件過程的控制失去整體性。
適用范圍:1.進行已有產品升級或新版本開發(fā),增量模型是非常適合的2.對完成期限嚴格要求的產品,可以使用增量模型3.對所開發(fā)的領域比較熟悉而且已有原型系統(tǒng),增量模型也非常適合。
螺旋模型優(yōu)點:1.實際上的靈活性,可以再項目的各個階級進行變更2.以小的分段來構建大型系統(tǒng),是成本計算變得簡單容易3.客戶始終參與每個階段的開發(fā),保證了項目不偏離正確方向以及項目的可控性4.隨著項目推進,客戶始終掌握項目的最新消息,從而是他或她能夠和管理層有效地交互。
缺點:1.采用螺旋模型需要具有相當豐富的風險評估經驗和專門知識,在風險較大的項目開發(fā)中,如果未能夠及時標識風險,勢必造成重大損失2.過多的迭代次數(shù)會增加開發(fā)成本,延遲提交時間。
適用范圍:只適合于大規(guī)模的軟件項目。
1.6怎么理解軟件工程的概念及其意義?
答:軟件工程是一門將理論和知識應用于實踐的工程,它借鑒了傳統(tǒng)工程的原則和方法,以求高效地開發(fā)高質量軟件。它是一種層次化技術。
意義:從歷史上講,軟件工程的作用,是為了克服上個世紀60年代出現(xiàn)的軟件危機,這種危機表現(xiàn)為軟件開發(fā)的成本大、進度慢、維護難和質量得不到保障。從當前來講,軟件工程的作用,就是告訴人們怎樣去開發(fā)軟件和管理軟件。具體地講,它表現(xiàn)在與軟件開發(fā)和管理有關的人員和過程上。
1.7軟件過程的通用過程框架包含哪兩類活動?
答:一類是框架活動,還有一類是保護性活動。
1.8描述基于構件開發(fā)的思想以及目前的發(fā)展情況。
答:基于構件開發(fā)強調將被設計的系統(tǒng)分解成功能的或邏輯的構件,構件用定義好的接口進行通信。
它是現(xiàn)在軟件復理論實用化的研究熱點,在構件對象模型的支持下,通過復用已有的構件,軟件開發(fā)者可以“即插即用”地快速構造應用軟件,這樣即可以節(jié)省時間和經費,提高工作效率,也可以產生更加規(guī)范,更加可靠的應用軟件。
1.9請簡要說明rup的9個規(guī)程(disciplines)及之間關系?
答:rup的9個規(guī)程為:業(yè)務建模,需求,分析與設計,實現(xiàn),測試,部署,配置與變更管理,項目管理以及環(huán)境。
對于一個大型項目,rup九個規(guī)程的活動不可或缺,但對于有些項目可能不需要經過所有九個規(guī)程,在項目開發(fā)時需要對這些規(guī)程涉及的活動做具體的裁剪,以適應具體項目的開發(fā)需要。
1.10說明面向切面編程的特點,有什么優(yōu)勢?
答:該范型以一種稱為切面的語言構造為基礎,切面是一種新的模塊化機制,用來描述分散在對象、類或函數(shù)中分離出來可以大大增強程序的模塊性。
優(yōu)勢:他把特定領域問題的代碼從業(yè)務邏輯中獨立出來,業(yè)務邏輯的代碼中不再含有針對特定領域問題代碼的調用,業(yè)務邏輯同特定領域問題的關系通過切面來進行封裝,維護。優(yōu)勢:面向切面編程的特點是針對業(yè)務處理過程中的切面提取,所面對的是處理過程中的某個步驟或階段,以獲得邏輯過程中各部分之間低耦合性的隔離效果,降低了耦合性。
1.11模型驅動工程中mda的基本思想是什么?
答:mda的基本思想是系統(tǒng)的功能性是用合適的規(guī)約語言以平臺無關的模型的方式定義,然后為實際的實現(xiàn)翻譯到一個或多個平臺相關的模型上。
chapter2
2.1描述面向對象的基本概念和思想。
一個實體都可以抽象為對象。
2.2面向對象分析設計的基本思路和過程是怎樣的?
答:分析過程主要包括理解、表達和驗證。設計是把分析階段得到的需求轉變成符合成本和質量要求的、抽象的系統(tǒng)實現(xiàn)方案的過程。
過程:識別系統(tǒng)的用例和角色,進行系統(tǒng)分析并抽象出類,設計系統(tǒng)并設計系統(tǒng)中的類及其行為。
2.3面向對象程序設計中的概念主要包括哪些?分別闡述其主要思想。
答:對象:封裝了數(shù)據(jù)和操作這些數(shù)據(jù)的代碼的邏輯實體。
類:具有相同類型的對象的抽象。
封裝:保證軟件部分具有優(yōu)良的模塊性的基礎。
繼承:讓某個類型對象獲得另一個類型的對象特征。
多態(tài):使不同內部結構的對象可以共享相同的外部接口,減少代碼復雜度。
動態(tài)綁定:多態(tài)實現(xiàn)的具體形式,將一個過程調用與相應代碼鏈接起來的行為。消息傳遞:使得對現(xiàn)實世界的描述更容易。
方法:定義一個類可以做的,但不一定去做的事。
2.4描述uml的主要概念和歷史。
答:uml是統(tǒng)一建模語言,用來對軟件密集系統(tǒng)進行可視化建模的一種語言。uml為面向對象開發(fā)系統(tǒng)的產品進行說明、可視化、和編制文檔的一種標準語言。
歷史:rumbaugh和booch將booch93和omt-2統(tǒng)一起來,發(fā)布了um0.8;后經過booch,rumbaugh和jacobson的共同努力,發(fā)布了uml0.9和uml0.91,并將um重命名為uml。,rational組織成立了uml合作者聯(lián)盟,以完善、加強和促進uml的定義工作。啟動了uml2.0標準的制定工作。
2.5rup是什么?應用rup對軟件開發(fā)有什么意義?
答:rup(rationalunifiedprocess)是統(tǒng)一軟件開發(fā)過程,是一個面向對象且基于網絡的程序開發(fā)方法論。
應用rup為軟件開發(fā)提供了一個模版,使得軟件開發(fā)過程規(guī)范化,統(tǒng)一化。
chapter3
3.1為什么要進行業(yè)務建模?業(yè)務建模適用什么場合的軟件項目開發(fā)?
業(yè)務知識而再進行開發(fā)的,所以需要通過“業(yè)務建?!睂ⅰ皹I(yè)務需求”準確地轉換為it技術人員所熟悉的“軟件需求”。
適用場合:規(guī)模較大的軟件項目開發(fā)。
3.2業(yè)務建模可以分哪些工作流進行?
答:評估業(yè)務狀態(tài)、描述當前業(yè)務、定義業(yè)務、探索流程自動化、開發(fā)領域模型。
3.3什么是領域模型?與業(yè)務模型的關系是什么?
答:領域模型:領域模型是描述業(yè)務用例實現(xiàn)的對象模型。它是對業(yè)務角色和業(yè)務實體之間應該如何聯(lián)系和協(xié)作以執(zhí)行業(yè)務的一種抽象。領域模型從業(yè)務角色內部的觀點定義了業(yè)務用例。該模型為產生預期效果確定了業(yè)務人員以及他們處理和使用的對象(“業(yè)務類和對象”)之間應該具有的靜態(tài)和動態(tài)關系。它注重業(yè)務中承擔的角色及其當前職責。這些模型類的對象組合在一起可以執(zhí)行所有的業(yè)務用例。
關系:開發(fā)領域模型是一個備選活動,領域模型是業(yè)務分析模型中獨立的一部分,注重于說明對于業(yè)務領域很重要的概念、產品、可交付成果和事件。這樣一個模型僅描述業(yè)務中的重要信息,并不包括人員承擔的職責。
3.4什么是系統(tǒng)上下文?明確目標系統(tǒng)的上下文有什么意義?
答:系統(tǒng)上下文:指的是目標系統(tǒng)、與之交互的用戶和外部系統(tǒng)。
意義:業(yè)務建模作為軟件需求的前一階段,了解目標系統(tǒng)的上下文是很有必要的,便于確定目標組織和業(yè)務范圍。
3.5什么是業(yè)務涉眾?業(yè)務涉眾可能來自哪些方面?
答:業(yè)務涉眾:所有跟目標業(yè)務有利害關系的人。
方面:可能來自目標組織內部及目標組織外部且跟目標組織有關系的人和組織。
3.6什么是業(yè)務愿景?怎么理解業(yè)務愿景的重要性?
答:業(yè)務愿景:定義業(yè)務建模工作所針對的一組目標。
重要性:要了解組織的業(yè)務過程,對業(yè)務進行建模,首先必須理解組織的共同愿景,業(yè)務建模時期的重要任務就是確定項目涉眾的共同愿景,而了解最有影響力的涉眾的愿望和目標是非常重要的環(huán)節(jié)。所以業(yè)務愿景對整個業(yè)務建模過程來說是十分關鍵和重要的。
3.7業(yè)務建模的作用是什么?哪些人和組織是潛在的業(yè)務執(zhí)行者?
答:作用:
(1)了解目標組織(將要在其中部署系統(tǒng)的組織)的結構和機制;
(2)了解目標組織中當前存在的問題并確定潛在改進的可能性;
(3)確??蛻?、最終用戶、開發(fā)人員和其他各方就目標組織達成共識;
(4)導出支持目標組織所需的系統(tǒng)需求;
(5)了解要部署的軟件系統(tǒng)將如何融入組織。
潛在的業(yè)務執(zhí)行者:客戶、合作伙伴、供應商、權威機構(法律、法規(guī)等制訂機構)、子公司、所有者和投資者、業(yè)務以外的信息系統(tǒng)等。
3.8結構化業(yè)務用例的三種關系是什么?
答:三種關系:包含關系、擴展關系、泛化關系。
3.9業(yè)務用例的包含與擴展關系、包含與泛化的區(qū)別是什么?
答:包含與泛化的區(qū)別:(1)對于用例泛化關系,子用例的執(zhí)行取決于父用例(重用部分)的結構和行為,而在包含關系中,基本用例的執(zhí)行只取決于包含用例(重用部分)所執(zhí)行的功能的結果。(2)在泛化關系中,子用例的用途和結構是相似的,而在包含關系中,重用同一個包含用例的基本用例可能有完全不同的用途,但需求執(zhí)行相同的功能。
包含與擴展的區(qū)別:(1)包含關系:如果基本用例的某個部分代表一個功能,而業(yè)務用例只依賴于本功能的結果,而不是產生結果的方法,那么可以將這部分分離出來,形成一個附加用例。使用包含關系,將附加部分明確包含于基本用例中。包含關系將基本用例和包含用例連接起來。
(2)擴展關系:如果基本用例的一部分是可選的,或對于理解該用例的主要目的來說不是必需的,那么可以將這部分分離出來,形成一個附加用例,以簡化基本用例的結構。利用擴展關系,將附加部分隱含地包含于基本用例中。擴展關系將擴展用例與基本用例連接起來。
3.10業(yè)務分析模型的作用是什么?與業(yè)務用例模型的之間是什么關系?
答:作用:業(yè)務分析模型描述通過與業(yè)務系統(tǒng)、業(yè)務工作者和業(yè)務實體交互來實現(xiàn)業(yè)務用例。它充當了為了執(zhí)行業(yè)務用例而所需業(yè)務系統(tǒng)、業(yè)務工作者和業(yè)務實體之間的相關和協(xié)作方式的抽象。它還定義了在執(zhí)行業(yè)務用例時由業(yè)務執(zhí)行者調用的外部業(yè)務服務。
關系:業(yè)務用例模型是從與客戶和業(yè)務流程對應的業(yè)務執(zhí)行者和業(yè)務用例的角度,對業(yè)務進行描述。業(yè)務用例模型包括工作流程說明,此說明確定完成了那些工作。所以業(yè)務用例模型描述在業(yè)務執(zhí)行者和業(yè)務之間發(fā)生了什么,對于業(yè)務結構或如何實現(xiàn)業(yè)務用例不作任何假設。而業(yè)務分析模型就是用于描述如何執(zhí)行業(yè)務用例,并具體定義業(yè)務提供的服務,內部業(yè)務工作者及其使用的信息,將它們的結構化組織描述為獨立的單元,定義業(yè)務工作者如何通過交戶來實現(xiàn)業(yè)務用例中所描述的行為。
3.11
(c)
2.以醫(yī)院為研究對象,請描述醫(yī)生、病歷的性質分別是()
(a)businessactor、businessworker
(b)businessworker、businessactor
(c)businessactor、businessentity
(d)businessworker、businessentity
3.12綜合案例分析-餐廳點菜業(yè)務分析
某餐廳的點菜服務流程與規(guī)范如下:
1.遞上菜單
(1)客人入座后,服務員詢問客人需要什么茶水。準備好茶水后,按“女士優(yōu)先,先
賓后主”的原則從右邊為客人斟上茶水。
(2)將菜單打開第一頁,按照“女士優(yōu)先”原則,用雙手從客人右側將菜單送至客人手中,然后站在客人斜后方能觀察客人面部表情的地方,上身微躬。
2.推薦介紹酒店菜品
(1)在客人點菜前,服務員應留有時間讓客人翻看菜單。
(2)在客人翻看菜單時,應及時向客人簡單介紹菜單上的菜,回答客人的詢問。
(3)向客人介紹廚師長今日特別推薦的菜品、其他的特色菜、暢銷菜和高檔菜等菜品,并介紹其樣式、味道、溫度和特點。
3.接受點菜
(1)服務員先在點菜單上記下日期、本人姓名及臺號、就餐人數(shù)等。
(2)客人點菜時,應注視客人,聽清客人點的菜名,適時幫助客人選擇菜品和主動推介菜品,準確地記錄菜名。
(3)對于特殊菜品,應介紹其特殊之處,并問清客人所需火候、配料及調料等。
(4)若客人用餐時間較緊,點的菜需時間較長,則應及時向客人征求意見;若有客人點相同的菜式,如湯和羹或兩個酸甜味型的菜時,應有禮貌地問客人是否需要更換菜式。
(5)若客人有特殊要求,應在點菜單上清楚注明,并告知傳菜服務員。
4.復述點菜內容
(1)客人點菜完畢后,服務員應清楚地重復一遍所點菜品內容,并請客人確認。
(2)復述完畢后,在點菜單的右上角寫明當時的時間,以便查詢。
(3)收回菜單并向客人致謝,同時請客人稍等,說明大致的等候時間。
5.分送點菜單
(1)服務員將點菜單的第一聯(lián)送至收銀處。
(2)將點菜單的第二聯(lián)送至廚房。
(3)將第三聯(lián)給客戶,第四聯(lián)交給傳菜員、值臺服務員留底備查。
根據(jù)案例的描述,請你完成下列任務:
1.分析餐廳的點菜業(yè)務,建立點菜業(yè)務模型。
這項業(yè)務的業(yè)務涉眾:外部涉眾:客人,
內部涉眾:服務員,收銀處,廚房,值臺服務員
分析點菜業(yè)務模型:
業(yè)務執(zhí)行者為:客人
業(yè)務用例是:入座,推薦菜品,點菜,確認內容,分送菜單,上菜
2.用活動圖描述客人點菜的活動。
3.分析點菜業(yè)務模型,找出有哪些業(yè)務工作者和業(yè)務實體,并用交互圖來說明之間的通信和交互關系。
業(yè)務工作者為:服務員,收銀處,廚房,值臺服務員
業(yè)務實體為:菜單,點菜單
chapter4
4.1需求的類別有哪些?
答:需求可分為功能性需求和非功能性需求。
功能性需求規(guī)定了系統(tǒng)無需考慮物理約束而必須能夠執(zhí)行的動作,描述支持用戶目標、任務或活動的系統(tǒng)行為(功能或服務)。
非功能性需求是功能性需求之外的需求,包含質量和約束,它們僅僅說明系統(tǒng)或系統(tǒng)環(huán)境的屬性。
4.2怎么理解文中fredbrooks關于需求的那段話?
構建軟件系統(tǒng)最難的部分是確定要構建什么(即系統(tǒng)需求)。相比其他工作,如果這個工作做錯,會嚴重影響將產生的系統(tǒng),也更難在以后矯正。
答:需求工作對于整個軟件系統(tǒng)來說是非常重要的,它是實現(xiàn)和測試的先啟階段,需求建模解釋如何理清涉眾的請求及如何把這些請求轉化為一組需求工作產品,確定要建系統(tǒng)的范圍,提供系統(tǒng)必須做的詳細要求。此階段是后續(xù)工作以及整個系統(tǒng)的基礎和關鍵,一旦這個階段出現(xiàn)問題,將會直接影響到后續(xù)工作的正常順利進行,而如果想要在以后改,代價是非常大的,并且也難糾正。
4.3系統(tǒng)用例模型可以描述什么方面的需求?補充規(guī)約主要補充哪方面的需求?
答:系統(tǒng)用例模型可以描述設計軟件系統(tǒng)方面的`需求,參與者與軟件系統(tǒng)的交互,在系統(tǒng)用例說明中書寫足夠詳細的事件流。
補充歸約主要補充那些無法在用例中記錄的需求。包括:捕捉無用例歸約的功能性需求,捕捉系統(tǒng)資量,捕捉約束,捕捉符合性需求,捕捉文檔需求。
4.4什么是系統(tǒng)執(zhí)行者?如何尋找潛在的系統(tǒng)執(zhí)行者?
答:系統(tǒng)執(zhí)行者:是指與目標系統(tǒng)交換數(shù)據(jù)的任何對象,是在系統(tǒng)之外,透過系統(tǒng)邊界與系統(tǒng)進行有意義交互的任何事物。執(zhí)行者可以是用戶、外部硬件或其它系統(tǒng)。
滿足一個或多個上面這些范疇的任何個人、小組或事物有可能就是執(zhí)行者。
4.5如何理解系統(tǒng)執(zhí)行者與業(yè)務執(zhí)行者、業(yè)務工作者的關系?
答:業(yè)務執(zhí)行者是指某人或某物與業(yè)務進行交互時所擔任的角色,它是指在業(yè)務之外和業(yè)務交互的人、組織或事物。
業(yè)務工作者代表在業(yè)務中進行操作的人、軟件或硬件的抽象。它代表業(yè)務中的一個或一組角色。
系統(tǒng)執(zhí)行者:是指與目標系統(tǒng)交換數(shù)據(jù)的任何對象,是在系統(tǒng)之外,透過系統(tǒng)邊界與系統(tǒng)進行有意義交互的任何事物。執(zhí)行者可以是用戶、外部硬件或其它系統(tǒng)。
關系:系統(tǒng)執(zhí)行者是針對軟件系統(tǒng)來說明的,而業(yè)務執(zhí)行者和業(yè)務工作者是針對業(yè)務來說明的,系統(tǒng)執(zhí)行者和業(yè)務執(zhí)行者含義相似,只是所在的描述范疇不一樣。
4.6請分析用例中的包含關系和擴展關系的相似與區(qū)別?
答:相似:都是如果用例包含的一段行為片段可以用于其他用例,則將這段行為片段歸到“包含用例”或“擴展用例”中,形成一個新的用例,原始用例就成為基本用例,對“包含用例”和“擴展用例”分別有包含關系和擴展關系。
區(qū)別:(1)擴展用例是可選的,而包含用例不是可選的;(2)基本用例沒有擴展用例是可以完成的,但沒有包含用例則不能完成;(3)擴展用例的執(zhí)行是有條件的,而包含用例沒有;(4)擴展用例會改變基本用例的行為,而包含用例不會。
4.7簡單說明把用例組織到包中有什么好處。
答:用例包是用例、執(zhí)行者、關系、圖和其他包的集合,可以通過將用例模型分成更小的部分來結構化用例模型。這樣可以使得具有大量元素的用例模型中的用例結構化,同一包中的用例彼此之間都有某種關系,更加清楚明了,便于以后模型的分析和使用。
4.8用例詳細描述中有哪三種事件流,分別表示什么場景?
答:三種事件流:主事件流、分支事件流和異常事件流。
主事件流:在描述正常過程時列出執(zhí)行者和系統(tǒng)之間相互交互或對話的動作序列。當這種對話結束時,執(zhí)行者也達到了預期的目的。
分支事件流:也可促進成功地完成任務,但它們代表了任務的細節(jié)或用于完成任務的途徑的變化部分。
異常事件流:不符合用例流正?;蚧拘袨?,引起任務不能順利完成。
4.9什么是軟件需求規(guī)約(srs)?
答:軟件需求規(guī)約是分析任務的最終產物,通過建立完整的信息描述、詳細的功能和行為描述、性能需求和設計約束的說明、合適的驗收標準,給出對目標軟件的各種需求。
4.10如何理解界面原型在需求建模中作用?
答:可以處理模糊需求,開發(fā)者和用戶可充分通信,降低開發(fā)風險。
靜態(tài)界面原型:供分析人員與用戶進行進一步交流和溝通,通過這種可視化方法,使雙方逐步就明確系統(tǒng)需求達成共識。
交互式界面原型:便于用戶可以操作,展示實際系統(tǒng)效果。
4.11選擇題
1.如圖4.11-1所示.a1、a2和a3是什么?(單選題)(c)
(a)role
(b)actress
(c)actor
(d)user
2.如圖4.11-1中,下面哪個語句是正確的?(多選題)(bcd)(a)a3可以使用uc4與系統(tǒng)交互。
(b)al可以使用ucl和uc4與系統(tǒng)交互。(c)a3,al與a2不同。
(d)uc3是沒有步驟的抽象用例。
3.如圖4.11-1所示,下面哪個語句是正確的?(多選題)(cd)(a)uc5是uc4的補充部分。(b)uc4是uc5的可選部分。(c)uc1是沒有用的。
(d)uc2是uc4的可選部分。(e)uc4是uc2的補充部分。
4.12綜合案例分析-餐廳智能移動終端無線點菜系統(tǒng)需求
根據(jù)第3章的練習3.11綜合案例分析的業(yè)務描述,來分析點餐系統(tǒng)的需求。
傳送距離可達100米,室外傳送距離可送300米。根據(jù)案例的描述,請你完成下列任務:
1.建立無線點菜系統(tǒng)的用例模型(找出所有的系統(tǒng)actor和usecase);
用例模型
系統(tǒng)actor:服務員、客戶、經理
usecase:點菜服務、自助點菜、統(tǒng)計
2.對用例進行詳細描述,包括前置條件、后置條件,以及各事件流,并用泳道圖畫出用例對應的事件流。前置條件:
服務員有掌上電腦系統(tǒng),廚房與前臺有打印機,在傳輸距離之內后置條件:
打印機打印所點菜單事件流:主事件流:1.顧客點菜;
2.服務員用掌上電腦及菜單;3.廚房和前臺打印機打印菜單分支事件流:無
異常事件流:
步驟2后步驟3未接收,無法打印,返回步驟
2
3).打印菜單用例描述:用例名稱:打印菜單
用例描述:打印點菜內容參與者:打印機前置條件:點菜完成
后置條件:打印機打印菜單給后臺,廚房和前臺主事件流:1.系統(tǒng)發(fā)送點菜單至打印機
2.打印機接收菜單3.打印機打印菜單分支事件流:無異常事件流:無泳道圖:
chapter5
5.1如何理解分析與設計的聯(lián)系?
答:“分析”是指“做什么”,強調對問題的調研而不是如何確定解決方案,重點集中在需求和應用領域上;而“設計”指“怎么做”,強調的是問題的邏輯解決方案,即系統(tǒng)怎樣才能滿足需求,重點轉移了要產生軟件的結構上。但由于分析與設計是把用戶需求轉化為實現(xiàn)的橋梁,分析和設計自始至終可以用相同的技術和類似的表示方法,它們之間的界限很難劃清,且沒有太多意義。
5.2分析設計包括哪些工作流程?
答:分析和設計過程是一個不斷迭代優(yōu)化的過程。
包括:執(zhí)行體系結構合成;定義候選體系結構;優(yōu)化體系結構;分析行為;設計構件;設計數(shù)據(jù)庫;服務識別;服務規(guī)范。
5.3分析建模的元素分哪幾類?具體是什么?答:分析建模的元素分為四大類,分別是:(1)基于場景元素:
這類元素包括:用例文本、用例圖、活動圖和泳道圖等;(2)面向流的元素:
這類元素包括數(shù)據(jù)流圖、控制流圖、處理敘述等;(3)基于類的元素:
這類元素包括類圖、分析包、crc模型、通信圖等;(4)行為的元素:
這類元素包括狀態(tài)圖、順序圖等。
5.4分析模型的靜態(tài)模型的用途是什么?靜態(tài)模型的元素有哪些?
答:用途:通過分析,可以將業(yè)務需求模型和系統(tǒng)需求模型轉化為系統(tǒng)可以處理的對象模型,并給出對象的基本屬性和對象間相互關系。
分析模型中靜態(tài)模型主要的元素是基于類的元素,包括:分析包:模型中的包,表示層次結構。類:模型中的類,由包所擁有。關系:模型中的關系,由包所擁有。
圖:模型中的類圖、協(xié)作(通信)圖,由包所擁有。
5.5動態(tài)模型的類被分為哪三類?分別在系統(tǒng)中承擔什么職責?答:邊界類、控制類和實體類。
邊界類:是用來對系統(tǒng)環(huán)境及其內部工作之間的交互建模的類。這樣的交互涉及轉換和轉移事件,并注釋系統(tǒng)表示中的更改(例如界面)。
控制類:是用于對特定于一個或一些用例的控制行為建模的類。實體類:是用來對必須存儲的信息及關聯(lián)行為建模的類。
5.6按照設計模型的不同層次和功能,設計元素可以分哪些方面?
答:(1)體系結構元素;(2)構件級元素;(3)接口/界面元素:用戶界面、構件接口、系統(tǒng)接口;(4)數(shù)據(jù)元素:數(shù)據(jù)庫設計、數(shù)據(jù)結構設計;(5)部署級元素。
5.7軟件模式有哪三個層次?分別說明之。
答:一般地,軟件模式可劃分為三個層次:體系結構模式,設計模式和代碼模式。
體系結構模式:描述軟件系統(tǒng)里的基本的結構組織或綱要。體系結構模式提供一些事先定義好的子系統(tǒng),指定它們的責任,并給出把它們組織在一起的法則和指南。
設計模型:提供一種提煉子系統(tǒng)或軟件系統(tǒng)中的構件或者兩者之間關系的綱要設計。設計模型描述普遍存在的在相互通訊的構件中重復出現(xiàn)的結構,這種結構解決在一定的背景中的具有一般性的設計問題。
代碼模型:也稱“成例”、實現(xiàn)模式。是較低層次的模式,并與編程語言密切相關。代碼模型描述怎樣利用一個特定的編程語言的特點來實現(xiàn)一個構件的某些特定的方面或關系。
5.8什么是軟件體系結構?簡述軟件體系結構的設計重要性。
答:軟件體系結構:是具有一定形式的結構化元素,即構件的集合,包括處理構件、數(shù)據(jù)構件和連接構件。處理構件負責對數(shù)據(jù)進行加工,數(shù)據(jù)構件是被加工的信息,連接構件把體系結構的不同部分組組合連接起來。這一定義注重區(qū)分處理構件、數(shù)據(jù)構件和連接構件,這一方法在其他的定義和方法中基本上得到保持。
重要性:軟件體系結構設計是高階層的設計,定義了包(子系統(tǒng)),包括包之間的依賴關系和主要的通信機制。自然清晰和簡單的結構是目標,避免幾乎沒有依賴或雙向依賴。
5.9試說明軟件體系結構的演變過程。
答:(1)單機系統(tǒng):是指只需裝在一臺電腦上,同時只能一個用戶使用的系統(tǒng),沒有服務器概念,很多早期的軟件都是單機系統(tǒng),與分布式系統(tǒng)區(qū)別。
(2)客戶機/服務器(兩層)結構:由服務器提供應用(數(shù)據(jù))服務,多臺客戶機進行連接。
(3)瀏覽器/服務器(b/s)結構:在當前internet/intranet領域,“瀏覽器/服務器”結構是非常流行的客戶機/服務器結構。這種結構最大的優(yōu)點是:客戶機統(tǒng)一采用瀏覽器,這不僅讓用戶使用方便,而且使得客戶機不存在安裝維護問題。
(4)三層結構:三層結構的客戶機/服務器模型是一種先進的協(xié)同應用程序開發(fā)模型,不是物理上,而是邏輯上將客戶機/服務器系統(tǒng)中各種各樣的部件劃分為三“層”服務,它們共同組成一個應用程序,這三層服務包括:數(shù)據(jù)訪問層、業(yè)務邏輯層和表示層。
5.10如何理解體系結構風格和模式的本質?
答:體系結構風格:定義了結構組織模式的系統(tǒng)族,用來表達一組協(xié)作的約束,使得對公共約束的特征進行溝通變得更加容易,被用作一種進行抽象的方法,而不是代表一種個性化的設計。
體系結構模式:是對某類問題域給出的一套軟件結構的解決方案,描述了軟件系統(tǒng)基本的結構化組織方案,是處理特定問題的高效、成熟的模板。
5.11什么是軟件框架?與模式的區(qū)別是什么?
答:軟件框架:軟件開發(fā)過程中提取特定領域軟件的共性部分形成的體系結構,不同領域的軟件項目有著不同的框架模型。
區(qū)別:模式提供一種思想方法的指導,應用模式的指導,可以幫助設計人員做出一個優(yōu)良的設計方案,達到事半功倍的效果。但模式不體現(xiàn)為程序,如mvc是一種體系結構的模式,對于同一軟件體系結構,可以通過多種框架來實現(xiàn)。如struts是實現(xiàn)mvc模式的著名框架,但不是唯一的。
5.12rup的4+1視圖分別是什么?答:概括而言,rup的4+1視圖是:(1)邏輯視圖:設計的對象模型。
(2)進程視圖:捕捉設計的并發(fā)和同步特征。
(3)實現(xiàn)視圖:描述了在開發(fā)環(huán)境中軟件的靜態(tài)組織結構。
(4)部署視圖:描述了軟件到硬件的映射,反映了分布式特征。
(5)用例視圖:該視圖是其他視圖的冗余(因此“+1”)。它包含用例和場景。
5.13什么是設計模式?
答:設計模式:是一套被反復使用、多數(shù)人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。毫無疑問,設計模式于己于他人于系統(tǒng)都是多贏的,設計模式使代碼編制真正工程化,設計模式是軟件工程的基石,如同大廈的一塊塊磚石一樣。
5.14簡要說明類的詳細設計分哪幾步來實現(xiàn)?
答:(1)使用設計模式和機制:使用適合設計的類或功能、符合項目設計指南的設計模式和機制。
(2)創(chuàng)建初始設計類:為指定為此任務輸入的分析類創(chuàng)建一個或多個初始設計類,并指定跟蹤依賴關系。包括設計邊界類、設計實體類和設計控制類。
(3)定義屬性:類的屬性為類實例提供信息存儲,并經常用于代表類實例的狀態(tài)。類本身保持的任何信息都是通過其屬性完成的。
(4)確定持久類:需要在永久介質上存儲其狀態(tài)的類被稱為持久類。
(5)定義操作:類的操作是類的行為特征或動態(tài)特征,表示類提供的服務。(6)定義方法:方法制定操作的實現(xiàn)。
(7)定義狀態(tài):對于一些操作,操作的行為取決于接受者對象所處的狀態(tài)。
5.15什么是實體類與持久類?說說兩者之間區(qū)別與聯(lián)系。
答:實體類:在分析期間,代表被操縱的信息單元。它們往往是被動的、持久的,并且可能被確定并與持久性分析機制相關聯(lián)。
持久類:需要在永久介質上存儲其狀態(tài)的類。
區(qū)別和聯(lián)系:持久類是針對于hibernate對數(shù)據(jù)庫的映射來說的,持久類=實體類+xml或注解配置;而實體類就是一個javabean類,有屬性,get、set方法,以及一些簡單處理的方法。
5.16開發(fā)物理數(shù)據(jù)庫設計的詳細步驟有哪些?
答:(1)定義域;(2)創(chuàng)建初始物理數(shù)據(jù)庫設計元素;(3)定義引用表;(4)創(chuàng)建主鍵和唯一性約束;(5)定義數(shù)據(jù)和參照完整性實現(xiàn)規(guī)則;(6)將數(shù)據(jù)庫設計反向規(guī)范化來為性能進行優(yōu)化;(7)優(yōu)化數(shù)據(jù)訪問;(8)定義存儲器特征;(9)設計存儲過程來將類行為分發(fā)給數(shù)據(jù)庫。
5.17進行界面設計時分析用戶的特征有什么作用?
要。
與系統(tǒng)分析人員協(xié)作,確定是否需要對用戶(主要的執(zhí)行者)描述做出更改,來反映特征描述。
5.18選擇題
(c)interfaceprojectscope
5.19綜合案例分析-餐廳pda無線點菜系統(tǒng)分析與設計
根據(jù)第4章餐廳pda無線點菜系統(tǒng)的需求,請分析設計相關系統(tǒng)。包括1.找出主要的概念實體,畫出實體類圖。
答:1.主要的概念實體:客人,點菜單,點菜記錄,打印機,服務員,菜品分類
實體類圖:
2.
3.實體類操作:1)客人:輸入已點菜品
2)點菜記錄:記錄已點菜品();確認點菜記錄();發(fā)送點菜記錄()3)打印機:打印點菜記錄()
類圖:
4.界面:
5.數(shù)據(jù)庫表結構:
.01.05
學習軟件工程的心得體會篇五
這門課的作用就是,在你真正見過豬以前,先教你怎么吃豬肉,怎么騎著豬跑。
軟件工程導論所講述的內容,其實并沒有很多人想象中的那么重要。就像是一本教你如何游泳的書。確實是一種非常重要的技能,但實際上你如果不看書,在水里撲騰幾天也就會了,只是姿勢不那么標準,游不了那么快。學會游泳非常重要,但其實并不是說你要學會這本書有多么重要。
他的內容大部分都是一些總結出來的經驗和方法。如果沒有真正的試驗過,很難有切身的體會。比如說你如果沒經歷過整天用zip壓縮當天代碼保存的工作,就不會知道版本控制有多么重要。還有那些設計模式。比如singleton,你也許會說,用個全局變量,只生成一個對象不就可以了。自己寫小項目固然可以,但軟件工程作為一種“工程”,是很難一個人包攬全部工作的。你要多項目之間配合,要多人維護同一部分代碼。你要有一種確定的手段,來保證你這個類只有一個對象。所以把它提煉出來,總結成一種模式。
至于學習上,除了完成規(guī)定的學習目標外。我認為學過這門課,至少應該了解一個項目中會有哪些分工,大概是如何運行的。各種設計模式的話,了解一下就可以了。只要你以后在工作中,能記起來有這么個東西,這種情況下,某種模式可能比較合適,具體細節(jié)到時候再查就行了。
這門課自己也說,是門導論而已。介紹一下你以后可能遇到的坑,以后再遇到那個填那個好了。
學習軟件工程的心得體會篇六
在前不久的幾周里,剛剛結束了“軟件工程導論”課程的學習。這門課程帶給了我很大的啟發(fā),讓我對軟件工程這一新興學科有了全面的,深刻的認識。盧葦老師精彩的講演,同學們積極地提問與回答,都帶給了我深刻的認識。下面是我在學完該課程后的一些啟發(fā)。
一、我對軟件行業(yè)的認識
眾所周知,計算機已經是現(xiàn)代人生活的必需品。無論是工作、學習、生活、娛樂,我們的生活每時每刻都能見到它的蹤影。大到航天飛機的研制,原子彈、氫彈的引爆,笑道一個小小的電子表,都需要會軟件會變成的人來研制它,讓其工作。所以,伴隨著計算機而生的的潛在市場是十分巨大的,無數(shù)因此成功的公司便是印證,無論是喬布斯的“蘋果”,還是比爾蓋茨的微軟,亦或是馬克·扎克伯克的facebook,都獲得了世人的肯定。他們的成功被人稱道,但是不可否認的是他們的成功是建立在如此巨大的市場空間上的。所以,首先軟件行業(yè)有著充足的市場。
其次是我國的軟件力量。我們國家面臨著一個良好的社會的環(huán)境,社會安定,政府穩(wěn)定,特別是當前經濟發(fā)展迅速,法制建設不斷完善,高新技術領域突飛猛進。但是由于法律制度不完善,并且從業(yè)人員普遍創(chuàng)新的意識不夠完善等等多方面的因素,我國的市場并非特別樂觀。我們都能清晰地看到許許多多成功的企業(yè)都未做到完全的創(chuàng)新,如“淘寶網”便是借鑒“亞馬遜”網站,而“人人網”也與facebook有極大的相似度,而騰訊更是眾所周知的山寨之王。但是換個角度看看,這正說明,我國的軟件具有極大地潛力,在未來的幾年,幾十年之間,我國的軟件行業(yè)必會重新洗牌,涌現(xiàn)出強大的軟件企業(yè),而我們,也一定有機會實現(xiàn)自己的軟件夢。
第三是我國軟件行業(yè)的人員構成。我國的軟件行業(yè)目前主要還是中低素質人員構成。打不風程序員,他們沒有系統(tǒng)的、完整的學習整個軟件工程的知識,僅僅靠自學或者短期學習,掌握到部分的、片面的知識就已經進入從業(yè)階段,這樣的學業(yè)使他們不能夠勝任自己的工作。而高端的軟件從業(yè)人員相比較而言是相對稀少的,所以我國的軟件行業(yè)并未真正崛起。我們急需那樣的高端人才,而這些人才,便是現(xiàn)在我們學院所努力培養(yǎng)的。
二、我對我們學院軟件工程專業(yè)的認識
it行業(yè)是隨著電子信息產業(yè)的發(fā)展而逐步發(fā)展起來的,并且日益得到完善。it行業(yè)的平穩(wěn)增長必然會帶來軟件工程師需求的增長,目前隨著it產品出現(xiàn)的技術融合,市場需求的巨大和專業(yè)人才的缺乏,由此可知,軟件行業(yè)還是比較樂觀的。但軟件行業(yè)需要的也是復合型人才,軟件工程師需要掌握更多的編程語言。
北京交通大學軟件學院是經教育部批準的國家示范性軟件學院。學院成立于2月,是為適應我國經濟結構戰(zhàn)略性調整的要求和軟件產業(yè)發(fā)展對人才的迫切需求,實現(xiàn)我國軟件人才培養(yǎng)的跨越式發(fā)展而建立的。學院充分發(fā)揮學校的計算機學科優(yōu)勢和it企業(yè)資源綜合優(yōu)勢,利用已有的辦學與市場資源,與國內外著名的it企業(yè)開展合作,在管理體制、運行機制、教育思想與理念、人才培養(yǎng)方案與課程體系、教學模式與方法、產學研合作等領域大膽創(chuàng)新,已探索出一條有效地培養(yǎng)“國際化、工業(yè)化、高層次、復合型”軟件人才的辦學之路。
作為教育部批準的全國36所示范性軟件學院和學校教育體制改革與辦學機制創(chuàng)新的試驗田,北交大軟件學院承載著學校的殷切期望。作為國家重要的軟件人才培養(yǎng)基地,在管理體制、運行機制、教育思想與理念、人才培養(yǎng)方案與課程體系、教學模式與方法、產學研合作等領域大膽創(chuàng)新,探索出一條有效地培養(yǎng)“國際化、工業(yè)化、高層次”軟件人才的辦學之路,推出了“2+1+1”人才培養(yǎng)模式。作為一名北京交通大學軟件學院的靴子,我感到十分自豪。
三、我未來的職業(yè)規(guī)劃
在學習完院長的導論課后,我對自己的直接規(guī)劃產生了很深的想法并且做出了很大的改變。首先,我一定要努力完成大學的學業(yè)。在大學一年級,我要認真地完成專業(yè)課程,努力學好c語言和java的課程,同時擴大自己的知識面,多多學習一些有關軟件方面的知識,不斷地充實自己。
在大學
二、三年級,我要注重學習java基礎知識、多學習項目開發(fā)經驗,了解項目開發(fā)業(yè)務知識,并在學習中掌握db2數(shù)據(jù)庫的sql語句的復雜查詢以及管理操作,并深入學習了解struts、hibernate、spring相關操作。同時在大三結束之前,我要至少了解并熟悉2門編程語言,、c++、php;并學習掌握noracle、ms-sql數(shù)據(jù)庫管理操作;掌握軟件開發(fā)各個階段的基本技能,如市場分析,可行性分析,需求分析,結構設計,詳細設計,軟件測試等。如果有時間的話,還要學習管理方面的相關知識,由技術型向管理型方面的轉移。我要多多鍛煉自己的能力,不論待人接物,還是進行演練,都要積極參見,努力爭取較大的提升。
在大學四年級,學校會安排比較多的實習,到那時候,就要好好工作,發(fā)揮自己前三年學到的知識,努力完成自己的畢業(yè)實習,最后,優(yōu)秀地完成自己的大學學業(yè)。如果能夠,我將選擇繼續(xù)深造,可以通過保研,考研等等許多途徑,努力獲得研究生的資格。同時,就業(yè)也是一個不錯的選擇,但是不論考研還是工作,我都要一如既往地補充自己,不斷提高自己的專業(yè)水平。在工作時,我會優(yōu)先選擇私人的,創(chuàng)意性比較強的公司,從中積累經驗,并且努力奮斗,成為復合型人才,我便可憑此進入大公司或者幫助自己的公司變得更加強大和成功,最后成為it行業(yè)中優(yōu)秀的一員。
四、總結
盧葦教授的“軟件工程導論”真的讓我獲益良多,對于軟件工程專業(yè)有了深刻的了解,對自己以后的道路的安排也有了深刻的認識。上課的日子總是很快,不知不覺中遍結了課,我感到如夢初醒,因為我們才敲開軟件知識的大門。路漫漫其修遠兮,吾將上下而求索。不經歷風雨怎能見彩虹。我要時刻保持一顆清醒的頭腦,隨時為自己的目標而奮斗。其實,每個人心中都有一幅畫,描述著理想、信念、追求、抱負;每個人心中都有一片森林,承載著鳥語花香的甜蜜、陰森恐懼的彷徨。一個人,若要獲得成功,必須拿出勇氣,付出努力、拼搏、奮斗、成功。機遇不同情眼淚的憂傷、不相信頹廢的絕望,只期待愛打拼、時刻準備著的人。
學習軟件工程的心得體會篇七
軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,它包括程序、相關數(shù)據(jù)及其說明文檔。軟件工程(softwareengineering,簡稱為se)是針對軟件這一具有特殊性質的產品的工程化方法。se涵蓋了軟件生命周期的所有階段,并提供了一整套工程化的方法,來指導軟件人員的工作。任何事物都是從無到有的,軟件當然也不例外。上世紀中期,軟件產業(yè)從零開始起步,經過半個多世紀的發(fā)展,其大致經歷的3個階段:程序設計階段、軟件設計階段和軟件工程時代,現(xiàn)已成為推動人類社會發(fā)展的龍頭產業(yè),隨著信息化時代的發(fā)展,軟件對人類社會也將越看來越重要。人們對軟件的認識自然經歷了一個由淺入深的過程,在得到巨大需求的同時,也遇到了一系列嚴重問題,即軟件危機。所謂軟件危機,是指在計算機軟件的開發(fā)和維護過程中所遇到的一些嚴重問題,其實質是軟件產品的供應趕不上需求的增長。概括的說包含兩方面的問題:一、如何開發(fā)軟件,以滿足不斷增長,日趨復雜的要求;二、如何維護數(shù)量不斷膨脹的軟件產品。為研究和解決軟件危機,一門新興的學科軟件工程,應運而生。
軟件工程的概念是為了有效地控制軟件危機的發(fā)生而被提出來的,它的中心目標就是把軟件作為一種物理的工業(yè)產品來開發(fā),要求“采用工程化的原理與方法對軟件進行計劃、開發(fā)和維護”,它的主要對象是大型軟件,它的最終目的是擺脫手工生產軟件的現(xiàn)狀,逐步實現(xiàn)軟件開發(fā)和維護的自動化。軟件工程的概念自提出來后,經過幾十年的發(fā)展,雖然軟件危機沒有得到徹底的解決,但在軟件開發(fā)方法和技術方面已經有了很大的進步,提出了軟件工程知識體系、軟件工程三段論、軟件工程生存期模型、服用原則等等。
軟件開發(fā)過程大致經過7個階段:可行性分析、需求分析、概要設計、詳細設計、編碼、測試、提交與維護。接下來逐一分析本人見解:
一、可行性分析:顧名思義,就是看項目究竟“能不能做”。有3個方面:技術可行性、經濟可行性和操作可行性。要確定項目,首先要客觀的、科學的了解項目的規(guī)模、難度和時間限制,才可以確定應該投入多少人力、物力和財力去做這個項目,必須準確的估計項目的規(guī)模與難度??错椖渴欠裼袃r值去做,如果沒有價值,就放棄;如果有價值,就要看目前的資源是否能滿足項目的開發(fā)。如果項目有價值,且有必需的資源,那么就可以確定能做這個項目了。
2、通過什么方式去了解:直接與客戶交談;有些需求客戶講不清楚,分析人員又猜不透,這是就要請教行家。需求分析是非常重要的階段,如果做不好的話,后果很麻煩。
三、概要設計:解決“怎么做”的問題。將需求描述的“做什么”問題變?yōu)橐粋€實施方案的創(chuàng)造性過程,使得整個項目在邏輯上和物理上能夠得意實現(xiàn)。概要設計是第一個開發(fā)活動,也是最重要的活動,是軟件項目實現(xiàn)的關鍵階段。設計質量的高低直接決定了軟件項目的成敗,缺乏或者沒有軟件設計的過程會產生一個不穩(wěn)定的、甚至是失敗的軟件系統(tǒng)。一個良好的軟件設計是進行快速軟件開發(fā)的根本,沒有良好的設計,會將時間花在不斷的調試上,無法添加新功能,修改時間越來越長,隨著給程序打上一個有一個的補丁,新的功能需要更多的代碼實現(xiàn),就變成一個惡性循環(huán)了。概要設計是軟件設計級別中的高級設計,是從需求出發(fā),描述了總體上系統(tǒng)架構應該包含的要素。概要設計盡可能模塊化,因此描述了各個模塊之間的關聯(lián),主要是根據(jù)需求規(guī)格或規(guī)格定義,合理、有效地實現(xiàn)產品規(guī)格中定義的各項需求,完成軟件模塊的劃分并描述模塊之間的關系,并不斷分解系統(tǒng)模塊,從高層分解到低層分解。它注重框架設計、總體結構設計、數(shù)據(jù)庫設計、接口設計、網絡環(huán)境設計等,將產品分割成一些可以獨立設計和實現(xiàn)的部分并保證各個部分可以和諧的工作。此過程中畫數(shù)據(jù)流圖、ipo圖、e-r圖、界面設計等。
出程序的詳細規(guī)格說明,這種規(guī)格說明類似于其他工程領域中工程師經常使用的工程藍圖,程序員根據(jù)其中所包含的必要的細節(jié)寫出實際的程序代碼。用另一種方式說就是,詳細設計是將概要設計的框架內容具體化、明細化,將概要設計轉化為可以操作的軟件模型,但在實際項目進行過程中,依據(jù)項目的具體情況和項目要求,這個過程可能可以省略(邏輯上沒有省略,表現(xiàn)在概要設計階段或者編碼階段),直接按照概要設計進行編碼;不過,個人認為最好有,有詳細設計可以更好的保證編碼順利的進行,可以預先掃清編碼過程中的障礙,提高代碼的質量和編碼的效率。主要包括模塊描述、算法描述、數(shù)據(jù)描述,可以采用圖形、表格或者文字描述等方式表達出來。
代碼的時候,更不要錯過重構,另外,重構可以和設計互補。還有一點值得注意,要在必要的時候部署編碼文檔。
六、測試:看軟件是否符合標準。軟件編碼完成之后,將軟件提交給用戶之前,需要對軟件進行測試,這是保證軟件產品質量的一個重要標準,也是評估產品質量的主要手段。軟件測試是從軟件工程中演化出來的一個分支,有著非常廣泛的內容,并且隨著軟件產業(yè)的發(fā)展,它已經變得越來越重要。軟件與生俱來就可能存在缺陷,為了防止和減少這些可能存在的缺陷,進行軟件測試是有必要的,測試是最有效的的排錯和防止缺陷和故障的手段。最原始的測試莫過于直接運行軟件了,后來測試手段逐漸多樣化。測試手段有靜態(tài)測試、動態(tài)測試面向對象的測試、自動化測試等等之分。靜態(tài)測試或稱靜態(tài)分析是指一種不通過執(zhí)行程序來進行測試的一種技術,主要是檢查軟件的表示和描述是否一致,覆蓋程序的編碼格式、程序語法、檢查獨立語句的結構和使用等,主要包括代碼檢查、靜態(tài)結構分析、代碼質量等等,可以通過人工進行,亦可借助工具(如:語法分析器)自動進行。動態(tài)測試是運行被測試的程序,通過輸入測試用例,對其運行情況進行分析,以達到檢測的目的,顯然動態(tài)測試封像我們通常意義上的“測試”。動態(tài)測試主要包括白盒測試、黑盒測試、灰盒測試(介于黑盒和白盒之間)。其他測試不再一一介紹。
打水漂了。為了保證成功地將我們開發(fā)的軟件提交給用戶,我們需要對用戶進行培訓,同時提交必要的文檔及用戶手冊軟件。維護就不用多說了,就是售后服務了。維護需要分析人員、編碼人員和設計人員等角色的參與,有糾錯行維護、適應性維護、完善性維護、預防性維護等。維護后,要寫軟件維護過程文檔,至少提交一個軟件維護記錄。以上是軟件工程及其幾個階段的介紹,知道怎樣開發(fā)軟件只是軟件工程的一部分,搞好團隊合作也是很重要的。項目是一個很大的工程,需要一個團隊的統(tǒng)籌規(guī)劃,團結協(xié)作,集思廣益,舉一反三,才能夠按預期完成。
學習軟件工程的心得體會篇八
我們沒有進行過系統(tǒng)化軟件設計的教育和學習,對如何進行軟件的開發(fā)基本上就是想什么寫什么。根本沒有過系統(tǒng)化的設計。比如需求分析,可行性研究等。更不知道用什么模型來設計軟件。這在我們以后的工作中是完全不行的,沒有系統(tǒng)化的設計,是不可能滿足客戶的需求的。
胡老師讓我們分組進行軟件互換的形式來進行軟件的修改。其實胡老師就是想讓我們了解以后工作中,軟件是如何設計的和制作的。對于以前的編程,我們只能按照自己的想法,想一步做一步。根本沒有系統(tǒng)化的設計。通過對軟件工程導論這門課程的學習,一遍學習一遍實驗,實踐與理論相結合。開始其實我根本不理解各種圖的作用,覺得它們根本沒有用,就是照貓畫虎,沒有任何的實際意義。但是通過后面的學習和理解,對他們有了獨特的理解和想法。比如對uml來說。它是一種標準化交流的語言,它可以讓開發(fā)人員與客戶之間輕松的交流。用圖的形式向客戶展示軟件設計的流程,從中傳遞信息。簡單的說就是客戶和設計人員交流的手段。
這學習,不管是實驗小組的實驗還是老師您要求的程序,基本都是我一個人做的,所以對各種圖還是比較了解和掌握的。雖然對實驗報告的制作感覺到十分的吃力,工作量很大,但是還是通過幾個晚上的專心學習和制作,最后還是完成了。但是好多圖畫的還是很有問題,沒有真正的完全理解和掌握。但是在后面的學習和復習中,有了更正。
下面我對實驗進行一下總結。首先是實驗一結構化分析和設計,主要理解dfd圖,數(shù)據(jù)字典,erd圖和問題描述進行設計和學習。dfd圖主要分為三個方面,數(shù)據(jù)的源點,數(shù)據(jù)流和數(shù)據(jù)存儲。它將信息流和數(shù)據(jù)從輸入移動到輸出的工程中所經受的變化。簡單的說就是主體,動作和數(shù)據(jù)單元的問題。接下來是數(shù)據(jù)字典,主要進行軟件操作單元的數(shù)據(jù)定義,格式化和功能說明。然后就是erd圖,根據(jù)短信系統(tǒng)的問題描述,可得到軟件實體,從而得到此圖。其次是實驗二和三面向對象分析和設計。主要進行用例圖,場景描述,初始化類圖,協(xié)作圖的制作。先是從需求到業(yè)務用例圖,根據(jù)客戶需求(也就是我們軟件的需求)畫出用例圖。它的作用其實就是描述該實現(xiàn)什么業(yè)務或者說是功能。接下來就是場景描述,簡單來說就是軟件實際的操作的某個步驟的具體說明。跟著就是初始化類圖,重要作用就是顯示系統(tǒng)有哪些實體,實體的具體操作,實體間的關系。然后就是協(xié)作圖,主要作用是針對某個軟件的功能,進行交互過程的解釋,簡單來說就是具體業(yè)務的具體操作,而且是所有涉及到的操作。動態(tài)模型和靜態(tài)模型的建立,在面向對象的系統(tǒng)中,業(yè)務流程表現(xiàn)在為對象之間的交互,對動態(tài)模型和靜態(tài)模型分析和總結,從而產生順序圖。面向對象設計就是對實體類進行定義和說明,所有的類都是跟軟件里的類相對應。就是真正的類。最后就是實驗三編碼和測試,實驗主要對測試和編碼進行總結。從中總結制作過程和測試過程。
實驗對我來說可能很辛苦,但是我從中學到了很多。了解了很多圖的作用,也了解了以后工作的具體流程,這對我們以后的實際工作提供很多幫助。對我來說辛苦著收獲著快樂著。跟您的交流中也學到了很多知識??傊液軡M足。
學習軟件工程的心得體會篇九
按照軟件工程的軟件過程來說:
1需求分析產生了軟件功能規(guī)格說明書,需要確定用戶對軟件的需求,要作到明確、無歧義。不涉及具體實現(xiàn)方法。用戶能看得明白,開發(fā)人員也可據(jù)此進行下面的工作(概要設計)。
2.概要設計產生了軟件概要設計說明書,說明系統(tǒng)模塊劃分、選擇的技術路線等,整體說明軟件的實現(xiàn)思路。并且需要指出關鍵技術難點等。
在進行需求分析時,我們既是開發(fā)者又是用戶,本系統(tǒng)的業(yè)務流程與業(yè)務分類的定義比較難。我們的團隊進行了研討,還充分運用了身邊的各種資源,大量的查找了很多網絡上關于工資系統(tǒng)的資料。通過資料的進行討論、根據(jù)我們的課題進行分析,最后確定了用戶的需求為:
1.本系統(tǒng)在高校應用后高校工資管理方面的教職工將減少至目前的50%左右;
2.本系統(tǒng)在高校應用后將在高校各方面的成本將會有所降低;
3.本系統(tǒng)在高校應用后將教職工的工資達到完全透明,計算更加精確教職工因糾紛事件減少到1%。 根據(jù)分析將系統(tǒng)的功能從一般教職工與系統(tǒng)管理者兩個角度將功能劃分為7個模塊,當然介于我們的知識有限,有的功能沒有實現(xiàn):員工工資與考勤直接掛鉤,但本系統(tǒng)無法與員工考勤系統(tǒng)掛鉤相連,由于涉及此系統(tǒng)時該高校并沒有員工考勤系統(tǒng),而且我們在最初進行商量的時候也沒有提出該要求。
從概要階段開發(fā)正式進入軟件的實際開發(fā)階段,本階段完成系統(tǒng)的大致設計并明確系統(tǒng)的數(shù)據(jù)結構與軟件結構。在軟件設計階段主要是把一個軟件需求轉化為軟件表示的過程,這種表示只是描繪出軟件的總的概貌。由概要設計說產生大的概要說明書的目的就是進一步細化軟件設計階段得出的軟件總體概貌,把它加工成在程序細節(jié)上非常接近于源程序的軟件表示。
在本階段主要涉及處理流程的設計、總體結構和模塊外部設計、功能分配。在接口設計上有用戶接口、外部接口、內部接口;數(shù)據(jù)結構設計有邏輯結構設計、物理結構設計等等。在接口設計時參考了大量的資料。
最后就是編寫文檔——軟件需求說明書、概要分析說明書。
而文檔的作用在于:一是可以幫助整理思路。把要完成的目標,系統(tǒng)的結構,每一個模塊的功能等整理一下,然后分門別類地寫下來,這樣在開發(fā)的過程中,就有據(jù)可依,在需要回過頭來修改設計的時候,也有證可考。二是便于交流。三是可以作為以后維護時的參考資料。
我們進行了為期一周的課程設計。通過這次課程設計,我拓寬了知識面,鍛煉了能力,綜合素質得到較大提高。安排課程設計的基本目的,在于通過理論與實際的結合、人與人的溝通,進一步提高思想覺悟。尤其是觀察、分析和解決問題的實際工作能力,以便培養(yǎng)成為能夠主動適應社會主義現(xiàn)代化建設需要的高素質的復合型人才。作為整個學習體系的有機組成部分,課程設計雖然安排在一周進行,但并不具有絕對獨立的意義。它的一個重要功能,在于運用學習成果,檢驗學習成果。運用學習成果,把課堂上學到的系統(tǒng)化的理論知識,嘗試性地應用于實際設計工作,并從理論的高度對設計工作的現(xiàn)代化提出一些有針對性的建議和設想。檢驗學習成果,看一看課堂學習與實際工作到底有多大距離,并通過綜合分析,找出學習中存在的不足,以便為完善學習計劃,改變學習內容與方法提供實踐依據(jù)。對我們信息管理與信息系統(tǒng)專業(yè)的學生來說,實際能力的培養(yǎng)至關重要,而這種實際能力的培養(yǎng)單靠課堂教學是遠遠不夠的,必須從課堂走向實踐。這也是一次預演和準備畢業(yè)設計工作。通過課程設計,讓我們找出自身狀況與實際需要的差距,并在以后的學習期間及時補充相關知識,為求職與正式工作做好充分的知識、能力準備,從而縮短從校園走向社會的心理轉型期。課程設計促進了我系人才培養(yǎng)計劃的完善和課程設置的調整。
在一個星期的課程設計之后,我們普遍感到不僅實際動手能力有所提高,更重要的是通過對軟件開發(fā)流程的了解,進一步激發(fā)了我們對專業(yè)知識的興趣,并能夠結合實際存在的問題在專業(yè)領域內進行更深入的學習。
軟件工程課程雖已結束,但我對于軟件工程的學習才剛剛開始。我體會到項目管理的重要性,隨著軟件規(guī)模、復雜度的不斷增加,項目開發(fā)中更多的是協(xié)作、管理和控制。我學習到很多一般性的方法,例如:需求獲取、模塊化、計劃等等。同時,我也認識到使用計算機解決實際問題的復雜性,人們認識表達的過程不斷反復、逐步深化,軟件工程方法要提供給程序員們一種更加有效的對客觀世界問題域進行形式化的過程方法。
學習軟件工程的心得體會篇十
軟件工程心得體會未接觸軟件工程之前一直都很想學這門課程,因為覺得這門課很牛,是那些有工程師稱號的高手才擺弄的東西。學了一個學期的軟件工程課,終于知道了個軟件工程的大概。學的時候總覺得很抽象,理解起來好像不難,但總是摸不著頭腦一種很茫然的感覺。曾經以為程序就是軟件,軟件就是程序。學習這門課程第一個收獲是,知道了二者的不同之處。以前做過的一些小型的軟件比如加密軟件,我也只是在程序旁邊附上一個軟件的說明,看來已經很接近作坊了。不過大的項目沒有接觸過,用軟件工程的方法還是第一次。我想也是程序的不斷復雜化導致了軟件危機的發(fā)生,使得人們不得不探索新的解決方法。
經過倪老師的講解,理解了軟件工程,就是一套用于軟件的團隊開發(fā),以提高軟件質量和程序員工作效率為目的的規(guī)范。其核心就是,對于軟件開發(fā)的5個重要組成部分:需求分析,設計,編碼,調試,維護,如何組織這5個部分的工作,以及如何完成每一個工作。吾生也有涯,而知也無涯,學習永無止境。起初,對軟件工程處于一知半解的狀態(tài),分工比較混亂。
在劃分模塊后明確了各自分工,漸漸形成良性循環(huán)。在學習過程中,知道了團隊合作十分重要,爭議固然存在,但通過討論、協(xié)商,群策群力,在不斷磨合中能夠達成一致與默契。團隊成員中能力各有高下,互相尊重,各取所長,不宜妄自菲薄。組長多加協(xié)調,組員積極配合,才能合作愉快。學習能力體現(xiàn)在能盡快接受新的知識,順應變化,學為所用。
上《軟件工程導論》這門課,我的收獲大概如下:我們?yōu)槭裁葱枰浖こ棠?上面已經給出了一些原因。專業(yè)點講,軟件工程最終是為了實現(xiàn)“軟件制造業(yè)”的社會化,工業(yè)化大生產,提高其勞動生產效率。只有如此,軟件業(yè)才能實現(xiàn)社會化,工業(yè)化大生產,才能“做大做強”。沒有管理的設計是失敗和混亂的設計,沒有設計指導的編程是無序的忙碌的。根據(jù)開發(fā)的軟件的規(guī)模,應該適當程度的運用軟件工程化的思想,需要靈活,畢竟我們開發(fā)的軟件大多數(shù)是中小型的,大型的并不多見(我是這么認為的)。但只要涉及人員間的交流和溝通,或多或少都要需要軟件工程才能更有效率,工作成果更穩(wěn)定。
其實開發(fā)軟件,就像是解決一個邏輯問題。想想自己平時是怎樣寫程序的。首先是要有一個想法,即我寫的這個程序是要干什么的;然后就是對要實現(xiàn)的核心功能大概構思一種或多種實現(xiàn)方法,并從中選出一種自認為是較好的;接下來就是將涉及的各種主要或次要功能分成各個模塊;最后就是分模塊來編碼和debug。在我看來,除了第一步外,其余的步驟應該是一個循環(huán)的過程。在編碼的過程中,你總是需要不斷地回過頭來修改原先的模塊設計,甚至最初選定的實現(xiàn)算法。具體到每一步的工作要怎樣完成,是非常靈活的,只要把握住大體的方向就行。在進行分析,設計,編碼,調試,維護這幾部分的工作的時候,最核心的就是文檔的編寫。
1.可行性分析就是關于當前項目能不能干的分析結果。
2.項目描述這是在決定立項以后,對當前項目的一份扼要說明。
3.需求分析就是對客戶要求的功能的定義。
4.軟件設計這就是對程序的每一個模塊的詳細設計的說明文檔。
5.開發(fā)日志我一直都認為這是文檔中最有趣的部分。開發(fā)日志相當于編碼階段的文檔,它的形式可以很隨意,主要是記錄一些在寫程序時突然萌發(fā)的靈感,或對代碼的一些微小的修改,或對程序結構的一些微小變動等,還要對上述這些修改變動作些說明。
6.測試分析用于指出程序存在或潛在的缺陷和錯誤,以及程序性能的數(shù)字描述。
學習軟件工程的心得體會篇十一
軟件工程及未來發(fā)展趨勢心得體會軟件工程是一門研究用工程方法構建和維護有效的、實用的和高質量的軟件的學科。它的成果是為軟件設計和開發(fā)人員提供思想方法和工具。
商業(yè)形態(tài)從最開始的硬件輔助到代碼核心競爭力到后來的服務階段。30多年來,隨著軟件工程的研究和實踐取得了跨越性的進步,it和制造業(yè)以及各種行業(yè)的結合,進入軟件定義時代的階段。同時獲得了一些具有里程碑意義的進展,盡管目前離徹底解決“軟件危機”還有一些差距,但軟件工程的方法對軟件產業(yè)的發(fā)展還是起到了很大的推動作用。軟件產業(yè)也邁入了高質量發(fā)展的階段,并且有一定的成績。
20xx年中國軟件產業(yè)年會的召開以“軟件定義的時代-數(shù)字、融合與生態(tài)”為主題,中國工程院院士孫家廣在主旨演講中表示,“軟件是信息技術之魂,經濟轉型之擎、網絡安全之盾、數(shù)字社會之基、大國博弈之焦、高質量發(fā)展的抓手,軟件賦能、賦值、賦智作用日益明顯?!彼硎?,軟件開源是我國成為軟件強國的根本舉措和保障。中國工程院院士廖湘科也在報告中提出,工業(yè)軟件要向建設信息技術和先進制造技術深度融合、控制管理整個生產模式的基礎軟件平臺發(fā)展。在真實世界感知的數(shù)據(jù)進入到虛擬世界,進行關聯(lián)和跨域關聯(lián)的分析,在進行智能處理之后,再反饋到真實世界。運行平臺基于云端的硬件結構,在未來設計軟件的過程中,我們要考慮的是不再針對一臺服務器設計軟件,在設計的時候需要考慮云端,在這樣的前提下去設計軟件??偟膩碚f,整個軟件體系就是一個生態(tài)鏈,市場通過軟件平臺來控制,所有的技術和商業(yè)模式的競爭都堆積在it軟件平臺,各個行業(yè)的it從業(yè)人員可以協(xié)同,硬件追求越來越快,軟件追求規(guī)模。生態(tài)鏈需要協(xié)同創(chuàng)新,學科交叉。軟件是靈魂的載體,它具體應用在知識領域在生活智能方面的應用。東軟集團股份有限公司董事長兼ceo劉積仁作題為“軟件的賦能時代”,表明,企業(yè)也是軟件的載體。軟件在今后具有無限的發(fā)展空間,我們應該為從事這個行業(yè)而感到幸運。軟件在今后的發(fā)展中不僅僅表現(xiàn)的是licenseip的價值,軟件可以承載一個嶄新的創(chuàng)業(yè)的公司創(chuàng)造資本市場的奇跡。核心就是軟件表達的方式從我們單純賣解決方案、賣服務,軟件從我們過去依賴于軟件工程師,最后我們要成為在新經濟的發(fā)展、新消費發(fā)展的一個新的平臺。
信息革命的核心體現(xiàn)在,集成電路是細胞,通訊網絡是動脈,計算機工具是大腦,信息資源是血漿,應用需求是心臟,安全是免疫系統(tǒng),軟件是靈魂。軟件產業(yè)是第一大產業(yè),面向對象是軟件技術的基本指導思想,它的發(fā)展過程從最初的個人技巧,到結構化,再到最終的面向對象,覆蓋范圍也發(fā)展到運行技術、工具技術、到過程技術。軟件理論方法技術應用于x應用場景。應用場景的'構建主要是體現(xiàn)在,可感知+可編程+可計算+可調控等方面。軟件很大程度上改變了我們的生產生活方式,在現(xiàn)在社會中,對于軟件的開發(fā),我們不在只是單純的系統(tǒng)開發(fā),文檔手冊,還要考慮到所處的環(huán)境以及大數(shù)據(jù),智能算法等多方面的綜合考量。
軟件同時也在驅動著世界經濟的變革。在世界經濟全球化發(fā)展的趨勢下,軟件行業(yè)也在向全球化發(fā)展,在今天,軟件的開發(fā)也不再是一個國家或者一個行業(yè)自身的發(fā)展而是整個社會的發(fā)展趨勢。當前軟件行業(yè)無論國內還是國際上整體處于手工作坊式階段,以項目組或產品組為單位組織開發(fā)人員,圍繞一個項目或者一個產品的某一迭代版本進行收工作業(yè)。其服務模式始終停留在并行開發(fā)多個無關的小型項目。對于這樣的情況,單單只是依靠某個國家自身的實力是很難實現(xiàn)軟件技術全面提升的。微觀層面來看,光學相機被數(shù)碼相機取代,移動磁盤、光盤基本上被u盤取代。智能手機的出現(xiàn)也帶來了it產業(yè)格局的重塑。it產業(yè)巨變的核心動力是用戶群體的快速增加以及it擴散的范圍迅速。繼智能手機、平板電腦被軟件重新定義后,其他it產品也在不斷被軟件重新定義,增加一個操作系統(tǒng)之后,物理功能被無限的簡化,功能被無限的拓展,不斷地豐富。整個經濟社會加快在網絡空間的映射,形成現(xiàn)實與網絡交融的數(shù)字世界。信息物理系統(tǒng)(cps)實現(xiàn)大型工程系統(tǒng)的實時感知、動態(tài)控制和信息服務。
數(shù)據(jù)表征、智能處理、軟件定義,三元融合將打造一個全新的世界。大數(shù)據(jù)在消費it領域的作用更加明顯,只要用pc上網或者手機瀏覽信息,性別、年齡、愛好、蹤跡等等便被大數(shù)據(jù)刻畫,從而根據(jù)現(xiàn)有信息推斷出你可能要做的事。總的來說,大數(shù)據(jù)不僅是傳統(tǒng)產業(yè)升級的助推器,同時也是新興產業(yè)的催化劑。軟件的定位已經從服務軟件發(fā)展到定義硬件,也許在不久的將來,軟件不僅僅是改變世界,而是重新定義我們已知的世界,正如大數(shù)據(jù)的出現(xiàn),或許不久的將來,產品經銷商會比我們更了解自己的需求。
隨著軟件市場的競爭壓力越來越大,我們所面臨的it環(huán)境更為復雜化,為了應對來自各方面的挑戰(zhàn)問題,我們需要更多的創(chuàng)新能力和業(yè)務靈活性。提高模塊化思想,從根本上解決所面臨的問題。
學習軟件工程的心得體會篇十二
在本學期的軟件工程課程的學習中,我們學習了十一章的內容。第一章軟件與軟件工程的概念,這一章主要講解的是一些概念性和基礎性的內容,例如軟件的概念、特性,軟件危機的主要表現(xiàn),軟件工程的概念以及軟件生存期、典型生存期模型等等。第二章軟件工程方法與工具,這一章主要對軟件工程方法進行介紹,包括三種方法:傳統(tǒng)方法、面向對象方法、形式化方法。還引出了工具uml。第三章軟件需求獲取與結構化分析方法,本章詳細介紹了需求獲取與需求分析階段的任務以及結構化分析方法,畫分層的數(shù)據(jù)流圖、e—r圖以及狀態(tài)圖式本節(jié)的重點。第四章結構化分析方法,這一章重點講解了使用變換型映射方法和事務型映射方法生成初始的模塊結構以及模塊結構的改進。第五章編碼,這一章重點講解了編碼的風格及規(guī)范,還告訴我們編碼規(guī)范說帶來的好處,并告誡我們將來一點要形成好的編碼風格。第六章軟件測試方法,本章講解了軟件測試相關的概念及重要性,軟件測試與開發(fā)各個階段的關系;還介紹了白盒測試技術以及黑河測試技術。第七章統(tǒng)一建模語言uml概述,本章詳細介紹了uml的基本模式、事物、關系及建模時用到的各種圖進行了介紹。第八章面向對象分析,這一章主要講解了面向對象分析的3種模型,包括功能模型、靜態(tài)模型和動態(tài)模型。第九章軟件體系結構與設計模式,本章對軟件體系結構的基本概念、典型風格等進行了講解。第十章面向對象設計,本章的重點是對面向對象分析時建立的對象模型進行調整和細化。第十一章軟件維護,本章主要介紹軟件維護的任務、軟件維護活動以及軟件維護方法進行了介紹。
要學習軟件工程,學會如何系統(tǒng)的思考,以及養(yǎng)成良好的編碼習慣,想學好軟件工程,就必須知道軟件工程的目標、過程和原則:軟件工程目標:生產具有正確性、可用性以及開銷合宜的產品。正確性指軟件產品達到預期功能的程度??捎眯灾杠浖窘Y構、實現(xiàn)及文檔為用戶可用的程度。開銷合宜是指軟件開發(fā)、運行的整個開銷滿足用戶要求的程度。這些目標的實現(xiàn)不論在理論上還是在實踐中均存在很多待解決的問題,它們形成了對過程、過程模型及工程方法選取的約束。
軟件工程過程:生產一個最終能滿足需求且達到工程目標的軟件產品所需要的步驟。軟件工程過程主要包括開發(fā)過程、運作過程、維護過程。它們覆蓋了需求、設計、實現(xiàn)、確認以及維護等活動。需求活動包括問題分析和需求分析。問題分析獲取需求定義,又稱軟件需求規(guī)約。需求分析生成功能規(guī)約。設計活動一般包括概要設計和詳細設計。概要設計建立整個軟件系統(tǒng)結構,包括子系統(tǒng)、模塊以及相關層次的說明、每一模塊的接口定義。詳細設計產生程序員可用的模塊說明,包括每一模塊中數(shù)據(jù)結構說明及加工描述。實現(xiàn)活動把設計結果轉換為可執(zhí)行的程序代碼。確認活動貫穿于整個開發(fā)過程,實現(xiàn)完成后的確認,保證最終產品滿足用戶的要求。維護活動包括使用過程中的擴充、修改與完善。伴隨以上過程,還有管理過程、支持過程、培訓過程等。
軟件工程的原則是指圍繞工程設計、工程支持以及工程管理在軟件開發(fā)過程中必須遵循的原則。
我們學習了詳細設計的方法,其原則是過程描述是否易于理解、復審和維護,進而過程描述能夠自然地轉換成代碼,并保證詳細設計與代碼完全一致。包括程序流程圖、n—s圖、pad圖、hipo圖。
程序流程圖:程序流程圖又稱之為程序框圖,它是軟件開發(fā)者最熟悉的一種算法表達工具。它獨立于任何一種程序設計語言,比較直觀和清晰地描述過程的控制流程,易于學習掌握。在流程圖中只能使用下述的五種基本控制結構:順序型;選擇型;while型循環(huán);until型循環(huán);多情況型選擇。
n—s圖:一種符合結構化程序設計原則的圖形描述工具,稱為盒圖,又稱為n—s圖。在n—s圖中,為了表示五種基本控制結構,規(guī)定了五種圖形構件。順序型;選擇型;while重復型;until重復型;多分支選擇型。
pad圖:它是用結構化程序設計思想表現(xiàn)程序邏輯結構的圖形工具。pad也設置了五種基本控制結構的圖示,并允許遞歸使用。
hipo圖:hipo圖是由一組ipo圖加一張hc圖組成。它是美國ibm公司在軟件設計中使用的主要表達工具。
hc圖既是層次圖,用于表示軟件的分層結構。hc圖中的每一個模塊,均可用一張ipo圖來描述。ipo圖由輸入、處理和輸出三個框組成,需要時還可以增加一個數(shù)據(jù)文件框,這種圖形的優(yōu)點,是能夠直觀地顯示輸入—處理—輸出三者之間的聯(lián)系。
還有測試方法:按照測試過程是否在實際應用環(huán)境中來分,有靜態(tài)分析與動態(tài)測試。測試方法有分析方法(包括靜態(tài)分析法與白盒法)與非分析方法(稱黑盒法)。
靜態(tài)分析技術:不執(zhí)行被測軟件,可對需求分析說明書、軟件設計說明書、源程序做結構檢查、流程分析、符號執(zhí)行來找出軟件錯誤。
動態(tài)測試技術:當把程序作為一個函數(shù),輸入的全體稱為函數(shù)的定義域,輸出的全體稱為函數(shù)的值域,函數(shù)則描述了輸入的定義域與輸出值域的關系。
還學習了其他很多工具、語言、方法等,雖然不是都學得很透徹,但我相信在今后的學習中一定會慢慢的完善的。
軟件工程對于初學者來說,知識基礎較薄弱,對一些應用操作、概念、工具方法等理解起來較為困難,要能從整體概念上較好地理解和把握、學好軟件工程,不是僅僅把幾本專業(yè)書籍細致地看幾遍,然后上機練習幾次就可以成功,學習過程中要注意多看多練要注意結合實際,更要多思考,面對錯誤不要一范就問,要嘗試自己去解決。但是還要注意什么都學,肯定是什么都學不透的,要集中精力打攻堅戰(zhàn),學習軟件工程首先要明白自己的學習目標究竟是什么,根據(jù)自己的實際工作出發(fā),有針對性的在相應的學習方向上進行提高,制定出詳細的學習規(guī)劃。還要注意與其他科目的相輔相成,就像我們在學習面向對象分析的時候要結合大一學習的面向對象及其方法學這一專業(yè)科目進行研究拓展;在學習語言時,要看看與c語言的聯(lián)系,多思多想,把從各個科目學到的知識通匯貫通。
在軟件工程的學習中,我了解到了軟件并非是一些代碼這么簡單,在開發(fā)軟件的過程中,編寫代碼的工作量其實只占不到所有工程量的30%,而后期的管理和維護更是占了60%到80%之多。一個完整的項目規(guī)劃須包括,軟件的定義,可行性分析報告,項目開發(fā)計劃,軟件需求說明書,概要設計說明書,詳細設計說明書,用戶操作手冊,測試計劃,測試分析報告,開發(fā)進度報告,項目開發(fā)總結報告,軟件維護手冊,軟件問題報告,軟件修改報告,等多個文檔,每個文檔都要上級驗收審查,而文檔數(shù)量眾多,要做好這點真的不是很容易,而恰恰寫好文檔正能保證完成軟件工程其中一個目的的關鍵,既研究如何用最小的開銷做出生存期較長的軟件,再加上各個階段都要進行周密的策劃、詳細的分工部署和人員安排,且各階段要據(jù)具體情況不斷的反復才能達成,所以代碼只是開發(fā)軟件這個浩大的工程的一個小小的過程。
而編碼的學習中,我更了解到形成自己獨特的規(guī)范的編碼風格是非常重要的事。因為這影響到了軟件后期繁重的維護,大家都要閱讀你的程序,如果你寫的程序毫無規(guī)范可言,那么別人怎么能讀懂你的程序?讀不懂程序,維護又從何談起呢?所以,我們在今后的學習中,一定要注意這方面的培養(yǎng),在寫程序的過程中,要逐步的在規(guī)范的基礎上形成屬于自己的風格,即方便自己的修改,也方便日后他人的閱讀。
在學習中,我們還要注意比較三種方法的優(yōu)缺點,例如:傳統(tǒng)方法雖然使軟件擺脫了混亂和無序,但其在適應需求變化的方面不夠靈活,而且傳統(tǒng)方法要么面向行為,要么面向數(shù)據(jù),缺乏兩者的有機結合。而面向對象方法的程序設計和問題求解更符合人們日常自然的思維習慣,適合大型、復雜及交互性比較強的系統(tǒng)。形式化方法則是一中基于形式化數(shù)學變換的軟件開發(fā)方法,它可將系統(tǒng)的規(guī)格說明轉換為可執(zhí)行的程序。
在今后的學習中要注意多讀書、多思考、多練習、多討論,不斷熟悉書本的基礎,并以此為基礎將其擴散開來,應用于今后的實踐。不斷鍛煉自己,向一名合格的程序設計師邁進。
學習軟件工程的心得體會篇十三
對于一個軟件系統(tǒng)的開發(fā),第一步就是問題定義,了解所開發(fā)系統(tǒng)的行業(yè)背景,制定計劃。當我們計劃確定以后就要對項目系統(tǒng)本身進行可行性研究,主要從技術可行性、經濟可行性和操作可行性三個方面著手。就比如《物聯(lián)網物流倉庫管理系統(tǒng)》的行業(yè)背景說明文檔中非常詳細地分析了當下物聯(lián)網物流行業(yè)的整體業(yè)務說明、應用背景、未來發(fā)展趨勢以及相關應用案例等四個方面,項目團隊中系統(tǒng)分析員就可以根據(jù)這份文檔以及相關的調查資料對將要開發(fā)系統(tǒng)的進行定義等工作。
原來我們寫這類文檔的時候就是草草了事,不會做得這么詳細,而這次看到大型項目的行業(yè)背景說明也是這么詳細,也讓自己認識到不管是軟件開發(fā)的那個階段都要認真對待,這些瑣碎的文檔都是后期開發(fā)項目的支撐,只要它們做的透徹,后面的開發(fā)工作才能更順利的進行。
第二、項目需求說明方面
這部分項目需求說明就是軟件定義時期中需求分析階段,而該階段的主要目的就是了解用戶的需要,根據(jù)用戶的需要確定系統(tǒng)必須完成那些工作,并對目標系統(tǒng)提出完整、準確、清晰、具體的要求。在需求分析結束之前系統(tǒng)分析人員要寫出一份需求規(guī)格說明,即為《物聯(lián)網物流倉儲管理系統(tǒng)》項目需求說明文檔。我們可以看出該文檔也是非常詳細,相比之下我們之前做項目時寫的需求規(guī)格說明書就非常不合格,不僅格式不正確內容也是少之又少。
在這方面,這篇文檔給我啟發(fā)很大。首先就是文檔的格式,要美觀整齊,讓人看著舒服方便。其次就是文檔的內容,原來它不是很重要,寫文檔的時候也不知道怎么寫就借鑒下網上的內容,結果根本就沒有把自己項目的需求寫明白,以至于自己最后都有些糊涂,所以根據(jù)以前的經驗教訓我會對這部分更加重視。
第三、系統(tǒng)概要設計方面
這部分內容分說的是軟件設計時期的概要設計階段,該階段的主要目的就是實現(xiàn)系統(tǒng)的功能、設計軟件的結構、模塊組成以及模塊之間的關系。在概要設計階段,我們可以站在全局的高度上,花較少的成本,從抽象的層次上分析對比多種可能的系統(tǒng)實現(xiàn)方案和軟件結構,從中選出最佳方案和最合理的結構。在這個階段還會具體畫出e-r圖、數(shù)據(jù)流圖等方面的設計。
比如《物聯(lián)網物流倉庫管理系統(tǒng)》的系統(tǒng)概要設計從項目概述、設計約束、功能單元與功能模塊設計、數(shù)據(jù)e-r圖設計、總體設計、界面設計等六個方面介紹,通過讀這個文檔,我覺得最重要的還是總體設計,分別從邏輯架構設計、物理架構設計、技術架構設計設計系統(tǒng)。在這個階段中模塊要做到高內聚低耦合,這樣開發(fā)出來的系統(tǒng)才會具有更高的獨立性。
在原來做項目時沒有編寫過這類文檔,在該階段只是畫了結構圖、層次圖以及相關的模塊劃分,對該類文檔尚未重視。通過張老師的講解和自己的學習,我相信在以后做項目的時候一定會注意到這類文檔的編寫。
第四、詳細設計與分析方面
詳細設計階段就是把概要設計階段的每個模塊進一步設計,確定每個模塊所需要的算法和數(shù)據(jù)結構。在這個階段還是需要我們設計出程序的詳細規(guī)格說明,而不是編寫程序。在詳細設計階段,系統(tǒng)設計人員可以通過使用程序流程圖、盒圖、pad圖等過程設計的工具和jackson圖等面向數(shù)據(jù)結構的設計工具進一步設計系統(tǒng)相關接口,主要包括界面設計接口、業(yè)務單設計接口、單元模塊設計接口等,這些對于以后的編碼工作都是極其重要的。
第五、編碼和測試方案方面
關于編碼,我認為編碼要想做的完美必備條件就是前面的軟件定義和軟件設計時期要按部就班的做,文檔一定要按要求書寫,不能偷懶也不能草草書寫。對于編碼也要有相應的文檔書寫規(guī)范,要使源程序代碼的邏輯簡明清晰、易讀易懂。這樣盡管我們不是設計系統(tǒng)的人員,當看到源程序代碼的時候也能容易讀懂代碼的意思。
其次就是測試的內容,從測試的文檔中我們可以得出,其實測試在軟件開發(fā)中同樣占據(jù)了重要的地位,它主要就是盡可能多的找到問題并排除其中的潛藏的錯誤,最終把一個高質量的軟件系統(tǒng)交給用戶使用。它要求測試人員也要有很高的技術水平。
學習軟件工程的心得體會篇十四
軟件工程(softwareengineering,簡稱為se)是一門研究用工程化方法構建和維護有效的、實用的和高質量的軟件的學科。它涉及到程序設計語言,數(shù)據(jù)庫,軟件開發(fā)工具,系統(tǒng)平臺,標準,設計模式等方面。在現(xiàn)代社會中,軟件應用于多個方面。典型的軟件比如有電子郵件,嵌入式系統(tǒng),人機界面,辦公套件,操作系統(tǒng),編譯器,數(shù)據(jù)庫,游戲等。同時,各個行業(yè)幾乎都有計算機軟件的應用,比如工業(yè),農業(yè),銀行,航空,政府部門等。這些應用促進了經濟和社會的發(fā)展,使得人們的工作更加高效,同時提高了生活質量。
二、軟件工程的目標
在給定成本、進度的前提下,開發(fā)出具有可修改性、有效性、可靠性、可理解性、可維護性、可重用性、可適應性、可移植性、可追蹤性和可互操作性并且滿足用戶需求的軟件產品。
三、軟件工程的原則
是指圍繞工程設計、工程支持以及工程管理在軟件開發(fā)過程中必須遵循的原則。軟件工程的原則有以下四項基本原則:1)選取適宜開發(fā)范型;2)采用合適的設計方法;3)提供高質量的工程支持;4)重視開發(fā)過程的管理。
四、軟件工程的由來
據(jù)說上個世紀60年代的程序員都是天才,寫程式就像寫日記一樣,吃過晚飯沒事干隨手就可以寫幾個出來玩,第二天還可以拿去賣錢。所以那時候程序員在大家眼中,跟那些搞美術,音樂的是一類的,被稱為“藝術家”。
但事過境遷,就像任何人都不會嫌錢多一樣,永遠都不會有人嫌cpu快的。于是,隨之而來的就是硬件的迅猛發(fā)展和越來越變態(tài)的軟件。記得以前常去同學家拷游戲,通常幾張軟盤就可以搞定,而現(xiàn)在的游戲,兩三張cd-rom都算少的了。像如此龐大復雜的怪物,就算你是如何的天才,一個人肯定是搞不定的,否則,等你把程式寫出來,人家intel連奔騰n都開發(fā)出來了。既要開發(fā)大型的軟件還要追求速度(這樣才能賺錢),于是很自然地,合作的概念被提了出來。
在開始合作的初期,由于大家都習慣了當很有個性的“藝術家”,結果可想而知,一個是畢加索派的,而另一個是意大利印象派的,再加上一個畫潑墨山水畫的,要是像這樣湊出來的東西都能不出問題的話,那么bill早就轉行了。所以,那時侯的大型軟件,據(jù)說“藍屏”比windows98還多。
馬克思告訴我們,萬物都是從量變到質變的。隨著問題的不斷涌現(xiàn),一些master們開始嘗試去總結經驗,并歸納了一些規(guī)范去指導軟件的分析,設計,實現(xiàn),測試,維護,人員交流協(xié)作,項目預算及時限控制等方方面面,這就是軟件工程的前身。
軟件工程到現(xiàn)在已發(fā)展了30多年,可以說是相當成熟的了?,F(xiàn)在開發(fā)軟件,據(jù)說都是一大幫人排排坐,按著一整套的規(guī)章制度來干活。于是,軟件開發(fā)成了“工程”,程序員也就淪為“工人”了。
五、軟件工程的核心
軟件工程,說白了,就是這樣一套用于軟件的團隊開發(fā),以提高軟件質量和程序員工作效率為目的的規(guī)范。其核心就是,對于軟件開發(fā)的5個重要組成部分:需求分析,設計,編碼,調試,維護,如何組織這5個部分的工作,以及如何完成每一個工作。簡單來說,就是對于總體的組織和對于局部的實現(xiàn)。
六、軟件開發(fā)過程
開發(fā)軟件,就像是解決一個邏輯問題。想想自己平時是怎樣寫程序的。首先是要有一個想法,即我寫的這個程序是要干什么的;然后就是對要實現(xiàn)的核心功能大概構思一種或多種實現(xiàn)方法,并從中選出一種自認為是較好的;接下來就是將涉及的各種主要或次要功能分成各個模塊;最后就是分模塊來編碼和debug。除了第一步外,其余的步驟應該是一個循環(huán)的過程。既然軟件開發(fā)是一個具有不可預知性和變化性的`動態(tài)的過程,那么,對其每一個步驟的組織,即周期模型,就必須包容它的這種性質。
具體到每一步的工作要怎樣完成,是非常靈活的,只要把握住大體的方向就行。在進行分析,設計,編碼,調試,維護這幾部分的工作的時候,最核心的就是文檔的編寫。文檔的作用在于以下3個方面:一是可以幫助整理思路。把要完成的目標,系統(tǒng)的結構,每一個模塊的功能等整理一下,然后分門別類地寫下來,這樣在開發(fā)的過程中,就有據(jù)可依,在需要回過頭來修改設計的時候,也有證可考。二是便于交流。想象一下開會時的情形。一大幫子人爭先恐后,激烈辯論,然后會終人散,思想靈感也就隨之散了,結果是開了半天會,什么也沒討論出來。這就是后來會議記錄被發(fā)明出來的原因。在腦子里的東西一多,就會散而且亂,用語言表達的時候,很容易會丟三落四,別人也很難把握住你的思想。但經過整理寫在紙上以后,則會清晰得多,無論是別人還是自己,看起來都可以一目了然。三是可以作為以后維護時的參考資料。有一句名言:“筆和紙永遠都比大腦可靠”,意思就是說,放在大腦里的東西說不準哪天就忘了,但寫在紙上的東西,只要不發(fā)生什么意外,一般是丟不了的。當過了一段時間,你需要再回過頭來修改你的程序的時候,你就會發(fā)現(xiàn),你以前寫下的文檔實在太有價值了。別指望你的源代碼,對于復雜一點的程序來說,單純的源代碼幾乎會扼殺掉你所有的時間。
可行性分析就是關于當前項目能不能干的分析結果。主要考慮的方面包括:是否能把這個項目開發(fā)出來;假如可以的話,預計需要多少時間,能否滿足客人的時間要求;需要多少人力和資金的投入;最重要的是,這個項目能否賺錢,能賺多少。還要對可能存在的風險進行評估。
七、軟件工程學習感悟
時間飛逝,不知不覺間《軟件工程》的學習完了。在這將近半學期的學習中,雖然我不能說我將《軟件工程》學習的有多么的好,但是通過學習,我還是受益良多。
在以前,我一直對軟件存在一些偏見或則是誤解,認為軟件就是程序,軟件的開發(fā)就是編寫程序,只要編完了程序,一切也就ok了,而且我還片面的認為只要我掌握了時下最新的語言和工具,那么我就能寫程序了。一個人,只要會編程,就能寫軟件,就是程序員;一個公司,只要招聘一些程序員,就能開發(fā)好的軟件產品。只要有幾個有經驗的程序員,再找些兼職的大學生,就能組成一個軟件公司。
但是通過了《軟件工程》這門課的學習,使我認識到了我以前的錯誤。軟件其實不僅僅是程序,軟件開發(fā)其實也不僅僅是編寫程序,軟件是思想在硬件上的載體和體現(xiàn),處理的是邏輯和信息。唯有對軟件和軟件的開發(fā)過程,有充分的認識,才能更好的開發(fā)出,過程受控、質量受控的軟件產品。
而且在以前,我一直以為軟件的開發(fā)其實是一件很輕松快樂的事情,只要一天坐在電腦旁敲敲鍵盤,那么一切就可以了,但是現(xiàn)在我才發(fā)現(xiàn),我以前的很多的思想是多么的膚淺可笑。編程其實是一種樂趣和苦惱共存的一項創(chuàng)造性活動。因為編程不僅能夠滿足我們內心深處進行創(chuàng)造的渴望,而且還能愉悅我們內在的情感。
而且通過學習《軟件工程》,我還學到了很多其他的東西。比如通過學習《軟件工程》,特別是教員的課程講解和每次用實際的軟件現(xiàn)場的講解,為我提供了一個盡早接觸世界工作和真實項目的機會。讓我知道如何在以最小的成本中,訓練自己的基本工程素質和能力,如何激發(fā)自己的積極性等。而且通過學習《軟件工程》,還讓我認識和培養(yǎng)了我的團隊協(xié)作能力,特別是對于我們這些在校的學生來說,這種學習更是能讓我在以后工作中少走很多的彎路。
所以,通過《軟件工程》的學習,我是真的學習到了很多有用的東西,讓我明白了很多的道理。在此我對教員的辛勤教育表示感謝,因為是你讓我學習到了這些,是我獲益良多。
學習軟件工程的心得體會篇十五
學習軟件工程一個學期以來,我在陳燁老師的教導下確實獲益匪淺。軟件工程這門課,讓我對軟件的認識有了大大的提升,從一開始對軟件工程的一無所知,到現(xiàn)在一學期下來的不斷學習,懂得了許多的知識。
軟件不僅僅是程序,而是思想在硬件上的載體和體現(xiàn),軟件工程與其說是一門課程,不如說是一門思想。讓我懂得如何去分析和處理問題的過程,綜合解決問題。
在這段時間的學習中,我明白了一個完整的項目規(guī)劃須包括,軟件的定義,可行性分析報告,項目開發(fā)計劃,軟件需求說明書,概要設計說明書,詳細設計說明書,用戶操作手冊,測試計劃,測試分析報告等多個文檔,而軟件的生存周期可分為八個階段,分別是問題定義,可行性研究,需求分析,概要設計,詳細設計,程序設計,測試,文檔,技術支持,售后服務。而可行性包括經濟,技術,法律和社會。了解了許多軟件開發(fā)模型,比如瀑布模型,增量模型和螺旋模型,也了解了uml對象面向對象建模,知道如何畫流圖,碩果累累。其實軟件和程序是兩個不同的概念,軟件除了程序還要有使用和維護該程序所需要的全部文檔。包括需求文檔、設計文檔、測試文檔、維護文檔以及使用手冊。
軟件工程對于初學者來說,知識基礎較薄弱,對一些應用操作、概念、工具方法等理解起來較為困難,需要很好的基礎知識的理解和掌握,所以說學好軟件工程不是僅僅書多看幾遍就可以成功,而是要多注意結合實際,多思考,面對錯誤不要一范就問,要嘗試自己去解決,然后舉一反三。
軟件工程這門課在我們畢業(yè)之后,是我們實際要運用的一項非常有用的技能,這門課讓我意識到理論學習很重要,而實踐更重要,實踐是檢驗真理的唯一標準,只有實踐和理論相結合,才能使效益最大化。軟件工程的課雖然快要結束了,但是我對軟件工程的學習才剛剛開始,有了這些基本知識做鋪墊,在以后做項目的時候將會是解決問題的有效措施。
學習軟件工程的心得體會篇十六
軟件工程師作為現(xiàn)代社會中越來越重要的職業(yè)之一,隨著信息技術的不斷發(fā)展,其職責也越來越廣泛和重要。作為一名軟件工程師,我在這個行業(yè)里摸爬滾打多年,深感自己的成長離不開各種經驗和心得的積累。在接下來的文字中,我將從個人視角談談自己在軟件開發(fā)過程中的心得體會。
第二段:選擇質量
在軟件開發(fā)的過程中,我最關注的是軟件的質量。因為軟件需要長期運行,不僅要滿足用戶需求,還要兼顧安全性和可維護性等方面,這需要我們在開發(fā)過程中嚴格控制每一個環(huán)節(jié),做好每一個細節(jié)。因此,我在項目開發(fā)前會認真分析需求和可能的風險,對技術框架和工具的選擇非常謹慎。我也會定期進行代碼復審和單元測試等工作,確保代碼質量達標。當然,在不斷優(yōu)化的過程中,我也意識到代碼質量的提高不僅僅在于個人級別,而更應該顧及團隊整體水平,因此深感技術學習和交流的重要性。只有不斷積累、分享,才能讓團隊的發(fā)展更加健康和持久。
第三段:溝通協(xié)作
作為一名軟件工程師,我們的工作不僅僅是編寫代碼,更包括與產品經理、UI設計師、測試工程師等各個角色之間的溝通協(xié)作。這就需要我們具備更多的軟技能。比如,要善于傾聽和引導,以便更好地理解產品需求和用戶痛點;要有清晰的表達能力,能夠清楚地向其他角色描述自己的想法和意圖;在開發(fā)過程中,也要非常注重團隊合作,及時溝通和協(xié)調出現(xiàn)的問題。整個軟件開發(fā)過程需要涵蓋從需求分析、規(guī)劃和設計,再到編碼、測試和上線等各個環(huán)節(jié),期間需要負責人與團隊的全面協(xié)作才能保證項目的順利完成。
第四段:學習成長
軟件開發(fā)是一個知識密集型的工作,要時刻緊跟技術的發(fā)展趨勢才能在激烈的競爭中取得優(yōu)勢。因此,我認為軟件工程師需要具備持續(xù)學習的能力和自我提升的意識。我會在業(yè)余時間去了解新的技術,參加相關的技術社群和活動,不斷學習和嘗試新東西,以此來增強自己的核心競爭力和解決實際問題的能力。同樣,我也會時刻關注團隊的成長和發(fā)展,希望能為團隊帶來更多的經驗和技術積累。
第五段:總結回顧
在軟件開發(fā)的過程中,我覺得最重要的是要保持持之以恒的熱情和精神狀態(tài)。無論是在技術領域還是在團隊管理中,不停地學習和成長,分享并培育團隊的創(chuàng)新精神和專業(yè)精神,才能不斷提高自己和團隊的能力和素質,做出更好的產品。取得成功需要獨立思考和勇于探索,但更需要承認團隊的重要性,在各方面展現(xiàn)出自己領導團隊的能力和擔當。在今后的工作和生活中,我也將持續(xù)關注自己的成長需求,堅定地走好自己的職業(yè)道路。
學習軟件工程的心得體會篇十七
曾經看過一本書叫《道法自然》,內容略記得一二,但我最欣賞的是它的.書名。軟件設計沒什么太神秘有東西,只要用心體會,其實一切都很自然。軟件的設計之“道”,也不在于設計有多么的華麗、精巧,而在于其樸實、自然,最終達到“以無招勝有招”,進入一個全新的境界。
一、軟件設計理論的層次
以我的拙見,軟件設計領域中的各種概念,可以分為以下幾個層次來進行理解:
1、軟件設計的目的:重用性、擴展性。
這是最高的層次,是應對軟件危機的需要。
2、設計原則:低耦合、高聚合。
各種軟件設計的原則,如依賴倒置原則、單一職則原則、面向接口等,以及各種設計模式,其根本的目的其實只是為了降低耦合這么簡單。因為只有低耦合才能更好的適應變化,更好的重用和擴展。
3、實現(xiàn)方法:運用設計模式封裝變化、降低耦合。
設計模式只是用來“封裝變化、降低耦合”的工具而已。它是面向對象設計時代的產物,其本質就是充分運用面向對象的三個特性,即:封裝、繼承和多態(tài),進行靈活的組合運用。
二、關于耦合
1、耦合的粒度
耦合無論如何也是不可避免的。當我們實現(xiàn)接口、繼承父類的時候,就會不可避免的產生耦合。耦合是有不同粒度的,我們解耦到什么粒度為止,我認為應以模塊的重用粒度為準。盡量解除重用模塊或對象之間的耦合。而重用模塊之內的耦合,應屬于聚合的范疇,所以不要盲目的去解耦,否則就陷入了誤區(qū)。
2、解耦的原理
怎樣才能解耦呢,或者說為什么各種設計模式能達到解耦的目的呢?我覺得有以下幾個思路:
(1)將具體的東西抽象處理
(2)將分散的東西集中處理
而面向對象中的接口、繼承正為我們提供了這樣的一種機制。通過訪問接口或基類或抽象類,而不是具體的實現(xiàn)類,從而與具體的實現(xiàn)類達到了解耦的目的。我們還可以設計一些控制類,像潤滑劑一樣,協(xié)調各實現(xiàn)類之間的訪問,也可以達到耦的目的。
事實上,各種設計模式的基本思想也就是這樣。創(chuàng)建型模式是為了解除創(chuàng)建對象時產生的耦合,實際上是解除對類稱名的依賴,而結構型和行為型是為了解除對象屬性或方法的直接調用。不管什么設計模式,都是將對具體實現(xiàn)類的訪問提升為對接口、基類或用于協(xié)調的控制類的訪問。
三、關于接口
這一節(jié)更具體,談一談接口,因為使用接口是軟件設計的重要手段,但已經不屬于“道”了。
1、接口與繼承
接口描述的是對象某一個方面行為特征。使用接口與使用繼承關系各有優(yōu)缺點,使用子類繼承可以繼承父類的功能,體現(xiàn)了重用的精神。而接品更加靈活,因為它解除了子類與父類之間的高度耦合,它體現(xiàn)在靈活擴展的精神。
2、接口與純虛類
接口存在的理由就是它更加靈活,關系簡單,易于理解。比如一個類可以實現(xiàn)十幾個甚至幾十個接口,但一般開發(fā)工具只支持單繼承(由于多繼承太容易導致混亂和沖突),如果要繼承十幾層,系統(tǒng)結構想必會無法理解了,我以為這是接口存在的最重要的原因。
如果接口和虛類繼承結合使用,可以產生強大的威力,這也是許多設計模式的“殺手锏”。
以上算是總結一下自己的心得??隙ㄓ胁簧倨嬷?,請各位指教。
學習軟件工程的心得體會篇十八
作為軟件工程師,我一直對自己在軟件開發(fā)領域的發(fā)展感到自豪。近年來,我一直致力于提高自己的技能,并在實踐中不斷探索和學習。在這個過程中,我收獲了許多寶貴的經驗和體會,讓我更好地理解了軟件工程師的角色和職責,特別是在團隊合作方面的重要性。
第二段:個人成長
我的軟件開發(fā)之路始于大學時期學習編程語言,并在一家創(chuàng)業(yè)公司中獲得了第一份實習工作。在這一階段,我經歷了許多挑戰(zhàn)和學習機會,計劃和設計軟件解決方案成為我的長項。在后來的工作中,我不斷提高自己的團隊合作技能,學會協(xié)調和溝通,特別是在多功能項目中尤為重要。
第三段:貢獻團隊
作為軟件工程師,我有責任在團隊中發(fā)揮重要作用,同時也需要學會尊重其他專業(yè)人員的意見和建議。我的目標是成為一名優(yōu)秀的團隊成員,通過協(xié)作和討論尋求最優(yōu)解決方案。在項目中,我總是盡力爭取更高的質量和效率,發(fā)現(xiàn)和解決問題,對團隊的發(fā)展做出貢獻。
第四段:重視學習
隨著軟件技術的不斷發(fā)展,我們必須與時俱進,不斷學習新知識和技能。我經常參加工作坊、研討會等活動,與同行交流經驗,并積極閱讀相關書籍和文章。通過不斷學習,我擴大了自己的技能和知識范圍,更好地服務于團隊和客戶。
第五段:結語
軟件工程師的工作需要我們具備多種技能和素養(yǎng),而不僅僅是編程。我們需要協(xié)作,溝通和解決問題能力,同時也需要開放心態(tài)和持續(xù)學習的意愿。我相信通過不斷的積累經驗和體會,我們將不斷提高自身能力,為軟件行業(yè)的發(fā)展做出更大的貢獻。
學習軟件工程的心得體會篇十九
軟件工程心得體會未接觸軟件工程之前一直都很想學這門課程,因為覺得這門課很牛,是那些有工程師稱號的高手才擺弄的東西。學了一個學期的軟件工程課,終于知道了個軟件工程的大概。學的時候總覺得很抽象,理解起來好像不難,但總是摸不著頭腦一種很茫然的感覺。曾經以為程序就是軟件,軟件就是程序。學習這門課程第一個收獲是,知道了二者的不同之處。以前做過的一些小型的軟件比如加密軟件,我也只是在程序旁邊附上一個軟件的說明,看來已經很接近作坊了。不過大的項目沒有接觸過,用軟件工程的方法還是第一次。我想也是程序的不斷復雜化導致了軟件危機的發(fā)生,使得人們不得不探索新的解決方法。
經過倪老師的講解,理解了軟件工程,就是一套用于軟件的團隊開發(fā),以提高軟件質量和程序員工作效率為目的的規(guī)范。其核心就是,對于軟件開發(fā)的5個重要組成部分:需求分析,設計,編碼,調試,維護,如何組織這5個部分的工作,以及如何完成每一個工作。吾生也有涯,而知也無涯,學習永無止境。起初,對軟件工程處于一知半解的狀態(tài),分工比較混亂。
在劃分模塊后明確了各自分工,漸漸形成良性循環(huán)。在學習過程中,知道了團隊合作十分重要,爭議固然存在,但通過討論、協(xié)商,群策群力,在不斷磨合中能夠達成一致與默契。團隊成員中能力各有高下,互相尊重,各取所長,不宜妄自菲薄。組長多加協(xié)調,組員積極配合,才能合作愉快。學習能力體現(xiàn)在能盡快接受新的知識,順應變化,學為所用。
上《軟件工程導論》這門課,我的收獲大概如下:我們?yōu)槭裁葱枰浖こ棠??上面已經給出了一些原因。專業(yè)點講,軟件工程最終是為了實現(xiàn)“軟件制造業(yè)”的社會化,工業(yè)化大生產,提高其勞動生產效率。只有如此,軟件業(yè)才能實現(xiàn)社會化,工業(yè)化大生產,才能“做大做強”。沒有管理的設計是失敗和混亂的設計,沒有設計指導的編程是無序的忙碌的。根據(jù)開發(fā)的軟件的規(guī)模,應該適當程度的運用軟件工程化的思想,需要靈活,畢竟我們開發(fā)的軟件大多數(shù)是中小型的,大型的并不多見(我是這么認為的)。但只要涉及人員間的交流和溝通,或多或少都要需要軟件工程才能更有效率,工作成果更穩(wěn)定。
其實開發(fā)軟件,就像是解決一個邏輯問題。想想自己平時是怎樣寫程序的。首先是要有一個想法,即我寫的這個程序是要干什么的;然后就是對要實現(xiàn)的核心功能大概構思一種或多種實現(xiàn)方法,并從中選出一種自認為是較好的;接下來就是將涉及的各種主要或次要功能分成各個模塊;最后就是分模塊來編碼和debug。在我看來,除了第一步外,其余的步驟應該是一個循環(huán)的過程。在編碼的'過程中,你總是需要不斷地回過頭來修改原先的模塊設計,甚至最初選定的實現(xiàn)算法。具體到每一步的工作要怎樣完成,是非常靈活的,只要把握住大體的方向就行。在進行分析,設計,編碼,調試,維護這幾部分的工作的時候,最核心的就是文檔的編寫。
1、可行性分析就是關于當前項目能不能干的分析結果。
2、項目描述這是在決定立項以后,對當前項目的一份扼要說明。
3、需求分析就是對客戶要求的功能的定義。
4、軟件設計這就是對程序的每一個模塊的詳細設計的說明文檔。
5、開發(fā)日志我一直都認為這是文檔中最有趣的部分。開發(fā)日志相當于編碼階段的文檔,它的形式可以很隨意,主要是記錄一些在寫程序時突然萌發(fā)的靈感,或對代碼的一些微小的修改,或對程序結構的一些微小變動等,還要對上述這些修改變動作些說明。
6、測試分析用于指出程序存在或潛在的缺陷和錯誤,以及程序性能的數(shù)字描述。