第一篇:通信軟件實訓 文檔
北京郵電大學軟件學院
2010-2011 學年第 1學期實訓項目文檔
(每個項目小組一份)
課程名稱: 全日制研究生實訓
項目名稱: 通信軟件實訓
項目完成人:
指導教師:程保中,雷友珣,謝錦,陸天波,孫藝
日 期:2012年3月2日
●JAVA語言的聊天室實現
一、實訓項目的目的和要求:
目的:理解Socket的原理,熟悉JAIN-SIP協議規定的通信工程 要求:實現一個有GUI界面的JAVA聊天室系統
二、實訓項目開發環境:
Eclipse、Windows
三、實訓項目內容:
1、設計思路
客戶端:以服務方主機地址和端口號為參數調用 Socket 類的構造函數去創建一個 Socket 對象.創建過程包含了向服務方請求建立通訊連接 使用 Socket 對象的 getInputStream()和 getOutputStream()方法創建用于網絡傳輸的輸入/輸出流
使用所得的網絡流對象讀寫數據,網絡流對象將讀寫轉換成對 Socket 數據的接收和發送
工作完畢, 關閉網絡流對象
服務器端:以某端口號為參數調用 ServerSocket 類的構造函數去創建一個 ServerSocket 對象
調用被創建的 ServerSocket 對象的 accept()方法在指定端口監聽客戶方的連接請求
收到客戶請求后,accept()方法返回一個新建的 Socket 對象, 該對象代表和客戶方建立起來的通訊連接在服務方的通訊端點
使用 Socket 對象的 getInputStream()和 getOutputStream()方法創建用于網絡傳輸的輸入/輸出流
使用所得的網絡流對象讀寫數據,網絡流對象將讀寫轉換成對 Socket 的數據的接收和發送 工作完畢, 關閉網絡流對象
2、系統總體框架
系統的主要功能:
本系統由登陸界面、服務器界面和客戶端界面三部分組成,服務器端可以控制打開或關閉端口和服務,并且可以監視在線用戶數量。用戶則在登錄界面輸入相應的驗證信息才能登錄要系統,從而通過客戶端進行聊天,發送的消息將通過服務器廣播給所有在線用戶,達到群聊的目的。
3、用例介紹及用例圖
※用例名稱:登陸
主要參與者:客戶端用戶
涉眾及其關注點:用戶希望能順利登陸系統并進行交流
服務器端希望能對用戶進行驗證并返回驗證信息 前置條件:用戶必須通過驗證
成功保證:服務器根據用戶提供的信息進行驗證并通過 主成功場景:用戶向服務器發送驗證信息
服務器對信息進行驗證
向用戶返回驗證結果
成功登陸到服務器 ※用例名稱:聊天
主要參與者:客戶端用戶 涉眾及其關注點:用戶希望能順利進行聊天,并且保護隱私
服務器要保證聊天的順利進行
前置條件:用戶已經登陸系統
成功保證:兩個或更多用戶登陸服務器
主成功場景:用戶A發送信息
服務器接收到信息
服務器將信息轉發給用戶B 用戶B進行回復
服務器收到信息并轉發給用戶A ※用例名稱:啟動服務器
主要參與者:服務器
涉眾及其關注點:服務器希望能正確啟動,各個模塊能正常運行
前置條件:服務器程序是正確的成功保證:服務器端的硬件支持
主成功場景:按下服務器啟動按鈕
服務器程序開始運行
程序成功運行,進入服務狀態 用例圖如下:
4、領域模型
5、順序圖:
啟動服務器順序圖
登陸順序圖
聊天順序圖
6、類圖
四、程序開發成果
先打開服務器端程序,輸入端口號,運行之后打開客戶端,輸入服務器端的IP地址和端口號,連接成功后可開始進行對話。聊天窗口如下:
五、總結
通過本次實訓項目的練習,我們充分理解了Socket的原理以及SIP協議,并對SIP在JAVA中的實現方法——JAIN-SIP作為API來調用有了一個比較全面的認識。對JAVA可視化界面的處理能力也有了很大提高。JAVA是一門面向對象的語言,通過對它的研究,加強了對面向對象語言中類和對象的使用。
●C語言Socket聊天室實現
一、實訓項目的目的和要求:
目的:通過socket實現Linux環境下的點對點通信。
要求:掌握Linux環境下socket編程的基本過程;掌握c語言的socket套接字的編程思想
二、實訓項目開發環境:
Linux
三、實訓項目內容
1、問題分析:如何通過socket實現Linux環境下的點對點通信。
2、設計思路:
網絡套接字(Socket)接口上TCP/IP網絡應用程序接口(API),它提供了許多函數和例程,程序員可以使用它們來開發TCP/IP網絡應用程序。簡要步驟如下:
(1)建立一個Socket.(2)按要求配置socket,將socket連接到遠程主機或給socket指定以各本地協議端口。
(3)按要求通過socket發送和接受數據。(4)關閉此socket。
在客戶/服務器模型中,多個相互通信的計算機都作為客戶端,與網絡服務器進行連接,并通過服務器進行信息的傳遞。所以多個客戶端之間的通信就變為了客戶端與服務端的通信。所以,采用客戶/服務器模型進行網絡聊天需要分別編寫服務器端和客戶端的程序,服務器和客戶端之間相互通信的同步關系和各自的程序流程。如圖所示:
Tcp服務器Socket()Tcp客戶端Socket()建立連接Bind()Listen()Connect()Accept()阻塞直到有客戶端連接請求數據Write()Read()處理請求回應數據Read()結束連接Write()Close()Read()Close()
3、實驗過程及說明(使用TCP/IP):
(1)監聽連接
利用socket、bind、listen建立連接,步驟是:
1)用socket函數初始化socket,創建新的sockfd。Sockfd = socket(AF_INT,SOCK_STREAM,0)2)IP地址的處理 參數說明:
inet_addr 函數 INADDR_ANY 該函數把由小數點分開的十進制IP地址轉為unsinged long 類型,而在實驗中所使用的為INADDR_ANY,使用利用自己的IP地址自動填充。a)利用bind函數綁定端口和IP地址。
My_addr.sin_family=AF_INET;/*將地址族類型設定好 */ My_addr.sin_port=htons(MYPORT;/* 將端口給其賦值*/ My_addr.sin_addr.s_addr=INADDR_ANY;/*用連接地址自動填充ip*/ Bind(sockfd,(stuct sockaddr*)&my_addr,sizeof(stuct sockaddr));/*sockfd 是分配的socket名字,my-addr則便是分配好的端口與IP,用bind綁定*/ b)利用listen監聽請求(2)發送請求
1)利用gethostbyname獲取主機信息。2)初始化socket端口。
3)利用connect函數將自己的IP地址等信息發送到主機,等待主機調用accept函數來接受請求。
(3)主機接收請求,進行數據通信 1)主機利用accept接收請求。2)創建子進程,顯示歡迎信息;
3)接收返回信息,顯示連接成功,并推出連接; 4)關閉客戶端口socket;
5)關閉服務端socket,結束子線程。
4、實驗項目結果及分析
結果分析:
該測試是在一臺計算機上進行的,若要實現兩臺計算機間的點對點通信,只需修改相應的IP地址和端口號即可。如圖所示,該系統實現了P2P通信,即通信雙方之間可以相互發送和接收消息,達到了預期目的,滿足了老師的要求和用戶的需求。
四、總結
Linux環境對于我們都是一個陌生的環境,通過這次對Linux環境下的socket編程以實現雙工通信,使我們小組成員c語言編程能力有了提高和對Linux和對Linux的gcc編譯環境有了進一步的認識。使我們在宏觀上認識了Linux,相信對我們以后學習Linux會有很大的幫助。
●基于O-SIP的 Socket聊天室開發
一、實訓項目的目的和要求:
目的:完成一個基于控制臺的聊天室,最基本要實現群聊和私聊內容; 要求:掌握o-sip實現sip協議;
二、實訓項目開發環境:
Windows、VC++2010
三、實訓項目內容
1、問題分析:
項目實現的是一個基于sip的簡單聊天程序,要求用c/c++實現,可以應用exsip庫,以及接口進行程序開發,要求聊天室實現基本的群聊和私聊功能,在此基礎上可以進行進一步擴展,可以為提示哪個客戶上線,哪個客戶下線,客戶端可以向服務器請求獲得在線用戶列表,操作簡單易懂,系統要有一定的穩定性,并有一定的可擴展性。
2、設計思路:(1)總體設計
項目采用exosip接口進行設計,為了開發聊天室選擇可以實現相應功能的接口,開發出來的聊天程序要實有高的效率可以及時轉發客戶端的發送的消息,要有一定的可靠性和靈活性,實現基本功能的基礎上要有一定的擴展性。(2)數據存儲
要選出正確的數據結構能夠存儲用于通訊的數據。(3)功能性判斷
功能性需求要區別于其他消息,為了區分可以功能性需求和普通消息的區別可以設置一些格式。(4)功能實現
為了實現群聊服務器端可以把客戶端發來的普通消息進行廣播給在聊天室的所有用戶,實現私聊的時候服務器要把這條消息只發給指定客戶端,不可以使其他人看到,如果客戶端需要查看在線用戶信息服務器要把信息發送給請求的客戶端。
3、基本的流程設計(1)服務器設計流程圖:
(2)客戶端流程:
4、功能實現
基本的群聊和私聊功能都是通過服務器轉發到的,當服務器接收到群聊的信息就可以進行廣播,但接到私聊的信息就只發給接收方。
在客戶端在接收數據采用一個接收線程定義是,static HANDLE hHandle1=NULL;定義一個句柄DWORD WINAPI rec_v(LPVOID p)用來定義一個線程,當需要進行調用時在相應的位置寫上hHandle1=CreateThread(NULL,0,rec_v,NULL,0,NULL)。發送數據時采用while循環并且在發送數據是要判斷是否是功能性請求消息,例如如果輸入的是***cls那么這是求求清屏,那么客戶端就不把這條消息發個服務器,并自身處理這個功能。
在服務器端不采用多線程,應為服務器子進行轉發或者提供功能性需求,不需要自己輸入什么,所以在一個while循環就可以實現基本功能了,并且在接收消息是要判斷是否是功能性請求,如果是者進行功能性處理,比如當客戶端發送***list時,服務器要把在線用戶信息發給提出請求的客戶端。
5、設計流程圖(1)服務器端流程圖:
服務器首先進行初始化工作然后等待客戶端對他的連接并接受客戶端發來的消息,如果接收到的數據是功能性請求則進行功能性處理,否則當作普通消息進行廣播,判別是否是功能性請求的方法是客戶端再發送功能性請求時在信息的頭部加上***及請求類型,比如***list就是一個申請用戶列表的請求,當服務器端接到***就解析后面的命令,當時sip:時表明這是一個新用戶,然后服務器會在自己維持的用戶列表中把新用戶加進來,然后繼續等待接收客戶端信息,當收到list時會把在新用戶信息發給起初請求的用戶,當私聊時服務器會把這條信息轉發個指定用戶,而不去轉發,這些操作結束后程序都會回到接收數據的狀態。(2)客戶端流程圖:
首先客戶端完成基本的初始化過程,輸入自己的名字和端口號程序會自動把輸入轉化成sip:name@ip:portde 形式去連接服務器,連接成功開啟接收線程后不斷監聽是否有消息發送過來,當接收到消息后打印然后繼續監聽,當輸入的消息不是功能性請求這個消息不做任何處理發給服務器,輸入的消息是功能性請求消息時,會有兩種處理一種是客戶端可以自己處理的,這樣客戶端自己處理后繼續等待鍵盤輸入,比如清屏功能,當需要服務器協作完成時客戶端會把消息進行加工然后發給服務器等待服務器合作處理,比如當向服務器請求顯示在線用戶是發給服務器的消息會在前面加上***list,這樣當服務器接收到消息時解析***知道這是一個功能請求,然后再解析出list知道這是一個在線用戶列表請求,然后在線用戶列表發給請求的用戶。當收到的功能性請求是退出或者私聊等處理過程和上面類似。
四、實訓項目結果及分析
我們的O-SIP的聊天室系統的開發主要是基于控制臺,由于開發時間比較倉促,所以我們僅僅實現了簡單的消息收發的雙工通信,界面還未實現美化等。希望老師諒解。
服務端啟動之后創建一個socket,將socket和本機的IP綁定
五、實訓項目人員、進度安排及完整過程
六、實訓項目心得及體會
項目基本實現了需求的功能,程序可以進行基本的私聊和群聊,在此基礎上還可以進行在線用戶查詢,提醒所有用戶是否有人上線或者下線,并且系統相對穩定,有一定的擴展性,通過此次實訓學到了很多知識對網絡編程有了一定的了解和深入,在實踐編程中雖然遇到了很多問題但是通過組內和組件交流,都得到了很好的解決,多練了自己和別人的交流能力和團隊精神,總之有很多的收獲,并希望有機會能夠多參與到這樣的實訓中。
通過這三周的實訓,我們小組各個成員都在軟件工程方面有所提高。一開始構想時只有大體的思路,忽略了一些細節,因此在我真正做設計時發現有很多錯誤,有的時候要解決一個錯誤會花上很多時間,在做的過程中,有很多錯誤意想不到,有的錯誤卻犯得很幼稚,不過這樣對自身的排錯能力能得到很大的提高。比如一個組員在做java socket 聊天程序測試時候,他無論怎么運行都會出現錯誤,而且出現提示信息他也無法修改,浪費了他至少兩個小時時間,最后因為在定義類的時候是小寫,而在直接生成的類他把刪去,又直接復制編程人員的程序。這些細小錯誤讓我深受感慨,它告訴了我編程細心重要,養成一個好的編程習慣更重要。這次項目的完整開發,讓我們有項目初步的思想,這次項目的開發讓我把軟件生成的流程從信息的收集,再寫需求,再完成后臺設計到編寫代碼,到測試,讓我知道還有很多地方的不足。更重要的是團隊之間的合作,相互之間的交流,有時一個問題總是想不通,但每個隊友負責的部分不同,所以想法也不同,交流之后,便有了新的思路。這次課程設計的時間很緊迫,再加上各方面的經驗不足,也遇到很多問題,這個聊天系統還有很多地方沒有完善,希望老師能諒解。總的來說,這次課程設計對我很有幫助,我發覺老師上課講的很多東西對我們都很有用,讓我受到不少的啟發。
感謝程保中教授,雷友詢教授這三周來對我們的細心教導和使我們的通信軟件知識有了很大的提高和其感謝孫藝,謝錦,陸天波三位老師在這三周內每天都陪我們在實驗室,為我們解除疑惑,幫我們分析錯誤。正是由于你們才使我們在自信心上有了大的增強,不再感覺做項目是個遙不可及和非常困難的事情。這次工程實踐的為我們有條理的梳理了我們所學的軟件工程方法和編碼技術。使我們在以后的工作中敢于面對困難和向困難挑戰。
第二篇:軟件實訓總結
軟件開發實訓總結
一、實訓過程
首先,我們學習通用編程:任何類類型的所有值都可以同object類型的變量來代替。封裝:就是把數據和行為結合起在一個包中)并對對象使用者隱藏數據的實現過程,一個對象中的數據叫他的實例字段(instance field)。重載:當多個方法具有相同的名字而含有不同的參數時,便發生重載。編譯器必須挑選出調用哪個方法。數組列表:ArrayList動態數組列表,是一個類庫,定義在java.util包中,可自動調節數組的大小。class類 object類中的getclass方法返回class類型的一個實例,程序啟動時包含在main方法的類會被加載,虛擬機要加載他需要的所有類,每一個加載的類都要加載它需要的類。Java中對內存的分配是動態的,它采用面向對象的機制,采用運算符new為每個對象分配內存空間,而且,實際內存還會隨程序運行情況而改變。程序運行中 Java系統自動對內存進行掃描,對長期不用的空間作為”垃圾”進行收集,使得系統資源得到更充分地利用.按照這種機制,程序員不必關注內存管理問題,這使Java程序的編寫變得簡單明了,并且避免了了由于內存管理方面的差錯而導致系統出問題。而C語言通過malloc()和free()這兩個庫函數來分別實現分配內存和釋放內存空間的,C++語言中則通過運算符new和delete來分配和釋放內存,總之,Java語言是一個純的面向對象程序設計語言。Java語言是分布式的。Java語言支持Internet應用的開發,在基本的Java應用編程接口中有一個網絡應用編程接口(java net),它提供了用于網絡應用編程的類庫,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(遠程方法激活)機制也是開發分布式應用的重要手段。Java語言是健壯的。Java的強類型機制、異常處理、廢料的自動收集等是Java程序健壯性的重要保證。對指針的丟棄是Java的明智選擇。Java的安全檢查機制使得Java更具健壯性。Java語言是安全的。Java通常被用在網絡環境中,為此,Java提供了一個安全機制以防惡意代碼的攻擊。除了Java語言具有的許多安全特性以外,Java對通過網絡下載的類具有一個安全防范機制(類ClassLoader),如分配不同的名字空間以防替代本
地的同名類、字節代碼檢查,并提供安全管理機制(類SecurityManager)讓Java應用設置安全哨兵。Java語言是體系結構中立的。Java程序(后綴為java的文件)在Java平臺上被編譯為體系結構中立的字節碼格式(后綴為class的文件), 然后可以在實現這個Java平臺的任何系統中運行。這種途徑適合于異構的網絡環境和軟件的分發。Java語言是可移植的。這種可移植性來源于體系結構中立性,另外,Java還嚴格規定了各個基本數據類型的長度。Java系統本身也具有很強的可移植性,Java編譯器是用Java實現的,Java的運行環境是用ANSI C實現的。Java語言是解釋型的。如前所述,Java程序在Java平臺上被編譯為字節碼格式,然后可以在實現這個Java平臺的任何系統中運行。在運行時,Java平臺中的Java解釋器對這些字節碼進行解釋執行,執行過程中需要的類在聯接階段被載入到運行環境中。Java是高性能的。與那些解釋型的高級腳本語言相比,Java的確是高性能的。事實上,Java的運行速度隨著JIT(Just-In-Time)編譯器技術的發展越來越接近于C++。Java語言是多線程的。在Java語言中,線程是一種特殊的對象,它必須由Thread類或其子(孫)類來創建。通常有兩種方法來創建線程:其一,使用型構為Thread(Runnable)的構造子將一個實現了Runnable接口的對象包裝成一個線程,其二,從Thread類派生出子類并重寫run方法,使用該子類創建的對象即為線程。值得注意的是Thread類已經實現了Runnable接口,因此,任何一個線程均有它的run方法,而run方法中包含了線程所要運行的代碼。線程的活動由一組方法來控制。Java語言支持多個線程的同時執行,并提供多線程之間的同步機制(關鍵字為synchronized)。
二、心得體會
剛開始時張宇老師先教我們配置JAVA的編程工具和運行環境,然后教我們學JSP,在此期間,我們自學了JAVA,又學了Tomcat的使用及MySql和HTML語言,當我們JSP入門后,陳老師開始教我們學習JSF框架,但由于學校的安排,剛開始學,陳老師便去了蘇州,由在蘇州帶隊的孔祥盛老師回來教我們,在孔老師的安排下,我們又學習了SQL Server 2000和Struts框架,教我們學會了Javawebstudio的使用。總之,在兩位老師的細心輔導下,我們有了很大的進步,知識得到了擴充,認識得到了加深,也使得我們的自學能力得到了很大的提高,在此,我向兩位老師表示由衷地感謝。這次實訓是三年中所學知識的一次匯總,是三年來學習能力的一次集中體現,有的知識在這次實訓中用不到,但以后會用到,我敢說肯定會用到。因為好多東西都是厚積而薄發,所學的知識在關鍵的時刻也許只有一種用得上,但這一種也許足以成就我們的人生,到那時我們才能真正體會到知識的偉大,才能真正了解老師的重要性。我覺得要成為一個合格的程序員,首先要具備的是一種自學能力,遇到了問題自己要有能力去解決,當你嘗試了各種方法,實在無能為力時再去請教別人,這時你所學的知識你一生都不會忘記,它將成為你一生的財富。有句話說得好:進攻是最好的防守!當你遇到了問題,你要試著去解決,編程嘛,想到了就要去試,你的面前就一臺電腦而已,它又不會爆炸,你怕什么呢?我不敢說我的觀點一定正確,每個人有每個人的想法,也正是因為大家的觀點各不相同,才使得IT業這個新興的產業在短短的幾十年中得到了長足的發展,給人類社會創造了超過以往人類社會所創造的價值的總和,這不能不令人驚嘆,也正是因為如此,它才使得我對它產生了強烈地好奇心和探索欲。未來的社會是信息的社會,信息業所創造的財富在人類社會中占據首位,經濟、軍事、教育、醫學、農業等領域無一不用到信息業所產生的科技成果。我能感受到它所創造的經濟效益會有多大,所以,我要說:我愛編程,海枯石爛,矢志不渝!我是一個新技術的狂熱追隨者,每次上網時總要到MLDN上逛一下,當看到短短的幾行代碼卻能產生令人驚嘆的功能時,我就被編程者的那種魅力所折服,我想成為其中的一員,我為自己現在所學習的專業感到自豪。在我學習的過程中我也遇到了很多的問題,可是我卻發現我遇到的好多問題在網上總能找到答案,我才明白我遇到的問題很多人都遇到過,并且他們也把解決的辦法發布到了網上,以使我們這些初學者少走些彎路,我覺得他們太善良了,同時我也明白了自己是多么的渺小,我正在走前人走過的路,到底前面的路有多長多遠,我不知。他們是開路先鋒,他們為我們學習新技術新知識鋪平了道路,我們所要做的就是把他們所
發明和創造的東西掌握使用而已,并且知識量又很大,當我看到有無窮無盡地學習資源供我享用時,我只能說,他們像太陽一樣照耀著我成長,他們太好了。當我看到程序代碼,我就有一種特別的感覺,讓我不斷想成為一名編程高手,如果真的有一天,我的理想會實現,我會加倍努力好好學編程,永遠不改變!通過三個月的實訓,我感到自己學到了很多東西,雖說不精,但已經入門,于世間萬物之中,遇見我所遇見的事物;于千萬年之中,時間的無涯荒野里,沒有早一步,也沒有晚一步,剛巧趕上了,上蒼讓我有機會接觸編程,給了我一條路。我很清楚以后的路還很長,再長的路,一步步也能走完,再短的路,不邁開雙腳也無法到達。任何業績的質變都來自于量變的積累,成功不是將來才有的,而是從決定去做的那一刻起,持續累積而成,讓我們將事前的憂慮,換為事前的思考和計劃吧!在實訓的過程中,我深深感覺到自身所學知識的有限,有些知識點以前沒有學過,但我也沒有去研究,實訓時突然間覺得自己真的有點無知,雖然現在去看依然可以解決問題,但要浪費許多時間,這一點是我必須在以后的學習中加以改進的地方,同時也要督促自己在學習的過程中不斷的完善自我。另外一點,也是在實訓中必不可少的部分,就是同學之間的互相幫助。所謂”當局者迷,旁觀者清”,有些東西感覺自己做的是時候明明沒什么錯誤,偏偏程序運行時就是有錯誤,讓其他同學幫忙看了一下,發現其實是個很小的錯誤。所以說,相互幫助是很重要的一點,這在以后的工作或生活中也是很關鍵的。俗話說:“要想為事業多添一把火,自己就得多添一捆材”。此次實訓,我深深體會到了積累知識的重要性。在實訓當中我們遇到了不少難題,但是經過我們大家的討論和老師細心的一一指導,問題得到了解決。兩個月的實訓結束了,收獲頗豐,同時也更深刻的認識到要做一個合格的程序員并非我以前想像的那么容易,最重要的還是細致嚴謹。社會是不會要一個一無是處的人的,所以我們要更多更快地從一個學生向工作者轉變,總的來說我對這次實習還是比較滿意的,它使我學到了很多東西,為我以后的學習做了引導,點明了方向,我相信在不遠的未來定會有屬于我們自己的一片美好天空。
第三篇:軟件實訓心得體會
學生管理系統實訓心得
通過為學期期的實訓,我學習了很多關于很多的知識。在老師的正確指導下,順利的完成了我的實訓內容。在此,也有同學的幫助,在他們的幫助下我也受益匪淺。最終,能順利完成實訓的任務也高興了。
在實訓生活中,我了解開發項目的需求、設計、實現、確認以及維護等活動整個過程,讓自己開始懂得一點軟件工程的知識點。首先,了解需求分析的重要性,比如:需求分析就是分析軟件用戶的需求是什么.如果投入大量的人力,物力,財力,時間,開發出的軟件卻沒人要,那所有的投入都是徒勞.如果費了很大的精力,開發一個軟件,最后卻不滿足用戶的要求,從而要重新開發過,這種返工是讓人痛心疾首的.(相信大家都有體會)比如,用戶需要一個for linux的軟件,而你在軟件開發前期忽略了軟件的運行環境,忘了向用戶詢問這個問題,而想當然的認為是開發for windows的軟件,當你千辛萬苦地開發完成向用戶提交時才發現出了問題,那時候你是欲哭無淚了,恨不得找塊豆腐一頭撞死。所以,需求分析是成功的第一步,就是要全面地理解用戶的各項要求,并準確地表達所接受的用戶需求。然后呢?確實客戶的需求的以后我們要做什么呢,那當然是設計和分析。此階段主要根據需求分析的結果,對整個軟件系統進行設計,如系統框架設計,數據庫設計等等。軟件設計一般分為總體設計和詳細設計。好的軟件設計將為軟件程序編寫打下良好的基礎。接下來是代碼實現,此階段是將軟件設計的結果轉換成計算機可運行的程序代碼,我們這個項目為五個模塊,分別為五個小組成員完成。這階段我學到很多編程的思想,如:分層思想、mvc、ssh的整合、dao的編寫。編號程序之后就是軟件測試了,此時在軟件設計完成后要經過嚴密的測試,以發現軟件在整個設計過程中存在的問題并加以糾正。整個測試過程分單元測試、組裝測試以及系統測試三個階段進行。測試的方法主要有白盒測試和黑盒測試兩種。在測試過程中需要建立詳細的測試計劃并嚴格按照測試計劃進行測試,以減少測試的隨意性。最后是軟件維護,它是軟件生命周期中持續時間最長的階段。在軟件開發完成并投入使用后,由于多方面的原因,軟件不能繼續適應用戶的要求。要延續軟件的使用壽命,就必須對軟件進行維護。
但是,我深深體會到了在許多方面的欠缺和不足,比如:在需求分析時,由于自己的實踐經驗不夠,很難分析需求到位;在編寫代碼時,由于自己技術知識水平不廣,常常遇到技術難題;還有自己沒有 良好的編程習慣,不注釋,有時連自己也看懵了;編程的結構不好,維修和修改代碼是很慢。這次實訓讓我意識到了自己做為計算機軟件工程專業的學生,要想在以后的職業中嶄露頭角,除了要有過硬的理論知識,健康的體魄外,還必須具備良好的心理素質,使自己在以后的途中無論經歷什么樣的困難,都立于不敗之地。“紙上得來終覺淺,絕知此事要躬行!”在這短短的時間里,讓我深深的感覺到自己在實際應用中所學專業知識的匱乏。讓我真真領悟到“學無止境”這句話的涵義。而所學的,都是課本上沒有而對我們又非常實用的東西,這又給我們的實訓增加了濃墨淡采的光輝。我懂得了實際生活中,專業知識是怎樣應用與實踐的。
在這次實訓中,我不僅知道了職業生涯所需具備的專業知識,而且讓我深深體會到一個團隊中各成員合作的重要性,要善于團隊合作,善于利用別人的智慧,這才是大智慧。靠單一的力量是很難完成一個大項目的,在進行團隊合作的時候,還要耐心聽取每個成員的意見,使我們的組合達到更加完美。實訓過程中,除了要專業知識,包括人際交往,溝通方式及相關禮節方面的內容,對于團隊開發來說,團結一致使我深有體會。團隊的合作注重溝通和信任,不能不屑于做小事,永遠都要保持親和誠信,把專業理論運用到具體實踐中,不僅加深我對理論的掌握和運用,還讓我擁有了一次又一次難忘的開發經理,這是也是實訓最大的收獲。
這次實訓帶給我太多的感觸,它讓我知道工作上的辛苦,事業途中的艱辛。讓我知道了實際的工作并不像在學校學習那樣輕松。讓我學到了很多課堂上更本學不到的東西,仿佛自己一下子成熟了,懂得了做人做事的道理,也懂得了學習的意義,時間的寶貴,人生的真諦。明白人世間一生不可能都是一帆風順的,只要勇敢去面對人生中的每個驛站!這讓我清楚地感到了自己肩上的重任,看清了自己的人生方向,也讓我認識到了做軟件應支持仔細認真的工作態度,要有一種平和的心態和不恥下問的精神,不管遇到什么事都要總代表地去思考,多聽別人的建議,不要太過急燥。人非生而知之,雖然我現在的知識結構還很差,但是我知道要學的知識,一靠努力學習,二靠潛心實踐。沒有實踐,學習就是無源之水,無本之木。這次實訓讓我在一瞬間長大:我們不可能永遠呆在象牙塔中,過著一種無憂無慮的生活,我們總是要走上社會的,而社會,就是要靠我們這些年輕的一代來推動。這就是我們不遠千里來實訓的心得和感受,而不久后的我,面臨是就業壓力,還是繼續深造,我想我都應該好好經營自己的時間,充實、完善自我,不要讓自己的人生留下任何空白!
從初出茅廬,到現在可以熟練的按照流程開發軟件,這都與我組每個成員的努力是分不開的。在實訓中,教會了我們很多東西,同時也鍛煉了大家踏實、穩重、溝通的能力,每個人都很珍惜這來之不易的實訓機會。在工作中,經常會和不同的人打交道,然而他們的態度是不可恭維的,你會感覺到他的不耐煩以及他的高傲,所以這就需要學會溝通的方式及說話技巧,學會靈活面對。
在這學期的實訓中,我受益匪淺,不僅專業知識增長了,最主要是懂得了如何更好的為人處事、團隊合作,感覺自己比以前成熟多了。正因為學習上有所收獲,思想上也就豁然開朗起來。通過這次實訓,我覺得要改變以前錯誤的思想,想把各項工作做好,就必需要不斷的學習,不斷的充電,也只有不斷的學習、充電,才能提高自已的工作能力。古人云,“活到老、學到老”,這句話是很有道理的。
社會的競爭是激烈的,我想我們應該好好把握住大學學習的時間,充實、完善自我,全面發展,攻破電腦,爭取做一名出色的程序員。我們深刻的了解到,只有經歷過,才知道其中的滋味。
對于我而言,可以說通過這次實訓,真真切切的讓我了解了什么是軟件開發,什么是軟件,讓我對于軟件最初的觀點也有了本質性的改變!程序員不僅僅是一份職業,更是一份細心+一份耐心+一份責任心=人生價值的詮釋。
第四篇:軟件實訓心得
武漢理工大學《工程軟件應用訓練》心得體會
工程軟件應用訓練
題目
學院
專業
班級
姓名 指導教師
心得體會 汽車工程學院 車輛工程 車輛1001熊 欣
2012 年 8 月 30 日
AutoCAD使用心得體會
正如課程設計教學目的所言“從產品裝配測繪、計算機繪圖、三維CAD建模、參數化設計等方面進一步加深和拓寬學生在工程制圖、機械CAD技術等課程中所學基本知識,結合實際機械產品(模型)設計的具體問題,培養學生理論聯系實際認識和解決問題的能力,為后續專業課程和相關實踐環節的學習奠定基礎。”通過這次軟件實訓,我深深的體會到自己在理論知識和工程應用上的不足。
我作為一名車輛工程的學生,之后到了工作崗位上,也許會從事設計方面的工作,這時學習CAD就至關重要了。CAD可以將圖示清晰明了的體現出來,讓人一目了然,尺寸大小形狀都有體現,是設計者和實施者的橋梁,從一張CAD圖紙可以看出設計者的構思,簡單明了。CAD實際用途的廣泛性不僅體現在我們環境工程這個專業上,在其他的專業也有體現。可以說CAD是今后我們軟件應用的一個基礎,無論是設計還是施工都要看懂CAD圖,學會應用和繪制CAD圖。
經過這兩個多月的學習,我掌握了CAD制作的基本操作,簡單了解了CAD的實際用途。CAD即計算機輔助設計(CAD-Computer Aided Design),是利用計算機及其圖形設備幫助設計人員進行設計工作的一種軟件。它是Autodesk公司出品的一款著名的專業制圖設計軟件,功能非常強大,已經成為國際制圖設計的標準軟件。在機械、建筑、服裝、電子等各個方面都有應用。尤其在機械行業是離不開這個軟件的。CAD可以繪制機械、建筑、航空、石油等多方面的二維平面圖形和三維立體圖形等等,它的使用性是非常之廣泛的。我們在繪制圖形的時候要注意線條的寬度,字體的美觀、尺寸也相當準確,在命令提示行里輸入多少就是多少,方便簡潔。
對于平時作業和繪圖時遇到的問題,主要是對于軟件很多繪圖修改命令的不熟練。就拿繪制直線為例,如果不打開正交的命令則會導致直線的不平整,對于繪制水平豎直的圖形有很大的不便,使之不能很好的對齊,又如不打開線寬的命令就不會體現線條的粗細等等。還有圖層的建立和應用的問題,需要將要繪制的圖層設置為當前,很多時候就是因為忘記設置當前,造成了很多不必要的麻煩。而且圖層繪制時也要好好的選擇線性和顏色才不會造成后來返工的局面。
用CAD畫圖,打開對象捕捉就能把有特征的點標出來,但是很多時候要適時地使
用。CAD中尺寸標注也很快捷,兩個點一拉,左鍵一點就完成一個標注,不用畫箭頭,不用標文字,只要自己設計好標注格式,計算機就能按要求標出來。插入文字也很方便,但是要注意字的格式要提前設好,防止不必要的麻煩。
對于已經繪制的好的圖像修改圖層,我和很多人一樣遇到了類似的問題,在圖層選擇時沒有選定為當前,使得想要的圖形沒有到規定的圖層中去。這時,要將所要更改的圖形進行選定,點擊右鍵,在最后一個特性中將所要更改的更改過來,無論是顏色還是線性還是圖層都可以同一的修改。這時就比較方便,可以很多線條的修改不存在干擾的問題。
雖然最后的圖紙并沒有達到預期的效果,但是我切實收獲了很多。在這兩個月中進行了很多的探索,付出了很多的時間和精力。雖然我的作品并不是最好的,但是里面注入了我太多太多的心血,我們對自己很滿意。很感謝老師對我們的指導,讓我也對設計這個領域的職業產生了興趣,很希望可以從事這方面的工作。
第五篇:軟件實訓心得
轉眼間,到昆山已經兩個多月了。不知不覺中我已經從一個在校生變成了一個職員。這跟在我們學校是完全不一樣的。除此之外,安博還制定了嚴格的制度,這些使我們在安博的培訓像職工在公司工作一樣,讓我們提早接觸到公司的氛圍。
來安博最重要的目的還是學技術,那就說說這里的教育情況吧。安博實行的是上午授課,下午上機練習的制度。我覺得我們這個班上午的授課經理非常好,他對java的理解非常透徹。我在大學學了半年的java,僅僅停留在表面上,對實質的內容根本都不了解。比如說==與equals的區別,方法的覆蓋,變量的隱藏等等。老師通過圖的方式,給我們講解它們在內存中的情況,使我們從本質上了解了這些東西。他的這種授課方式,既生動又形象,徹底地將問題講明白,我們接受起來輕松容易,也不容易遺忘。
除了他的講課方式以外,他還是一個非常幽默的人,坐在凳子上聽四個小時的課,會很乏味的,他時不時的給我們說一些搞笑的事,或者開玩笑的話,使課堂氣氛非常活躍。他每講完一個新知識點,都給我們留一點時間練習,加深對新知識的理解。我們有什么問題,他都會很耐心的跟我們講解,不管程度是好是壞,他都一樣對待。總之,聽他的課就是一種享受。他還把跟知識相關的材料發給我們,讓我們有研究的空間。有時還給我們一些面試題,讓我們提早看,只有準備好了去應聘才有機會。
昆山還給我們開了一些素質課,講解一些職場素質,如何為人處事,如何同面試官講話,還要求我們在日常生活中也盡量做到。在我們就業之前開這樣的課,對我們這些即將踏入社會的大學生來說是非常重要的。公司招聘員工,一看實力,二看素質,兩者缺一不可。
總之在昆山的這段時間中,我學到了很多。時間雖短,但所學到的和知識的實用性很強。所有的老師們都教給了我們很多工作習慣、工作技巧、日常禮儀、職業素養和心態方面的東西。使我們對今后的工作有了新的認識,增添的極大的信心。
學會學習和團結
我們學了半個多月的基礎知識,也該是用一用的時候了。這半個多月,應該算是安博給我們安排的p階段的訓練時間。我們開始接觸一些小型的系統,實訓員工管理系統等。這些小型的系統鞏固了我們的基礎知識,讓我們學會了一些編程的技巧,以及一些驗證的方法。
每做完一個系統,我們都有一個項目演示環節。自己帶著項目在全班學生的面前演示。講解自己是如何實現的,說出自己系統的亮點和不足,然后由其他學生來挑系統的毛病,找出漏洞。通過這種方式,你可以學到其他學生的優點,別人好的編程思想你可以在以后的項目中運用。這是一個自我提高的方式。
接下來我們做了一個財務管理系統,用mvc三層架構實現的,jsp+struts+hibernate,這個系統是我們小組共同完成的,jsp用于前臺的顯示,struts調用bean的方法與數據庫連接。這個系統做完之后,我覺得一個項目的流程圖是十分的重要。如果沒有總體的框架,后期修改會是很麻煩的。做項目之前我們應該先總體考慮一下布局,不要急著編程。在做項目的這段時間里,我感覺自己的知識面太窄了,書到用時方恨少。做項目不僅檢查了我們的基礎知識掌握程度,而且給我們提供了自我提高的機會。項目做完以后,我感觸頗深。以前在學軟件工程的時候,一直不覺的文檔很重要,老是認為編碼最重要,做這個項目糾正了我的錯誤認識。我認識到概要設計,詳細設計是何等的重要。團隊合作,最重要的是合作精神,不能自己一個人編程,不管其他的人。項目都是分模塊做的,每個模塊直接是有聯系的,組內必須協調好,否則在整合的過程中會出很多的問題。一個大項目給個人自我發揮的余地是很大的。如果數據庫里的數據太多,在顯示的時候就應該考慮分頁,分頁的方法有很多種,這就是一個值得鉆研的問題。在此期間我學會了自己解決問題的能力,在發現錯誤的過程中,才能學到更多的知識。知識是無窮的,不要為了就業而學習,而是為了提高而學習。多讀書,能提高自己的邏輯思維能力。要多和其他人交流,不要閉門造車。
實習感受
不知不覺在大學已經度過了2年的時光,為了讓即將面臨畢業的我們能有一個好的就業前景,中國管理軟件學院決定讓我們把后半年作為一個實習年。由于我們是安博定向培養的所以我們實訓有安博來提供基地。
做了十幾個小時的火車,我終于來到了很多人都向往的江蘇。由于第一次到南方,心里也隱藏著那么多的誘惑。
但是在學習的過程中,總有那么多新鮮事物進入我的視野,這時才感嘆自己的知識面是多么的狹窄,同時也為自己在學校里沒有好好學習感到愧疚。書到用時方恨少,這種感覺讓我深深體會到自己的無知。來到這里以后我的求知欲望更加強烈了,想的最多的就是如何將自己的學到的知識真正的融入到現實技術中。
軟件業,讓多少人為之瘋狂,它的魅力的確很大,涉及的知識是那么的廣泛,讓我總覺得自己的知識不夠用,每天早上8點半,到下午5點半的培訓時間要學習企業中所需的技術知識,其他的時間,就只剩自己瘋狂的練習;來到這里才感覺自己在大學的生活是那么悠閑自在。
也許人都是那樣,往往都是事情來臨的時候才為自己的所作所為感到后悔。來到這里沒有聯系太多的朋友,心中唯一的目標就是將需要的知識好好學到手,以便能夠更好的在工作時熟練使用。
有時候寂寞只是一種態度。來這里沒有感覺太多的孤獨,每天都充滿激情的去迎接新事物,去面對新知識。一步一步設計自己未來的路線并將其實現。
雖然來這邊的同學還有很多,但大家都很清楚的自己的職責,我們抵擋住了很多誘惑,都在為著自己的目標而奮斗。在這里我只想說一句,就是感謝安博能夠提供給我們這個機會,讓我們提前接觸社會,認識自己,相信出來培訓的同學都將會有一個更加深刻的認識,來為自己的未來奮斗!
或得或失
2個月的培訓眼看就要結束了,剛開始覺得好漫長,現在卻感覺過得好快啊,也就是一眨眼的時間。可是,通過這次培訓我懂得了好多,明白了好多。
隨著畢業時間的臨近,心里越來越不安,也變得很浮躁,不知道自己畢業后該去哪里。這時才體會到社會上說得“畢業就意味著失業”和老師所說的就業壓力。
回想自己2年的大學生活,感覺就這樣不知不覺走了過來,似乎昨天才踏進大學校門,今天就要畢業了。2年里自己都做了什么,學到了什么,想到這里,心里就更沒底了,似乎什么也沒有學到,什么也沒有做過。
學習期間深深體會到自己在大學里學的東西其實都很重要,以前以為沒有用的科目,到了這兒才知道這千絲萬縷的關系,所有的課程都是有用的。學校的科目是基礎,所以不要認為自己現在學的沒有用,知識不管是在什么時候總是有用的。
走編程這條路其實不是自己原本的打算,以前一直以為自己壓根就不是編程的料,認為編程從來都不會是自己想做的事情,把編程看的很難很難。經過自己的努力以后才發現,原來很多事情都是我們自己把它想復雜了,編程也不是那么的難。只要努力,沒有什么是不可能的。
總之,我不后悔自己的選擇,也會一直堅持下去。