制造激情第一招,改變并制造危機(jī):
變化能讓人心理上有新鮮感,新鮮帶來(lái)好奇,沒(méi)有人不圖新鮮,新的東西對(duì)老人不能躺在原有的功勞簿上睡大覺(jué),他為了維持自己的權(quán)威不得不奮勇?tīng)?zhēng)先,新人可算有了顛覆格局的機(jī)會(huì),一馬當(dāng)先,激情澎湃,都是常見(jiàn)的現(xiàn)象。很多創(chuàng)業(yè)團(tuán)隊(duì)的人,既沒(méi)有股份,也不是什么經(jīng)理,依然那么強(qiáng)的歸屬感,那么拼命,反而是公司發(fā)展起來(lái)后,待遇好了,激情卻褪了。所以要改變,并在改變的時(shí)候制造出危機(jī)來(lái),讓核心團(tuán)隊(duì)成員生活在市場(chǎng)競(jìng)爭(zhēng)和市場(chǎng)危機(jī)中,不過(guò)注意一點(diǎn),大家辛辛苦苦干半天,生于憂(yōu)患了,不要太吝惜金錢(qián),該獎(jiǎng)勵(lì)就要獎(jiǎng)勵(lì)點(diǎn),以免心力交瘁時(shí)還要考慮家庭生活負(fù)擔(dān),那他極有可能就真得不玩了。
制造激情第二招,制造勢(shì)均力敵的競(jìng)爭(zhēng):
在日常生活和工作中設(shè)置競(jìng)爭(zhēng)的組織機(jī)構(gòu)職責(zé)和評(píng)價(jià)方法,讓經(jīng)理之間競(jìng)爭(zhēng)去。注意兩個(gè)問(wèn)題:競(jìng)爭(zhēng)者之間要?jiǎng)菥常畹锰嘁簿蜎](méi)近了;對(duì)放棄競(jìng)爭(zhēng)的要處理,對(duì)競(jìng)爭(zhēng)成的要精神獎(jiǎng)勵(lì);讓受獎(jiǎng)勵(lì)的是70%以上的人,寒磣的是小部分人,千萬(wàn)不要做反了,人都有從眾心理,獎(jiǎng)勵(lì)人多的,差的小部分會(huì)努力往上靠,少數(shù)優(yōu)秀的被獎(jiǎng)勵(lì),優(yōu)秀的往庸人堆里扎,切記。
制造激情第三招,讓我干的管理模式改成我要干的模式:
劉紹勇董事長(zhǎng)發(fā)現(xiàn)飛行員缺乏激情,于是開(kāi)啟了自費(fèi)學(xué)飛行的先河,符合條件的人都可以報(bào)名,缺錢(qián)公司可以貸款,飛行員是公司的資源,最難管,老人躺著睡大覺(jué)也不敢把他怎么樣,劉先生的一招使許多具備專(zhuān)業(yè)素質(zhì)的年輕人積極參與進(jìn)來(lái),后備梯隊(duì)就有了,以積極的后備梯隊(duì)給老的人制造了無(wú)形的壓力。原來(lái)是公司認(rèn)為需要必須把某人派去,這是讓我干,現(xiàn)在是通過(guò)放開(kāi),成了我要干。你不干,別人干,原來(lái)比你下一層次的人要干,上一層的人就坐不住了。
制造激情第四招,強(qiáng)壓并有讓其有成就:
下屬不能主動(dòng)進(jìn)取,就強(qiáng)行加壓,讓他加班,頻繁檢查,并讓他有短期的成就,幾個(gè)要素缺一不可。
維持激情第五招,不斷發(fā)展自己的組織
對(duì)下屬最大的激勵(lì)是不斷發(fā)展你的組織,不斷膨脹的規(guī)模,不斷增加的市場(chǎng)份額,忙不過(guò)來(lái)的業(yè)務(wù)讓員工會(huì)有很強(qiáng)的受感染力,究竟是為什么我也不知道原因。
創(chuàng)造激情第六招,選擇認(rèn)同這個(gè)業(yè)務(wù)并能在執(zhí)行中發(fā)現(xiàn)樂(lè)趣和知識(shí)點(diǎn)的人:
有的人就從來(lái)不缺乏激情,只是能否找到宣泄的窗口,所以一定要找到這種人,他認(rèn)同這個(gè)業(yè)務(wù),并能在這個(gè)業(yè)務(wù)的執(zhí)行中發(fā)現(xiàn)很多的學(xué)習(xí)點(diǎn)和樂(lè)趣,然后他才能執(zhí)行好。天生缺乏激情的人,不能感染他人,有激情但沒(méi)在您所希望他負(fù)責(zé)的崗位職責(zé)上的人,通過(guò)描述業(yè)務(wù)的點(diǎn)看能否點(diǎn)燃他的激情,因?yàn)橛械哪贻p人可能接觸某類(lèi)業(yè)務(wù)少,不了解細(xì)節(jié)的學(xué)問(wèn),一旦深入可能會(huì)沉迷其中,這時(shí)候就需要引路人指給他。
維持激情第七招,領(lǐng)導(dǎo)者個(gè)人感染力和管理方法:
以上都是外圍的因素,領(lǐng)導(dǎo)者本身也是有文章可做的,激情的創(chuàng)造和維持基本上來(lái)自于中上層管理者,基層經(jīng)理如果被授權(quán)足夠多,也能起到一點(diǎn)作用,比如個(gè)人的激情能感染周?chē)娜耍偌由弦恍┚唧w方法,讓團(tuán)隊(duì)的氣氛和諧,爭(zhēng)論但不詆毀。具體的術(shù)方面的方法和工具未來(lái)會(huì)有專(zhuān)門(mén)的文章講述,不再細(xì)化了。
內(nèi)因決定外因,外因通過(guò)內(nèi)因起作用,激情是內(nèi)心的表現(xiàn),是內(nèi)因,攻心為上,有了內(nèi)因,外因的條件再艱苦,都將無(wú)往而不勝。泥腿子趕走了日本鬼子,土八路打敗了蔣正規(guī)軍,靠的是激情,革命歌曲大比賽,連隊(duì)之間大比武,支部建在連上,嚴(yán)明的紀(jì)律,整齊劃一的生活規(guī)矩等等細(xì)節(jié)都是創(chuàng)造和維持激情的戰(zhàn)術(shù)。激情的人、激情的方法將創(chuàng)造出激情的事業(yè)。
自我訓(xùn)練
1.程序
(1)訓(xùn)練員詢(xún)問(wèn)成員,怎樣才算自我肯定的人?摘要寫(xiě)在海報(bào)紙上。
(2)說(shuō)明堅(jiān)定者與軟弱者的特質(zhì),請(qǐng)成員三人一小組討論其影響。
(3)說(shuō)明妨礙自我肯定的內(nèi)在恐懼,請(qǐng)成員三人一小組填表,并分享填寫(xiě)內(nèi)容。
(4)說(shuō)明反應(yīng)類(lèi)型表,請(qǐng)成員閱讀資料(之二)的情境,并填入自己的反應(yīng),三人小組
并核對(duì)反應(yīng)類(lèi)別。
(5)說(shuō)明權(quán)利的意義與重要性,請(qǐng)成員填寫(xiě)“我有哪些權(quán)利”,三人小組分享,并推派一
人報(bào)告填寫(xiě)的內(nèi)容。
(6)三人小組討論、練習(xí)資料的例子,訓(xùn)練員檢核成是否確實(shí)了解自我肯定行為的做法。
(7)請(qǐng)成員回想自己在生活中有哪些不能自我肯定的行為,填入資料(之五),并斟酌自我肯定反應(yīng)的行為,由三人小組討論,直到滿(mǎn)意為止。
(8)團(tuán)體統(tǒng)整,訓(xùn)練員檢核成員不能自我肯定的行為,進(jìn)行討論或演練。
2.注意事項(xiàng)
(1)訓(xùn)練員于活動(dòng)中應(yīng)多聯(lián)系,例如成員間相似的軟弱點(diǎn)、權(quán)利與成就,須以客觀(guān)的角度觀(guān)察,不能自我肯定的原因是否來(lái)自文化、角色或社會(huì)階層,引發(fā)成員信任、開(kāi)放的氣氛 ,促成行動(dòng)改變的意愿。
(2)注意傳統(tǒng)規(guī)范所造成的不能自我肯定行為,不必急于要求成員改變,讓成員體驗(yàn)這些規(guī)范他的關(guān)系,協(xié)助成員了解這些規(guī)范對(duì)他的意義與影響。
(3)三人小組于活動(dòng)開(kāi)始即成立,全部活動(dòng)組內(nèi)人員不變動(dòng),以增加安全感,組成三人小組時(shí),訓(xùn)練員可鼓勵(lì)成員,主動(dòng)邀請(qǐng)自己關(guān)心的組員。
3.資料
[之一] 妨礙自我肯定的內(nèi)在恐懼
1.害怕傷了別人的感情
例:_________________________________________________________
2.害怕被拒絕
例:_________________________________________________________
3.害怕失敗
例:_________________________________________________________
4.害怕被傷害
例:_________________________________________________________
5.害怕有經(jīng)濟(jì)困難
例:_________________________________________________________
[之二] 分辨你的行為反應(yīng)模式
1.情境
你正搭高速列車(chē)到紐約途中,鄰座男士抽起煙來(lái),于是空氣變得很差,使你難以忍受。在這種情況下,你會(huì)如何反應(yīng)?閱讀下面的反應(yīng),并找出最接近你自己反應(yīng)的句子。
2.我的反應(yīng)是
(1)我覺(jué)得生氣、憤怒,可是我不會(huì)有什么反應(yīng)。
(2)我覺(jué)得生氣、憤怒,而且會(huì)用攻擊性字眼和聲調(diào)告訴對(duì)方他不應(yīng)該在車(chē)上抽煙。
(3)我覺(jué)得生氣,但我會(huì)用平靜的語(yǔ)調(diào)告訴他,請(qǐng)他不要在車(chē)上抽煙。
(4)我覺(jué)得生氣、憤怒,但不對(duì)他說(shuō)什么,而是去對(duì)乘務(wù)員抱怨這個(gè)人抽煙,看看她以 做什么。
3.反應(yīng)類(lèi)型
(1)非肯定型。
(2)直接攻擊型。
(3)自我肯定型。
(4)間接攻擊型。
[之三] 我有哪些權(quán)利?
1、生涯計(jì)劃與事業(yè)選擇方面
(1)我有沒(méi)有權(quán)利去要求別人幫助?
(2)我有沒(méi)有權(quán)利決定是否繼續(xù)進(jìn)修?
(3)那些對(duì)我很重要的選擇,我有沒(méi)有權(quán)利不同意父母的意思而自己決定?
(4)我有沒(méi)有權(quán)利不接受別人給我的忠告?
(5)我有沒(méi)有權(quán)利決定如何利用我自己的時(shí)間?
(6)--------------------------------------------------------------
(7)--------------------------------------------------------------
(8)--------------------------------------------------------------
(9)--------------------------------------------------------------
(10)-------------------------------------------------------------
2.人際關(guān)系方面
(1)我有沒(méi)有權(quán)利讓別人知道我很生氣?
(2)我有沒(méi)有權(quán)利選擇與誰(shuí)做朋友,不與誰(shuí)做朋友?
(3)我有沒(méi)有權(quán)利拒絕人情請(qǐng)托?
(4)與朋友交談,當(dāng)不想繼續(xù)時(shí),我有沒(méi)有權(quán)利停止這個(gè)談話(huà)?
(5)我有沒(méi)有權(quán)利請(qǐng)鄰座的人不要吸煙?
(6) ------------------------------------------------------------
(7) ------------------------------------------------------------
(8) ------------------------------------------------------------
(9) ------------------------------------------------------------
(10)------------------------------------------------------------
3.感情婚姻方面
(1)在男女朋友之間,我有沒(méi)有權(quán)利拒絕對(duì)方的親密舉動(dòng)?
(2)我有沒(méi)有權(quán)利主動(dòng)追求我喜歡的異性朋友?
(3)我有沒(méi)有權(quán)利讓對(duì)方了解我的感覺(jué)?
(4)我有沒(méi)有權(quán)利決定自己的終身伴侶?
(5)我有沒(méi)有權(quán)利決定自己什么時(shí)候結(jié)婚?
(6) ----------------------------------------------------------
(7)----------------------------------------------------------
(8)----------------------------------------------------------
(9)----------------------------------------------------------
(10)---------------------------------------------------------
[之四]:我肯定行為練習(xí)
1.主管對(duì)部屬說(shuō):“你必須更努力工作,我們需要的是一個(gè)在這個(gè)領(lǐng)域中的哈佛經(jīng)理,而不是一個(gè)跟隨者,我實(shí)在很懷疑你是不是有這個(gè)能力?”
如果你是部屬,你是反應(yīng)是:
_______________________________________________________________
請(qǐng)對(duì)照“反應(yīng)型表”,看看你的反應(yīng)是屬于哪一型?
如果不是自我肯定型,請(qǐng)修改成自我肯定型的反應(yīng):
_______________________________________________________________
2你排隊(duì)買(mǎi)票,要看七點(diǎn)的電影。這是一部精采的得獎(jiǎng)影片,所以觀(guān)眾很多,排在你
前面的人不少,你耽心若是買(mǎi)不到票,又得排兩小時(shí)等下一場(chǎng)。但這時(shí)候,卻有人在你面前
插隊(duì)。你的反應(yīng)是:
_______________________________________________________________
請(qǐng)對(duì)照“反應(yīng)類(lèi)型表”,看看你的反應(yīng)是屬于哪一型?
如果不是自我肯定型,請(qǐng)修改成我肯定型的反應(yīng):
________________________________________________________________
[之五] 我不能自我肯定的行為
請(qǐng)你想一想,在生活中有哪些你覺(jué)得不甘心 、委屈、挫折或誤解的經(jīng)驗(yàn)?在這些經(jīng)驗(yàn)中是不是有些你重視的權(quán)利被侵犯被壓抑了?請(qǐng)把這些經(jīng)驗(yàn)寫(xiě)下來(lái),并嘗試將自我肯定的反應(yīng)方式寫(xiě)出來(lái)。
經(jīng)驗(yàn)一:________________________________________________________
自我肯定的反應(yīng):________________________________________________
經(jīng)驗(yàn)二:________________________________________________________
自我肯定的反應(yīng):________________________________________________
[之六] 自我肯定量表
姓名: 性別: 日期:
評(píng)分標(biāo)準(zhǔn):1.從來(lái)沒(méi)有 2.很少 3.偶爾 4.大多是 5.經(jīng)常是
1.當(dāng)一個(gè)人對(duì)你非常不公平時(shí),你是否讓他知道? 1 2 3 4 5
2.你是否容易作決定? 1 2 3 4 5
3.當(dāng)別人占了你的 位置時(shí),你是否告訴他? 1 2 3 4 5
4.你是否經(jīng)常對(duì)你的判斷有信心? 1 2 3 4 5
5.你是否能控制你的脾氣? 1 2 3 4 5
6.在討論或辯論中你是否覺(jué)得很容易發(fā)表意見(jiàn)? 1 2 3 4 5
7.通常你是否表達(dá)你的感受? 1 2 3 4 5
8.當(dāng)你工作時(shí)如果有人注意你,你是否不受影響? 1 2 3 4 5
9.當(dāng)你和別人說(shuō)話(huà)時(shí),你是否能輕易地注視對(duì)方的眼睛?1 2 3 4 5
10.你是否易于開(kāi)口贊美別人? 1 2 3 4 5
11.你是否因很難對(duì)推銷(xiāo)售員說(shuō)不,而買(mǎi)些自己實(shí)在不需要或并不想要的東西? 1 2 3 4 5
12.當(dāng)你有充分的理由退貨給店方時(shí),你是否遲疑不決? 1 2 3 4 5
13.在社交場(chǎng)合你是否覺(jué)得沒(méi)有困難去保持交談? 1 2 3 4 5
14.你是否覺(jué)得別人在言行中很少表示不歡迎你? 1 2 3 4 5
15.如果有位朋友提出一種無(wú)理要求,你能拒絕嗎? 1 2 3 4 5
16.如果有人恭維你,你知道說(shuō)些什么嗎? 1 2 3 4 5
17.當(dāng)你和異性談話(huà)時(shí),你是否感到緊張? 1 2 3 4 5
18.當(dāng)你生氣時(shí)是否會(huì)嚴(yán)厲地責(zé)罵對(duì)方? 1 2 3 4 5
[之七]:自我肯定量表計(jì)分與解釋
1.高度自我肯定:分?jǐn)?shù)相加,得分在77分以上者,表示非常自我肯定,經(jīng)常能適當(dāng)、時(shí)地表露自己的意見(jiàn)與感受。
2.中偏高度自我肯定:分?jǐn)?shù)相加,得分在52—76分之間,表示大多數(shù)時(shí)候能表露自己的意見(jiàn)與感受,但偶爾做不到。
3.中偏低度自我肯定:分?jǐn)?shù)相加,得分在26—51分之間,表示偶爾能自我肯定,但大多數(shù)時(shí)候不能表達(dá)自己的意見(jiàn)和感受。
4.低度自我肯定:分?jǐn)?shù)相加,得分在26分以下者,表示非常不自我肯定,經(jīng)常不能表露自己的意見(jiàn)與感受。
80后可望迅速擠滿(mǎn)IBM光板凳
“80后這一代非常渴望學(xué)習(xí),渴望為自己的職業(yè)生涯做出更好的規(guī)劃。現(xiàn)在每個(gè)人都是知識(shí)工作者,如果今天企業(yè)不對(duì)他們做一些投資,他們馬上就會(huì)找另一家愿意做投資的人。”
IBM大中華區(qū)人力資源總監(jiān)郭希文說(shuō),IBM為員工提供了一個(gè)不斷學(xué)習(xí)和進(jìn)步的環(huán)境,具有一整套完善而創(chuàng)新的體制。在和IBM共事的時(shí)間,員工可以學(xué)習(xí)到很多東西,展現(xiàn)自己的能力,同時(shí)我們還可以幫助他們挖掘潛能,在這樣雙贏(yíng)的情況下雙方會(huì)有很好的伙伴關(guān)系。
“不學(xué)習(xí)的人呆不下去”
龐大全面的培訓(xùn)系統(tǒng)一直是IBM的驕傲。
進(jìn)入IBM的新員工首先會(huì)按照職屬不同進(jìn)行相應(yīng)的集中培訓(xùn),考核合格后,進(jìn)入實(shí)習(xí)期,每個(gè)新員工都會(huì)有一位指定的師傅一對(duì)一進(jìn)行幫帶。師徒共同制定一個(gè)實(shí)習(xí)計(jì)劃,定期反饋實(shí)習(xí)情況。實(shí)習(xí)結(jié)束后,員工可以提出還需要哪些培訓(xùn)內(nèi)容,也可以要求繼續(xù)有一個(gè)師傅。
對(duì)老員工也有非常完備的員工培訓(xùn)制度,有傳統(tǒng)的教師培訓(xùn)和網(wǎng)上培訓(xùn)等多種方式。員工還可以提出公司外部的培訓(xùn)要求,只要要求合理,公司都會(huì)同意并給予經(jīng)費(fèi)。
對(duì)一些優(yōu)秀有潛力的員工,IBM提供了經(jīng)理培訓(xùn),即將升職的員工在升任之前有本地化培訓(xùn);升任后有為期一年、全球統(tǒng)一的e-learning或其他培訓(xùn),同時(shí)也會(huì)為參加這類(lèi)培訓(xùn)的經(jīng)理各自指定輔導(dǎo)員。
另外,IBM每個(gè)主管級(jí)以上員工在上任伊始都有一個(gè)硬性目標(biāo):確定自己的位置未來(lái)由誰(shuí)接任。接班人的成長(zhǎng)關(guān)系到主管自己的位置和未來(lái),也作為業(yè)績(jī)進(jìn)行考核,所以經(jīng)理層員工會(huì)盡力培養(yǎng)他們的接班人,這就是著名的“長(zhǎng)板凳計(jì)劃”。它使IBM有備無(wú)患,每個(gè)重要的管理職位都有“替補(bǔ)隊(duì)員”。
在IBM,培訓(xùn)從來(lái)都不會(huì)停止。鼓勵(lì)員工學(xué)習(xí)和提高,是IBM培訓(xùn)文化的精髓。
將傳統(tǒng)培訓(xùn)融入現(xiàn)代游戲
在虛擬學(xué)習(xí)的趨勢(shì)日漸興起時(shí),IBM大中華區(qū)人力資源總監(jiān)郭希文開(kāi)始著手推動(dòng)IBM的培訓(xùn)方式變革。
今年7月IBM人力資源部門(mén)主導(dǎo)開(kāi)發(fā)的“Sales Quest”培訓(xùn)游戲正式面向400名銷(xiāo)售人員試推行。在“Sales Quest”中,參與游戲的玩家(員工),需要在限定的時(shí)間內(nèi),了解客戶(hù)、代理和競(jìng)爭(zhēng)對(duì)手的情況,建立整體的銷(xiāo)售策略,維護(hù)客戶(hù)關(guān)系,滿(mǎn)足客戶(hù)的需求,最后完成項(xiàng)目目標(biāo),虛擬完成整個(gè)銷(xiāo)售過(guò)程。IBM培訓(xùn)部門(mén)將一些真實(shí)案例加入游戲中,通過(guò)智能引擎對(duì)玩家(員工)表現(xiàn)做出判斷。游戲過(guò)后,會(huì)給出玩家一份報(bào)告,指出優(yōu)點(diǎn)和不足,督促下次改進(jìn)。
據(jù)調(diào)查有80%的受試者玩了這個(gè)游戲,其中有1/3的人玩了兩次,1/6以上的人玩了三次或更多。IBM大中華區(qū)人力資源部學(xué)習(xí)總監(jiān)Lauge Sorensen說(shuō),這一代年輕人從小就生活在電子游戲、電腦游戲的環(huán)境中,因此“Sales Quest”這個(gè)環(huán)境對(duì)于他們來(lái)說(shuō)非常自然。在第一個(gè)試點(diǎn)成功推出后,IBM計(jì)劃把受眾進(jìn)一步擴(kuò)大到IBM中國(guó)的1500人,同時(shí)準(zhǔn)備面向印度銷(xiāo)售人員推行這款游戲培訓(xùn)方式。除了銷(xiāo)售人員外,IBM也在考慮為項(xiàng)目經(jīng)理人和新員工等提供以游戲?yàn)榛A(chǔ)的虛擬環(huán)境學(xué)習(xí)。
此前,IBM已經(jīng)通過(guò)Second Life上的虛擬島嶼,幫助新員工盡快熟悉和適應(yīng)工作,他們?cè)谶@個(gè)虛擬島上溝通交流,解決他們?cè)跇I(yè)務(wù)中遇到困難。
CMM描述了五個(gè)級(jí)別的軟件過(guò)程成熟度(初始級(jí)可重復(fù)級(jí)已定義級(jí)已管理級(jí)優(yōu)化級(jí) ,成熟度反映了軟件過(guò)程能力(Software Process Capability)的大小,任何一個(gè)軟件機(jī)構(gòu)的軟件過(guò)程必定屬于其中某個(gè)級(jí)別。除了第一級(jí)以外,每級(jí)成熟度又由若干關(guān)鍵過(guò)程域(Key Process Area)構(gòu)成。五個(gè)成熟度及其關(guān)鍵過(guò)程領(lǐng)域如圖所示:
圖中的每個(gè)關(guān)鍵過(guò)程域分別針對(duì)軟件過(guò)程的某一方面,具體描述了某級(jí)成熟度下軟件過(guò)程在該方面所應(yīng)達(dá)到的的一組目標(biāo)和實(shí)現(xiàn)這些目標(biāo)的一組關(guān)鍵活動(dòng)(Key Practice)。所有關(guān)鍵活動(dòng)被劃分為五類(lèi),分別為完成該組目標(biāo)所需的承諾(Commitment to Perform)、前提條件(Ability to Perform)、實(shí)際動(dòng)作(Activities performed)、度量分析(Measurement and Analysis)以及驗(yàn)證(Verifying Implementation)。上述五方面被稱(chēng)為五個(gè)Common Features。
CMM的結(jié)構(gòu)如圖所示:
需要提出的是,任何一個(gè)成熟度級(jí)別的關(guān)鍵過(guò)程域集都是本級(jí)描述的關(guān)鍵過(guò)程域集和所有下級(jí)的關(guān)鍵過(guò)程域集的并集。如3級(jí)的關(guān)鍵過(guò)程域就應(yīng)有13個(gè)不同的域,其中7個(gè)是3級(jí)自己包含的,6個(gè)屬于2級(jí)成熟度,而4級(jí)應(yīng)有15個(gè)域。
第一級(jí):初始級(jí)( The Initial Level )
初始級(jí)的軟件機(jī)構(gòu)缺乏對(duì)軟件過(guò)程的有效管理,其軟件項(xiàng)目的成功來(lái)源于個(gè)人英雄主義而非機(jī)構(gòu)行為,因此它不是可重復(fù)的。
第二級(jí):可重復(fù)級(jí)( The Repeatable Level )
概述:
第二級(jí)軟件機(jī)構(gòu)的主要特點(diǎn)是:項(xiàng)目計(jì)劃和跟蹤的穩(wěn)定性,項(xiàng)目過(guò)程的可控性和以往成功的可重復(fù)性。更具體的說(shuō):
- 機(jī)構(gòu)建立了管理軟件項(xiàng)目的策略和實(shí)現(xiàn)這些策略的過(guò)程。
- 新項(xiàng)目的計(jì)劃和管理基于類(lèi)似項(xiàng)目的經(jīng)驗(yàn)。
- 過(guò)程能力的增強(qiáng)基于以各個(gè)項(xiàng)目為基礎(chǔ)的有紀(jì)律的基本過(guò)程管理。
- 不同的項(xiàng)目可有不同的過(guò)程,而對(duì)機(jī)構(gòu)的要求是具有指導(dǎo)項(xiàng)目建立適當(dāng)管理過(guò)程的策略。
- 每個(gè)項(xiàng)目都確定了基本的軟件管理控制,包括:
- 基于前面項(xiàng)目的經(jīng)驗(yàn)和新項(xiàng)目特點(diǎn),做出現(xiàn)實(shí)的項(xiàng)目承諾(如預(yù)算、交付期、軟件質(zhì)量等);
- 軟件項(xiàng)目管理者要跟蹤開(kāi)支、日程、軟件功能;
- 滿(mǎn)足承諾的過(guò)程中的出現(xiàn)的問(wèn)題要及時(shí)發(fā)現(xiàn),妥善解決;
- 定義了軟件項(xiàng)目標(biāo)準(zhǔn),且機(jī)構(gòu)確保其被遵守。
構(gòu)成:
本級(jí)的關(guān)鍵過(guò)程領(lǐng)域(KPA)包括:
客戶(hù)的需求是軟件項(xiàng)目的基礎(chǔ)。軟件需求管理的目的是在客戶(hù)和軟件項(xiàng)目之間達(dá)成對(duì)客戶(hù)需求的一致理解。
為軟件工程和項(xiàng)目管理建立一個(gè)合理的計(jì)劃。
使管理者對(duì)實(shí)際的軟件項(xiàng)目進(jìn)展過(guò)程有足夠的了解,以在項(xiàng)目效能偏離計(jì)劃太多是采取有效措施。
選擇合格的分包商,并有效管理之。
對(duì)軟件項(xiàng)目過(guò)程及其間生產(chǎn)的各個(gè)產(chǎn)品進(jìn)行監(jiān)管以保證最終軟件質(zhì)量。
在整個(gè)軟件生命周期里建立并維護(hù)軟件項(xiàng)目的工作產(chǎn)品的完整性。
第三級(jí):已定義級(jí)( The Defined Level )
概述
第三級(jí)的主要特征在于軟件過(guò)程已被提升成標(biāo)準(zhǔn)化過(guò)程,從而更加具有穩(wěn)定性、可重復(fù)性和可控性。處于第三級(jí)的企業(yè)具有如下一些特征:
- 機(jī)構(gòu)采用標(biāo)準(zhǔn)的軟件過(guò)程,軟件工程和管理活動(dòng)被集成為一個(gè)有機(jī)的整體。標(biāo)準(zhǔn)化的目的是使之可使管理者和技術(shù)人員有效工作。
- 有一組人員專(zhuān)門(mén)負(fù)責(zé)機(jī)構(gòu)的軟件過(guò)程,并且在機(jī)構(gòu)中有培訓(xùn)計(jì)劃來(lái)確保 stuff 和 manager 有知識(shí)和技能完成所賦予的角色。
- 標(biāo)準(zhǔn)的軟件過(guò)程結(jié)合項(xiàng)目的特點(diǎn)即形成定義的軟件過(guò)程,它包括一組集成的定義良好的軟件工程和管理過(guò)程。
- 一個(gè)定義良好的過(guò)程包括就緒準(zhǔn)則、輸入、完成工作過(guò)程、驗(yàn)證機(jī)制、輸出和完成準(zhǔn)則。
- 在已建立的產(chǎn)品線(xiàn)上 cost, schedule, functionality 均可控制,軟件質(zhì)量被加以跟蹤。
- 過(guò)程能力體現(xiàn)在在機(jī)構(gòu)范圍內(nèi)對(duì)一個(gè)定義的軟件過(guò)程活動(dòng)、角色和責(zé)任的共同理解。
構(gòu)成
第三級(jí)主要處理以下的 KPA:
確立機(jī)構(gòu)對(duì)于改進(jìn)機(jī)構(gòu)的軟件過(guò)程能力的軟件過(guò)程活動(dòng)的責(zé)任。
開(kāi)發(fā)和維護(hù)一組有用的軟件過(guò)程assets和提供一個(gè)用于定義定量過(guò)程管理的有意義的數(shù)據(jù)的基礎(chǔ)
開(kāi)發(fā)個(gè)體的技能和知識(shí)以使他們能夠更加有效的完成他們的角色
基于業(yè)務(wù)環(huán)境和項(xiàng)目的技術(shù)需要,從機(jī)構(gòu)的標(biāo)準(zhǔn)軟件過(guò)程和相關(guān)的過(guò)程assets經(jīng)過(guò)剪裁,將軟件工程和管理活動(dòng)集成為一個(gè)有機(jī)的定義的軟件過(guò)程。
一致地完成定義良好的工程過(guò)程。它描述了項(xiàng)目的技術(shù)活動(dòng),如需求分析,設(shè)計(jì),編碼和測(cè)試。
確立軟件工程組主動(dòng)介入其它工程組以便項(xiàng)目能更好滿(mǎn)足客戶(hù)要求的手段
早而且有效的排除軟件工作產(chǎn)品中的缺陷。它可通過(guò) inspection,structured walkthrough等手段進(jìn)行。
概括來(lái)說(shuō),第三級(jí)企業(yè)的重點(diǎn)是 Engineering processes and organizational support 。
第四級(jí):已管理級(jí)( The Managed Level )
概述:
第四級(jí)的軟件機(jī)構(gòu)中軟件過(guò)程和軟件產(chǎn)品都有定量的目標(biāo),并被定量地管理,因而其軟件過(guò)程能力是可預(yù)測(cè)的,其生產(chǎn)的軟件產(chǎn)品是高質(zhì)量的。具體地說(shuō),第四季的機(jī)構(gòu)具有如下特征:
- 軟件過(guò)程和產(chǎn)品有定量質(zhì)量目標(biāo)。
- 重要的軟件過(guò)程活動(dòng)均配有生產(chǎn)率和質(zhì)量度量;
- 數(shù)據(jù)庫(kù)被用來(lái)收集和分析定義軟件過(guò)程的數(shù)據(jù);
- 項(xiàng)目的軟件過(guò)程和質(zhì)量的評(píng)價(jià)有定量的基礎(chǔ);
- 項(xiàng)目的產(chǎn)品和過(guò)程控制具有可預(yù)測(cè)性。
- 縮小過(guò)程效能落在可接受的定量界限內(nèi)的偏差;
- 可區(qū)分過(guò)程效能的有效偏差和隨機(jī)偏差;
- 面向新領(lǐng)域的風(fēng)險(xiǎn)是可知并被仔細(xì)管理;
構(gòu)成 :
本級(jí)的關(guān)鍵過(guò)程領(lǐng)域包括:
定量地控制軟件項(xiàng)目的過(guò)程效能。
定量了解項(xiàng)目軟件產(chǎn)品的質(zhì)量,并達(dá)到既定的質(zhì)量目標(biāo)。
第五級(jí): The Optimizing Level
概述
概括來(lái)說(shuō),第五級(jí)的主要特點(diǎn)是技術(shù)和過(guò)程改進(jìn)被作為常規(guī)的業(yè)務(wù)活動(dòng)加以計(jì)劃和管理。處于第五級(jí)的企業(yè)具有如下一些特征:
- 機(jī)構(gòu)集中于連續(xù)的過(guò)程改進(jìn)
- 具有標(biāo)識(shí)弱點(diǎn)和增強(qiáng)過(guò)程的手段。
- 采用過(guò)程數(shù)據(jù)分析使用新技術(shù)的代價(jià)效益并提出改進(jìn)。
- 項(xiàng)目隊(duì)伍能夠分析出錯(cuò)原因并防止其再次出現(xiàn)。
- 防止浪費(fèi)是第五級(jí)的重點(diǎn)。
- 改進(jìn)的途徑在于已有過(guò)程的增量改進(jìn)和使用新技術(shù)和新方法的革新
構(gòu)成
識(shí)別出錯(cuò)原因,防止錯(cuò)誤再現(xiàn) (通過(guò)改變定義的軟件過(guò)程)
識(shí)別有益的新技術(shù) (工具、方法和過(guò)程),并按有序的方式將其轉(zhuǎn)移至機(jī)構(gòu)之中。其重點(diǎn)在于在變化的世界中有效的完成革新。
連續(xù)改進(jìn)機(jī)構(gòu)所采用的軟件過(guò)程,以改進(jìn)軟件質(zhì)量,提高生產(chǎn)率和減少產(chǎn)品開(kāi)發(fā)時(shí)間
概括來(lái)說(shuō),第五級(jí)企業(yè)的重點(diǎn)是連續(xù)的過(guò)程改進(jìn) 。
縱觀(guān)整個(gè) CMM,軟件企業(yè)提高自身成熟度的歷程是一個(gè)從無(wú)序到有序,從特殊到一般,從定性到定量,最后不斷自我完善的過(guò)程。
從第一臺(tái)計(jì)算機(jī)出現(xiàn)至今,計(jì)算機(jī)的發(fā)展速度令人瞠目。在應(yīng)用方面,計(jì)算機(jī)從由少數(shù)科學(xué)家從事數(shù)學(xué)計(jì)算到今天遍及社會(huì)生活的各個(gè)領(lǐng)域,人們可以通過(guò)它對(duì)弈,也可以通過(guò)它預(yù)測(cè)天氣。在技術(shù)方面,計(jì)算機(jī)硬件的發(fā)展是日新月異,例如中央處理器(CPU)的速度是每隔6個(gè)月翻一倍,而成本則是每隔6個(gè)月減少一倍。但在計(jì)算機(jī)軟件方面,其發(fā)展卻是差強(qiáng)人意,雖然也有很多新的軟件開(kāi)發(fā)方法和技術(shù)不斷提出,但軟件無(wú)論在生產(chǎn)率還是在質(zhì)量方面總是達(dá)不到預(yù)期效果。
計(jì)算機(jī)軟件開(kāi)發(fā)的問(wèn)題一直是困擾軟件企業(yè)的關(guān)鍵問(wèn)題。隨著時(shí)代的發(fā)展人們開(kāi)始意識(shí)到這些企業(yè)的基本問(wèn)題不在于新技術(shù)是否使用,而在于軟件過(guò)程的管理問(wèn)題。軟件過(guò)程包括兩個(gè)方面,其一是軟件開(kāi)發(fā)的管理過(guò)程(Software Management Process),其二則是軟件開(kāi)發(fā)的工程過(guò)程(Software Engineering Process)。軟件企業(yè)的開(kāi)發(fā)機(jī)構(gòu)在形成一套完整而成熟的軟件過(guò)程后,軟件的開(kāi)發(fā)才能夠步入正軌,才能保證在約定的期限內(nèi)以固定的成本生產(chǎn)出客戶(hù)滿(mǎn)意的產(chǎn)品。
軟件機(jī)構(gòu)形成一套完整而成熟的軟件過(guò)程不是一蹴而就的,它需要一個(gè)從無(wú)序到有序,從特殊到一般,從定性到定量,最后再?gòu)撵o態(tài)到動(dòng)態(tài)的歷程,或者說(shuō)軟件機(jī)構(gòu)在形成成熟的軟件過(guò)程之前必須經(jīng)歷一系列的成熟階段(Maturity Level)。軟件機(jī)構(gòu)首先要判斷自己屬于哪一個(gè)成熟階段,然后再根據(jù)自身的實(shí)際情況決定應(yīng)該重點(diǎn)采取哪一些活動(dòng)(Activity)來(lái)更有效地改進(jìn)自己的軟件過(guò)程。其他企業(yè)在同軟件企業(yè)訂立軟件開(kāi)發(fā)合同時(shí)也可以根據(jù)該企業(yè)機(jī)構(gòu)所處的成熟階段判斷其軟件開(kāi)發(fā)能力,進(jìn)而判斷相關(guān)的軟件風(fēng)險(xiǎn)。所有這些都需要一個(gè)理論指導(dǎo)來(lái)作出相關(guān)判斷,能力成熟度模型(CMM)就是這樣一個(gè)理論模型,它規(guī)定了機(jī)構(gòu)成熟階段的框架,以及如何據(jù)之判斷軟件機(jī)構(gòu)所處的成熟階段和機(jī)構(gòu)為改進(jìn)自己的軟件過(guò)程應(yīng)該采取的辦法。
CMM產(chǎn)生背景
主要問(wèn)題
在過(guò)去的二十年里,新的軟件開(kāi)發(fā)方法和技術(shù)的使用并未使軟件生產(chǎn)率和生產(chǎn)質(zhì)量得到有效的提高。軟件生產(chǎn)商開(kāi)始意識(shí)到他們的基本問(wèn)題在于對(duì)軟件的生產(chǎn)過(guò)程管理不力,主要體現(xiàn)在:軟件產(chǎn)品不能按時(shí)完成、超出預(yù)算的成本、以及采用新的技術(shù)和工具后其好處難以體現(xiàn)。
主要作用
CMM可以指導(dǎo)軟件機(jī)構(gòu)如何控制軟件產(chǎn)品的開(kāi)發(fā)和維護(hù)過(guò)程,以及如何向成熟的軟件工程體系演化,并形成一套良性循環(huán)的管理文化。具體說(shuō)來(lái),一個(gè)企業(yè)要想改進(jìn)其生產(chǎn)過(guò)程,應(yīng)該采取如下策略和步驟:
- 確定軟件企業(yè)當(dāng)前所處的過(guò)程成熟級(jí)別;
- 了解對(duì)改進(jìn)軟件生產(chǎn)質(zhì)量和加強(qiáng)生產(chǎn)過(guò)程控制起關(guān)鍵作用的因素;
- 將工作重點(diǎn)集中在有限幾個(gè)關(guān)鍵目標(biāo)上,有效達(dá)到改進(jìn)機(jī)構(gòu)軟件生產(chǎn)過(guò)程的效果,進(jìn)而可持續(xù)地改進(jìn)其軟件生產(chǎn)能力。
CMM的基本概念
人們?cè)陂_(kāi)發(fā)和維護(hù)軟件及其相關(guān)產(chǎn)品時(shí)所涉及的各種活動(dòng)、方法、實(shí)踐和改革等。其中軟件相關(guān)產(chǎn)品包括軟件項(xiàng)目計(jì)劃、設(shè)計(jì)文檔、程序代碼、測(cè)試用例和用戶(hù)手冊(cè)等。
當(dāng)遵循某個(gè)軟件過(guò)程時(shí)所能達(dá)到的期望效果,它可以有效預(yù)測(cè)企業(yè)接收新的軟件項(xiàng)目時(shí)可能得到的結(jié)果。
當(dāng)遵循某個(gè)軟件過(guò)程時(shí)所達(dá)到的實(shí)際效果。它可以用于驗(yàn)證軟件過(guò)程能力。
指一個(gè)特定的軟件過(guò)程被顯式定義、管理、度量、控制和能行的程度。成熟度可以用于指示企業(yè)加強(qiáng)其軟件過(guò)程能力的潛力。 當(dāng)一個(gè)企業(yè)達(dá)到了一定的軟件過(guò)程成熟級(jí)別后,它將通過(guò)制定策略、建立標(biāo)準(zhǔn)和確立機(jī)構(gòu)結(jié)構(gòu)使它的軟件過(guò)程制度化。而制度化又促使企業(yè)通過(guò)建立基礎(chǔ)設(shè)施和公司文化來(lái)支持相關(guān)的方法、實(shí)踐和過(guò)程。從而使之可以持續(xù)并維持一個(gè)良性循環(huán)。
企業(yè)要通過(guò)選擇最關(guān)鍵的目標(biāo)來(lái)進(jìn)行過(guò)程改進(jìn),應(yīng)該搞清成熟的軟件過(guò)程和不成熟的過(guò)程之間的差異。
不成熟的企業(yè)有如下標(biāo)志:
- 缺乏確定的軟件過(guò)程和相應(yīng)的管理和控制;
- 即使給出了軟件過(guò)程,也不嚴(yán)格的遵循和強(qiáng)制執(zhí)行;
- 管理是完全被動(dòng)的,管理者采用的策略是救火式的,即出了事才去解決,解決的時(shí)候也難以縱觀(guān)全局,往往只顧眼前;
- 由于缺乏有依據(jù)的估算,制訂軟件預(yù)算和生產(chǎn)計(jì)劃時(shí)往往跟著感覺(jué)走,實(shí)際生產(chǎn)時(shí)則常常超標(biāo);
- 如果強(qiáng)制在預(yù)定期限內(nèi)完成,那么軟件的功能和質(zhì)量肯定是得不到保證;
- 缺乏評(píng)價(jià)軟件產(chǎn)品質(zhì)量和解決產(chǎn)品缺陷和過(guò)程問(wèn)題的客觀(guān)基礎(chǔ)。
成熟的企業(yè)則有如下標(biāo)志:
- 具有在企業(yè)范圍內(nèi)管理、控制軟件開(kāi)發(fā)和維護(hù)過(guò)程的能力;
- 現(xiàn)有人員和新進(jìn)人員均了解所遵循的軟件過(guò)程,且工作活動(dòng)均按照事先的計(jì)劃完成;
- 在定義好的軟件過(guò)程中,所有項(xiàng)目和機(jī)構(gòu)中的角色和責(zé)任分明;
- 制定的計(jì)劃是有效的且與實(shí)際的工作進(jìn)展一致;
- 軟件過(guò)程在必要時(shí)可按照一定規(guī)則和程序加以修改;
- 軟件產(chǎn)品和過(guò)程的具有一定的可控性。這主要體現(xiàn)在:
- 管理者能夠監(jiān)督軟件產(chǎn)品的質(zhì)量和生產(chǎn)過(guò)程;
- 具有客觀(guān)的和定量化的措施來(lái)判斷產(chǎn)品質(zhì)量并分析產(chǎn)品與生產(chǎn)過(guò)程中的問(wèn)題;
- 計(jì)劃和預(yù)算有章可循,它是基于歷史數(shù)據(jù)的,從而是實(shí)際可行的;
- 預(yù)算的結(jié)果,包括成本、時(shí)間表、產(chǎn)品功能和質(zhì)量等,通常能夠達(dá)到;
- 有關(guān)的參與者完全理解遵循軟件過(guò)程的價(jià)值并認(rèn)真地遵循之;
- 具有支撐軟件過(guò)程的基礎(chǔ)設(shè)施,如標(biāo)準(zhǔn)過(guò)程庫(kù)、歷史數(shù)據(jù)庫(kù)等。
CMM的五級(jí)成熟度
基本前提
- 軟件質(zhì)量在很大程度上取決于產(chǎn)生軟件的軟件過(guò)程的質(zhì)量和能力;
- 軟件過(guò)程是一個(gè)可管理、可度量并不斷改進(jìn)的過(guò)程;
- 軟件過(guò)程的質(zhì)量受到用以支撐它的技術(shù)和設(shè)施的影響;
- 企業(yè)在軟件過(guò)程中所采用的技術(shù)層次應(yīng)適應(yīng)于軟件過(guò)程的成熟度。
基本原理
- CMM強(qiáng)調(diào)連續(xù)的軟件過(guò)程改進(jìn)。該連續(xù)的改進(jìn)基于多個(gè)演化步驟。CMM將這些演化步驟劃分成五個(gè)級(jí)別。這種分級(jí)結(jié)構(gòu)的理論依據(jù)是軟件質(zhì)量原理。
- 每一級(jí)別都包括若干目標(biāo)。當(dāng)滿(mǎn)足某一目標(biāo)后,軟件過(guò)程的相應(yīng)部分便確定下來(lái)。
- 五級(jí)成熟度定義了一個(gè)標(biāo)準(zhǔn),用以度量機(jī)構(gòu)的軟件過(guò)程成熟度和評(píng)價(jià)其軟件過(guò)程能力。
基本內(nèi)容
CMM的成熟度理論目前主要涉及如下內(nèi)容:
- 機(jī)構(gòu)和資源的管理: 涉及機(jī)構(gòu)本身的責(zé)任,人員和其它資源設(shè)施。
- 軟件工程過(guò)程及其管理: 涉及軟件工程過(guò)程,即軟件過(guò)程的深度、范圍和完整性以及如何度量、管理和改進(jìn)這樣的過(guò)程。
- 工具和技術(shù): 軟件工程過(guò)程中使用的開(kāi)發(fā)工具和技術(shù)。
五個(gè)成熟度級(jí)別
- 初始級(jí)
- 可重復(fù)級(jí):有規(guī)章的過(guò)程
- 定義級(jí):標(biāo)準(zhǔn)化、一致的過(guò)程
- 管理級(jí):可預(yù)測(cè)過(guò)程
- 優(yōu)化級(jí):可持續(xù)改進(jìn)的過(guò)程
成熟度的行為刻劃
第一級(jí):初始級(jí)
- 成功來(lái)源于個(gè)人英雄主義而非機(jī)構(gòu)行為,因此它不可重復(fù),更換人員后成功便難以維持。
第二級(jí):可重復(fù)級(jí)
- 針對(duì)特定軟件項(xiàng)目建立管理該項(xiàng)目的策略和實(shí)現(xiàn)這些策略的過(guò)程。
- 新項(xiàng)目的計(jì)劃和管理基于類(lèi)似項(xiàng)目的經(jīng)驗(yàn)。
- 軟件過(guò)程能力主要通過(guò)管理單個(gè)項(xiàng)目的軟件生產(chǎn)過(guò)程來(lái)得到提高和增強(qiáng)。
- 不同的項(xiàng)目可有不同的軟件過(guò)程,機(jī)構(gòu)應(yīng)當(dāng)建立一定的方針和策略以針對(duì)具體的項(xiàng)目選擇合適的軟件生產(chǎn)過(guò)程并進(jìn)行管理。
可重復(fù)級(jí)的主要特點(diǎn)在于確定了基本的軟件生產(chǎn)管理和控制,具體來(lái)講,有:
- 結(jié)合已有項(xiàng)目的經(jīng)驗(yàn)和新項(xiàng)目的特點(diǎn)來(lái)確定本項(xiàng)目的責(zé)任和承諾;
- 軟件生產(chǎn)成本、時(shí)間表和實(shí)現(xiàn)的功能被有效跟蹤;
- 識(shí)別實(shí)現(xiàn)承諾所需解決的關(guān)鍵問(wèn)題;
- 定義軟件項(xiàng)目過(guò)程標(biāo)準(zhǔn),機(jī)構(gòu)要確保其被遵守。
概括來(lái)說(shuō),第二級(jí)的主要特點(diǎn)是項(xiàng)目計(jì)劃和跟蹤是確定且有效的,項(xiàng)目的軟件過(guò)程是可控的,以及已有的成功經(jīng)驗(yàn)是可重復(fù)的。
第三級(jí):定義級(jí)
- 有一個(gè)機(jī)構(gòu)范圍內(nèi)標(biāo)準(zhǔn)的軟件過(guò)程,軟件工程活動(dòng)和管理活動(dòng)被集成為一個(gè)有機(jī)的整體。標(biāo)準(zhǔn)化的目的是使高層管理者和軟件技術(shù)人員能夠有效合作。
- 有一個(gè)組例如軟件工程組(SEPG)專(zhuān)門(mén)負(fù)責(zé)訂立機(jī)構(gòu)的標(biāo)準(zhǔn)軟件過(guò)程,并且在機(jī)構(gòu)中制定培訓(xùn)計(jì)劃來(lái)確保相關(guān)人員和管理者有足夠的知識(shí)和技能完成標(biāo)準(zhǔn)過(guò)程所賦予的角色。
- 標(biāo)準(zhǔn)的軟件過(guò)程結(jié)合具體項(xiàng)目的特點(diǎn)經(jīng)過(guò)裁剪即形成項(xiàng)目定義軟件過(guò)程,它是一組集成的完善定義的軟件工程和管理過(guò)程。
- 一個(gè)完善定義的軟件過(guò)程應(yīng)包括就緒準(zhǔn)則、輸入、工作過(guò)程、驗(yàn)證機(jī)制、輸出和完成準(zhǔn)則。
- 對(duì)于已建立的產(chǎn)品生產(chǎn)線(xiàn),其成本、時(shí)間表和實(shí)現(xiàn)功能均可跟蹤和控制,軟件產(chǎn)品的質(zhì)量可以得到保證。
- 軟件過(guò)程能力的實(shí)現(xiàn)主要基于在機(jī)構(gòu)范圍內(nèi)對(duì)一個(gè)定義軟件過(guò)程的活動(dòng)、角色和責(zé)任的共同理解。
概括來(lái)說(shuō),第三級(jí)的主要特征在于軟件過(guò)程已被提升成標(biāo)準(zhǔn)化過(guò)程,從而更加具有穩(wěn)定性、重復(fù)性和可控性。
第四級(jí):管理級(jí)
- 軟件的過(guò)程和產(chǎn)品有定量的質(zhì)量指標(biāo)。
- 重要的軟件過(guò)程活動(dòng)均配有生產(chǎn)率和質(zhì)量方面的度量指標(biāo);
- 應(yīng)用數(shù)據(jù)庫(kù)來(lái)收集和分析定義軟件過(guò)程中涉及的各種數(shù)據(jù);
- 對(duì)項(xiàng)目軟件過(guò)程和軟件質(zhì)量的評(píng)價(jià)有定量的基準(zhǔn)。
- 軟件項(xiàng)目的產(chǎn)品和生產(chǎn)過(guò)程的控制具有可預(yù)測(cè)性。
- 將軟件過(guò)程性能可能出現(xiàn)的偏差控制在可接受的量化界限內(nèi);
- 具體區(qū)分影響過(guò)程性能發(fā)生偏差的有效因素和偶然因素;
- 向新領(lǐng)域拓展的風(fēng)險(xiǎn)是可預(yù)知的并被仔細(xì)管理和權(quán)衡。
概括來(lái)說(shuō),第四級(jí)的主要特征是定量化、可預(yù)測(cè)、異常控制和高質(zhì)量。
第五級(jí):優(yōu)化級(jí)
- 機(jī)構(gòu)集中于持續(xù)的過(guò)程改進(jìn)
- 具有標(biāo)識(shí)過(guò)程缺陷和增強(qiáng)過(guò)程能力的有效手段。
- 利用試驗(yàn)數(shù)據(jù)分析使用新技術(shù)所需的代價(jià)和帶來(lái)的效益,然后再有選擇地采用。
- 當(dāng)出現(xiàn)偏差時(shí),軟件項(xiàng)目人員能夠分析出錯(cuò)原因并采取有效手段防止其再次出現(xiàn)。
- 防止不必要的浪費(fèi)是第五級(jí)的重點(diǎn)。
- 改進(jìn)的途徑有兩個(gè),一個(gè)是對(duì)已有過(guò)程的漸進(jìn)式改進(jìn);另一個(gè)則是有選擇地使用新技術(shù)和新方法所帶來(lái)的革新。
概括來(lái)說(shuō),第五級(jí)的主要特征是新技術(shù)的采用和軟件過(guò)程的改進(jìn)被作為日常的業(yè)務(wù)活動(dòng)來(lái)加以計(jì)劃和管理。
1.到www.eclipse.org上下載SWT.
我這里用的是1.1.0.1,并且頁(yè)面上就有推薦的Eclipse3.1.1,EMF,GEF。都下載了!
2.按照Eclipse安裝插件的方法,安裝SWT,EMF,GEF。
3.如果不出意外,就可以正常使用了!
這里有一個(gè)建議:最好使用純的Eclipse,我開(kāi)始用WTP版的,怎么配置也不行。
可以建立Visual Class,但是不能可視化添加控件,或者看不到控件的屬性,或者Text,TextArea控件無(wú)法添加。后來(lái)按照以上方法,重新來(lái)了一次,OK了!
二打包發(fā)布SWT程序
1.因?yàn)樾枰?/span>SWT的jar.但是Eclipse3.1.1配合的的SWT不是通過(guò)SWT.jar發(fā)布的!是org.eclipse.swt.win32.win32.x86_3.1.0.jar。里面包括了JINI的DLL和SWT類(lèi)文件。
需要下載
http://www.eclipse.org/downloads/download.php?file=/eclipse/dow ... 09290840/swt-3.1.1-win32-win32-x86.zip
這里有SWT.jar,和3個(gè)DLL,把他們解壓縮出來(lái),備用!
2.通過(guò)Eclipse的導(dǎo)出功能,生成一個(gè)可執(zhí)行的jar,MANIFEST.MF文件選擇由Eclipse生成,并且保存到項(xiàng)目中。
3.上面2的步驟,只是為了得到MANIFEST.MF文件。下面修改一下這個(gè)文件。
加上 Class-Path: SWT.jar
如果還有其他的jar,用空格分開(kāi),加到后面
4.再生成一次jar,MANIFEST.MF選擇修改后的。
5.將打包的jar,SWT.jar,3個(gè)DLL放到一個(gè)文件夾下,雙擊可執(zhí)行的jar,程序運(yùn)行!
三jar轉(zhuǎn)EXE
1.打開(kāi)JSmooth0.9.9-7。http://www610.fixdown.com/jsmooth-0.9.9-7-setup.exe
2.選擇skeleton,在skeleton properties中先把Launch java app in the exe process,Debug console選中。可以查看生成EXE文件執(zhí)行過(guò)程信息。
3.選擇Executable.
選擇生成的EXE文件存放位置。
選擇EXE文件圖標(biāo)
設(shè)置當(dāng)前路徑,選擇要轉(zhuǎn)換的jar文件所在文件夾
4.選擇Application
設(shè)置Main Class,可執(zhí)行jar中的Main Class注意寫(xiě)類(lèi)全名
設(shè)置Application Argument,如果需要傳入?yún)?shù),寫(xiě)到這里
設(shè)置Embedded jar: 可執(zhí)行的jar
設(shè)置Classpath:SWT.jar 如果有其他的繼續(xù)添加
5.選擇JVM Selection。默認(rèn)吧。
6.JVM Configuration:
可以設(shè)置java properties,內(nèi)存使用
7.點(diǎn)齒輪。生成!看是否有錯(cuò)誤。
8.EXE執(zhí)行需要的文件:EXE,3個(gè)DLL,SWT.jar
把他們考到其他目錄,一樣可以執(zhí)行!
9.去掉skeleton properties中的Launch java app in the exe process,Debug console選項(xiàng)。
重新生成。應(yīng)該OK了!
-----
看了這個(gè),終于完成了SWT程序打包,太爽了
Ant在eclipse中的build.xml的配置
<?xml version="1.0" ?>
- <project name="webmodulebuilder" default="deploy" basedir=".">
- <!--
set global properties for this build
-->
- <!--
發(fā)布WEB路徑
-->
<property name="DEPLOY_PATH" value="C:\Tomcat 5.5\webapps\jieshengda" />
- <!--
源WEB路徑
-->
<property name="WEB_PATH" value="D:\EclipseWork\jiedasheng\WebRoot" />
- <!--
源編譯的jar包路徑
-->
<property name="JAR_PATH" value="D:\EclipseWork\jiedasheng\WebRoot\WEB-INF\lib" />
- <!--
源java文件路徑
-->
<property name="SCR_PATH" value="D:\EclipseWork\jiedasheng\src" />
- <!--
源class文件路徑
-->
<property name="CLASS_PATH" value="D:\EclipseWork\jiedasheng\WebRoot\WEB-INF\classes" />
- <!--
定義classpath
-->
- <path id="LIB_CLASS_PATH">
<fileset file="${JAR_PATH}/*.jar" />
<pathelement path="${CLASS_PATH}" />
</path>
- <!--
初試化
-->
- <target name="init">
<mkdir dir="${DEPLOY_PATH}" />
<mkdir dir="${DEPLOY_PATH}/WEB-INF" />
<mkdir dir="${DEPLOY_PATH}/WEB-INF/classes" />
<mkdir dir="${DEPLOY_PATH}/WEB-INF/lib" />
</target>
- <!--
編譯類(lèi)
-->
- <target name="compile" depends="init" description="compile the source files">
<mkdir dir="${CLASS_PATH}" />
- <javac srcdir="${SCR_PATH}" destdir="${CLASS_PATH}">
<classpath refid="LIB_CLASS_PATH" />
</javac>
</target>
- <!--
Copy發(fā)布
-->
- <target name="deploy" depends="init,compile">
- <copy todir="${DEPLOY_PATH}">
- <fileset dir="${WEB_PATH}">
<include name="**/*.*" />
<exclude name="**/jsp_servlet/*.class" />
<exclude name="**/build.xml" />
<exclude name="**/deploy.xml" />
<exclude name="**/build.properties" />
<exclude name="**/servers.xml" />
<exclude name="**/targets.xml" />
<exclude name="**/*.war" />
</fileset>
</copy>
</target>
</project>
內(nèi)容摘要:
ANT是一個(gè)基于Java的自動(dòng)化腳本引擎,腳本格式為XML。除了做Java編譯相關(guān)任務(wù)外,ANT還可以通過(guò)插件實(shí)現(xiàn)很多應(yīng)用的調(diào)用。
1)ANT的基本概念:
2)ANT的安裝:解包,設(shè)置路徑
3)ANT的使用:最好的學(xué)習(xí)只不過(guò)是一個(gè)簡(jiǎn)單實(shí)用的例子起步……
ANT的基本概念:Java的Makefile
當(dāng)一個(gè)代碼項(xiàng)目大了以后,每次重新編譯,打包,測(cè)試等都會(huì)變得非常復(fù)雜而且重復(fù),因此c語(yǔ)言中有make腳本來(lái)幫助這些工作的批量完成。在Java中應(yīng)用是平臺(tái)無(wú)關(guān)性的,當(dāng)然不會(huì)用平臺(tái)相關(guān)的make腳本來(lái)完成這些批處理任務(wù)了,ANT本身就是這樣一個(gè)流程腳本引擎,用于自動(dòng)化調(diào)用程序完成項(xiàng)目的編譯,打包,測(cè)試等。除了基于JAVA是平臺(tái)無(wú)關(guān)的外,腳本的格式是基于XML的,比make腳本來(lái)說(shuō)還要好維護(hù)一些。
每個(gè)ant腳本(缺省叫build.xml)中設(shè)置了一系列任務(wù)(target):比如對(duì)于一個(gè)一般的項(xiàng)目可能需要有以下任務(wù)。
任務(wù)1:usage 打印本腳本的幫助信息(缺省)
任務(wù)2:clean <-- init 清空初始化環(huán)境
任務(wù)3:javadoc <-- build <-- init 生成JAVADOC
任務(wù)4:jar <-- build <-- init 生成JAR
任務(wù)5:all <-- jar + javadoc <-- build <-- init 完成以上所有任務(wù):jar javadoc
而多個(gè)任務(wù)之間往往又包含了一定了依賴(lài)關(guān)系:比如把整個(gè)應(yīng)用打包任務(wù)(jar)的這個(gè)依賴(lài)于編譯任務(wù)(build),而編譯任務(wù)又依賴(lài)于整個(gè)環(huán)境初始化任務(wù)(init)等。
注:我看到很多項(xiàng)目的ant腳本中的命名基本上都是一致的,比如:編譯一般叫build或者compile;打包一般叫jar或war;生成文檔一般命名為javadoc或javadocs;執(zhí)行全部任務(wù)all。在每個(gè)任務(wù)的中,ANT會(huì)根據(jù)配置調(diào)用一些外部應(yīng)用并配以相應(yīng)參數(shù)執(zhí)行。雖然ANT可調(diào)用的外部應(yīng)用種類(lèi)非常豐富,但其實(shí)最常用的就2,3個(gè):比如javac javadoc jar等。
ANT的安裝
解包后在系統(tǒng)可執(zhí)行路徑中加入指向ant的bin的路徑就可以了,比如可以在GNU/Linux上把以下配置加入/etc/profile中:
export ANT_HOME=/home/ant
export JAVA_HOME=/usr/java/j2sdk1.4.1
export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin
這樣執(zhí)行ant 后,如果不指定配置文件ant會(huì)缺省找build.xml這個(gè)配置文件,并根據(jù)配置文件執(zhí)行任務(wù),缺省的任務(wù)設(shè)置可以指向最常用的任務(wù),比如:build,或指向打印幫助信息:usage,告訴用戶(hù)有那些腳本選項(xiàng)可以使用。
ANT的使用
最好的學(xué)習(xí)過(guò)程就是看懂那些open source項(xiàng)目中的build.xml腳本,然后根據(jù)自己的需要簡(jiǎn)化成一個(gè)更簡(jiǎn)單的,ANT和APACHE上很多非常工程派的項(xiàng)目:簡(jiǎn)單易用,而且適應(yīng)性非常強(qiáng),因?yàn)檫@些項(xiàng)目的建立往往來(lái)源于開(kāi)發(fā)人員日常最直接的需求。
參考資料: http://www.javafan.net/article/20041207142012728.html
|
以前在寫(xiě)作業(yè)時(shí)曾經(jīng)嘗試用過(guò)Ant去編譯和運(yùn)行Java程序,不過(guò)后來(lái)好久沒(méi)用,都不怎么會(huì)用了。下邊是前幾天寫(xiě)的一個(gè)build.xml文件的例子,以后可以拿來(lái)當(dāng)參照了,不過(guò)有點(diǎn)小問(wèn)題還不知道怎么改!以前忘了Jar包的正確運(yùn)行方式,導(dǎo)致不能正確運(yùn)行打包以后的jar包,現(xiàn)已更正!
說(shuō)明:lib目錄存放第三方類(lèi)庫(kù),src目錄存放待編譯的Java源文件!
<?xml version="1.0" encoding="GB2312" ?>
<!DOCTYPE project>
<project name="JavaMailClient" default="usage" basedir=".">
<property name="project-name" value="JavaMailClient"/>
<property name="build" value="build"/>
<property name="lib" value="lib"/>
<property name="src" value="src"/>
<property name="build.classes" value="${build}/classes" />
<property file="build.properties"/>
<property name="jar.dir" value="jar"/>
<property name="jar-file-name" value="${project-name}" />
<path id="Third-Part Lib">
<fileset dir="${lib}">
<include name="**/*.jar" />
</fileset>
</path>
<target name="usage" description="Build file usage info (default task)">
<echo message=" " />
<echo message="${project-name} " />
<echo message="-------------------------------------------------------" />
<echo message="Available Targets:" />
<echo message=" ***" />
<echo message=" Compiling:" />
<echo message=" compile - Compiles the source code" />
<echo message=" ***" />
<echo message=" Cleaning up:" />
<echo message=" clean - Delete class files" />
<echo message=" ***" />
<echo message=" JAR:" />
<echo message=" jar - Generate an .jar for source code" />
<echo message=" ***" />
<echo message=" Executing:" />
<echo message=" run - Execute the JavaMail client ! Get email of the latest two days from server" />
<echo message=" ***" />
<echo message="-------------------------------------------------------" />
</target>
<target name="prepare" >
<mkdir dir="${build.classes}" />
<mkdir dir="${jar.dir}" />
</target>
<target name="clean" >
<delete dir="${build}" />
<delete dir="${jar.dir}" />
</target>
<target name="compile" depends="clean,prepare">
<echo message="Compiling the source code!"/>
<javac
srcdir="${src}"
destdir="${build.classes}"
deprecation="true"
failonerror="true" debug="true"
>
<classpath refid="Third-Part Lib"/>
</javac>
</target>
<!-- <target name="run" description="Receive email! " depends="compile"> -->
<!-- 已經(jīng)可以正確運(yùn)行!注意:classpath="${build.classes}" 一定要加上,否則會(huì)報(bào)"java.lang.NoClassDefFoundError"的錯(cuò)誤!-->
<!--
<target name="run" description="Receive email! ">
<java classname="POP3MailReceiver" classpath="${build.classes}" fork="true" maxmemory="256m">
<classpath refid="Third-Part Lib"/>
</java>
</target>
-->
<target name="run" description="Receive email! ">
<java jar="${jar.dir}/${jar-file-name}.jar" fork="true" maxmemory="256m"/>
</target>
<target name="jar" depends="compile">
<jar destfile="${jar.dir}/${jar-file-name}.jar" basedir="${build.classes}">
<manifest>
<!-- 此處需要根據(jù)需要進(jìn)行修改 -->
<attribute name="Main-Class" value="POP3MailReceiver"/>
<attribute name="Class-Path" value="../${lib}/commons-email-1.0.jar ../${lib}/mail.jar ../${lib}/activation.jar"/>
</manifest>
</jar>
</target>
</project>
附:Jar包的正確運(yùn)行方法(轉(zhuǎn))
-jar參數(shù)運(yùn)行應(yīng)用時(shí)classpath的設(shè)置方法
你是否在使用java -jar參數(shù)運(yùn)行打包好的jar應(yīng)用程序的時(shí)候發(fā)現(xiàn)應(yīng)用程序無(wú)法找到classpath下設(shè)置好的第三方類(lèi)庫(kù)的內(nèi)容?無(wú)論怎么設(shè)置classpath參數(shù)都無(wú)濟(jì)于事,總是會(huì)報(bào)ClassNotFound的錯(cuò)誤?那么本篇帖子可以幫助你擺脫煩惱 :)
當(dāng)用java -jar yourJarExe.jar來(lái)運(yùn)行一個(gè)經(jīng)過(guò)打包的應(yīng)用程序的時(shí)候,你會(huì)發(fā)現(xiàn)如何設(shè)置-classpath參數(shù)應(yīng)用程序都找不到相應(yīng)的第三方類(lèi),報(bào)ClassNotFound錯(cuò)誤。實(shí)際上這是由于當(dāng)使用-jar參數(shù)運(yùn)行的時(shí)候,java VM會(huì)屏蔽所有的外部classpath,而只以本身yourJarExe.jar的內(nèi)部class作為類(lèi)的尋找范圍。
解決方案
一 BootStrap class擴(kuò)展方案
Java 命令行提供了如何擴(kuò)展bootStrap 級(jí)別class的簡(jiǎn)單方法:
-Xbootclasspath: 完全取代基本核心的Java class 搜索路徑.
不常用,否則要重新寫(xiě)所有Java 核心class
-Xbootclasspath/a: 后綴在核心class搜索路徑后面.常用!!
-Xbootclasspath/p: 前綴在核心class搜索路徑前面.不常用,避免
引起不必要的沖突.
語(yǔ)法如下:
(分隔符與classpath參數(shù)類(lèi)似,unix使用:號(hào),windows使用;號(hào),這里以u(píng)nix為例)
java -Xbootclasspath/a:/usrhome/thirdlib.jar: -jar yourJarExe.jar
二 extend class 擴(kuò)展方案
Java exten class 存放在{Java_home}\jre\lib\ext目錄下.當(dāng)調(diào)用Java時(shí),對(duì)擴(kuò)展class路徑的搜索是自動(dòng)的.總會(huì)搜索的.這樣,解決的方案就很簡(jiǎn)單了,將所有要使用的第三方的jar包都復(fù)制到ext 目錄下.
(自評(píng):不推薦使用,自適應(yīng)性很差!)
三 User class擴(kuò)展方案
當(dāng)使用-jar執(zhí)行可執(zhí)行Jar包時(shí),JVM將Jar包所在目錄設(shè)置為codebase目錄,所有的class搜索都在這個(gè)目錄下開(kāi)始.所以如果使用了其他第三方的jar包,一個(gè)比較可以接受的可配置方案,就是利用jar包的Manifest擴(kuò)展機(jī)制.
步驟如下:
1.將需要的第三方的jar包,復(fù)制在同可執(zhí)行jar所在的目錄或某個(gè)子目錄下. 比如:jar 包在 /usrhome/yourJarExe.jar 那么你可以把所有jar包復(fù)制到/usrhome目錄下或/usrhome/lib 等類(lèi)似的子目錄下.
2.修改Manifest 文件
在Manifest.mf文件里加入如下行
Class-Path:classes12.jar lib/thirdlib.jar
Class-Path 是可執(zhí)行jar包運(yùn)行依賴(lài)的關(guān)鍵詞.詳細(xì)內(nèi)容可以參考:http://java.sun.com/docs/books/tutorial/ext/index.html
以上三種方法推薦第一種,擴(kuò)展性好,操作起來(lái)也最方便.
另外編寫(xiě)自己的ClassLoader,來(lái)動(dòng)態(tài)載入class,是更加復(fù)雜和高級(jí)技術(shù).限于篇幅,不贅述.有興趣了解可以去google一下custom classloader
Java的安全機(jī)制隨不同的JDK版本有不同的變化,會(huì)影響很多核心CLASS,比如Thread,所以很多大型商業(yè)軟件,要求JDK的版本很?chē)?yán)格.部分原因也在此.這也要求在發(fā)布自己編寫(xiě)的應(yīng)用時(shí)候,不管大小,都要說(shuō)明開(kāi)發(fā)和測(cè)試的JDK版本.
本文所述方法測(cè)試基于j2sdk 1.4.2_04-b05
----------------------------------------------------------------------------------------------
附:背景知識(shí)
自JDK 1.2以后,JVM采用了委托(delegate)模式來(lái)載入class.采用這種設(shè)計(jì)的原因可以參考http://java.sun.com/docs/books/tutorial/ext/basics/load.html
歸納來(lái)講:是基于JVM sandbox(沙盒)安裝模型上提供應(yīng)用層的可定制的安全機(jī)制.
Java虛擬機(jī)(JVM)尋找Class的順序
1. Bootstrap classes
屬于Java 平臺(tái)核心的class,比如java.lang.String等.及rt.jar等重要的核心級(jí)別的class.這是由JVM Bootstrap class loader來(lái)載入的.一般是放置在{java_home}\jre\lib目錄下
2. Extension classes
基于Java擴(kuò)展機(jī)制,用來(lái)擴(kuò)展Java核心功能模塊.比如Java串口通訊模塊comm.jar.一般放置在{Java_home}\jre\lib\ext目錄下
3. User classes
開(kāi)發(fā)人員或其他第三方開(kāi)發(fā)的Java程序包.通過(guò)命令行的-classpath或-cp,或者通過(guò)設(shè)置CLASSPATH環(huán)境變量來(lái)引用.JVM通過(guò)放置在{java_home}\lib\tools.jar來(lái)尋找和調(diào)用用戶(hù)級(jí)的class.常用的javac也是通過(guò)調(diào)用tools.jar來(lái)尋找用戶(hù)指定的路徑來(lái)編譯Java源程序.這樣就引出了User class路徑搜索的順序或優(yōu)先級(jí)別的問(wèn)題.
3.1 缺省值:調(diào)用Java或javawa的當(dāng)前路徑(.),是開(kāi)發(fā)的class所存在的當(dāng)前目錄
3.2 CLASSPATH環(huán)境變量設(shè)置的路徑.如果設(shè)置了CLASSPATH,則CLASSPATH的值會(huì)覆蓋缺省值
3.3 執(zhí)行Java的命令行-classpath或-cp的值,如果制定了這兩個(gè)命令行參數(shù)之一,它的值會(huì)覆蓋環(huán)境變量CLASSPATH的值
3.4 -jar 選項(xiàng):如果通過(guò)java -jar 來(lái)運(yùn)行一個(gè)可執(zhí)行的jar包,這當(dāng)前jar包會(huì)覆蓋上面所有的值.換句話(huà)說(shuō),-jar 后面所跟的jar包的優(yōu)先級(jí)別最高,如果指定了-jar選項(xiàng),所有環(huán)境變量和命令行制定的搜索路徑都將被忽略.JVM APPClassloader將只會(huì)以jar包為搜索范圍.
有關(guān)可執(zhí)行jar有許多相關(guān)的安全方面的描述,可以參考http://java.sun.com/docs/books/tutorial/jar/ 來(lái)全面了解.
這也是為什么應(yīng)用程序打包成可執(zhí)行的jar包后,不管你怎么設(shè)置classpath都不能引用到第三方j(luò)ar包的東西了.