软件开发的一些感想(五年工作总结版)
//2010-08-01 21:05
今天要強(qiáng)迫自己寫出這個總結(jié)來了,否則我怕以后又有了新的感受,還要沉淀,又不知道多久才能沉淀和寫出來.三年前,我寫過一個<Web開發(fā)的一點(diǎn)心得> http://blog.csdn.net/Eric77/archive/2006/12/13/1441977.aspx ,基本的觀點(diǎn)繼續(xù)延續(xù)里面的想法. 只是最近這幾年,做了不少系統(tǒng),從需求分析,設(shè)計,開發(fā),測試 和 項目管理了整個流程,又有了一些新的感悟.
對任何系統(tǒng)來說: 無非是做好3件事: IPO. 也就是Input,Process,Output.
對需求分析來說: 你最重要的是搞明白,用戶的需求.也就是搞清用戶的輸入(Input)和輸出(Output)是什么,它的要求達(dá)到的功能(Process)是什么. 明白以后,你就可以寫一些用戶需求說明書,描述用例,輸入輸出處理異常什么的,或者做一個簡單的Demo系統(tǒng),拿去給用戶看,看看這個界面是不是用戶喜歡的,這個流程是不是用戶所需要的等等.
然后就是系統(tǒng)分析: 首先,你需要對用戶的需求分模塊,每個模塊的IPO是什么,他們應(yīng)采用什么架構(gòu),需要和那些模塊交互,互相之間的接口是怎樣的,需要使用什么技術(shù).每個模塊的運(yùn)行環(huán)境是什么樣子的,對效率,安全或者容錯等特性是否要著重考慮.
接著就是系統(tǒng)設(shè)計: 每個模塊的數(shù)據(jù)庫要怎么設(shè)計,所用技術(shù)和架構(gòu)決定后,要確定不同層次有哪些接口,比如說表現(xiàn)層,業(yè)務(wù)邏輯層,數(shù)據(jù)庫訪問層,相互之間怎么調(diào)用,定好框架和開發(fā)模式和格式,剩下的就是編碼了.
編碼部分: 首先團(tuán)隊要有一個良好的編碼規(guī)范.并且對每個人提交的代碼要review,我發(fā)現(xiàn)程序編多了,自己就成了一臺計算,看到程序就會知道會出現(xiàn)什么結(jié)果,根本都不用跑起來.
測試: 單元測試是否編寫測試用例? Junit是個好工具.每個人都要保證好自己的代碼沒有問題. 整體測試就要整個流程的跑一下,看看需求實現(xiàn)的對不對,還有沒有什么其他紕漏.
風(fēng)險管理: 這一點(diǎn)很重要,要時刻知道自己的項目有什么風(fēng)險,無論是人員的,技術(shù)的,時間的,還是協(xié)調(diào)上面的.都要心里有數(shù),按時按周向領(lǐng)導(dǎo)匯報.
恩,以上就是我現(xiàn)在對一個系統(tǒng)開發(fā)的整體觀點(diǎn).
也許寫的簡單了一點(diǎn),不過我覺得真的是如此,面試的時候,經(jīng)常有人問我,你有沒有做過一些復(fù)雜的業(yè)務(wù)邏輯,其實說實話,我還真不知道怎么回答這個問題,我一直都覺得,把IPO搞明白,多復(fù)雜的業(yè)務(wù)邏輯都會簡化成一個一個小的步驟,處理完輸入的數(shù)據(jù)后,就進(jìn)行數(shù)據(jù)庫更新或保存,然后就返回給用戶處理后的反饋信息. 復(fù)雜點(diǎn)的最多就是涉及到多數(shù)據(jù)庫或者嵌套事務(wù)的處理,只要把握好事務(wù)的生命周期,是否互相影響,處理好提交和回滾也就OK了. 如果是涉及到工作流的,就要記錄和管理好它的位置,上下流程的關(guān)系狀態(tài)什么的. 還有什么復(fù)雜的業(yè)務(wù)邏輯形式? 額,我再想一想.
也許大型的數(shù)據(jù)量的訪問和處理就需要一些技巧了. 典型的就是把經(jīng)常訪問的變化不經(jīng)常的動態(tài)頁面,轉(zhuǎn)換成靜態(tài)的html分配給apache處理,注意更新. 或者使用集群Cluster來緩解壓力.這又會涉及到怎樣追蹤用戶的問題了,一個最簡單的方式就是對用戶取模來進(jìn)行分配,呀,跑題了.如果對數(shù)據(jù)庫的存取量太大,一般可以使用緩存,多弄幾臺數(shù)據(jù)庫,搞成集群形式,一臺主的多臺輔的.恩,如果后臺表數(shù)據(jù)量太大的話,就是用分表方式,分表有幾種方法,略掉吧.還有什么呢,比如說對查詢語句怎么優(yōu)化,這就要使用查詢分析器了,也不多說. 額,,, 還有什么,暫時想不起來了. 不過,douban無私牛人的<豆瓣網(wǎng)技術(shù)架構(gòu)的發(fā)展歷程>這篇pdf真的很不多,值得每個人研讀.
記得我去IBM面試的時候,問過,以后有幾條職業(yè)發(fā)展的方向,回答有三條,一條是IT Specialist,一條是Project Manager,還有一條是IT Architect. 我還曾要求以后能不能向IT Architect發(fā)展,那人說,Architect要熟悉很多技術(shù)呢,我問了兩遍,他這樣回答了兩遍.后來給我訂了Advisory I/T Specialist. 我當(dāng)時很納悶,我搞Java這么久,J2ME,J2SE,J2EE全都搞過,而且對Gof的<Design Pattern>也悟了5年,了熟于心,各種各樣的經(jīng)典書籍也看了不少,怎么不能向Architect發(fā)展呢. 現(xiàn)在我加入了IBM,進(jìn)入一個香港的項目,過段時間要去香港培訓(xùn)幾星期,才明白了,原來一個大項目會涉及到各種各樣的語言,技術(shù),什么Cobal(音譯),forturn(音譯),java,vb,C#,soa xx總線模式,mq,大型機(jī)開發(fā),等,很多我只在書上看到過的古老語言,還有一些聽都沒聽過的語言,框架,模式,全都出現(xiàn)了.我當(dāng)時這個汗哪,我才發(fā)現(xiàn)我真的很無知.知識就是一個氣球,你知道的越多,接觸的越多就會發(fā)現(xiàn)自己越無知.所以這也是我要今天趕緊把這個寫出來的原因. 我怕以后又有了變故,還要沉淀,需要時間.
恩,路還長,吾等還需繼續(xù)努力.
前不久在家里陪我媽看了'曲黎敏'講的<黃帝內(nèi)經(jīng)>的相關(guān)養(yǎng)生知識,覺得每個人都應(yīng)該聽一下,大道至簡,陰陽五行,天地自然,健康養(yǎng)生. 悟 - 這個字存在宇宙萬物中.
//22:23
總結(jié)
以上是生活随笔為你收集整理的软件开发的一些感想(五年工作总结版)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EFUCMSE16小说漫画系统搭建教程
- 下一篇: ffmpeg推流和拉流rtsp