第一篇:軟件工程試驗(yàn)心得
心得體會
學(xué)了一個(gè)學(xué)期的軟件工程課,終于知道了個(gè)軟件工程的大概。學(xué)的時(shí)候總覺得很抽象,理解起來好像不難,但總是摸不著頭腦一種很茫然的感覺。學(xué)習(xí)的過程中和一個(gè)宿舍的同學(xué)一起做了個(gè)小型管理系統(tǒng)的開發(fā),覺得還是有點(diǎn)收獲的,對于開設(shè)這門課的意義也有所領(lǐng)悟,現(xiàn)在就將我對這門課的體會以及在項(xiàng)目開發(fā)過程中遇到的一些問題簡單的歸納一下。希望在以后的學(xué)習(xí)中不斷的提高吧。
曾經(jīng)以為程序就是軟件,軟件就是程序?,F(xiàn)在知道了二者的不同之處,這是學(xué)習(xí)這門課程第一個(gè)收獲。事實(shí)上在軟件開發(fā)的早期階段這也不能說是錯(cuò)誤的。那個(gè)時(shí)候開發(fā)的軟件都比較簡單。當(dāng)然可以把軟件理解成程序,直到軟件作坊的出現(xiàn),使軟件在程序的基礎(chǔ)上加了個(gè)說明。以前做過的一些小型的軟件比如加密軟件,也只是在程序旁邊附上一個(gè)軟件的說明,看來已經(jīng)很接近作坊了。不過大的項(xiàng)目沒有接觸過,用軟件工程的方法還是第一次。我想也是程序的不斷復(fù)雜化導(dǎo)致了軟件危機(jī)的發(fā)生,使得人們不得不探索新的解決方法。這個(gè)時(shí)候軟件工程應(yīng)運(yùn)而生了。
掌握軟件工程化的思想,對于負(fù)責(zé)軟件開發(fā)的管理人員(領(lǐng)導(dǎo))更為重要。曾經(jīng)看到過這么一句話,“坐在指揮臺上,如果什么也看不見,就不能叫領(lǐng)導(dǎo)。軟件工程將有能力的人團(tuán)結(jié)在一起,然后把他們變成工人,因?yàn)楣I(yè)化的生產(chǎn)是效率最高的。這就是根本所在。沒有軟件工程管理,簡直就是亂來,就好象缺乏宏觀控制的國家一樣,會亂七八糟。
軟件除了程序還要有使用和維護(hù)該程序所需要的全部文檔。包括需求文檔、設(shè)計(jì)文檔、測試文檔、維護(hù)文檔以及使用手冊。
軟件開發(fā)特別是大型軟件是一項(xiàng)浩大的工程,需要幾個(gè)人、十幾個(gè)人、幾十個(gè)人甚至幾百個(gè)人合作開發(fā)幾個(gè)月、十幾個(gè)月甚至幾年。要保證系統(tǒng)的協(xié)調(diào)性、統(tǒng)一性和連續(xù)性,就需要在開發(fā)之前制定嚴(yán)格、詳細(xì)的開發(fā)規(guī)范。開發(fā)規(guī)范的制定需要花費(fèi)一定的時(shí)間和精力,但是“磨刀不誤砍柴功”,它相當(dāng)于把今后開發(fā)過程中開發(fā)人員都要遇到的問題提前做了一個(gè)考慮。有了開發(fā)規(guī)范,在后續(xù)的開發(fā)過程中,設(shè)計(jì)人員就不必每次考慮如何為一個(gè)字段命名,編程人員也不必去想某個(gè)程序的結(jié)構(gòu)和布局應(yīng)當(dāng) 怎樣,測試人員也有了判斷程序?qū)﹀e(cuò)的標(biāo)準(zhǔn)。它約束開發(fā)人員的行為和設(shè)計(jì)、編程風(fēng)格,使不同子系統(tǒng)和模塊的設(shè)計(jì)、編程人員達(dá)成默契,以便形成整個(gè)系統(tǒng)的和諧步調(diào)和統(tǒng)一風(fēng)格,也便于今后的系統(tǒng)維護(hù)和擴(kuò)展工作。
第二篇:軟件工程試驗(yàn)論文
班級:09級計(jì)算機(jī)本科班姓名:白路明學(xué)號:091220141046
軟件工程開發(fā)工具case的學(xué)習(xí)心得
摘要:文章主要前線介紹了什么是計(jì)算機(jī)輔助軟件工程CASE以及它的分類方式和主流的幾種CASE工具的特點(diǎn)。
關(guān)鍵字:(1)CASE的基本定義及作用
(2)CASE工具的標(biāo)準(zhǔn)及種類
(3)主流CASE工具的各自特點(diǎn)
參考文獻(xiàn):竇萬峰軟件工程試驗(yàn)教程
徐培炎 PowerDesigner特點(diǎn)、優(yōu)勢[EB/OL].賽迪網(wǎng)
2006.10
Wendy Boggs, Michael BoggsUML與Rational Rose 2002入門與精通[M].電子工業(yè)出版社.2002
徐鋒.實(shí)戰(zhàn)OO:為問題域建模.程序員.2004.2
王文玲,金茂忠.UML模型與其應(yīng)用.計(jì)算機(jī)工程與應(yīng)用.1999
Doug Rosenberg, Kendall Scott.UML用例驅(qū)動對象建模.北京:清華大學(xué)出版社.200
3軟件工程是將計(jì)算機(jī)科學(xué)理論與現(xiàn)代工程方法相結(jié)合,著重研究軟件過程模型、設(shè)計(jì)方法、工程開發(fā)技術(shù)和工具,指導(dǎo)軟件生產(chǎn)和管理的一門新興的、綜合的應(yīng)用科學(xué)。隨著計(jì)算機(jī)科學(xué)和軟件產(chǎn)業(yè)的迅猛發(fā)展,軟件工程學(xué)已成為一個(gè)重要的計(jì)算機(jī)分支學(xué)科,一個(gè)異?;钴S的研究領(lǐng)域,正在不斷涌現(xiàn)新方法、新技術(shù),蓬蓬勃勃的發(fā)展著。軟件工程是計(jì)算機(jī)專業(yè)和軟件工程專業(yè)學(xué)生必修的一門專業(yè)課程,也是工科各專業(yè)學(xué)生在計(jì)算機(jī)應(yīng)用方面的一門重要選修課程。隨著軟件工程理論與技術(shù)的發(fā)展和多種多樣的輔助軟件開發(fā)的case(計(jì)算機(jī)輔助軟件
工程)工具不斷涌現(xiàn),既提高了軟件開發(fā)效率,同時(shí)還大大的節(jié)約了開發(fā)成本,并且對從事軟件及相關(guān)行業(yè)的人才和大學(xué)生提出了新的更高的要求。
一、CASE的基本定義及作用
計(jì)算機(jī)輔助軟件工程CASE是通過一組集成化的工具,輔助軟件開發(fā)者實(shí)現(xiàn)各項(xiàng)活動的全部自動化,是軟件產(chǎn)品在整個(gè)生存周期中,開發(fā)和維護(hù)生產(chǎn)率得到提高,質(zhì)量的保證。CASE環(huán)境、case工具、集成化CASE(I-CASE)等,實(shí)際是一切現(xiàn)代化軟件開發(fā)環(huán)境(SEE)的代名詞。CASE(Computer Aided Software Engineer計(jì)算機(jī)輔助軟件工程)“用自動化手段對結(jié)構(gòu)化概念和設(shè)計(jì)方法重新進(jìn)行組裝”。CASE的實(shí)質(zhì)是為軟件開發(fā)人員提供一組優(yōu)化集成的且能大量節(jié)省人力的軟件開發(fā)工具,以實(shí)現(xiàn)軟件生存期各個(gè)環(huán)節(jié)的自動化并使之成為一個(gè)整體。CASE是一套方法和工具,可使用系統(tǒng)開發(fā)商規(guī)定的應(yīng)用規(guī)則,并由計(jì)算機(jī)自動生成合適的計(jì)算機(jī)程序。CASE工具分成“高級”CASE和“低級”CASE.高級CASE工具用來繪制企業(yè)模型以及規(guī)定應(yīng)用要求,低級CASE工具用來生成實(shí)際的程序代碼。CASE工具和技術(shù)可提高系統(tǒng)分析和程序員工作效率。其重要的技術(shù)包括應(yīng)用生成程序、前端開發(fā)過程面向圖形的自動化、配置和管理及壽命周期分析工具。
CASE的作用有通過自動檢查提高軟件的質(zhì)量;使原型的建立成為可行;簡化程序的維護(hù)工作;加快軟件的開發(fā)過程;鼓勵(lì)進(jìn)化式和遞增式的軟件開發(fā),使軟件部件可重復(fù)使用。CASE的基本功能有提供一種機(jī)制,是環(huán)境中所有工具可以共享軟件工程信息;每一個(gè)信息項(xiàng)的改變,可以追蹤到其他相關(guān)信息項(xiàng);對所有軟件工程信息提供版本控制和配置管理;對環(huán)境中任何工具,可以進(jìn)行直接的、非順序的訪問;在標(biāo)準(zhǔn)的分解結(jié)構(gòu)中提供工具和數(shù)據(jù)的自動支持;是每個(gè)工具的用戶,共享人機(jī)界面的所有功能;收集能夠改善過程和產(chǎn)品的各項(xiàng)度量指標(biāo);支持軟件工程師們之間的通信。
二、CASE工具的標(biāo)準(zhǔn)及種類
CASE 工具分類的標(biāo)準(zhǔn)可分為三種:功能,功能是對軟件進(jìn)行分類的最常用的標(biāo)準(zhǔn);支持的過程,根據(jù)支持的過程,工具可分為設(shè)計(jì)工具、編程工具、維護(hù)工具等;支持的范圍,根據(jù)支持的范圍,可分為窄支持、較寬支持和一般支持工
具。窄支持指支持過程中特定的任務(wù),較寬支持是指支持特定過程階段;一般支持是指支持覆蓋軟件過程的全部階段或大多數(shù)階段。1993 年,F(xiàn)uggetta 根據(jù) CASE 系統(tǒng)對軟件過程的支持范圍,提出 CASE 系統(tǒng)可分為三類:支持單個(gè)過程任務(wù)的工具。工具可能是通用的,或者也可能歸組到工作臺;工作臺支持某一過程所有活動或某些活動。它們一般以或多或少的集成度組成工具集;環(huán)境支持軟件過程所有活動或至少大部分。它們一般包括幾個(gè)不同的工作臺,將這些工作臺以某種方式集成起來。
CASE 方法與其他方法相比有如下幾方面的應(yīng)用特點(diǎn):解決了從客觀世界對象到軟件系統(tǒng)的直接映射問題,強(qiáng)有力地支持軟件、信息系統(tǒng)開發(fā)的全過程;使結(jié)構(gòu)化方法更加實(shí)用;自動檢測的方法提高了軟件的質(zhì)量;使原型化方法和 00 方法付諸于實(shí)施;簡化了軟件的管理和維護(hù);加速了系統(tǒng)的開發(fā)過程;使開發(fā)者從大量的分析設(shè)計(jì)圖表和程序編寫工作中解放出來;使軟件的各部分能重復(fù)使用; 產(chǎn)生出統(tǒng)一的標(biāo)準(zhǔn)化的系統(tǒng)文檔。
CASE 工具種類繁多,適應(yīng)了不同方面的要求,隨著技術(shù)的發(fā)展,還有不但推陳出新的趨勢。給軟件人員提供了更多的選擇余地。例如: Enterprise Architect、Poseidon、ArgoUML、ModeIMaker、Gaphor、Visio、object Domain、UMLStudio、Visual Paradigm for UML、Rational Rose、Umbrello TOgether、Low-tech、Jude、ARIS、MagicDraw、CodeLogic、omondo、Micro Gold omnigraffle(Mac OSX only)、Embarcadero Technologies 等等。主流的CASE工具有Visio、Smartdraw、SourceInsigt、Telelogic、ModelMaker、ArgoUML、Rose、vss、cvs、Project、PowerDesigner、WinRunner、LoadRunner、Eclipse。
三、主流CASE工具的各自特點(diǎn)
Rational Rose
目前市面上最流行的UML Case工具,繪制的圖形簡潔美觀它支持Java,J2EE,C++,MCF等語言和框架的建模.在加上他的Rational系列,RUP的方法論,是當(dāng)之無愧的巨無霸.IBM Rational Rose 是一個(gè)完整的可視建模方案,開
發(fā)人員、項(xiàng)目經(jīng)理、工程師和分析人員可以在提交編碼之前對需求和構(gòu)架進(jìn)行可視化、理解和改進(jìn)。利用模型驅(qū)動的方法進(jìn)行軟件開發(fā),可以保證系統(tǒng)的可擴(kuò)展性、靈活性和可靠性,使您更快更好地創(chuàng)建軟件。其功能包括: 支持對象模型、數(shù)據(jù)模型和數(shù)據(jù)存儲模型的創(chuàng)建。映射邏輯和物理模型,從而靈活地將數(shù)據(jù)庫設(shè)計(jì)演變?yōu)閼?yīng)用程序邏輯。支持?jǐn)?shù)據(jù)模型、對象模型和已定義數(shù)據(jù)語言(DDL)文件/數(shù)據(jù)庫管理系統(tǒng)(DBMS)之間的雙向工程。變換同步選項(xiàng)(在變換期間對數(shù)據(jù)模型和對象模型進(jìn)行同步)。數(shù)據(jù)模型-對象模型比較向?qū)?。支持一次性對整個(gè)數(shù)據(jù)庫進(jìn)行正向工程。集成了其他 IBM Rational Software Development 生命周期工具。能集成任何兼容 SCC 的版本控制系統(tǒng),包括 IBM Rational ClearCase 軟件。能夠以 Web 頁面的方式發(fā)布模型和報(bào)告,以此來提高整個(gè)團(tuán)隊(duì)的溝通效率。其最突出特點(diǎn)就是通過使所有的團(tuán)隊(duì)成員獨(dú)立開發(fā)、協(xié)作溝通和交付更好的軟件來統(tǒng)一開發(fā)團(tuán)隊(duì),建立穩(wěn)定、有彈性、基于構(gòu)件的系統(tǒng)構(gòu)架,以可控、可管理、可確認(rèn)的方式進(jìn)行開發(fā),從而降低成本,加快面市的速度。一個(gè)無縫集成所有領(lǐng)先的 IDE 與最新技術(shù)的工具可滿足您的所有技術(shù)需要,最大化開發(fā)工作的速度和簡便性。
ModelMaker
一個(gè)非常強(qiáng)大的軟件工具,其功能與所有強(qiáng)大且具有多面性的產(chǎn)品一樣。但ModelMaker的復(fù)雜性卻會讓一個(gè)新手望而卻步。
ModelMaker常被認(rèn)為是一個(gè)UML圖形工具或是Delphi Case工具,然而,它比一般的圖形工具和Case工具要快得多,有時(shí),它可為你寫一些人工智能式的代碼。它是可擴(kuò)展的,支持UML圖,設(shè)計(jì)模式,逆向生成與分解的雙向代碼管理工具等。
它的核心則為,它支持本地代碼模型,你所有的類及其關(guān)聯(lián)元素(單元,圖,文檔及事件類型等等)都是模型內(nèi)部的對象。ModelMaker為活動模型提供了多種視圖,允許你在類列表,元素列表或圖集中進(jìn)行操作,如果你已有準(zhǔn)備,你即可從模型中生成源代碼單元,并可由Delphi來進(jìn)行編譯,以后生成的單元每次也可重新生成。你可對各種不同的設(shè)置進(jìn)行修改(例如代碼注釋選項(xiàng),代碼次序,方法使用等等),并且可為多種需求重新生成單元(調(diào)試代碼,自動生成的大量注釋代碼等)。
Enterprise Architect
以目標(biāo)為導(dǎo)向的軟件系統(tǒng)。它覆蓋了系統(tǒng)開發(fā)的整個(gè)周期,除了開發(fā)類模 型之外,還包括事務(wù)進(jìn)程分析,使用案例需求,動態(tài)模型,組件和布局,系統(tǒng)管理,非功能需求,用戶界面設(shè)計(jì),測試和維護(hù)等。其主要特點(diǎn)包括:為整個(gè)團(tuán)隊(duì)提供高級的UML 2.0建模工具;特性豐富系統(tǒng)設(shè)計(jì);端到端跟蹤;EA提供使用工具,能夠跟蹤依賴關(guān)系、支持大型模型,幫助您管理大型復(fù)雜的工程;含有CVS或SCC提供工具,以時(shí)間快照為基線,通過比較來跟蹤模型變動,從而實(shí)現(xiàn)版本控制;含有類似explorer的項(xiàng)目視窗,為您提供直觀高性能的工作界面。EA還含有一個(gè)所見即所得形式的模板編輯器,提供強(qiáng)大的文檔生成和報(bào)告工具,能夠生成復(fù)雜詳細(xì)的報(bào)告,報(bào)告可以按照公司或客戶要求的格式提供所需信息。EA具備源代碼的前向和反向工程能力,支持多種通用語言;EA還提供變換模板,編輯和開發(fā)均非常簡單,支持先進(jìn)的模型驅(qū)動結(jié)構(gòu)體系(MDA)。
Visual Paradigm
是由一家香港公司開發(fā)的 UML 工具。功能的強(qiáng)大不次于rose等case工具??梢院推渌ぞ哒?,包括Eclipse/IBM WebSphere 等并且支持多平臺簡單介紹如下特性:支持UML2.0;支持生成Html,PDF,Writer的報(bào)表;可以導(dǎo)入Rose 的UML圖;匯出為XMI;可以生成Java代碼;有.Net的Add-In;支持E-R圖建模;支持ORM;智能化的提示即當(dāng)你把鼠標(biāo)移到一個(gè)UML圖上時(shí),周圍自動顯示能和此UML圖相關(guān)的UML圖可快速地添加。
第三篇:軟件工程心得
學(xué)習(xí)軟件工程這門課程已經(jīng)有一個(gè)學(xué)期了,整一個(gè)學(xué)期下來,應(yīng)該說還是有許多值得肯定的地方的,其實(shí)在我看來,軟件工程與其說是一門課程,不如說是一門思想。是一個(gè)如何去分析和處理問題的過程,應(yīng)該說其范疇已經(jīng)遠(yuǎn)遠(yuǎn)不止局限于該門課程,成為了一個(gè)綜合的一個(gè)能夠解決問題的思想集合。
在上課的時(shí)候我還是很認(rèn)真地去聽老師所講述的內(nèi)容的,我覺得他的思想和我一向而來的培養(yǎng)計(jì)算機(jī)學(xué)生綜合素質(zhì)的理解還是在一定程度上不謀而合了,所謂的需求獲取,那就是一個(gè)談判,辯論,交流的過程,已經(jīng)不是單純的編編程序就能解決的問題了。從我所看到的聽到的來說,我最怕的就是計(jì)算機(jī)系的學(xué)生被別人說成是個(gè)帶著厚眼鏡的,只能夠在電腦前編編程序的,在交際場上不知道說什么而一個(gè)字都說不出來的人。我覺得這樣的人進(jìn)入社會之后是沒有什么前途的,起碼他們?nèi)狈α伺c人溝通交流的能力。而這門課程在一定程度上給了我們這些學(xué)生一個(gè)機(jī)會來鍛煉自己在另一方面的能力,設(shè)想一下,一個(gè)又有技術(shù)又能夠與人交流合作的人所取得的成就自然要比一個(gè)單單只會編程序的人要大得多。
其次,這門課程教給了我們在完成一個(gè)實(shí)際項(xiàng)目時(shí)的一般程序及過程,我認(rèn)為這是一份非常具有實(shí)際意義的教學(xué)內(nèi)容。當(dāng)我們在畢業(yè)之后,這是我們實(shí)際要運(yùn)用的一項(xiàng)非常有用的技能,而且不僅僅局限于軟件工程的范疇,我們即使是從事與其它行業(yè),不也是要從需求獲取開始,一直有條有理地到最后成品的出爐嗎?應(yīng)該說這就是這門課的價(jià)值所在。無論是在上課,還是在學(xué)生會里面做學(xué)生工作,我都深深地感覺到,技術(shù)性的工作就好比變魔術(shù),其實(shí)原理是非常簡單的,甚至可以說簡單的可笑,但是當(dāng)你就是做出這么一個(gè)簡單的東西出來之后,一些外行們有時(shí)候會用崇拜的眼光看著你,覺得你很厲害,很高深莫測。但是制作的過程他們卻不知道,也許知道之后他們只是會啞然失笑,原來這個(gè)東西的制作過程是如此的簡單。這個(gè)可以說就是技術(shù)的魅力了,而作為需求獲取及之后的一系列過程則是類似于魔術(shù)揭秘的過程,但是作為這個(gè)秘密我們并不需要一揭到底,至于揭的程度如何那就是我們那就是我們學(xué)出的程度如何了,我們要讓對方知道我們在做什么?以及如何去做?這些東西需要我們以一定的技巧敘述出來,所起到的作用就是能夠讓對方了解自己的進(jìn)度,卻又能夠不讓對方來干涉自己的工作過程。因?yàn)槲覀兪羌夹g(shù)員,對方只是外行,即使對方知道了這個(gè)魔術(shù)的操作過程,也并不代表他們就能夠向變著魔術(shù)的我們來隨便修改這個(gè)魔術(shù)的變法,況且我們能夠用不同的過程來得出一個(gè)同樣的結(jié)果,這個(gè)過程的得出的主動權(quán)如何掌握在我們的手上,就看我們?nèi)绾我愿呙鞯姆绞絹斫议_這個(gè)魔術(shù)的謎底了。
當(dāng)然了,在純粹的理論上,我覺得開設(shè)這樣一門課程是很成功的。但是畢竟現(xiàn)實(shí)里有太多的不確定的因素。最重要的因素就是授課的老師和聽課的學(xué)生。這兩個(gè)可以說是這門課成與敗的決定性的因素。
作為老師方面來說,我覺得給我們上試驗(yàn)課的老師非常的優(yōu)秀,作為一名了有十幾年工作經(jīng)驗(yàn)的老船長,看問題的確是有他自己獨(dú)特的一套方法,我的話對他也是非常崇拜的。但是周日晚上的課程我還是有比較大的意見,首先,作為學(xué)生來說,最不希望上課的時(shí)間就是周五的晚上和周日的晚上,因?yàn)檫@是個(gè)我們進(jìn)行調(diào)整的時(shí)候,前者的調(diào)整是為了假期的到來,后者的調(diào)整是為了準(zhǔn)備學(xué)習(xí)的開始,這個(gè)時(shí)候的上課一般來說都是學(xué)生比較反感的。其次,對于我來說,原來小的時(shí)候非常崇拜那些有著高學(xué)歷的人才,什么碩士,博士,博士后都是被放在神壇上的人物,覺得他們很厲害,走路都會散發(fā)光環(huán)。但是在我上了他們這些人的課之后我發(fā)覺我真的是很失望。作為一個(gè)具有高學(xué)歷的人來說,他能夠自己迅速的吸收知識這點(diǎn)的確是令人敬佩,但是他能不能夠把自身所吸收的知識傳授給他的學(xué)生,那就是一個(gè)未知之?dāng)?shù)了,雖然的確這是一門枯燥的課程,但是并不代表老師就可以在講臺上講課沒有一點(diǎn)激情,或者說沒有一點(diǎn)能夠讓我們想聽下去的欲望,這個(gè)不得不說是一件非常諷刺的事情。子不教,父之過;教不嚴(yán),師之惰。雖然學(xué)生們也有一部分的責(zé)任,但是把一切責(zé)任都推到學(xué)生們的身上那也是非常的不公平的。
作為我們學(xué)生來說,當(dāng)然也應(yīng)該負(fù)起比較主要的責(zé)任。在大學(xué)里有了太多的基礎(chǔ)課程,基礎(chǔ)課程大多都比較枯燥無味,也許在第一個(gè)學(xué)期里我們還能夠保持著新鮮感,但是在5個(gè)學(xué)期之后,可以說再有新鮮感就是一件比較困難的事情了,我們都已經(jīng)開始變得遲鈍了,現(xiàn)在出現(xiàn)了一門新鮮的課程,可能同學(xué)們比較難把那樣不好的狀態(tài)一下子改變過來。其次的,學(xué)生們沒有認(rèn)識到這門課程的價(jià)值。這門課的價(jià)值我已經(jīng)在上面說過了,是不言而喻的。但是并不是每個(gè)同學(xué)畢業(yè)之后都回從事計(jì)算機(jī)行業(yè),也不是每個(gè)同學(xué)都知道這門課程的意義已經(jīng)不僅僅局限于計(jì)算機(jī)這個(gè)范疇,但是他們不知道,無知者無畏也。既然和我沒什么關(guān)系,那我就不聽,反正聽了也沒什么用,很多同學(xué)報(bào)著的就是這么個(gè)心態(tài)。對于這樣的心態(tài),我表示理解,也表示悲哀。在沒有徹底了解一件事物的本質(zhì)之前,我們是沒有資格向這件事物隨便的指手畫腳的。最怕的就是在沒有了解之前就把這件事物否定。如果有了這樣先入為主的思想,那就比較沒救了。所以作為我們來說,還是更需要得深入了解下這門課所起到的作用之后再下結(jié)論也不遲。只是有一點(diǎn)我還是覺得比較奇怪,現(xiàn)在被人嗤之以鼻的傳銷在當(dāng)時(shí)能夠吸引如此大的一批人,而且那些受害者明知道這件事情是不好的但是還會去做,就是因?yàn)椤跋茨X者”的口才說服了他們,那作為老師來說,如何來說服學(xué)生們來上一門正確的課程應(yīng)該說是要相對的容易很多吧,但是我覺得這樣的過程在我們的大學(xué)課程里真的是少之又少啊。今天在這里寫了很多,算是我對軟件工程這門課程的一點(diǎn)點(diǎn)心得體會,也許是正確的,也許在一定的程度上存在著觀點(diǎn)的偏激錯(cuò)誤,但是起碼這些東西是我覺得存在著的一些問題,但愿軟件工程這門課程能夠開的越來越好,讓更多的學(xué)生們能夠從這門課程中受益,在以后社會殘酷的競爭之中存活下來!
第四篇:軟件工程課程心得
軟件工程項(xiàng)目總結(jié)
在我們整個(gè)軟件工程過程中,我體會到了許多,也學(xué)到了許多。
在項(xiàng)目要進(jìn)行自由分組后,我們的項(xiàng)目小組便誕生了。我們小組由七個(gè)成員組成,在相互商量后我們也確定了我們組的項(xiàng)目,是做一個(gè)校園 b2c電子商務(wù)網(wǎng)站。我們也隨即做了分工,由于我們團(tuán)隊(duì)只有我和另一名成員有類似的項(xiàng)目開發(fā)經(jīng)驗(yàn),所以我們便要擔(dān)負(fù)起更重的任務(wù)。最后由于在整個(gè)團(tuán)隊(duì)中,對于界面開發(fā)這一塊只有我的開發(fā)經(jīng)驗(yàn)較深,所以我便擔(dān)任了主要的界面設(shè)計(jì)人員。我們的項(xiàng)目也正式開始了。
需求調(diào)研和分析對于軟件開發(fā)過程至關(guān)重要。我們在開發(fā)時(shí)如果不進(jìn)行調(diào)研和分析,那么對于后來的項(xiàng)目進(jìn)展將產(chǎn)生致命的后果。我們在項(xiàng)目的開發(fā)中便遇到了這樣的問題。老師作為我們的客戶,他對這個(gè)校園 b2c電子商務(wù)網(wǎng)站的要求便是我們必須了解的,我們也必須以客戶的要求為根本構(gòu)建我們的這個(gè)系統(tǒng)。我們開始自己隨意的計(jì)劃整個(gè)網(wǎng)站的設(shè)計(jì),然后報(bào)給老師,老師作為一個(gè)客戶并不是全部認(rèn)同,隨后我們也必須按著客戶的要求更改我們的設(shè)計(jì)報(bào)告。我也明白了,再做一個(gè)系統(tǒng)時(shí),必須隨時(shí)和客戶保持溝通,隨時(shí)了解他們需要什么,他們想要什么功能。如果我們不去和客戶溝通,不去調(diào)研客戶的需求,做出來的系統(tǒng)即使在我們看來是一個(gè)很好,很完美的產(chǎn)品,但是如果客戶不認(rèn)同,那么我們所做的一切都是徒勞,還要返工去修改,費(fèi)時(shí)費(fèi)力。所以在做任何一個(gè)項(xiàng)目時(shí),前期的需求調(diào)研和需求分析都是必須的,這是在做一個(gè)項(xiàng)目的基本,是關(guān)系成敗的重要一環(huán)。
對于一個(gè)項(xiàng)目,它的需求設(shè)計(jì)也非常重要。在我們的校園 b2c電子商務(wù)網(wǎng)站開發(fā)的過程中,遇到了一些問題,如客戶提交購買確認(rèn)后,我們?nèi)绾未_定應(yīng)該以什么方式將貨物給客戶,還有以什么確定貨物的送達(dá)地點(diǎn),客戶的訂單在哪里處理,訂單以什么方式驚醒處理,在管理員應(yīng)該實(shí)現(xiàn)的功能上反復(fù)增刪等,這些問題很多都是由于設(shè)計(jì)不夠清晰,不夠完善而導(dǎo)致的。出現(xiàn)的這些問題很多都是非常棘手的,我們?yōu)榱私鉀Q這些棘手的問題浪費(fèi)了大量的時(shí)間,我們不得不在工程代碼上改了又改,在數(shù)據(jù)庫里增表、刪表、加數(shù)據(jù)、減數(shù)據(jù),當(dāng)然,在文檔里也要做出相應(yīng)的修改以適應(yīng)新的功能。還好,我們能及時(shí)地發(fā)現(xiàn)問題,通過相互
溝通討論,問題也得到了解決。通過總結(jié),我們也意識到,我們大家在做需求分析和進(jìn)行需求了解時(shí)僅僅考慮了一些基本的功能,而至于管理員和客戶之間的聯(lián)系,以及具體的一些流程我們都沒有深究,而導(dǎo)致我們到后期花費(fèi)了大量的時(shí)間用于修復(fù)之前沒有考慮周全而帶來的問題。如果我們的需求設(shè)計(jì)能夠比較清晰和完善,那么我們在開發(fā)過程中便會很明白的知道我們應(yīng)該實(shí)現(xiàn)什么樣的功能,在數(shù)據(jù)庫里應(yīng)該怎樣建表,以什么方式插入數(shù)據(jù),從而可以避免反復(fù)修改工程的問題,也能避免出現(xiàn)可能毀壞整個(gè)工程的問題。整個(gè)工程的需求設(shè)計(jì)對于一個(gè)項(xiàng)目的順利進(jìn)展至關(guān)重要。
對于文檔在軟件工程中的作用,我在這次項(xiàng)目開發(fā)過程中有了更加深刻的理解。文檔在軟件開發(fā)過程中是很有用的,文檔是一項(xiàng)必不可少的東西,但文檔也不能太多,太過繁瑣,如果是那樣就不太好了。首先我們要明確開發(fā)過程中為什么要寫這些文檔,文檔的最根本的作用是為了更好的溝通。一個(gè)項(xiàng)目或產(chǎn)品可能需要延續(xù)很長的時(shí)間,開發(fā)過程中可能需要很多的環(huán)節(jié),可能會遇到很多的問題和很多的解決的方法,這時(shí),我們需要文檔的幫助,我們需要有一個(gè)東西來記錄,我們需要有一個(gè)共同的聲音。文檔只不過是一個(gè)準(zhǔn)繩,將開發(fā)中的各個(gè)樹枝樹葉扶正。如果,這個(gè)準(zhǔn)繩太多太緊,大樹可能會發(fā)育的很高很直,但是就是有些畸形,如果這個(gè)準(zhǔn)繩太少太松,大樹可能就會變成灌木叢。文檔的多少、繁簡是有度的,絕對不能說越多越好。我覺得,文檔需要說明解決問題的方法而不是解決問題的理論,因?yàn)榻鉀Q問題的理論是在文檔形成中做到的。文檔完整即可,每一份文檔說明一個(gè)問題,無需將多個(gè)文檔的內(nèi)容放在一個(gè)文檔的里面。除了重要階段形成文檔,其它部分都只是討論或者說是想法。不要讓文檔成為累贅,如果真是這樣,我認(rèn)為就是該考慮寫這些文檔的必要性的時(shí)候了。我們在文檔的時(shí)候,一定要明白為什么要寫這些。
在整個(gè)項(xiàng)目開發(fā)過程中,我們也同時(shí)遇到了許多程序接口問題,頁面和功能相結(jié)合的問題,數(shù)據(jù)庫建表的問題,這些問題都是源于我們項(xiàng)目小組成員之間的溝通不足。我深刻認(rèn)識到,在項(xiàng)目開發(fā)時(shí),項(xiàng)目小組中各個(gè)成員之間的相互溝通是非常重要的。如果我們要在功能方面作出修改,那么程序人員和頁面人員及數(shù)據(jù)庫人員就必須相互溝通,共同對整個(gè)程序作出相應(yīng)的修改,這樣才能避免最終整合時(shí)出現(xiàn)問題。
在這十個(gè)周里,我還對軟件工程有了新的理解。在我以前的理解當(dāng)中,軟件工程,無非就是一個(gè)人或者幾個(gè)人或一個(gè)團(tuán)隊(duì)集中在一起進(jìn)行編寫代碼的工作,以實(shí)現(xiàn)開發(fā)出所用的軟件。但現(xiàn)在我明白了,軟件工程的作用,就是告訴人們怎樣去開發(fā)軟件和管理軟件。具體地講,它表現(xiàn)在與軟件開發(fā)和管理有關(guān)的人員和過程上。所以,軟件工程就不僅僅是單一的編程過程了。它包括了系統(tǒng)分析->建模->概要設(shè)計(jì)->詳細(xì)設(shè)計(jì)->編碼->測試->維護(hù)。編碼可以理解為編程,這個(gè)只占總時(shí)間的20%左右。編程只是其中的一小部分。
在這次項(xiàng)目里我完成了許多工作,在界面設(shè)計(jì)上我完成了,首頁、全部的商品頁面、全部的用戶頁面及部分管理員頁面的制作,在后期項(xiàng)目整合過程中修改了功能和界面結(jié)合時(shí)出現(xiàn)的bug,還有數(shù)據(jù)庫插入數(shù)據(jù)及解決數(shù)據(jù)庫集中整合時(shí)出現(xiàn)的問題。這些工作我都順利完成了,雖然并不能算是非常的出色,但也算是盡力了?,F(xiàn)在看到自己辛勞的成果,我感到很欣慰。
當(dāng)然,在這次項(xiàng)目過程中我也發(fā)現(xiàn)了自己的一些問題。如現(xiàn)在的網(wǎng)站開發(fā)技術(shù)還不夠強(qiáng),在和小組成員相互溝通上還不夠積極等。我希望以此為契機(jī),在將來的項(xiàng)目開發(fā)中能做得更好。
第五篇:軟件工程實(shí)驗(yàn)心得
早在我選擇民政職業(yè)技術(shù)學(xué)院就讀軟件開發(fā)與項(xiàng)目管理這門專業(yè)的時(shí)候,我一直認(rèn)為軟件開發(fā)無非是努力的敲代碼,從敲代碼的過程中去體會各行代碼的意思和用處,在沒學(xué)軟件工程時(shí)我一直都是努力的敲代碼去學(xué)習(xí)軟件開發(fā)這門專業(yè)。在大一的時(shí)候我敲代碼的激情很好,但是到大二的時(shí)候就出現(xiàn)問題了,我根本就不喜歡敲代碼了,看見代碼就頭疼。所以感覺厭惡這門專業(yè),對學(xué)習(xí)也不感興趣了。而且,還有一件更頭疼的事是在寫一個(gè)簡單的程序時(shí)竟然老是出錯(cuò),難一點(diǎn)的,復(fù)雜一點(diǎn)的程序竟然無從下手。但是去看程序的參考答案時(shí)都看得懂,又感覺很容易。學(xué)了軟件工程以后,我就感覺我以前的學(xué)習(xí)方法是錯(cuò)誤的。以前我只注重于代碼,而不注重理論知識以及編程的思路,程序的架構(gòu)。以至于在些程序時(shí)沒有寫程序的思路,不能形成程序的架構(gòu)。只想到看腦袋里是否有與此類似的代碼。越想程序越亂,最后腦袋里一片空白。不知道程序從哪個(gè)方面下手了。
軟件工程這門課程是做軟件開發(fā)的人必學(xué)的課程,通過學(xué)這門課程,程序員就會注重軟件開發(fā)的理論知識,以及做項(xiàng)目開發(fā)的思路。學(xué)了這門課程后你寫程序就不會去盲目的去套用代碼,而是理清此程序的架構(gòu)以及思路。程序該從什么時(shí)候開始,什么時(shí)候結(jié)束。在中間需要添加什么樣的功能,以完善該軟件。其實(shí)學(xué)軟件工程并不難,而且很容易。軟件工程與日常生活聯(lián)系起來的話,就是在一天中你該先做什么,后做什么。理解了先做什么,后做什么了以后寫程序就不是那么難了,再復(fù)雜的程序也可以分成幾大塊。你理清程序的思路后就可以一步步的解決其中的難題,最終實(shí)現(xiàn)軟件的功能。如果沒學(xué)軟件工程不知道理清程序的思路的話,做一個(gè)大的項(xiàng)目開發(fā),那么多的代碼,沒有一個(gè)很好的結(jié)構(gòu),最終只會導(dǎo)致程序混亂,錯(cuò)誤百出,知道代碼再多也會素手無策的。
總而言之,作為一個(gè)程序員學(xué)習(xí)軟件工程這門課程是至關(guān)必要的,如果沒學(xué)習(xí)軟件工程,你就不會做項(xiàng)目開發(fā),也不可能開發(fā)出一個(gè)完善的軟件出來。
軟件工程實(shí)驗(yàn)心得(2):
曾經(jīng)看過一本書叫《道法自然》,內(nèi)容略記得一二,但我最欣賞的是它的書名。軟件設(shè)計(jì)沒什么太神秘有東西,只要用心體會,其實(shí)一切都很自然。軟件的設(shè)計(jì)之“道”,也不在于設(shè)計(jì)有多么的華麗、精巧,而在于其樸實(shí)、自然,最終達(dá)到“以無招勝有招”,進(jìn)入一個(gè)全新的境界。
一、軟件設(shè)計(jì)理論的層次
以我的拙見,軟件設(shè)計(jì)領(lǐng)域中的各種概念,可以分為以下幾個(gè)層次來進(jìn)行理解:
1、軟件設(shè)計(jì)的目的:重用性、擴(kuò)展性。
這是最高的層次,是應(yīng)對軟件危機(jī)的需要。
2、設(shè)計(jì)原則:低耦合、高聚合。
各種軟件設(shè)計(jì)的原則,如依賴倒置原則、單一職則原則、面向接口等,以及各種設(shè)計(jì)模式,其根本的目的其實(shí)只是為了降低耦合這么簡單。因?yàn)橹挥械婉詈喜拍芨玫倪m應(yīng)變化,更好的重用和擴(kuò)展。
3、實(shí)現(xiàn)方法:運(yùn)用設(shè)計(jì)模式封裝變化、降低耦合。
設(shè)計(jì)模式只是用來“封裝變化、降低耦合”的工具而已。它是面向?qū)ο笤O(shè)計(jì)時(shí)代的產(chǎn)物,其本質(zhì)就是充分運(yùn)用面向?qū)ο蟮娜齻€(gè)特性,即:封裝、繼承和多態(tài),進(jìn)行靈活的組合運(yùn)用。
二、關(guān)于耦合1、耦合的粒度
耦合無論如何也是不可避免的。當(dāng)我們實(shí)現(xiàn)接口、繼承父類的時(shí)候,就會不可避免的產(chǎn)生耦合。耦合是有不同粒度的,我們解耦到什么粒度為止,我認(rèn)為應(yīng)以模塊的重用粒度為準(zhǔn)。盡量解除重用模塊或?qū)ο笾g的耦合。而重用模塊之內(nèi)的耦合,應(yīng)屬于聚合的范疇,所以不要盲目的去解耦,否則就陷入了誤區(qū)。
2、解耦的原理
怎樣才能解耦呢,或者說為什么各種設(shè)計(jì)模式能達(dá)到解耦的目的呢?我覺得有以下幾個(gè)思路:
(1)將具體的東西抽象處理
(2)將分散的東西集中處理
而面向?qū)ο笾械慕涌?、繼承正為我們提供了這樣的一種機(jī)制。通過訪問接口或基類或抽象類,而不是具體的實(shí)現(xiàn)類,從而與具體的實(shí)現(xiàn)類達(dá)到了解耦的目的。我們還可以設(shè)計(jì)一些控制類,像潤滑劑一樣,協(xié)調(diào)各實(shí)現(xiàn)類之間的訪問,也可以達(dá)到耦的目的。
事實(shí)上,各種設(shè)計(jì)模式的基本思想也就是這樣。創(chuàng)建型模式是為了解除創(chuàng)建對象時(shí)產(chǎn)生的耦合,實(shí)際上是解除對類稱名的依賴,而結(jié)構(gòu)型和行為型是為了解除對象屬性或方法的直接調(diào)用。不管什么設(shè)計(jì)模式,都是將對具體實(shí)現(xiàn)類的訪問提升為對接口、基類或用于協(xié)調(diào)的控制類的訪問。
三、關(guān)于接口
這一節(jié)更具體,談一談接口,因?yàn)槭褂媒涌谑擒浖O(shè)計(jì)的重要手段,但已經(jīng)不屬于“道”了~
1、接口與繼承
接口描述的是對象某一個(gè)方面行為特征。使用接口與使用繼承關(guān)系各有優(yōu)缺點(diǎn),使用子類繼承可以繼承父類的功能,體現(xiàn)了重用的精神。而接品更加靈活,因?yàn)樗獬俗宇惻c父類之間的高度耦合,它體現(xiàn)在靈活擴(kuò)展的精神。
2、接口與純虛類
理論上接口可以由純虛基類實(shí)現(xiàn)類似的功能,那為什么還我們不去掉接口的概念,而直接使用虛類呢?
接口存在的理由就是它更加靈活,關(guān)系簡單,易于理解。比如一個(gè)類可以實(shí)現(xiàn)十幾個(gè)甚至幾十個(gè)接口,但一般開發(fā)工具只支持單繼承(由于多繼承太容易導(dǎo)致混亂和沖突),如果要繼承十幾層,系統(tǒng)結(jié)構(gòu)想必會無法理解了,我以為這是接口存在的最重要的原因。
如果接口和虛類繼承結(jié)合使用,可以產(chǎn)生強(qiáng)大的威力,這也是許多設(shè)計(jì)模式的“殺手锏”。
以上算是總結(jié)一下自己的心得??隙ㄓ胁簧倨嬷?,請各位指教。