中國(guó)高校勤工助學(xué)網(wǎng)站程序開發(fā)質(zhì)量與管理規(guī)范化
發(fā)表時(shí)間:2024-01-25 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]本標(biāo)準(zhǔn)化文檔主要針對(duì)中國(guó)高校勤工助學(xué)網(wǎng)站(以下簡(jiǎn)稱中勤在線)的現(xiàn)有技術(shù)和發(fā)展方向,對(duì)網(wǎng)站后臺(tái)程序的開發(fā)作一份詳細(xì)的規(guī)范,僅供中勤在線程序員參考學(xué)習(xí)。 本文檔分為兩部分,第一、程序開發(fā)標(biāo)準(zhǔn)化,其意義為規(guī)范各程序員在完成本職工作過(guò)程的一切操作行為的標(biāo)準(zhǔn);第二、程序管理標(biāo)準(zhǔn)化,其意義為規(guī)范程序員的管理,...
本標(biāo)準(zhǔn)化文檔主要針對(duì)中國(guó)高校勤工助學(xué)網(wǎng)站(以下簡(jiǎn)稱中勤在線)的現(xiàn)有技術(shù)和發(fā)展方向,對(duì)網(wǎng)站后臺(tái)程序的開發(fā)作一份詳細(xì)的規(guī)范,僅供中勤在線程序員參考學(xué)習(xí)。
本文檔分為兩部分,第一、程序開發(fā)標(biāo)準(zhǔn)化,其意義為規(guī)范各程序員在完成本職工作過(guò)程的一切操作行為的標(biāo)準(zhǔn);第二、程序管理標(biāo)準(zhǔn)化,其意義為規(guī)范程序員的管理,考核,培訓(xùn),獎(jiǎng)懲。
一、 【程序開發(fā)質(zhì)量標(biāo)準(zhǔn)化】
1、開發(fā)環(huán)境
目前,中勤在線的具體開發(fā)/調(diào)試/運(yùn)行環(huán)境基本為:
程序:Asp 3.0
平臺(tái):Win2K Server + IIS 5.0
數(shù)據(jù)庫(kù):Access 2000/XP
隨著網(wǎng)站的不斷發(fā)展,此開發(fā)/調(diào)試/運(yùn)行環(huán)境已不再適合一個(gè)大型教育類網(wǎng)站的技術(shù)要求。程序語(yǔ)言暴露出安全性不夠,擴(kuò)展性欠佳,移植性較差,代碼混亂等現(xiàn)象。致使開發(fā)人員幾乎很難針對(duì)過(guò)去的程序進(jìn)行修改和更新,更不用說(shuō)跨平臺(tái)的應(yīng)用;Win2k和IIS 5.0的Web平臺(tái)工作不夠穩(wěn)定,出現(xiàn)“當(dāng)機(jī)”現(xiàn)象頻率過(guò)高;Access數(shù)據(jù)庫(kù)在大數(shù)據(jù)量的檢索中出現(xiàn)速度較慢的現(xiàn)象,并且數(shù)據(jù)備份操作煩瑣,更不利于將來(lái)實(shí)現(xiàn)多臺(tái)服務(wù)器的數(shù)據(jù)同步問(wèn)題。
為了提高中勤在線的技術(shù)含量,跟上國(guó)際主流網(wǎng)站開發(fā)的步伐,目前網(wǎng)站面臨重大改革,拋棄過(guò)去程序開發(fā)的道路(采用面向程序語(yǔ)言),及時(shí)與國(guó)際主流接軌(采用面向?qū)ο蟪绦蛘Z(yǔ)言),我們有兩個(gè)開發(fā)環(huán)境可供選擇發(fā)展:
第一、采用Linux+Resin/Apache+Jsp(java)+Oracle/Sql Server環(huán)境方案;
第二、采用Win2K+IIS(含.net框架)+Asp.Net(C#,Vb.net)+Sql Server/Oracle環(huán)境方案;
國(guó)外,第一套方案已成為主流,廣泛應(yīng)用于電子商務(wù)領(lǐng)域,發(fā)展穩(wěn)定;第二套方案推出于微軟.net計(jì)劃,發(fā)展前途一片光明。
首先,據(jù)中勤在線成立以來(lái)開發(fā)人員詳細(xì)資料統(tǒng)計(jì)分析,中勤在線后臺(tái)程序開發(fā)人員90%為非計(jì)算機(jī)專業(yè)本科學(xué)生,10%為計(jì)算機(jī)專業(yè)本科生與研究生,但由于其站性質(zhì),發(fā)展成為專業(yè)的面向廣大社會(huì)的的門戶網(wǎng)站的可能性很小,其開發(fā)人員可能一直局限于學(xué)生,尤其是有濃厚網(wǎng)絡(luò)開發(fā)興趣的非計(jì)算機(jī)專業(yè)學(xué)生。所以其開發(fā)團(tuán)隊(duì)可能一直存在基礎(chǔ)不夠牢固的缺點(diǎn)。要想靈活掌握Linux系統(tǒng)下的java編程具有一定難度,大部分開發(fā)人員還是習(xí)慣于Windows環(huán)境下的程序開發(fā),并且,對(duì)于具有一定經(jīng)驗(yàn)的Asp開發(fā)人員,學(xué)習(xí)Asp.net較學(xué)習(xí)java上手要快,關(guān)鍵就在于轉(zhuǎn)變由面向程序的概念到面向?qū)ο蟮母拍,這是中勤在線應(yīng)選擇第二套方案的第一個(gè)原因。
其次,網(wǎng)站初,中期程序開發(fā)所選擇的開發(fā)語(yǔ)言為Asp,目前Asp很難移植到Linux環(huán)境下,要將現(xiàn)有欄目都轉(zhuǎn)為Jsp程序再掛靠于Linux系統(tǒng)下是個(gè)浩大的工程,其工作量不下于重新開發(fā)一套完善的系統(tǒng)。再回看第二套方案,其Asp和Asp.net可以共存于新開發(fā)環(huán)境,這樣一來(lái),本站可在不影響正常發(fā)展以及運(yùn)作的條件下,同時(shí)對(duì)原有Asp程序進(jìn)行升級(jí)轉(zhuǎn)換為新的Asp.net程序,逐步分塊提高程序執(zhí)行效率和網(wǎng)站整體的技術(shù)含量,真正做到發(fā)展與運(yùn)作兩不誤,這是中勤在線應(yīng)選擇第二套方案的第二個(gè)原因。
綜上所述,中勤在線應(yīng)選擇第二套開發(fā)環(huán)境,朝著面向?qū)ο蟮陌l(fā)展方向,逐步實(shí)現(xiàn)技術(shù)的轉(zhuǎn)化和完善。
2、高效原則
作為一個(gè)程序員,無(wú)論針對(duì)哪個(gè)領(lǐng)域的程序開發(fā),應(yīng)該努力追求程序的效率,請(qǐng)各位中勤在線的程序員注意,切記以下這句話:
“不要認(rèn)為CPU運(yùn)算速度快就把所有的問(wèn)題都推給它去做,程序員應(yīng)該將代碼優(yōu)化再優(yōu)化,我們自己能做的決不要讓CPU做,因?yàn)镃PU是為用戶服務(wù)的,不是為我們程序員服務(wù)的!”
針對(duì)中勤在線的Web開發(fā),我們將這句話實(shí)例化:
·盡量避免大量使用全局變量,刪除無(wú)用變量;
·盡量少用Session變量;
·數(shù)據(jù)量較大時(shí)盡量使用存儲(chǔ)過(guò)程分頁(yè);
·盡量少用“Select * ”,即使需要所有字段也應(yīng)盡量一個(gè)一個(gè)按照使用的順序羅列出來(lái),Order By時(shí)應(yīng)該盡量提前使用建立索引或者主鍵的字段排序;
·使用Request對(duì)象時(shí),針對(duì)具體情況寫名是用QueryString方法還是Form方法;
·所有數(shù)據(jù)庫(kù)和文件對(duì)象都要在使用后盡可能早的Close,同時(shí)賦Nothing
·Asp.net開發(fā)中,盡量少用大型耗資源的系統(tǒng)控件,并且盡量使用CodeBehind技術(shù),將代碼和頁(yè)面分開,并編譯動(dòng)態(tài)鏈接庫(kù)文件;
盡量采用SQL Server 數(shù)據(jù)庫(kù);
3、編碼約定
目前,中勤在線已正常運(yùn)作三年有余,程序員由九七級(jí)本科生延續(xù)至現(xiàn)在的零二級(jí),各個(gè)年級(jí)的程序員編碼的熟悉程度和編碼的方式各不一致,以至于程序編碼五花八門,嚴(yán)格的說(shuō),從目前中勤在線的網(wǎng)站后臺(tái)程序編碼總體來(lái)看,中勤在線還停留在個(gè)人網(wǎng)站的水準(zhǔn)上,看不出一個(gè)教育類大型網(wǎng)站的應(yīng)有的水準(zhǔn),因此,我們的程序員必須統(tǒng)一編碼方式,原因其一,可以體現(xiàn)出整個(gè)網(wǎng)站的整體性;其二,可以提高程序的可閱讀性,方便下一階段的程序員修改更新程序。以下為具體內(nèi)容:
1、 變量先定義后使用;
2、 首字大寫,盡量采用英語(yǔ)描述,不宜采用拼音描述;
3、變量命名基本采用匈牙利命名法則;
匈牙利命名法則基本原則是:
變量名=屬性 + 類型 + 對(duì)象描述
即一個(gè)變量名由三部分信息組成,這樣,程序員很容易理解變量的類型、用途,而且便于記憶。
下邊是根據(jù)我站一些推薦使用的規(guī)則例子(詳細(xì)命名規(guī)則請(qǐng)參看匈牙利命名規(guī)則):
·屬性部分
全局變量:g_
常量:c_
·類型部分
指針:p_
句柄:h_
整型:i_
浮 點(diǎn) 型:f_
日 期 型:d_
布 爾 型:b_
字 符 型:s_
數(shù) 組 型:ary_
·描述部分
初 始 化:Init
臨時(shí)變量:Tmp
其中部分規(guī)則考慮到將來(lái).net發(fā)展的c# 變量命名規(guī)則,在Asp中可不考慮。
參考實(shí)例:c_i_InitBorderColor、g_s_TmpNewsTitle、g_i_ary_VoteNum,程序員可根據(jù)實(shí)際情況梢做改動(dòng),但必須遵循匈牙利命名法則,能夠使其他程序員看變量名便知其類型和屬性等關(guān)鍵標(biāo)識(shí)符意義;
4、所有控件的屬性值都要使用雙引號(hào)或者單引號(hào)包括起來(lái);
5、控件的命名規(guī)則:
Button: btn
Form:frm
Select:sel
Textarea:txt
Input: ipt
Hidden: hid
6、各控件主要使用規(guī)則:
·img控件
alt:所有展示類圖片都要具有能簡(jiǎn)要描述圖片內(nèi)容的文字說(shuō)明。
·Input控件
maxlength:所有Input控件都需要制定maxlength屬性,默認(rèn)值為數(shù)據(jù)庫(kù)中對(duì)應(yīng)的字段的長(zhǎng)度。
readonly:所有不可更改的信息都要使用readonly屬性。
·Form控件
action:所有Form都要指定action,如果提交給本身就指定action=""
method:盡量使用post方式
onsubmit:所有form都要指定提交前需要的檢查程序。
所有form都要有對(duì)應(yīng)的reset button。
·Button控件
Onclick:form中用于提交的button不容許使用此方法,所有數(shù)據(jù)檢查通過(guò)form的onsubmit激活。
·head屬性
所有頁(yè)面都要具有不為空的head屬性。
·所有中文頁(yè)面都要加上如下語(yǔ)句:
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
4、數(shù)據(jù)庫(kù)設(shè)計(jì)
程序員在進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)前應(yīng)先仔細(xì)閱讀由市場(chǎng)部做的各項(xiàng)分析文檔(包括可行性分析,需求分析等),查看由信息部擬訂的項(xiàng)目所需功能列表后,仔細(xì)斟酌后進(jìn)行數(shù)據(jù)庫(kù)初步設(shè)計(jì),設(shè)計(jì)完后提交數(shù)據(jù)庫(kù)設(shè)計(jì)報(bào)表。詳細(xì)規(guī)范如下:
·所有表必須以字符“t”(table)開頭,如表tUsers,tAffriches,tMessages等等;
·所以字段必須以字符“f”(field)開頭,如字段fID,fName,fTitle等等;
·較重要表中,最少創(chuàng)建2個(gè)預(yù)留字段,命名為fPre_Int (數(shù)字型),fPre_Str (字符型);
·設(shè)計(jì)Access數(shù)據(jù)庫(kù)應(yīng)有較長(zhǎng)數(shù)據(jù)庫(kù)文件名,或者與網(wǎng)絡(luò)部協(xié)商,做成ODBC連接,防止數(shù)據(jù)庫(kù)被非法下載。
·設(shè)計(jì)SQL Server數(shù)據(jù)庫(kù)還應(yīng)備份數(shù)據(jù)庫(kù)創(chuàng)建SQL腳本,即備份數(shù)據(jù)庫(kù)結(jié)構(gòu)。
數(shù)據(jù)庫(kù)設(shè)計(jì)基本
5、文件夾設(shè)置
隨著中勤在線的發(fā)展,其欄目設(shè)置越來(lái)越多,經(jīng)過(guò)三年的開發(fā),現(xiàn)已有十多個(gè)欄目,各個(gè)欄目均由不同人員開發(fā),各欄目文件夾的設(shè)置也是七臨八亂,不成規(guī)矩,很難讓別的開發(fā)人員一目了然其欄目結(jié)構(gòu)。因此為了更加規(guī)范程序和頁(yè)面文件夾的設(shè)置,現(xiàn)規(guī)定如下:
·必須設(shè)有Connections文件夾,存放數(shù)據(jù)庫(kù)連接文件;
·必須設(shè)有Inc文件夾,存放包含文件和其他頁(yè)面調(diào)用程序;
·必須設(shè)有Images文件夾,存放圖片文件;
·必須設(shè)有Css文件夾,存放樣式表文件;
·必須設(shè)有Doc文件夾,存放開發(fā)文檔;
·必須設(shè)有Original Files文件夾,存放圖片源文件;
·必須設(shè)有Js文件夾,存放腳本文件;
·在有上傳功能的欄目中,必須設(shè)有Upload文件夾,存放上傳的圖片及文件;
·Asp.net欄目中,必須設(shè)置Source文件夾,存放程序C#或者Vb.net源文件;
·Asp.net欄目中,必須設(shè)置Bin文件夾,存放動(dòng)態(tài)連接庫(kù)文件;
·使用SQL Server庫(kù)欄目中,必須設(shè)置Sql文件夾,存放數(shù)據(jù)庫(kù)結(jié)構(gòu)SQL腳本文件;
·必須設(shè)置Backup文件夾,存放更新前的備份文件。
6、注釋與縮進(jìn)
在過(guò)去的開發(fā)中,中勤在線使用的大部分為Asp腳本語(yǔ)言,此語(yǔ)言程序與頁(yè)面嵌套在一起,通常被稱為“意大利面條”式代碼,所以閱讀程序往往很費(fèi)時(shí)間,在.net開發(fā)中,出現(xiàn)了CodeBehind技術(shù)可將代碼和頁(yè)面分開,在一定程度上可以減輕程序員的負(fù)擔(dān),但是要讓程序更快的閱讀代碼,還必須在適當(dāng)?shù)牟糠痔砑幼⑨,并且?qǐng)合理采用代碼縮進(jìn),在模塊與模塊之間,循環(huán)區(qū)塊,條件區(qū)塊等等都應(yīng)該使用代碼縮進(jìn),縮進(jìn)一級(jí)為兩個(gè)半角空格。
7、安全與調(diào)試
開發(fā)后期,程序員還擔(dān)負(fù)著代碼的調(diào)試和漏斗檢測(cè)任務(wù),其中就包括如下內(nèi)容
·所有頁(yè)面要在800*600,1024*768兩種分辨率下運(yùn)行通過(guò);
·所有頁(yè)面要在IE5.0,5.5以及6.0下運(yùn)行通過(guò)沒有JavaScript錯(cuò)誤;
·所有涉及刪除的操作,在用戶選定以后都要再進(jìn)行一次確認(rèn)操作;
·檢查Sql漏洞,以及每個(gè)傳遞參數(shù),排除入侵可能性;
·開發(fā)完畢后必須掛在工作機(jī)房調(diào)試經(jīng)內(nèi)部調(diào)試一周方可正式發(fā)布;
二、 【程序開發(fā)管理標(biāo)準(zhǔn)化】
1、項(xiàng)目管理
程序開發(fā)總體由開發(fā)部長(zhǎng)全面負(fù)責(zé),開發(fā)部長(zhǎng)根據(jù)當(dāng)前人力資源分配程序員到各項(xiàng)目組,每個(gè)項(xiàng)目組必須設(shè)置一個(gè)組長(zhǎng),負(fù)責(zé)整個(gè)項(xiàng)目的進(jìn)度,首先畫出項(xiàng)目進(jìn)度表,和項(xiàng)目操作流程和必要的開發(fā)文檔。項(xiàng)目組長(zhǎng)每周制定周報(bào),由開發(fā)部長(zhǎng)審核查閱,并且指定每周討論會(huì)時(shí)間,每周最少兩次,項(xiàng)目組長(zhǎng)記錄討論具體內(nèi)容。具體操作見《項(xiàng)目開發(fā)質(zhì)量和管理標(biāo)準(zhǔn)化》。
2、獎(jiǎng)懲機(jī)制
項(xiàng)目組長(zhǎng)每周必須檢查成員開發(fā)的程序,嚴(yán)格按照程序開發(fā)質(zhì)量標(biāo)準(zhǔn)化實(shí)施,并做記錄,每周統(tǒng)計(jì)上周報(bào),并且每周給組員記分,提交部長(zhǎng)查閱。項(xiàng)目開發(fā)完畢后,項(xiàng)目組全體成員必須集中討論和相互檢查程序,做出最后修改,項(xiàng)目組長(zhǎng)提交項(xiàng)目本組開發(fā)明星,獎(jiǎng)金體現(xiàn)在當(dāng)月工資。另外,項(xiàng)目組長(zhǎng)應(yīng)根據(jù)每個(gè)組員的工作量,代碼編寫的效率,規(guī)范方面對(duì)每個(gè)員工有不同的評(píng)價(jià)體現(xiàn)在項(xiàng)目總開發(fā)文檔中,以便人力資源部考察和發(fā)放酬勞。