第一篇:軟件工程實驗心得
早在我選擇民政職業(yè)技術(shù)學院就讀軟件開發(fā)與項目管理這門專業(yè)的時候,我一直認為軟件開發(fā)無非是努力的敲代碼,從敲代碼的過程中去體會各行代碼的意思和用處,在沒學軟件工程時我一直都是努力的敲代碼去學習軟件開發(fā)這門專業(yè)。在大一的時候我敲代碼的激情很好,但是到大二的時候就出現(xiàn)問題了,我根本就不喜歡敲代碼了,看見代碼就頭疼。所以感覺厭惡這門專業(yè),對學習也不感興趣了。而且,還有一件更頭疼的事是在寫一個簡單的程序時竟然老是出錯,難一點的,復雜一點的程序竟然無從下手。但是去看程序的參考答案時都看得懂,又感覺很容易。學了軟件工程以后,我就感覺我以前的學習方法是錯誤的。以前我只注重于代碼,而不注重理論知識以及編程的思路,程序的架構(gòu)。以至于在些程序時沒有寫程序的思路,不能形成程序的架構(gòu)。只想到看腦袋里是否有與此類似的代碼。越想程序越亂,最后腦袋里一片空白。不知道程序從哪個方面下手了。
軟件工程這門課程是做軟件開發(fā)的人必學的課程,通過學這門課程,程序員就會注重軟件開發(fā)的理論知識,以及做項目開發(fā)的思路。學了這門課程后你寫程序就不會去盲目的去套用代碼,而是理清此程序的架構(gòu)以及思路。程序該從什么時候開始,什么時候結(jié)束。在中間需要添加什么樣的功能,以完善該軟件。其實學軟件工程并不難,而且很容易。軟件工程與日常生活聯(lián)系起來的話,就是在一天中你該先做什么,后做什么。理解了先做什么,后做什么了以后寫程序就不是那么難了,再復雜的程序也可以分成幾大塊。你理清程序的思路后就可以一步步的解決其中的難題,最終實現(xiàn)軟件的功能。如果沒學軟件工程不知道理清程序的思路的話,做一個大的項目開發(fā),那么多的代碼,沒有一個很好的結(jié)構(gòu),最終只會導致程序混亂,錯誤百出,知道代碼再多也會素手無策的。
總而言之,作為一個程序員學習軟件工程這門課程是至關(guān)必要的,如果沒學習軟件工程,你就不會做項目開發(fā),也不可能開發(fā)出一個完善的軟件出來。
軟件工程實驗心得(2):
曾經(jīng)看過一本書叫《道法自然》,內(nèi)容略記得一二,但我最欣賞的是它的書名。軟件設(shè)計沒什么太神秘有東西,只要用心體會,其實一切都很自然。軟件的設(shè)計之“道”,也不在于設(shè)計有多么的華麗、精巧,而在于其樸實、自然,最終達到“以無招勝有招”,進入一個全新的境界。
一、軟件設(shè)計理論的層次
以我的拙見,軟件設(shè)計領(lǐng)域中的各種概念,可以分為以下幾個層次來進行理解:
1、軟件設(shè)計的目的:重用性、擴展性。
這是最高的層次,是應對軟件危機的需要。
2、設(shè)計原則:低耦合、高聚合。
各種軟件設(shè)計的原則,如依賴倒置原則、單一職則原則、面向接口等,以及各種設(shè)計模式,其根本的目的其實只是為了降低耦合這么簡單。因為只有低耦合才能更好的適應變化,更好的重用和擴展。
3、實現(xiàn)方法:運用設(shè)計模式封裝變化、降低耦合。
設(shè)計模式只是用來“封裝變化、降低耦合”的工具而已。它是面向?qū)ο笤O(shè)計時代的產(chǎn)物,其本質(zhì)就是充分運用面向?qū)ο蟮娜齻特性,即:封裝、繼承和多態(tài),進行靈活的組合運用。
二、關(guān)于耦合
1、耦合的粒度
耦合無論如何也是不可避免的。當我們實現(xiàn)接口、繼承父類的時候,就會不可避免的產(chǎn)生耦合。耦合是有不同粒度的,我們解耦到什么粒度為止,我認為應以模塊的重用粒度為準。盡量解除重用模塊或?qū)ο笾g的耦合。而重用模塊之內(nèi)的耦合,應屬于聚合的范疇,所以不要盲目的去解耦,否則就陷入了誤區(qū)。
2、解耦的原理
怎樣才能解耦呢,或者說為什么各種設(shè)計模式能達到解耦的目的呢?我覺得有以下幾個思路:
(1)將具體的東西抽象處理
(2)將分散的東西集中處理
而面向?qū)ο笾械慕涌、繼承正為我們提供了這樣的一種機制。通過訪問接口或基類或抽象類,而不是具體的實現(xiàn)類,從而與具體的實現(xiàn)類達到了解耦的目的。我們還可以設(shè)計一些控制類,像潤滑劑一樣,協(xié)調(diào)各實現(xiàn)類之間的訪問,也可以達到耦的目的。
事實上,各種設(shè)計模式的基本思想也就是這樣。創(chuàng)建型模式是為了解除創(chuàng)建對象時產(chǎn)生的耦合,實際上是解除對類稱名的依賴,而結(jié)構(gòu)型和行為型是為了解除對象屬性或方法的直接調(diào)用。不管什么設(shè)計模式,都是將對具體實現(xiàn)類的訪問提升為對接口、基類或用于協(xié)調(diào)的控制類的訪問。
三、關(guān)于接口
這一節(jié)更具體,談一談接口,因為使用接口是軟件設(shè)計的重要手段,但已經(jīng)不屬于“道”了~
1、接口與繼承
接口描述的是對象某一個方面行為特征。使用接口與使用繼承關(guān)系各有優(yōu)缺點,使用子類繼承可以繼承父類的功能,體現(xiàn)了重用的精神。而接品更加靈活,因為它解除了子類與父類之間的高度耦合,它體現(xiàn)在靈活擴展的精神。
2、接口與純虛類
理論上接口可以由純虛基類實現(xiàn)類似的功能,那為什么還我們不去掉接口的概念,而直接使用虛類呢?
接口存在的理由就是它更加靈活,關(guān)系簡單,易于理解。比如一個類可以實現(xiàn)十幾個甚至幾十個接口,但一般開發(fā)工具只支持單繼承(由于多繼承太容易導致混亂和沖突),如果要繼承十幾層,系統(tǒng)結(jié)構(gòu)想必會無法理解了,我以為這是接口存在的最重要的原因。
如果接口和虛類繼承結(jié)合使用,可以產(chǎn)生強大的威力,這也是許多設(shè)計模式的“殺手锏”。
以上算是總結(jié)一下自己的心得?隙ㄓ胁簧倨嬷,請各位指教。
第二篇:軟件工程實驗的心得體會
軟件工程實驗的心得體會
---- 獲取用戶需求的溝通技巧
經(jīng)過這學期軟件工程實驗的學習,深深感到用戶需求對軟件的重要性。成功的軟件產(chǎn)品是建立在成功的需求基礎(chǔ)之上的,而高質(zhì)量的需求來源于用戶與開發(fā)人員之間有效的溝通與合作。當用戶有一個問題可以用計算機系統(tǒng)來解決,而開發(fā)人員開始幫助用戶解決這個問題,溝通就開始了。
需求獲取可能是最困難、最關(guān)鍵、最易出錯及最需要溝通交流的活動。對需求的獲取往往有錯誤的認識:用戶知道需求是什么,我們所要做的就是和他們交談從他們那里得到需求,只要問用戶系統(tǒng)的目標特征,什么是要完成的,什么樣的系統(tǒng)能適合商業(yè)需要就可以了,但是實際上需求獲取并不是想象的這樣簡單,這條溝通之路布滿了荊棘。首先需求獲取要定義問題范圍,系統(tǒng)的邊界往往是很難明確的,用戶不了解技術(shù)實現(xiàn)的細節(jié),這樣造成了系統(tǒng)目標的混淆。
其次是對問題的理解,用戶對計算機系統(tǒng)的能力和限制缺乏了解,任何一個系統(tǒng)都會有很多的用戶或者不同類型的用戶,每個用戶只知道自己需要的系統(tǒng),而不知道系統(tǒng)的整體情況,他們不知道系統(tǒng)作為一個整體怎么樣工作效率更好,也不太清楚那些工作可以交給軟件完成,他們不清楚需求是什么,或者說如何以一種精確的方式來描述需求,他們需要開發(fā)人員的協(xié)助和指導,但是用戶與開發(fā)人員之間的交流很容易出現(xiàn)障礙,忽略了那些被認為是"很明顯"的信息。最后是需求的確認,因為需求的不穩(wěn)定性往往隨著時間的推移產(chǎn)生變動,使之難以確認。為了克服以上的問題,必須有組織的執(zhí)行需求的獲取活動。
需求獲取活動要完成的任務或者步驟的過程如下:
1、編寫項目視圖和范圍文檔
系統(tǒng)的需求包括四個不同的層次:業(yè)務需求、用戶需求和功能需求、非功能性需求。業(yè)務需求說明了提供給用戶新系統(tǒng)的最初利益,反映了組織機構(gòu)或用戶對系統(tǒng)、產(chǎn)品高層次的目標要求,它們在項目視圖與范圍文檔中予以說明。用戶需求文檔描述了用戶使用產(chǎn)品必須要完成的任務,這在使用實例文檔或方案腳本說明中予以說明。功能需求定義了開發(fā)人員必須實現(xiàn)的軟件功能,使得用戶能完成他們的任務,從而滿足了業(yè)務需求。
非功能性需求是用戶對系統(tǒng)良好運作提出的期望,包括了易用性、反應速度、容錯性、健壯性等等質(zhì)量屬性。需求獲取就是根據(jù)系統(tǒng)業(yè)務需求去獲得系統(tǒng)用戶需求,然后通過需求分析得到系統(tǒng)的功能需求和非功能需求。項目視圖和范圍文檔就是從高層次上描述系統(tǒng)的業(yè)務需求,應該包括高層的產(chǎn)品業(yè)務目標,評估問題解決方案的商業(yè)和技術(shù)可行性,所有的使用實例和功能需求都必須遵從的標準。而范圍文檔定義了項目產(chǎn)品所包括的所有工作及產(chǎn)生產(chǎn)品所用的過程。項目相關(guān)人員對項目的目標和范圍能達成共識,整個項目組都應該把注意力集中在項目目標和范圍上。
2、用戶群分類
系統(tǒng)用戶在很多方面存在著差異,例如:使用系統(tǒng)的頻度和程度、應用領(lǐng)域和計算機系統(tǒng)知識、所使用的系統(tǒng)特性、所進行的業(yè)務過程、訪問權(quán)限、地理上的布局以及個人的素質(zhì)和喜好等等。根據(jù)這些差異,你可以把這些不同的用戶分成不同的用戶類。與ulm中usecase的actor概念一樣,用戶類不一定都指人,也可以包括其他應用系統(tǒng)、接口或者硬件,這樣做使得與系統(tǒng)邊界外的接口也成為系統(tǒng)需求。將用戶群分類并歸納各自特點,并詳細描述出它們的個性特點及任務狀況,將有助于需求的獲取和系統(tǒng)設(shè)計。
3、建立核心隊
通常用戶和開發(fā)人員不自覺的都有一種"我們和他們"的想法,產(chǎn)生一種對立關(guān)系,把彼此放在對立面,每一方都定義自己的"邊界",只想自己的利益而忽略對方的想法。他們通過文檔、記錄和對話來溝通,而不是作為一個合作的整體去識別和確定需求完成任務。實踐證明這樣的方法是不正確的,不會給雙方帶來一點益處,良好的溝通關(guān)系沒有建立導致了誤解和忽略重要的信息。只有當雙方參與者都明白要成功自己需要什么,同時也知道要成功對方需要什么時,才能建立起一種合作關(guān)系。
為了建立合作關(guān)系通常采取一種組隊的方式來獲取需求,建立一個由用戶代表和開發(fā)人員組成的聯(lián)合小組作為需求獲取的核心隊伍。聯(lián)合小組將負責識別需求、分析解決方案和協(xié)商分歧,小組成員可以采用會議、電子郵件、綜合辦公系統(tǒng)等方式進行交流,但交流時應注意以下原則:小組會議應該由中立方來組
織和主持,用戶和開發(fā)人員都要參加;交流預先要確定準備和參與的規(guī)則;議題要明確并覆蓋所有關(guān)鍵點,但信息來源應該自由;交流目標要明確,并告知所有的成員。
4、確定使用實例
從用戶代表處收集他們將使用系統(tǒng)完成所需任務的描述,討論用戶與系統(tǒng)間的交互方式和對話要求,這就是使用實例,一個單一的使用實例可能包括完成某項任務的許多邏輯相關(guān)任務和交互順序。使用實例方法給需求獲取帶來的好處來自于該方法是用以任務為中心和以用戶為中心的觀點,比起使用以功能為中心和以開發(fā)者為中心的方法,使用實例方法可以使用戶更清楚地理解和認識到新系統(tǒng)允許他們做什么和怎么做。描寫使用實例的時候要注意使用簡潔直白的表述,盡量使用主動語態(tài),用"系統(tǒng)"或者"用戶"作為主語,比如"用戶提交用戶密碼,系統(tǒng)驗證用戶密碼是否正確",還有一點在描述中不要設(shè)計界面細節(jié),比如"用戶從下拉框中選擇產(chǎn)品類型"。使用實例為以后寫用例場景描述中的基本路徑和擴展路徑提供了素材。
7、分析用戶工作流程
分析用戶工作流程觀察用戶執(zhí)行業(yè)務任務的過程,通過分析使用實例得到系統(tǒng)的用例圖。編制用例圖文檔將有助于明確系統(tǒng)的使用實例和功能需求,統(tǒng)一建模語言的使用有助于與用戶進一步交流。每個用例的描述應包括:編號,為每個用例分配一個唯一的編號,為需求的追溯提供了方便;參與者,與這個用例交互的actor;前置條件,開始用例前所必須具備的系統(tǒng)狀態(tài);后置條件,用例完成后系統(tǒng)達到的狀態(tài);基本路徑,用例完成的關(guān)鍵路徑,也是用戶期望的路徑;擴展點,基本路徑的分枝,表示意外情況;字段說明,路徑中名稱的進一步分解說明,對以后類屬性的定義和數(shù)據(jù)庫字段設(shè)計起作用;設(shè)計約束,實現(xiàn)用例的非功能約束。
5、檢查問題報告
通過檢查當前已經(jīng)運行系統(tǒng)的問題報告來進一步完善需求客戶的問題報告及補充需求為新系統(tǒng)或新版本提供了大量豐富的改進及增加特性的想法,負責提供用戶支持及幫助的人能為收集需求過程提供極有價值的信息。
6、需求重用
如果客戶要求的功能與已有的系統(tǒng)很相似,則可查看需求是否有足夠的靈活性以允許重用一些已有的軟件組件。業(yè)務建模和領(lǐng)域建模式需求重用的最好方法,像分析模式和設(shè)計模式一樣,需求也有自己的模式。
小結(jié) :經(jīng)過一學期的軟工實驗,深刻感到其重要性的同時也學到了不少的東西 ,將對我在今后的軟件開發(fā)過程中起極大的作用。
第三篇:軟件工程實驗報告
《軟件工程》課程實驗報告
實驗名稱:教務管理系統(tǒng)之子系統(tǒng)——學院課程安排
姓名:
院 (系):軟 件 學 院
專業(yè)班級:
學號:
指導教師:
地點:
成績:
時間:201* 年 10月 日 至 201* 年 11月 8 日
1.實驗目的
確定項目的可實施性,獲取項目的需求,并在此基礎(chǔ)上完成系統(tǒng)的邏輯功能模型的建立,了解軟件工程中需求分析階段的主要活動和需求分析文檔描述的主要內(nèi)容,掌握利用數(shù)據(jù)流圖描述系統(tǒng)功能需求的方法,正確應用數(shù)據(jù)字典。增進對軟件工程的理解,學會系統(tǒng)的分析軟件的構(gòu)成,掌握并理解軟件從確立到測試等一系列過程。
2.實驗內(nèi)容
1. 系統(tǒng)簡介
每個學期的期中,學校教務處向各個學院發(fā)出下各學期的教學計劃,包括課程名稱、課程代碼、課時、班級類別(本科、?啤⒊扇私逃、研究生)、班號等;學院教學主管人員根據(jù)教學任務和要求給出各個課程的相關(guān)限制(如:任課教師的職稱、上課的班數(shù)、最高和最低周學時數(shù)等);任課教師自報本人授課計劃,經(jīng)所在教研室協(xié)調(diào)任可,將教學計劃上交學院主管教學計劃的人員,批準后上報學校教務處,最終由教務處給出下個學期全學院教師的教學任務書。
假設(shè)上述排課過程全部由人工操作,現(xiàn)要求為上述過程實現(xiàn)計算機自動處理過程。
2. 限定條件
a) 每位教師的主講課程門數(shù)不超過2門/學期:講師以下職稱的教師不能承擔學院定主課的主講任務。
b) 學院中層干部的主講課時不能超過4學時/周。
c) 本學期出現(xiàn)嚴重教學事故的教師不能承擔下各學期的主講任務。
d) 本系統(tǒng)的輸入項至少包括:教務處布置的教學計劃,學院教師自報的授課計劃和學院定的有關(guān)授課限制條件。
e) 本系統(tǒng)的輸出項至少包括:教務處最終下達全院教師的教學任務書和學院各個班級下各學期的課程表(可以不含上課地點)。
項目數(shù)據(jù)流圖
系統(tǒng)的分析“教務管理系統(tǒng)之子系統(tǒng)——學院課程安排”的組成、結(jié)構(gòu)和實現(xiàn)步驟,明白項目的業(yè)務流程圖,繪制數(shù)據(jù)流圖(dfd),數(shù)據(jù)模型(er),編寫數(shù)據(jù)字典(dd),數(shù)據(jù)加工處理的描述,撰寫需求規(guī)格說明書
3.實驗步驟
1.
2.
3.
4.
5. 對圖書管理系統(tǒng)進行分析,整合用戶權(quán)限和操作 根據(jù)用戶操作流程畫出系統(tǒng)流程圖 對系統(tǒng)做出概要分析,擬定開發(fā)流程 繪制出甘特圖 繪制線性時間圖
4總結(jié)與回顧
通過這次實驗,我學到了很多東西,教務管理系統(tǒng)是學校的管理核心,管理應涉及到學校的專業(yè)設(shè)置、學藉管理、成績管理、網(wǎng)上注冊、開課管理、選課管理、師資管理等,在數(shù)據(jù)庫一級建立強有力的安全系統(tǒng),管理人員可以在互聯(lián)網(wǎng)的任何地方辦工,
真正實現(xiàn)學校網(wǎng)上管理。
學校中的教務管理是一項很重要的工作,包括學生管理,教師管理和課程管理等。開發(fā)“教務信息處理系統(tǒng)”的目的就是利用計算機的查詢和運算功能,代替手工處理,提高工作效力和質(zhì)量,所以該系統(tǒng)是必要而且能夠?qū)崿F(xiàn)的。
此次開發(fā)的軟件是教務管理系統(tǒng)的一個子系統(tǒng),即學院課程安排。通過此次課程設(shè)計,我們更加了解了軟件的原理,軟件的開發(fā)方法和步驟,如繪制數(shù)據(jù)流圖和數(shù)據(jù)字典的編寫。進一步掌握了有關(guān)數(shù)據(jù)庫設(shè)計的知識和java程序設(shè)計,了解了有關(guān)網(wǎng)絡(luò)的相關(guān)知識,對軟件開發(fā)平臺有了一定了解。我增長了不少軟件工程與編程,數(shù)據(jù)庫的知識。在作設(shè)計的過程中,軟件是不斷變化的,開始構(gòu)造的是一方面,實際制作時又是另外一方面,所以得不斷變化。軟件必須有效的支持他的用戶,我們做的軟件是學生選課系統(tǒng),所以我們需要從學生和老師,管理員的實際情況出發(fā),制定他們操作方便的系統(tǒng),是軟件對用戶友好。
在寫數(shù)據(jù)字典之前,我對數(shù)據(jù)字典的理解有一些偏差,通過這次作實驗,我知道了數(shù)據(jù)字典就是對數(shù)據(jù)流,數(shù)據(jù)流分量,數(shù)據(jù)存儲,處理的定義集合。我們做這種比較小的軟件時,數(shù)據(jù)字典還比較好維護,哪里出了問題,可以很快的找到,然后改正。如果做比較大的軟件時,數(shù)據(jù)字典就不好維護了。開發(fā)大的軟件系統(tǒng)時,數(shù)據(jù)字典的規(guī)模和復雜程度迅速增加,貌似人工維護就不太可能了。
這次實驗的完成是我們小組共同努力的結(jié)果,我們每個人都付出了很大的汗水,也讓我明白了團隊合作是多么的重要,那么大的工作量僅靠一個人的力量是不可能完成的,在以后的工作和學習中一定要重視團隊合作的重要性,多與合作伙伴交流,了解每個人的想法,最后大家的想法和在一起就是個很了(本站向你推薦www.7334dd.coml相關(guān)模型(活動圖、時序圖等),完成兩個模塊以上)
四、實驗總結(jié)
說明:(此實驗為可選做,若完成實驗成績加分)
實驗三軟件測試
一、實驗目的
通過對軟件項目的測試,掌握軟件測試的原理和方法,了解軟件測試過程。 二、實驗要求
針對需求分析所選的項目和功能模塊進行。完成軟件項目主要功能模塊的測試。 三、實驗內(nèi)容
1、采用主要測試方法描述
2、主要功能模塊測試用例設(shè)計
四、實驗總結(jié)
第五篇:軟件工程實驗要求
軟件工程實驗要求
要求:
1查詢相關(guān)資料,要求以某一個項目的進展為實驗過程,整個實驗過程是講一個系統(tǒng)的設(shè)計過程,比如,學生管理系統(tǒng),圖書館管理系統(tǒng),掃雷程序等(舉例的不要采用)
2按照軟件工程過程,強調(diào)設(shè)計的過程,主要包括需求分析,總體設(shè)計與詳細設(shè)計,也可以放入測試與維護等環(huán)節(jié),其中設(shè)計到一些知識點,比如數(shù)據(jù)庫,數(shù)據(jù)流圖,數(shù)據(jù)字典,程序技術(shù)等。
3確定設(shè)計的系統(tǒng)后,請各位同學把設(shè)計的題目交給學習委員,讓學習委員進行調(diào)整,要求雷同題目,即相同的系統(tǒng)最多只能2個同學使用。
4實驗報告最后打印出來,a4紙,至少5頁,需要封面(這個可以下載有江蘇理工學院封面的那個東西改一下),封面主要包括題目、姓名、學號等。文字段落等無要求,但布局統(tǒng)一合理,美觀舒服為好。
5實驗報告要有實驗目的,實驗步驟,實驗心得等基本步驟,自己可以參照成熟的實驗報告添加相關(guān)的內(nèi)容。
6下載相關(guān)資料時,切忌全篇下載,可以整合,但參考的資料必須比較多,換句話說,你論文中的內(nèi)容在網(wǎng)上一搜的話,我頂多只能搜到一段,不要一搜就是一大片一樣的。
7可以下載一些圖表格等元素,但不要全部都是。
8有心的同學可以設(shè)計一個網(wǎng)絡(luò)上找不到的系統(tǒng),自我分析整個的大概設(shè)計過程,改換一種方式表達出來。比如,你們班級的一個管理系統(tǒng),自我主頁的一個設(shè)計,一個獨一無二的文學欣賞網(wǎng)站等,此類同學請在題目后標注是原創(chuàng)。 9上交時間為下周四下午2點之后,60-210
來源:網(wǎng)絡(luò)整理 免責聲明:本文僅限學習分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。