2017軟件公司實(shí)習(xí)報(bào)告【一】
一、 實(shí)習(xí)的時(shí)間:20XX年4月5日—20XX年6月20日
二、 實(shí)習(xí)的地點(diǎn):xx有限公司
三、 實(shí)習(xí)的目的:
進(jìn)一步了解java開發(fā)的相關(guān)知識(shí),掌握java開發(fā)的基本技術(shù),豐富java開發(fā)的實(shí)戰(zhàn)經(jīng)驗(yàn)。學(xué)習(xí)SQL的基礎(chǔ)知識(shí)及正確的運(yùn)用方法,和有用的相關(guān)技術(shù),提高自己的工作效率。通過實(shí)習(xí),培養(yǎng)我們綜合運(yùn)用已學(xué)知識(shí)Java語言的面向?qū)ο缶幊棠芰?培養(yǎng)我們動(dòng)手能力;培養(yǎng)我們良好編程規(guī)范、編程方法;以便能較全面地理解、掌握和綜合運(yùn)用所學(xué)的知識(shí),提高自身的編程能力;增強(qiáng)自己的團(tuán)隊(duì)協(xié)作意識(shí),了解軟件開發(fā)的思考角度和主要流程。為畢業(yè)之后能夠更快地進(jìn)入工作狀態(tài)并且能夠更好的工作,打好一定的基礎(chǔ)。
四、實(shí)習(xí)的方式、方法:實(shí)踐操作
五、實(shí)習(xí)的要點(diǎn):
1.MySql數(shù)據(jù)庫和SQL 數(shù)據(jù)庫的使用;
2. Java中的常用設(shè)計(jì)模式;
3. 控制技術(shù)-Servlet技術(shù)
4. 頁面設(shè)計(jì)-JSP頁面;
六、實(shí)習(xí)的內(nèi)容: Mysql數(shù)據(jù)庫
1) MySQL數(shù)據(jù)庫管理系統(tǒng)概述
MySQL是流行的開放源碼SQL數(shù)據(jù)庫管理系統(tǒng),它是由MySQL AB公司開發(fā)、發(fā)布并支持的。MySQL AB是由多名MySQL開發(fā)人創(chuàng)辦的一家商業(yè)公司。它是一家第二代開放源碼公司,結(jié)合了開放源碼價(jià)值取向、方法和成功的商業(yè)模型。
數(shù)據(jù)庫是數(shù)據(jù)的結(jié)構(gòu)化集合。計(jì)算機(jī)是處理大量數(shù)據(jù)的理想工具,因此,數(shù)據(jù)庫管理系統(tǒng)在計(jì)算方面扮演著關(guān)鍵的中心角色,或是作為獨(dú)立的實(shí)用工具,或是作為其他應(yīng)用程序的組成部分。
MySQL服務(wù)器還有一套實(shí)用的特性集合,這些特性是通過與我們用戶的密切合作而開發(fā)的。在我們的基準(zhǔn)測(cè)試主頁上,給出了MySQL服務(wù)器和其他數(shù)據(jù)庫管理器的比較結(jié)果。
MySQL服務(wù)器初是為處理大型數(shù)據(jù)庫而開發(fā)的,與已有的解決方案相比,它的速度更快,多年以來,它已成功用于眾多要求很高的生產(chǎn)環(huán)境。盡管MySQL始終在不斷發(fā)展,但目前MySQL服務(wù)器已能提供豐富和有用的功能。它具有良好的連通性、速度和安全性,這使的MySQL十分適合于訪問Internet上的數(shù)據(jù)庫。
2) MySQL穩(wěn)定性
每次發(fā)布的MySQL服務(wù)器均是可用的。僅當(dāng)用戶嘗試源自“灰色區(qū)域”的代碼時(shí)才會(huì)出現(xiàn)問題。當(dāng)然,新用戶不了解“灰色區(qū)域”是什么。因此,在本節(jié)中,我們介紹了目前已知的這類區(qū)域。本節(jié)所作的介紹主要針對(duì)MySQL服務(wù)器5.0版和更高版本。在新的版本中,更正了所有已知和通報(bào)的缺陷,但“缺陷”一節(jié)所列的除外,這類缺陷與設(shè)計(jì)有關(guān)。
java與SQL的應(yīng)用
Java語言是編寫數(shù)據(jù)庫應(yīng)用程序的杰出語言之一,它提供了方便訪問數(shù)據(jù)的技術(shù)。利用Java語言中的JDBC技術(shù),用戶能方便地開發(fā)出基于Web網(wǎng)頁的數(shù)據(jù)庫訪問程序,從而擴(kuò)充網(wǎng)絡(luò)應(yīng)用功能。JDBC(Java Database Connectivity,Java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的Java API,可以為多種關(guān)系數(shù)據(jù)庫提供統(tǒng)一的訪問接口。JDBC由一組用Java語言編寫的類與接口組成,通過調(diào)用這些類和接口所提供的方法,用戶能夠以一致的方式連接多種不同的數(shù)據(jù)庫系統(tǒng)(如Access、SQL Server 2000、Oracle、Sybase等),進(jìn)而可使用標(biāo)準(zhǔn)的SQL語言來存取數(shù)據(jù)庫中的數(shù)據(jù),而不必再為每一種數(shù)據(jù)庫系統(tǒng)編寫不同的Java程序代碼。
SQL Server2000是微軟公司新一代的數(shù)據(jù)庫產(chǎn)品,它是在SQL Server7.0建立的堅(jiān)固基礎(chǔ)上產(chǎn)生的,并對(duì)SQL Server7.0做了大量擴(kuò)展。SQL Server2000通過高端硬件平臺(tái)以及新網(wǎng)絡(luò)和存儲(chǔ)技術(shù)的支持,可為大的Web站點(diǎn)和企業(yè)級(jí)應(yīng)用提供可擴(kuò)展性和高可靠性。
Java中的常用設(shè)計(jì)模式
1) 工廠模式
客戶類和工廠類分開。消費(fèi)者任何時(shí)候需要某種產(chǎn)品,只需向工廠請(qǐng)求即可。消費(fèi)者無須修改就可以接納新產(chǎn)品。缺點(diǎn)是當(dāng)產(chǎn)品修改時(shí),工廠類也要做相應(yīng)的修改。如:如何創(chuàng)建及如何向客戶端提供。
2)工廠方法模式
核心工廠類不再負(fù)責(zé)所有產(chǎn)品的創(chuàng)建,而是將具體創(chuàng)建的工作交給子類去做,成為一個(gè)抽象工廠角色,僅負(fù)責(zé)給出具體工廠類必須實(shí)現(xiàn)的接口,而不接觸哪一個(gè)產(chǎn)品類應(yīng)當(dāng)被實(shí)例化這種細(xì)節(jié)。
控制技術(shù)-Servlet技術(shù)
1) 什么是Servlet?
一個(gè)servlet就是Java編程語言中的一個(gè)類,它被用來擴(kuò)展服務(wù)器的性能,服務(wù)器上駐留著可以通過“請(qǐng)求-響應(yīng)”編程模型來訪問的應(yīng)用程序。雖然servlet可以對(duì)任何類型的請(qǐng)求產(chǎn)生響應(yīng),但通常只用來擴(kuò)展Web服務(wù)器的應(yīng)用程序。Java Servlet技術(shù)為這些應(yīng)用程序定義了一個(gè)特定于HTTP的 servlet類。
javax.servlet和javax.servlet.http包為編寫servlet提供了接口和類。所有的servlet都必須實(shí)現(xiàn)Servlet接口,該接口定義了生命周期方法。
2) Servlet的生命周期
一個(gè)servlet的生命周期由部署servlet的容器來控制。當(dāng)一個(gè)請(qǐng)求映射到一個(gè)servlet時(shí),該容器執(zhí)行下列步驟。
頁面設(shè)計(jì)-JSP頁面
1)MVC 模式
為了把表現(xiàn)層presentation從請(qǐng)求處理request processing 和數(shù)據(jù)存儲(chǔ)data storage中分離開來,SUN公司推薦在JSP文件中使用一種“模型-視圖-控制器”Model-view-controller 模式。規(guī)范的SERVLET或者分離的JSP文件用于處理請(qǐng)求。當(dāng)請(qǐng)求處理完后,控制權(quán)交給一個(gè)只作為創(chuàng)建輸出作用的JSP頁。有幾種平臺(tái)都基于服務(wù)于網(wǎng)絡(luò)層的模-視圖-控件 模式(比如Struts 和Spring framework)。
2) JSP技術(shù)的強(qiáng)勢(shì)
(1)編寫,到處運(yùn)行。在這一點(diǎn)上Java比PHP更出色,除了系統(tǒng)之外,代碼不用做任何更改。
(2)系統(tǒng)的多平臺(tái)支持?;旧峡梢栽谒衅脚_(tái)上的任意環(huán)境中開發(fā),在任意環(huán)境中進(jìn)行系統(tǒng)部署,在任意環(huán)境中擴(kuò)展。相比ASP/PHP的局限性是顯而易見的。
(3)強(qiáng)大的可伸縮性。從只有一個(gè)小的Jar文件就可以運(yùn)行Servlet/JSP,到由多臺(tái)服務(wù)器進(jìn)行集群和負(fù)載均衡,到多臺(tái)Application進(jìn)行事務(wù)處理,消息處理,一臺(tái)服務(wù)器到無數(shù)臺(tái)服務(wù)器,Java顯示了一個(gè)巨大的生命力。
(4)多樣化和功能強(qiáng)大的開發(fā)工具支持。這一點(diǎn)與ASP很像,Java已經(jīng)有了許多非常優(yōu)秀的開發(fā)工具,而且許多可以免費(fèi)得到,并且其中許多已經(jīng)可以順利的運(yùn)行于多種平臺(tái)之下。
3) JSP技術(shù)的弱勢(shì)
(1) 與ASP一樣,Java的一些優(yōu)勢(shì)正是它致命的問題所在。正是由于為了跨平臺(tái)的功能,為了極度的伸縮能力,所以極大的增加了產(chǎn)品的復(fù)雜性。
(2) Java的運(yùn)行速度是用class常駐內(nèi)存來完成的,所以它在一些情況下所使用的內(nèi)存比起用戶數(shù)量來說確實(shí)是“低性能價(jià)格比”了。從另一方面,它還需要硬盤空間來儲(chǔ)存一系列的.java文件和.class文件,以及對(duì)應(yīng)的版本文件。
4) JSP內(nèi)置對(duì)象
(1)request對(duì)象:
該對(duì)象封裝了用戶提交的信息,通過調(diào)用該對(duì)象相應(yīng)的方法可以獲取封裝的信息,即使用該對(duì)象可以獲取用戶提交信息。
(2)response對(duì)象:
對(duì)客戶的請(qǐng)求做出動(dòng)態(tài)的響應(yīng),向客戶端發(fā)送數(shù)據(jù)。
(3)session對(duì)象
session對(duì)象是一個(gè)JSP內(nèi)置對(duì)象,它在第一個(gè)JSP頁面被裝載時(shí)自動(dòng)創(chuàng)建,完成會(huì)話期管理。 從一個(gè)客戶打開瀏覽器并連接到服務(wù)器開始,到客戶關(guān)閉瀏覽器離開這個(gè)服務(wù)器結(jié)束,被稱為一個(gè)會(huì)話。當(dāng)一個(gè)客戶訪問一個(gè)服務(wù)器時(shí),可能會(huì)在這個(gè)服務(wù)器的幾個(gè)頁面之間反復(fù)連接,反復(fù)刷新一個(gè)頁面,服務(wù)器應(yīng)當(dāng)通過某種辦法知道這是同一個(gè)客戶,這就需要session對(duì)象。
(4)application對(duì)象
服務(wù)器啟動(dòng)后就產(chǎn)生了這個(gè)application對(duì)象,當(dāng)客戶在所訪問的網(wǎng)站的各個(gè)頁面之間瀏覽時(shí),這個(gè)application對(duì)象都是同一個(gè),直到服務(wù)器關(guān)閉。但是與session不同的是,所有客戶的application對(duì)象都是同一個(gè),即所有客戶共享這個(gè)內(nèi)置的application對(duì)象。
(5)out對(duì)象
out對(duì)象是一個(gè)輸出流,用來向客戶端輸出數(shù)據(jù)。out對(duì)象用于各種數(shù)據(jù)的輸出。
七、實(shí)踐的感受和體會(huì):
實(shí)習(xí)是為將來打基礎(chǔ)的重要階段,珍惜自己每一個(gè)工作的機(jī)會(huì),不論什么人,什么學(xué)歷,從事什么工作,好好的表現(xiàn)、展示自己的能力,不要錯(cuò)過好的機(jī)遇。沒有一件事情是輕輕松松的,但每一件事都是讓人成長的,經(jīng)歷一段過程,喜悅或是艱辛,盡管經(jīng)歷的方式不盡相同,但它的結(jié)果是相同的,我們都會(huì)因涉事而成長。
通過實(shí)習(xí),我自身發(fā)生了重大的轉(zhuǎn)變。首先,進(jìn)入公司,你就是一名職業(yè)人,不再是一名學(xué)生,你要具備一名職業(yè)人應(yīng)具備的素養(yǎng),不遲到不早退是必然的,而且還要時(shí)刻嚴(yán)格要求自己,公司的規(guī)定要嚴(yán)格遵守。然后,在技術(shù)上也有了很大的提高,學(xué)習(xí)了很多公司自己的框架和工具,這都是一些前輩的寶貴經(jīng)驗(yàn)。而且所作的軟件應(yīng)用性更強(qiáng)。所以,我要堅(jiān)定自己的信念,在公司好好實(shí)習(xí),爭取提早轉(zhuǎn)正,我相信我會(huì)在JAVA開發(fā)這條路上走的更長更遠(yuǎn)。
2017軟件公司實(shí)習(xí)報(bào)告【二】
一、實(shí)習(xí)目的
進(jìn)一步了解java開發(fā)的相關(guān)知識(shí),掌握java開發(fā)的基本技術(shù),豐富java開發(fā)的實(shí)戰(zhàn)經(jīng)驗(yàn)。學(xué)習(xí)SQL的基礎(chǔ)知識(shí)及正確的運(yùn)用方法,和有用的相關(guān)技術(shù),提高自己的工作效率。通過實(shí)習(xí),培養(yǎng)我們綜合運(yùn)用Java語言的面向?qū)ο缶幊棠芰?培養(yǎng)我們動(dòng)手能力;培養(yǎng)我們良好編程規(guī)范、編程方法;以便能較全面地理解、掌握和綜合運(yùn)用所學(xué)的知識(shí),提高自身的編程能力;增強(qiáng)自己的團(tuán)隊(duì)協(xié)作意識(shí),了解軟件開發(fā)的思考角度和主要流程。為畢業(yè)之后能夠更快地進(jìn)入工作狀態(tài)并且能夠更好的工作,打好一定的基礎(chǔ)。
二、實(shí)習(xí)單位及崗位介紹
1、實(shí)習(xí)單位介紹
2、實(shí)習(xí)崗位介紹
我的崗位是Java軟件工程師。實(shí)習(xí)期間參與人力資源管理系統(tǒng)的開發(fā),根據(jù)開發(fā)規(guī)范和流程獨(dú)立完成模塊設(shè)計(jì)、編碼、測(cè)試。編寫相關(guān)應(yīng)用系統(tǒng)的開發(fā)文檔、數(shù)據(jù)庫設(shè)計(jì)文檔等。較為詳細(xì)和系統(tǒng)的掌握了軟件開發(fā)的知識(shí)體系。把所學(xué)知識(shí)與解決實(shí)際問題相聯(lián)系,培養(yǎng)了自己發(fā)現(xiàn)問題、分析問題和解決問題的能力,從而提高了自己從事實(shí)際工作的能力。
三、實(shí)習(xí)內(nèi)容及過程
1、Java基礎(chǔ)知識(shí)
Java的基礎(chǔ)知識(shí)對(duì)于一個(gè)Java軟件工程師來說就好比是人的靈魂,現(xiàn)在的公司在招聘的時(shí)候很多都不在乎你會(huì)不會(huì)流行的技術(shù),如(Struts、Hibernate、Spring、ibatis等)。他看重的是你的基礎(chǔ)扎不扎實(shí),對(duì)于網(wǎng)易、騰訊等大公司來說更是如此,我們?cè)陂_發(fā)過程中運(yùn)用了大量的Java基礎(chǔ)知識(shí),如類、對(duì)象、方法、成員變量、靜態(tài)變量、封裝、繼承、多態(tài)、異常、接口、抽象類、IO流等等,所以一個(gè)系統(tǒng)對(duì)于Java編程基礎(chǔ)的依賴便不言而喻。
2、MySQL、Oracle數(shù)據(jù)庫
MySQL是流行的開放源碼SQL數(shù)據(jù)庫管理系統(tǒng),它是由MySQL AB公司開發(fā)、發(fā)布并支持的。MySQL AB是由多名MySQL開發(fā)人創(chuàng)辦的一家商業(yè)公司。它是一家第二代開放源碼公司,結(jié)合了開放源碼價(jià)值取向、方法和成功的商業(yè)模型。Oracle則是以穩(wěn)定性著稱,在訪問量和數(shù)據(jù)大量交換的服務(wù)器中,Oracle占了大臂的江山,在開發(fā)中主要用到了數(shù)據(jù)庫的查詢語句、數(shù)據(jù)庫的關(guān)系、事物等。
3、Servlet和JSP
一個(gè)Servlet就是Java編程語言中的一個(gè)類,它被用來擴(kuò)展服務(wù)器的性能,服務(wù)器上駐留著可以通過“請(qǐng)求-響應(yīng)”編程模型來訪問的應(yīng)用程序。雖然Servlet可以對(duì)任何類型的請(qǐng)求產(chǎn)生響應(yīng),但通常只用來擴(kuò)展Web服務(wù)器的應(yīng)用程序。Java Servlet技術(shù)為這些應(yīng)用程序定義了一個(gè)特定于HTTP的 Servlet類。javax、servlet和javax、servlet、http包為編寫Servlet提供了接口和類。所有的Servlet都必須實(shí)現(xiàn)Servlet接口,該接口定義了生命周期方法。
JSP是由Sun Microsystems公司倡導(dǎo)、許多公司參與一起建立的一種動(dòng)態(tài)技術(shù)標(biāo)準(zhǔn)。在傳統(tǒng)的網(wǎng)頁HTML文件(*、htm,*、html)中加入Java程序片段(Scriptlet)和JSP標(biāo)簽,就構(gòu)成了JSP網(wǎng)頁Java程序片段可以操縱數(shù)據(jù)庫、重新定向網(wǎng)頁以及發(fā)送E-mail等,實(shí)現(xiàn)建立動(dòng)態(tài)網(wǎng)站所 需要的功能。所有程序操作都在服務(wù)器端執(zhí)行,網(wǎng)絡(luò)上傳送給客戶端的僅是得到的結(jié)果,這樣大大降低了對(duì)客戶瀏覽器的要求,即使客戶瀏覽器端不支持Java, 也可以訪問JSP網(wǎng)頁 。
Java Servlet是JSP技術(shù)的基礎(chǔ),而且大型的Web應(yīng)用程序的開發(fā)需要JavaServlet和JSP配合才能完成?,F(xiàn)在許多Web服務(wù)器都支持Servlet,即使不直接支持Servlet的Web服務(wù)器,也可以通過附件的應(yīng)用服務(wù)器和模塊來支持Servlet,這得益于Java的跨平臺(tái)特性。另外,由于Servlet內(nèi)部以線程方式提供提供服務(wù),不必對(duì)于每個(gè)請(qǐng)求都啟動(dòng)一個(gè)進(jìn)程,并且利用多線程機(jī)制可以同時(shí)為多個(gè)請(qǐng)求服務(wù),因此Servlet的效率非常高 。
4、三大框架
Struts 2是Struts的下一代產(chǎn)品,是在 struts 1和WebWork的技術(shù)基礎(chǔ)上進(jìn)行了合并的全新的Struts 2框架。其全新的Struts 2的體系結(jié)構(gòu)與Struts 1的體系結(jié)構(gòu)差別巨大。Struts 2以WebWork為核心,采用攔截器的機(jī)制來處理用戶的請(qǐng)求,這樣的設(shè)計(jì)也使得業(yè)務(wù)邏輯控制器能夠與Servlet API完全脫離開,所以Struts 2可以理解為WebWork的更新產(chǎn)品。雖然從Struts 1到Struts 2有著太大的變化,但是相對(duì)于WebWork,Struts 2的變化很小。
Hibernate是一個(gè)開放源代碼的對(duì)象關(guān)系映射框架,它對(duì)JDBC進(jìn)行了非常輕量級(jí)的對(duì)象封裝,使得Java程序員可以隨心所欲的使用對(duì)象編程思維來操縱數(shù)據(jù)庫。 Hibernate可以應(yīng)用在任何使用JDBC的場(chǎng)合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用,具革命意義的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。
Spring 也表示是一個(gè)開源框架,是為了解決企業(yè)應(yīng)用程序開發(fā)復(fù)雜性由Rod Johnson創(chuàng)建的??蚣艿闹饕獌?yōu)勢(shì)之一就是其分層架構(gòu),分層架構(gòu)允許使用者選擇使用哪一個(gè)組件,同時(shí)為 J2EE 應(yīng)用程序開發(fā)提供集成的框架。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務(wù)器端的開發(fā)。從簡單性、可測(cè)試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益。
5、管理系統(tǒng)的開發(fā)
四、實(shí)習(xí)總結(jié)及體會(huì)
通過這次實(shí)習(xí)機(jī)會(huì),我主要學(xué)習(xí)了以上這些java編程的技術(shù),同時(shí)也明白了身處公司中如何更好地與同事配合,畢竟在軟件開發(fā)中,你不可能一個(gè)人干完一個(gè)系統(tǒng),大家都是通過svn等團(tuán)隊(duì)管理工具互相配合完成編程任務(wù)。在實(shí)習(xí)之前,我對(duì)軟件開發(fā)的過程只有一個(gè)模糊地印象,以為只要把代碼編寫完之后就算
基本上一個(gè)項(xiàng)目開發(fā)完畢了。然而通過這次實(shí)習(xí),徹底*了我的認(rèn)知,我當(dāng)時(shí)的認(rèn)知無疑是非常幼稚和可笑的,完全的軟件開發(fā)過程不只只是編寫代碼,在編寫代碼之前還有好多的事情要做,比如文檔的編寫、對(duì)項(xiàng)目進(jìn)行需求分析、數(shù)據(jù)庫設(shè)計(jì)等等。代碼編寫完成之后還要進(jìn)行測(cè)試,以及人員的培訓(xùn),這些都是必須做,也是必不可少的項(xiàng)目,甚至比代碼的編寫還重要。
我在開發(fā)期間遇到很多問題,但是我會(huì)試著到網(wǎng)絡(luò)去找答案,如果實(shí)在找不到我會(huì)試著問問我的上級(jí),或者跟一些朋友討論一下,如果發(fā)現(xiàn)了這個(gè)問題的答案我會(huì)及時(shí)把它記錄下來,方便以后遇到問題可以隨時(shí)翻閱,我相信好記性不如爛筆頭這句話,我也相信如果一個(gè)程序員寫的代碼沒有錯(cuò)誤那只能證明他沒寫過代碼,雖然我比較懶,但我現(xiàn)在有空的時(shí)候都會(huì)對(duì)著電腦敲代碼,我相信手感是敲出來的,你看10遍都不如你敲一遍來得印象深刻。
通過這次實(shí)習(xí),我認(rèn)識(shí)到了一個(gè)軟件開發(fā)的完整的過程,為我今后進(jìn)行實(shí)際的工作奠定了堅(jiān)實(shí)的基礎(chǔ)。首先,進(jìn)入公司,你就是一名職業(yè)人,不再是一名學(xué)生,你要具備一名職業(yè)人應(yīng)具備的素養(yǎng),不遲到不早退是必然的,而且還要時(shí)刻嚴(yán)格要求自己,公司的規(guī)定要嚴(yán)格遵守。然后,在技術(shù)上也有了很大的提高,學(xué)習(xí)了很多公司自己的框架和工具,這都是一些前輩的寶貴經(jīng)驗(yàn)。而且所作的軟件應(yīng)用性更強(qiáng)。所以,在今后的學(xué)習(xí)中我會(huì)嚴(yán)于律己,認(rèn)真學(xué)習(xí)有關(guān)軟件編程的課,為以后的工作打好堅(jiān)實(shí)的基礎(chǔ)。
2017軟件公司實(shí)習(xí)報(bào)告【三】
一、實(shí)習(xí)目的:
檢驗(yàn)與鞏固理論知識(shí),提高實(shí)際操作能力與社會(huì)實(shí)踐能力。
二、實(shí)習(xí)時(shí)間:
2005-07-27 至 2005-10-23
三、實(shí)習(xí)地點(diǎn):
廣東廣州
四、實(shí)習(xí)單位與部門:
廣州**網(wǎng)絡(luò)科技有限公司·軟件開發(fā)部
五、實(shí)習(xí)內(nèi)容:
應(yīng)學(xué)校要求,本人于七月二十七號(hào)來到廣州**網(wǎng)絡(luò)科技有限公司實(shí)習(xí)。初到該公司,聽公司負(fù)責(zé)人講解了公司狀況以及工作要求,就馬上開始我的工作。從該負(fù)責(zé)人得知,公司的軟件開發(fā)業(yè)務(wù)并沒有多長時(shí)間,所以公司的很多工作流程還不太規(guī)范。在3個(gè)月的實(shí)習(xí)時(shí)間里,我參與了一個(gè)類似于erp的項(xiàng)目。項(xiàng)目的大致內(nèi)容是:為一家中型制造業(yè)企業(yè)量身訂做一套綜合管理系統(tǒng),包括了倉庫管理,銷售管理,采購管理,生產(chǎn)管理,財(cái)務(wù)管理以及人事管理,共六個(gè)子系統(tǒng),且這六個(gè)子系統(tǒng)是有機(jī)的組合,以方便該企業(yè)的管理生產(chǎn)資源,人力資源以及財(cái)務(wù)。在整個(gè)參與過程中,在不同時(shí)間里擔(dān)任的工作任務(wù)也不同。
1、八月份
據(jù)了解,該項(xiàng)目早在3月份就開始了,而且該項(xiàng)目一直是處于不受控狀態(tài),控制不了的原因有諸多,例如客戶的需求發(fā)生了巨大變動(dòng),該項(xiàng)目進(jìn)行期間有很多其他的項(xiàng)目插入到開發(fā)過程中等等。于是,我參與了測(cè)試程序的工作,以熟悉整個(gè)項(xiàng)目的具體內(nèi)容,功能實(shí)現(xiàn),設(shè)計(jì)方法等。在做測(cè)試工作的過程中,發(fā)現(xiàn)實(shí)習(xí)單位目前對(duì)測(cè)試不太重視,在以前的項(xiàng)目中也很少有全面的軟件測(cè)試階段。主要表現(xiàn)在:一方面,在我實(shí)習(xí)期間,就陸續(xù)有以前做的系統(tǒng)拿回來,重新做測(cè)試工作并修改。
據(jù)了解,目前國內(nèi)的絕大多數(shù)軟件企業(yè)也是重編碼輕測(cè)試,導(dǎo)致軟件的強(qiáng)壯性低下,而在售后的維護(hù)階段中經(jīng)常性需要大幅度修改。這樣一來,經(jīng)常有不同的新老系統(tǒng)并行,給新系統(tǒng)的項(xiàng)目進(jìn)度帶來了外部干擾;另方面,公司要求的測(cè)試方法也較為簡單,且測(cè)試文檔的書寫格式極其簡單,這種書寫格式在一些功能上的錯(cuò)誤和明顯的數(shù)據(jù)錯(cuò)誤上有很好的表意效果,但是在表達(dá)程序的邏輯錯(cuò)誤和內(nèi)部數(shù)據(jù)錯(cuò)誤時(shí)有很大的欠缺。在整個(gè)測(cè)試工作中也大概了解了該系統(tǒng)的各方面特性。該系統(tǒng)采用b/s結(jié)構(gòu)開發(fā),隨著internet的高速發(fā)展、電信部門對(duì)網(wǎng)絡(luò)線路的投入、帶寬的增加等各個(gè)對(duì)b/s結(jié)構(gòu)有利的條件下,采用b/s結(jié)構(gòu)可以節(jié)省很多的成本。
在以前采用c/s結(jié)構(gòu)開發(fā)的系統(tǒng)中,需要為系統(tǒng)開發(fā)客戶端,而且在維護(hù)過程中,除了對(duì)服務(wù)器端的維護(hù),還要對(duì)各個(gè)客戶端進(jìn)行維護(hù),而目前盛行的b/s結(jié)構(gòu),則只需要開發(fā)和維護(hù)服務(wù)器端,相比之下,開發(fā)和維護(hù)的成本也就大大降低。另外,b/s結(jié)構(gòu)在internet里的應(yīng)用性比較高。但是,b/s結(jié)構(gòu)也不是完美的選擇,它存在諸如b/s結(jié)構(gòu)的用戶界面上比較難控制,瀏覽器的安全性能沒有很好的保障等問題。整個(gè)系統(tǒng)采用asp .net+ms sql server 2000做開發(fā),編程語言采用c#和vb。
測(cè)試工作和書寫文檔是比較枯燥的工作,測(cè)試更是要細(xì)心,有耐性的去做,在這個(gè)月里認(rèn)真的完成了我的工作,還幫忙修改了用戶界面。我的工作得到了負(fù)責(zé)人的肯定。
2、九月份
八月末就得知要將整個(gè)系統(tǒng)重構(gòu),因?yàn)樵形赐瓿傻南到y(tǒng)跟變動(dòng)后的用戶需求有太大的出入,而且系統(tǒng)存在比較多的錯(cuò)誤,難以修復(fù)。負(fù)責(zé)人要求我參與到系統(tǒng)的重構(gòu)工作中去,參與設(shè)計(jì),代碼編寫。這對(duì)我來說是一個(gè)考驗(yàn)也是一個(gè)機(jī)會(huì),于是我選擇了“倉庫管理”子系統(tǒng),用vb作為編碼語言。在九月份的開發(fā)過程中,有兩個(gè)方面的感觸:
第一是技術(shù)方面。由于采用了vb編寫代碼,而自身只學(xué)了c/c++、還有java。對(duì)vb只是一點(diǎn)點(diǎn)了解,另外,對(duì)asp dotnet更是一點(diǎn)不通。所以,這個(gè)時(shí)候需要發(fā)揮下自學(xué)能力,和領(lǐng)悟能力。在開發(fā)過程中印象深的是web form里datagrid的操作,以及對(duì)整個(gè)web form的運(yùn)行過程。首先,由于倉庫管理絕大部分工作是填寫單據(jù),單據(jù)是由單頭和單體組成,單頭記錄基本信息,單體記錄明細(xì)信息。設(shè)計(jì)決定在填寫單體時(shí),采用datagrid行內(nèi)編輯,所以datagrid的行內(nèi)編輯將是技術(shù)的難點(diǎn)。dotnet的datagrid控件有編輯命令與刪除命令,而新增則可以通過一個(gè)button點(diǎn)擊來生成一個(gè)新行等待編輯。三個(gè)操作的代碼清單如下:
‘編輯命令代碼清單
private sub datagrid1_editcommand(byval source as object, byval e as system.web.ui.webcontrols.datagridcommandeventargs) handles datagrid1.editcommand
if viewstate("add") <> 1 then
datagrid1.edititemindex = e.item.itemindex ‘將該行的編輯狀態(tài)行
datagrid1.databind()
end if
end sub
‘刪除命令代碼清單
private sub datagrid1_command(byval source as object, byval e as system.web.ui.webcontrols.datagridcommandeventargs) handles datagrid1.command
if viewstate("add") <> 1 then
dim delindex as integer
delindex = cint(e.item.cells(1).text)
dim dr as datarow
dr = dataset1.tables("tblbrand").rows.find(delindex)‘找到該行在數(shù)據(jù)集中的編號(hào)
dr.()‘將該行在數(shù)據(jù)集中刪除
sqldataadapter1.update(dataset1.tables("tblbrand"))‘更新數(shù)據(jù)庫表
datagrid1.edititemindex = -1
datagrid1.databind()
end if
end sub
‘新增按扭事件代碼清單
private sub button1_click(byval sender as system.object, byval e as system.eventargs) handles button1.click
dim dr as datarow
dr = dataset1.tables("tblbrand").newrow()‘新增一行,并將該行插入到數(shù)據(jù)集
dataset1.tables("tblbrand").rows.at(dr, ataset1.tables("tblbrand").rows.count)
viewstate("add") = 1
end sub
其實(shí)datagrid中有很多很好用的特性,具體請(qǐng)參考msdn。其次,為實(shí)現(xiàn)性提交整張單據(jù)到數(shù)據(jù)庫保存,采用了sqlaadapter與dataset結(jié)合,應(yīng)用sqlaadatper的uapdate方法特性:對(duì)dataset 的數(shù)據(jù)行做檢索,并發(fā)操作,update,三個(gè)命令,對(duì)刪除行做數(shù)據(jù)庫刪除,更改的數(shù)據(jù)行做更新,新增的行做插入。后,在web form的初始到消除整個(gè)生命周期也有了較全面的了解。但是感覺dotnet中的web form的生命周期中,所發(fā)生的事件有些凌亂,例如datagrid每一行的創(chuàng)建和數(shù)據(jù)綁定都是比較復(fù)雜的,在開發(fā)中涉及的技術(shù)較多,在此不一一闡述。
第二是工作方面。在這個(gè)月中,同樣發(fā)現(xiàn)了公司的開發(fā)工作有較多的問題。首先,人員工作地點(diǎn)變動(dòng)大,不便于溝通。在開發(fā)工作中,由于人員沒有固定工作地點(diǎn),只是把任務(wù)分配了,接著就各自去完成,這樣一來,在各個(gè)模塊的協(xié)調(diào)中經(jīng)常出現(xiàn)了問題,但又不能很及時(shí)的和相關(guān)模塊的負(fù)責(zé)人商討解決方法,工作效率也就隨之下降。其次,對(duì)整個(gè)項(xiàng)目的規(guī)劃,整個(gè)系統(tǒng)的設(shè)計(jì),編碼,測(cè)試等工作分工不明確且不統(tǒng)一。在項(xiàng)目開始時(shí),只是草草的分了下模塊,接著這個(gè)模塊的設(shè)計(jì)、編碼、測(cè)試就由這個(gè)模塊的負(fù)責(zé)人來做,沒有先對(duì)整個(gè)項(xiàng)目進(jìn)行明確的整體的規(guī)劃。而且在設(shè)計(jì)過程中缺少討論,導(dǎo)致設(shè)計(jì)出來的模塊獨(dú)立性過高,沒有考慮到公共的接口等問題。后,對(duì)解決問題的速度慢。當(dāng)在開發(fā)的過程中出現(xiàn)了問題,對(duì)問題的解決途徑多固然是好,但是,解決方案出現(xiàn)分歧的時(shí)候難以敲定具體實(shí)施哪個(gè)方案,導(dǎo)致進(jìn)展緩慢,進(jìn)度延期。
3、十月份
十月份是整個(gè)重構(gòu)活動(dòng)的收尾階段,該階段需要完成的工作是數(shù)據(jù)報(bào)表的設(shè)計(jì)與實(shí)現(xiàn)。數(shù)據(jù)報(bào)表設(shè)計(jì)方面,沿用原有的紙質(zhì)報(bào)表的結(jié)構(gòu),所以整個(gè)設(shè)計(jì)過程相對(duì)輕松。但是在實(shí)現(xiàn)階段,由于在決定采用何種實(shí)現(xiàn)方式的決策問題上出現(xiàn)了飄忽不定的狀況,使得進(jìn)度上又有了少許的延期,后采用了crystalreports來實(shí)現(xiàn)。拋棄了打印分頁控制難的html方法,以及技術(shù)不成熟,安全性差的ms sql server reportingservice報(bào)表工具。在這個(gè)階段,我負(fù)責(zé)了倉庫管理、銷售管理、采購管理以及生產(chǎn)管理等四個(gè)子系統(tǒng)的報(bào)表實(shí)現(xiàn),在此期間學(xué)會(huì)了crystalreports的使用和編程,收益頗多。這次重構(gòu)活動(dòng)涉及了數(shù)據(jù)結(jié)構(gòu)的重構(gòu)以及代碼的重構(gòu),提高了系統(tǒng)的清晰性、擴(kuò)展性以及重用性。整體性能有了明顯的提升。
六、實(shí)習(xí)總結(jié):
在這為期3個(gè)月的實(shí)習(xí)過程中,通過擔(dān)任各種工作任務(wù),充分的檢驗(yàn)了自身所學(xué)的知識(shí),了解了自身知識(shí)結(jié)構(gòu)的不足;通過與接觸其他同事以及自我體驗(yàn),較深入地了解了軟件開發(fā)從業(yè)人員生活狀況,以及目前大部分中小型軟件開發(fā)企業(yè)的經(jīng)營模式和操作流程。總結(jié)如下三點(diǎn):
1、知識(shí)“閱兵式”
大學(xué)3年來所學(xué)的知識(shí),在這次實(shí)習(xí)中得到了真正的檢閱,同樣,也暴露了知識(shí)結(jié)構(gòu)的不合理性。技術(shù)上,學(xué)校里所學(xué)的基礎(chǔ)知識(shí)表面上看似用不上,但卻是這些基礎(chǔ)知識(shí)讓我有很牢固的基礎(chǔ),學(xué)起其他的技術(shù)知識(shí)自然而然的變得容易,能應(yīng)對(duì)開發(fā)過程中所遇到的技術(shù)層面的問題。但是在業(yè)務(wù)上,由于缺乏所涉及的業(yè)務(wù)的相關(guān)課程的開展與自身涉獵知識(shí)面不廣,而造成了在業(yè)務(wù)流程轉(zhuǎn)換為系統(tǒng)設(shè)計(jì)或程序?qū)崿F(xiàn)的中間環(huán)節(jié)頻頻出現(xiàn)困惑。軟件工程專業(yè)培養(yǎng)的目標(biāo)是管理或系統(tǒng)規(guī)劃與設(shè)計(jì),這一類的高層次人才,而不是純粹的編碼人員,所以對(duì)相關(guān)的業(yè)務(wù)應(yīng)當(dāng)明確、清晰。建議學(xué)校開展一些行業(yè)縱向討論課題來彌補(bǔ)這個(gè)不足。
2、從業(yè)人員的生存狀況
大部分從業(yè)人員長期生活在一種“精神高壓”的環(huán)境中。由于項(xiàng)目控制的難度大,有了進(jìn)度表跟沒進(jìn)度表的項(xiàng)目都一樣,員工基本都是天天在趕工。不管是在大型企業(yè)的軟件開發(fā)從業(yè)人員,還是在中小型企業(yè)軟件開發(fā)從業(yè)人員的工作時(shí)間一般都不固定。只要手頭上有沒做完的事情就要趕,也有的企業(yè)讓這種不固定變成讓員工靈活安排時(shí)間的方法:只要手頭上沒東西做,人可以不用擺在辦公室。但是,這種靈活性不是單方面的靈活,而是員工與管理者雙方面的靈活。只要有事做,管理人員隨時(shí)都可以叫上程序員一起“奮斗”。項(xiàng)目驗(yàn)收交付后,員工才算有休息一下的機(jī)會(huì)。這樣一來,人員的積極性、生產(chǎn)效率也隨著項(xiàng)目時(shí)間的持續(xù)而下降。但是,作為一個(gè)黃金職業(yè),大部分從業(yè)人員都愿意吃這個(gè)苦。
3、中小型軟件企業(yè)的經(jīng)營模式與操作流程
目前,國內(nèi)大型軟件開發(fā)企業(yè)數(shù)量較少,就規(guī)模而言,有關(guān)數(shù)據(jù)表明:90%以上的企業(yè)人數(shù)不超過100人,人員超過1000人的只有10家,同樣的,企業(yè)的盈利水平也普遍低下。在這些中小型的軟件企業(yè)中,他們的經(jīng)營模式與操作的流程也都是大同小異:從經(jīng)營的模式來講,一般是接或拉定單,按客戶要求制定靈活性強(qiáng),適應(yīng)性強(qiáng)的軟件。做自主研發(fā),零售產(chǎn)品的軟件企業(yè)極為少數(shù)。從規(guī)模到盈利,就好比一家家的裁縫店,而非制衣廠;從操作的流程來講,從項(xiàng)目的規(guī)劃到啟動(dòng),再到測(cè)試驗(yàn)收交付,其中規(guī)劃與測(cè)試一般都不充分,從而導(dǎo)致項(xiàng)目風(fēng)險(xiǎn)提高,進(jìn)度延時(shí)以及交付后的產(chǎn)品強(qiáng)壯性差也是中小軟件企業(yè)存在的一大問題。
后,在此感謝公司里共事的每一位同事,感謝他們?cè)趯?shí)習(xí)期間給我的幫助。