軟件工程思想3
綜合能力考核表詳細(xì)內(nèi)容
軟件工程思想3
第三章 項(xiàng)目計(jì)劃與質(zhì)量管理 在可行性分析之后,項(xiàng)目計(jì)劃與質(zhì)量管理將貫穿需求分析、系統(tǒng)設(shè)計(jì)、程序設(shè)計(jì)、測(cè) 試、維護(hù)等軟件工程環(huán)節(jié)。 項(xiàng)目計(jì)劃是要提供一份合理的進(jìn)程表,讓所有開(kāi)發(fā)人員任務(wù)明確、步調(diào)一致,最終共 同準(zhǔn)時(shí)地完成項(xiàng)目。項(xiàng)目計(jì)劃是要付諸實(shí)施的,不象用嘴巴喊政治口號(hào),可以很夸張。 軟件的項(xiàng)目計(jì)劃重在“準(zhǔn)確”而非“快速”。 提高質(zhì)量是軟件工程的主要目標(biāo)。但由于軟件開(kāi)發(fā)是一種智力創(chuàng)作活動(dòng),很難象傳統(tǒng) 工業(yè)那樣通過(guò)執(zhí)行嚴(yán)格的操作規(guī)范來(lái)保證軟件產(chǎn)品的質(zhì)量。世上最小心翼翼、最老實(shí)巴 腳的程序員未必就能開(kāi)發(fā)出高質(zhì)量的軟件來(lái)。程序員必須了解軟件質(zhì)量的方方面面(稱 為質(zhì)量因素),如正確性、性能、易用性、靈活性、可復(fù)用性、可理解性等等,才能在 進(jìn)行系統(tǒng)設(shè)計(jì)、程序設(shè)計(jì)時(shí)將高質(zhì)量?jī)?nèi)建其中。軟件的高質(zhì)量并不是“管理”出來(lái)的,實(shí) 質(zhì)上是設(shè)計(jì)出來(lái)的,質(zhì)量的管理只是一種預(yù)防和認(rèn)證的手段而已。 3.1 項(xiàng) 目 計(jì) 劃 做項(xiàng)目計(jì)劃,如同給一個(gè)待出生的嬰兒寫(xiě)傳記那樣困難。如果允許項(xiàng)目結(jié)束后再寫(xiě)計(jì) 劃,那就輕松多了,并且可以100% 地準(zhǔn)確。 歷史教訓(xùn)讓我們明白一個(gè)道理:如果一萬(wàn)年以后才會(huì)有一條陽(yáng)光大道通向共產(chǎn)主義, 那么現(xiàn)在就不要忙著砸鍋煉鋼趕英超美,免得在跑步奔向共產(chǎn)主義時(shí)把自己累死餓死。 在做軟件的項(xiàng)目計(jì)劃時(shí),應(yīng)屏棄一切浮夸作風(fēng)。只有“知已知彼”才能做出合理的項(xiàng)目計(jì) 劃。這里“知彼”是指要了解項(xiàng)目的規(guī)模、難度與時(shí)間限制?!爸选笔侵敢私庥卸嗌倏?用資源,如可調(diào)用的程序員有幾個(gè)?他們的水平如何?軟硬件設(shè)施如何? 3.1.1 知己知彼 首先要了解項(xiàng)目的規(guī)模、難度與時(shí)間限制,才可以確定應(yīng)該投入多少人力、物力去做 這個(gè)項(xiàng)目。在可行性分析階段就要考慮這個(gè)問(wèn)題。但不幸的是,人們?cè)谙萑腠?xiàng)目不能自 撥之前總難以準(zhǔn)確地估計(jì)項(xiàng)目的規(guī)模與難度。這里經(jīng)驗(yàn)起到了最重要的作用。 項(xiàng)目的時(shí)間限制有兩類(lèi)。第一類(lèi),項(xiàng)目應(yīng)該完成的日期寫(xiě)在合同中,如果延期了,則 開(kāi)發(fā)方要作出相應(yīng)的賠償。第二類(lèi)是開(kāi)發(fā)自己的軟件產(chǎn)品,雖然只確定了該產(chǎn)品大致的 發(fā)行日期并允許有延誤,但如果拖延太久則會(huì)失去商機(jī)造成損失。 項(xiàng)目的資源分為三類(lèi):“人”、“可復(fù)用的軟構(gòu)件”和“軟硬件環(huán)境”,如圖3.1所示。( 1)人是最有價(jià)值的資源。項(xiàng)目計(jì)劃的制定者要確定開(kāi)發(fā)人員的名單,要根據(jù)他們的專(zhuān) 長(zhǎng)進(jìn)行分工。 (2)可復(fù)用的軟構(gòu)件是次有價(jià)值的資源。1.2.1節(jié)論述了復(fù)用軟構(gòu)件可提高軟件的質(zhì)量 與生產(chǎn)率。軟構(gòu)件并非一定要用自己的,可以向?qū)I(yè)的軟件供應(yīng)商購(gòu)買(mǎi)。 (3)軟硬件環(huán)境雖然不是最重要的資源,卻是必需的資源。原則上軟硬件環(huán)境只要符 合項(xiàng)目的開(kāi)發(fā)要求即可。有些項(xiàng)目可能要用到特殊的設(shè)備,則要事先作好準(zhǔn)備,以免用 時(shí)找不到而擔(dān)擱了進(jìn)程。 圖3.1 項(xiàng)目的資源 3.1.2 進(jìn)度安排 有一位程序員忙著編寫(xiě)程序,經(jīng)理問(wèn)他還需要多久才能完成。 “明天就可以完成?!背绦騿T立即回答。 “我想這是不切實(shí)際的,實(shí)話實(shí)說(shuō),到底還要多少時(shí)間?”經(jīng)理說(shuō)。 “我還想加進(jìn)一些新的功能,這需要花兩個(gè)星期?!背绦騿T想了一會(huì)兒說(shuō)。 “即使這樣也期望過(guò)高了,只要你編完程序時(shí)告訴我一聲,我也就滿足了?!苯?jīng)理說(shuō)。 幾年以后,經(jīng)理要退休了。在他去退休午餐會(huì)時(shí),發(fā)現(xiàn)那位程序員正趴在機(jī)器旁睡覺(jué) :可憐的家伙整個(gè)晚上都在忙于編寫(xiě)那個(gè)程序。[James 1999] 程序員也期望每天早晨能在7:00準(zhǔn)時(shí)起床,可老是一覺(jué)醒來(lái)就到中午了。項(xiàng)目落后于 進(jìn)度表乃是家常便飯,不必大驚小怪。以下一些事件經(jīng)常會(huì)導(dǎo)致項(xiàng)目被延誤: (1)上級(jí)領(lǐng)導(dǎo)主管臆斷,制定了不現(xiàn)實(shí)的期限。項(xiàng)目經(jīng)理與程序員們被迫按照不合理的 進(jìn)度表開(kāi)展工作。 (2)客戶的需求發(fā)生了變化,但沒(méi)有對(duì)進(jìn)度表作出相應(yīng)的修改。 (3)低估了項(xiàng)目的規(guī)模與難度,導(dǎo)致投入的人力和物力不足。 (4)并未預(yù)見(jiàn)到存在難以克服的技術(shù)障礙。 (5)并未預(yù)見(jiàn)到開(kāi)發(fā)人員會(huì)發(fā)生問(wèn)題,如生病,辭職等等。 (6)開(kāi)發(fā)人員之間不能很好的交流、協(xié)作,導(dǎo)致各階段任務(wù)難以如期完成。 所以寫(xiě)進(jìn)程表不能象小學(xué)生寫(xiě)決心書(shū)那樣充滿幻想。以下是一些有益的建議: (1)制定進(jìn)度表的人最好就是項(xiàng)目負(fù)責(zé)人,他最了解項(xiàng)目和開(kāi)發(fā)人員。進(jìn)度表要經(jīng)過(guò)開(kāi) 發(fā)小組的討論,在得到大部數(shù)人的支持后才能實(shí)施。避免出現(xiàn)一廂情愿的局面。 (2)進(jìn)度安排并不見(jiàn)得一定要符合邏輯順序。應(yīng)盡可能地先做技術(shù)難度高的事,后做難 度低的事。也就是辛苦在前,輕松在后。 小時(shí)候我對(duì)一位老先生吃飯很感興趣:他總是先把一大盒的米飯吃光了,然后再幸福 地品嘗一小盒菜。父母告訴我這是中國(guó)的傳統(tǒng)美德,叫“先苦后甜”。從此我銘記在心, 按此道理去學(xué)習(xí)和工作??扇缃裨陲埖昀?,人們總是先把菜吃完了,最后才吃點(diǎn)米飯。 天哪,生活真是太復(fù)雜了,我究竟該“先吃飯” 還是“先吃菜”? (3)開(kāi)發(fā)一個(gè)大的軟件項(xiàng)目,應(yīng)該將進(jìn)度表分為若干個(gè)里程碑。一個(gè)里程碑之內(nèi)的多個(gè) 任務(wù)可以同步進(jìn)行。程序員極容易沉迷于技術(shù),要么樂(lè)不思蜀,要么焦頭爛額。里程碑 就象心靈的燈塔,使忙碌的人群不混亂,不迷失方向。 (4)進(jìn)度表中必須留有緩沖時(shí)間,并將緩沖時(shí)間用到不確定的事情上。因?yàn)槿藗儗?duì)即將 要做的事情知之甚少,所以要留一些時(shí)間以防不測(cè)。Microsoft公司的一些開(kāi)發(fā)小組甚至 制定了“50% 緩沖規(guī)則”[Cusumano 1996]。對(duì)許多項(xiàng)目經(jīng)理而言,容忍進(jìn)度表中存在緩沖時(shí)間,不啻為觀念上的一個(gè)飛躍。 (5)如果發(fā)現(xiàn)項(xiàng)目應(yīng)交付的期限非常不合理,就要跟領(lǐng)導(dǎo)或跟客戶據(jù)理力爭(zhēng),請(qǐng)求放寬 期限、調(diào)整進(jìn)度。當(dāng)客戶的需求發(fā)生變化時(shí),就要對(duì)進(jìn)度表作出相應(yīng)的修正。不要覺(jué)得 修改進(jìn)度表很困難很麻煩,不修改才會(huì)產(chǎn)生真真的麻煩。很多人認(rèn)為戒煙很困難,但馬 克·吐溫曾說(shuō):“戒煙很容易,我一年就戒幾十次?!?3.2 零缺陷質(zhì)量管理的觀念 “零缺陷”質(zhì)量管理的觀念來(lái)源于一些國(guó)際上著名的硬件生產(chǎn)廠商。盡管軟件的開(kāi)發(fā)與 硬件生產(chǎn)有極大的差別,但我們?nèi)钥梢詮摹傲闳毕荨辟|(zhì)量管理中得到啟迪?!傲闳毕荨辟|(zhì)量 管理至少有兩個(gè)核心內(nèi)容:一是高目標(biāo),二是可執(zhí)行的規(guī)范。 3.2.1 高目標(biāo) 人在做一件事情時(shí),由于存在很多不確定的因素,一般不可能100% 地達(dá)到目標(biāo)。假設(shè)平常人做事能完成目標(biāo)的80%。如果某個(gè)人的目標(biāo)是100分,那么他最 終成績(jī)可達(dá)80分。如果某個(gè)人的目標(biāo)只是60分,那么他最終成績(jī)只有48分。我們?cè)诳紙?chǎng) 上身經(jīng)百戰(zhàn),很清楚那些只想混及格的學(xué)生通常都不會(huì)及格,那些想得高分的學(xué)生也常 為自己的失誤而捶胸頓足。 做一個(gè)項(xiàng)目通常需要多個(gè)人的協(xié)作。假設(shè)項(xiàng)目的總質(zhì)量(最高為1)是十個(gè)開(kāi)發(fā)人員 的工作質(zhì)量之積。如果每個(gè)人的質(zhì)量目標(biāo)是0.95,那么十個(gè)人的累積質(zhì)量不會(huì)超過(guò)0.19 。如果每個(gè)人的質(zhì)量目標(biāo)是0.9分,那么十個(gè)人的累積質(zhì)量不會(huì)超過(guò)0.03。只有每個(gè)人都 做到1,項(xiàng)目總質(zhì)量才會(huì)是1。 如果沒(méi)有高目標(biāo),人的墮落就很快。如果沒(méi)有“零缺陷”的質(zhì)量目標(biāo),也許缺陷就會(huì)成 堆。 3.2.2 可執(zhí)行的規(guī)范 實(shí)現(xiàn)100分顯然比實(shí)現(xiàn)80分要付出更多的努力?!傲闳毕荨辟|(zhì)量目標(biāo)不是隨心所欲提出 來(lái)的,做得到才有意義。實(shí)現(xiàn)高目標(biāo)需要一套可執(zhí)行的規(guī)范來(lái)保證。 50年代末,全國(guó)掀起了“浮夸風(fēng)”。為了實(shí)現(xiàn)畝產(chǎn)數(shù)萬(wàn)斤推廣各種方法,害得全國(guó)鬧饑 荒。想不到有數(shù)千年種糧經(jīng)驗(yàn)的幾億中國(guó)農(nóng)民就這么整齊地栽倒了。 好規(guī)范必須是本企業(yè)有能力執(zhí)行的。一個(gè)普通企業(yè)照搬一流企業(yè)的規(guī)范未必行得通。 軟件工程的規(guī)范很容易從書(shū)籍中找到,但有了這些規(guī)范并不表明就能把軟件做好。國(guó)內(nèi) 很多軟件公司根本沒(méi)有條件去執(zhí)行業(yè)界推薦的軟件工程規(guī)范。社會(huì)主義初級(jí)階段的“草” 與發(fā)達(dá)資本主義國(guó)家的“苗”的確有不同的培育方式。 軟件是如此的靈活,如果沒(méi)有規(guī)范來(lái)制約,就容易因無(wú)序的喜好而導(dǎo)致混沌;但規(guī)范 如果太嚴(yán)密了,就會(huì)扼殺程序員生機(jī)勃勃的創(chuàng)造力。制定軟件規(guī)范是進(jìn)退兩難的事。程 序員必須深入了解軟件多方面的質(zhì)量因素,把那些能提高軟件質(zhì)量因素的各種規(guī)范植入 腦中,才能在各個(gè)實(shí)踐環(huán)節(jié)自然而然地把高質(zhì)量設(shè)計(jì)到軟件中。 3.3 軟件的質(zhì)量因素 “運(yùn)行正確”的程序就是高質(zhì)量的程序嗎? 不貪污的官就是好官嗎? 時(shí)下老百姓對(duì)一些腐敗的地方政府深痛惡絕,對(duì)“官”不再有質(zhì)量期望。只要當(dāng)官的不 貪污,哪怕毫無(wú)政績(jī),也算是“好官”。也有一些精明的老百姓打出旗號(hào):寧要貪污犯, 不要大笨蛋。相比之下,程序員是夠幸福的了。因?yàn)槲覀兡芡ㄟ^(guò)努力,由自己來(lái)把握軟 件的命運(yùn)。那么就不要輕易放棄提高軟件質(zhì)量的權(quán)利了。 “運(yùn)行正確”的程序不見(jiàn)得就是高質(zhì)量的程序。這個(gè)程序也許運(yùn)行速度很低并且浪費(fèi)內(nèi) 存;也許代碼寫(xiě)得一塌糊涂,除了開(kāi)發(fā)者本人誰(shuí)也看不懂也不會(huì)使用。正確性只是反映 軟件質(zhì)量的一個(gè)因素而已。 軟件的質(zhì)量因素很多,如正確性、精確性、可靠性、容錯(cuò)性、性能、效率、易用性、 可理解性、簡(jiǎn)潔性、可復(fù)用性、可擴(kuò)充性、兼容性等等(還可以列出十幾個(gè))。這些質(zhì) 量因素之間“你中有我,我中有他”,非常纏綿。如果程序員每天要面對(duì)那么多質(zhì)量因素 咬文嚼字,不久就會(huì)迂腐得象孔乙已,并且有找不到女朋友的危險(xiǎn)。 為了便于理解,可以參照武俠小說(shuō)中的武學(xué)分類(lèi),將質(zhì)量因素粗略地分成幾大派。你 想那武學(xué)源源流長(zhǎng),相互滲透,誰(shuí)能數(shù)得清有多少江湖派別。但想在道上混,總得知道 六大門(mén)派:“少林派”、“武當(dāng)派”、“峨嵋派”、“華山派”、“昆侖派”和“崆峒派”。軟件質(zhì) 量因素的分類(lèi)如圖3.2所示。其中“正確性與精確性”排在首位,地位如同“少林派”與“武 當(dāng)派”;而“性能與效率”,“易用性”,“可理解性與簡(jiǎn)潔性”和“可復(fù)用性與可擴(kuò)充性”亦是 舉足輕重的質(zhì)量因素,地位仿佛“峨嵋派”,“華山派”,“昆侖派”和“崆峒派”。其它的質(zhì) 量因素總可以在圖3.2中找到合適的親緣關(guān)系,本節(jié)不再一一細(xì)表。 圖3.2 軟件質(zhì)量因素分類(lèi)和武學(xué)分類(lèi) 3.3.1 正確性與精確性 正確性與精確性之所以排在質(zhì)量因素的第一位,是因?yàn)槿绻浖\(yùn)行不正確或者不精 確,就會(huì)給用戶造成不便甚至造成損失。機(jī)器不會(huì)主動(dòng)欺騙人,軟件運(yùn)行不正確或者不 精確一般都是人造成的。即使一個(gè)軟件能100% 地按需求規(guī)格執(zhí)行,但是如果需求分析錯(cuò)了,那么對(duì)客戶而言這個(gè)軟件也存在錯(cuò)誤。即 使需求分析完全符合客戶的要求,但是如果軟件沒(méi)有100% 地按需求規(guī)格執(zhí)行,那么這個(gè)軟件也存在錯(cuò)誤。開(kāi)發(fā)一個(gè)大的軟件項(xiàng)目,程序員要為“正 確”、“精確”四個(gè)字竭盡精力。 與正確性、精確性相關(guān)的質(zhì)量因素是容錯(cuò)性和可靠性。 容錯(cuò)性首先承認(rèn)軟件系統(tǒng)存在不正確與不精確的因素,為了防止?jié)撛诘牟徽_與不精 確因素引發(fā)災(zāi)難,系統(tǒng)為此設(shè)計(jì)了安全措施。在一些高風(fēng)險(xiǎn)的軟件系統(tǒng),如航空航天、 武器、金融等系統(tǒng)中,容錯(cuò)性設(shè)計(jì)非常重要。 可靠性是指在一定的環(huán)境下,在給定的時(shí)間內(nèi),系統(tǒng)不發(fā)生故障的概率??煽啃员緛?lái) 是硬件領(lǐng)域的術(shù)語(yǔ)。比如某個(gè)電子設(shè)備,一開(kāi)始工作很正常,但由于工作中器件的物理 性質(zhì)會(huì)發(fā)生變化(如發(fā)熱),慢慢地系統(tǒng)就會(huì)失常。所以一個(gè)設(shè)計(jì)完全正確的硬件系統(tǒng) ,在工作中未必就是可靠的。軟件在運(yùn)行時(shí)不會(huì)發(fā)生物理性質(zhì)的變化,人們常以為如果 軟件的某個(gè)功能是正確的,那么它一輩子都是正確的。可是我們無(wú)法對(duì)軟件進(jìn)行徹底地 測(cè)試,無(wú)法根除軟件中潛在的錯(cuò)誤。平時(shí)軟件運(yùn)行得好好的,說(shuō)不準(zhǔn)哪一天就不正常了 ,如“2000年”問(wèn)題。因此把可靠性引入軟件領(lǐng)域是有意義的。我曾買(mǎi)了一本關(guān)于軟件可 靠性的著作,此書(shū)充滿了數(shù)學(xué)公式。我發(fā)現(xiàn)以我目前的學(xué)歷實(shí)在難以看懂書(shū)上講了些什 么。請(qǐng)寬恕我的愚昧,我把此書(shū)給“供”起來(lái),沒(méi)敢用筆畫(huà)一處記號(hào)。 3.3.2 性能與效率 用戶都希望軟件的運(yùn)行速度高些(高性能),并且占用資源少些(高效率)。舊社會(huì) 地主就是這么對(duì)待長(zhǎng)工的:干活要快點(diǎn),吃得要少點(diǎn)。程序員可以通過(guò)優(yōu)化算法、數(shù)據(jù) 結(jié)構(gòu)和代碼組織來(lái)提高軟件系統(tǒng)的性能與效率。優(yōu)化的關(guān)鍵工作是找出限制性能與效率 的“瓶頸”,不要在無(wú)關(guān)痛癢的地方瞎忙乎。如果你想職稱升得快,光靠增加課時(shí)能頂屁 用;你就該一年寫(xiě)它幾十篇文章,爭(zhēng)取破格升教授。 3.3.3 易用性 易用性是指用戶感覺(jué)使用軟件的難易程度。用戶可能是操作軟件的最終用戶,也可能 是那些要使用源代碼的程序員?,F(xiàn)代人的生活節(jié)奏快,干啥事都想圖個(gè)方便。所以把易 用性作為重要的質(zhì)量因素?zé)o可非議。 導(dǎo)致軟件易用性差的根本原因是開(kāi)發(fā)人員犯了“錯(cuò)位”的毛?。核詾橹灰约河闷饋?lái) 方便,用戶也一定會(huì)滿意。俗話說(shuō)“王婆賣(mài)瓜,自賣(mài)自夸”。當(dāng)程序員向用戶展示軟件時(shí) ,常會(huì)得意地講:“這個(gè)軟件非常好用,我操作給你看,……是很好用吧!”軟件的易用性 要讓用戶來(lái)評(píng)價(jià)。當(dāng)用...
軟件工程思想3
第三章 項(xiàng)目計(jì)劃與質(zhì)量管理 在可行性分析之后,項(xiàng)目計(jì)劃與質(zhì)量管理將貫穿需求分析、系統(tǒng)設(shè)計(jì)、程序設(shè)計(jì)、測(cè) 試、維護(hù)等軟件工程環(huán)節(jié)。 項(xiàng)目計(jì)劃是要提供一份合理的進(jìn)程表,讓所有開(kāi)發(fā)人員任務(wù)明確、步調(diào)一致,最終共 同準(zhǔn)時(shí)地完成項(xiàng)目。項(xiàng)目計(jì)劃是要付諸實(shí)施的,不象用嘴巴喊政治口號(hào),可以很夸張。 軟件的項(xiàng)目計(jì)劃重在“準(zhǔn)確”而非“快速”。 提高質(zhì)量是軟件工程的主要目標(biāo)。但由于軟件開(kāi)發(fā)是一種智力創(chuàng)作活動(dòng),很難象傳統(tǒng) 工業(yè)那樣通過(guò)執(zhí)行嚴(yán)格的操作規(guī)范來(lái)保證軟件產(chǎn)品的質(zhì)量。世上最小心翼翼、最老實(shí)巴 腳的程序員未必就能開(kāi)發(fā)出高質(zhì)量的軟件來(lái)。程序員必須了解軟件質(zhì)量的方方面面(稱 為質(zhì)量因素),如正確性、性能、易用性、靈活性、可復(fù)用性、可理解性等等,才能在 進(jìn)行系統(tǒng)設(shè)計(jì)、程序設(shè)計(jì)時(shí)將高質(zhì)量?jī)?nèi)建其中。軟件的高質(zhì)量并不是“管理”出來(lái)的,實(shí) 質(zhì)上是設(shè)計(jì)出來(lái)的,質(zhì)量的管理只是一種預(yù)防和認(rèn)證的手段而已。 3.1 項(xiàng) 目 計(jì) 劃 做項(xiàng)目計(jì)劃,如同給一個(gè)待出生的嬰兒寫(xiě)傳記那樣困難。如果允許項(xiàng)目結(jié)束后再寫(xiě)計(jì) 劃,那就輕松多了,并且可以100% 地準(zhǔn)確。 歷史教訓(xùn)讓我們明白一個(gè)道理:如果一萬(wàn)年以后才會(huì)有一條陽(yáng)光大道通向共產(chǎn)主義, 那么現(xiàn)在就不要忙著砸鍋煉鋼趕英超美,免得在跑步奔向共產(chǎn)主義時(shí)把自己累死餓死。 在做軟件的項(xiàng)目計(jì)劃時(shí),應(yīng)屏棄一切浮夸作風(fēng)。只有“知已知彼”才能做出合理的項(xiàng)目計(jì) 劃。這里“知彼”是指要了解項(xiàng)目的規(guī)模、難度與時(shí)間限制?!爸选笔侵敢私庥卸嗌倏?用資源,如可調(diào)用的程序員有幾個(gè)?他們的水平如何?軟硬件設(shè)施如何? 3.1.1 知己知彼 首先要了解項(xiàng)目的規(guī)模、難度與時(shí)間限制,才可以確定應(yīng)該投入多少人力、物力去做 這個(gè)項(xiàng)目。在可行性分析階段就要考慮這個(gè)問(wèn)題。但不幸的是,人們?cè)谙萑腠?xiàng)目不能自 撥之前總難以準(zhǔn)確地估計(jì)項(xiàng)目的規(guī)模與難度。這里經(jīng)驗(yàn)起到了最重要的作用。 項(xiàng)目的時(shí)間限制有兩類(lèi)。第一類(lèi),項(xiàng)目應(yīng)該完成的日期寫(xiě)在合同中,如果延期了,則 開(kāi)發(fā)方要作出相應(yīng)的賠償。第二類(lèi)是開(kāi)發(fā)自己的軟件產(chǎn)品,雖然只確定了該產(chǎn)品大致的 發(fā)行日期并允許有延誤,但如果拖延太久則會(huì)失去商機(jī)造成損失。 項(xiàng)目的資源分為三類(lèi):“人”、“可復(fù)用的軟構(gòu)件”和“軟硬件環(huán)境”,如圖3.1所示。( 1)人是最有價(jià)值的資源。項(xiàng)目計(jì)劃的制定者要確定開(kāi)發(fā)人員的名單,要根據(jù)他們的專(zhuān) 長(zhǎng)進(jìn)行分工。 (2)可復(fù)用的軟構(gòu)件是次有價(jià)值的資源。1.2.1節(jié)論述了復(fù)用軟構(gòu)件可提高軟件的質(zhì)量 與生產(chǎn)率。軟構(gòu)件并非一定要用自己的,可以向?qū)I(yè)的軟件供應(yīng)商購(gòu)買(mǎi)。 (3)軟硬件環(huán)境雖然不是最重要的資源,卻是必需的資源。原則上軟硬件環(huán)境只要符 合項(xiàng)目的開(kāi)發(fā)要求即可。有些項(xiàng)目可能要用到特殊的設(shè)備,則要事先作好準(zhǔn)備,以免用 時(shí)找不到而擔(dān)擱了進(jìn)程。 圖3.1 項(xiàng)目的資源 3.1.2 進(jìn)度安排 有一位程序員忙著編寫(xiě)程序,經(jīng)理問(wèn)他還需要多久才能完成。 “明天就可以完成?!背绦騿T立即回答。 “我想這是不切實(shí)際的,實(shí)話實(shí)說(shuō),到底還要多少時(shí)間?”經(jīng)理說(shuō)。 “我還想加進(jìn)一些新的功能,這需要花兩個(gè)星期?!背绦騿T想了一會(huì)兒說(shuō)。 “即使這樣也期望過(guò)高了,只要你編完程序時(shí)告訴我一聲,我也就滿足了?!苯?jīng)理說(shuō)。 幾年以后,經(jīng)理要退休了。在他去退休午餐會(huì)時(shí),發(fā)現(xiàn)那位程序員正趴在機(jī)器旁睡覺(jué) :可憐的家伙整個(gè)晚上都在忙于編寫(xiě)那個(gè)程序。[James 1999] 程序員也期望每天早晨能在7:00準(zhǔn)時(shí)起床,可老是一覺(jué)醒來(lái)就到中午了。項(xiàng)目落后于 進(jìn)度表乃是家常便飯,不必大驚小怪。以下一些事件經(jīng)常會(huì)導(dǎo)致項(xiàng)目被延誤: (1)上級(jí)領(lǐng)導(dǎo)主管臆斷,制定了不現(xiàn)實(shí)的期限。項(xiàng)目經(jīng)理與程序員們被迫按照不合理的 進(jìn)度表開(kāi)展工作。 (2)客戶的需求發(fā)生了變化,但沒(méi)有對(duì)進(jìn)度表作出相應(yīng)的修改。 (3)低估了項(xiàng)目的規(guī)模與難度,導(dǎo)致投入的人力和物力不足。 (4)并未預(yù)見(jiàn)到存在難以克服的技術(shù)障礙。 (5)并未預(yù)見(jiàn)到開(kāi)發(fā)人員會(huì)發(fā)生問(wèn)題,如生病,辭職等等。 (6)開(kāi)發(fā)人員之間不能很好的交流、協(xié)作,導(dǎo)致各階段任務(wù)難以如期完成。 所以寫(xiě)進(jìn)程表不能象小學(xué)生寫(xiě)決心書(shū)那樣充滿幻想。以下是一些有益的建議: (1)制定進(jìn)度表的人最好就是項(xiàng)目負(fù)責(zé)人,他最了解項(xiàng)目和開(kāi)發(fā)人員。進(jìn)度表要經(jīng)過(guò)開(kāi) 發(fā)小組的討論,在得到大部數(shù)人的支持后才能實(shí)施。避免出現(xiàn)一廂情愿的局面。 (2)進(jìn)度安排并不見(jiàn)得一定要符合邏輯順序。應(yīng)盡可能地先做技術(shù)難度高的事,后做難 度低的事。也就是辛苦在前,輕松在后。 小時(shí)候我對(duì)一位老先生吃飯很感興趣:他總是先把一大盒的米飯吃光了,然后再幸福 地品嘗一小盒菜。父母告訴我這是中國(guó)的傳統(tǒng)美德,叫“先苦后甜”。從此我銘記在心, 按此道理去學(xué)習(xí)和工作??扇缃裨陲埖昀?,人們總是先把菜吃完了,最后才吃點(diǎn)米飯。 天哪,生活真是太復(fù)雜了,我究竟該“先吃飯” 還是“先吃菜”? (3)開(kāi)發(fā)一個(gè)大的軟件項(xiàng)目,應(yīng)該將進(jìn)度表分為若干個(gè)里程碑。一個(gè)里程碑之內(nèi)的多個(gè) 任務(wù)可以同步進(jìn)行。程序員極容易沉迷于技術(shù),要么樂(lè)不思蜀,要么焦頭爛額。里程碑 就象心靈的燈塔,使忙碌的人群不混亂,不迷失方向。 (4)進(jìn)度表中必須留有緩沖時(shí)間,并將緩沖時(shí)間用到不確定的事情上。因?yàn)槿藗儗?duì)即將 要做的事情知之甚少,所以要留一些時(shí)間以防不測(cè)。Microsoft公司的一些開(kāi)發(fā)小組甚至 制定了“50% 緩沖規(guī)則”[Cusumano 1996]。對(duì)許多項(xiàng)目經(jīng)理而言,容忍進(jìn)度表中存在緩沖時(shí)間,不啻為觀念上的一個(gè)飛躍。 (5)如果發(fā)現(xiàn)項(xiàng)目應(yīng)交付的期限非常不合理,就要跟領(lǐng)導(dǎo)或跟客戶據(jù)理力爭(zhēng),請(qǐng)求放寬 期限、調(diào)整進(jìn)度。當(dāng)客戶的需求發(fā)生變化時(shí),就要對(duì)進(jìn)度表作出相應(yīng)的修正。不要覺(jué)得 修改進(jìn)度表很困難很麻煩,不修改才會(huì)產(chǎn)生真真的麻煩。很多人認(rèn)為戒煙很困難,但馬 克·吐溫曾說(shuō):“戒煙很容易,我一年就戒幾十次?!?3.2 零缺陷質(zhì)量管理的觀念 “零缺陷”質(zhì)量管理的觀念來(lái)源于一些國(guó)際上著名的硬件生產(chǎn)廠商。盡管軟件的開(kāi)發(fā)與 硬件生產(chǎn)有極大的差別,但我們?nèi)钥梢詮摹傲闳毕荨辟|(zhì)量管理中得到啟迪?!傲闳毕荨辟|(zhì)量 管理至少有兩個(gè)核心內(nèi)容:一是高目標(biāo),二是可執(zhí)行的規(guī)范。 3.2.1 高目標(biāo) 人在做一件事情時(shí),由于存在很多不確定的因素,一般不可能100% 地達(dá)到目標(biāo)。假設(shè)平常人做事能完成目標(biāo)的80%。如果某個(gè)人的目標(biāo)是100分,那么他最 終成績(jī)可達(dá)80分。如果某個(gè)人的目標(biāo)只是60分,那么他最終成績(jī)只有48分。我們?cè)诳紙?chǎng) 上身經(jīng)百戰(zhàn),很清楚那些只想混及格的學(xué)生通常都不會(huì)及格,那些想得高分的學(xué)生也常 為自己的失誤而捶胸頓足。 做一個(gè)項(xiàng)目通常需要多個(gè)人的協(xié)作。假設(shè)項(xiàng)目的總質(zhì)量(最高為1)是十個(gè)開(kāi)發(fā)人員 的工作質(zhì)量之積。如果每個(gè)人的質(zhì)量目標(biāo)是0.95,那么十個(gè)人的累積質(zhì)量不會(huì)超過(guò)0.19 。如果每個(gè)人的質(zhì)量目標(biāo)是0.9分,那么十個(gè)人的累積質(zhì)量不會(huì)超過(guò)0.03。只有每個(gè)人都 做到1,項(xiàng)目總質(zhì)量才會(huì)是1。 如果沒(méi)有高目標(biāo),人的墮落就很快。如果沒(méi)有“零缺陷”的質(zhì)量目標(biāo),也許缺陷就會(huì)成 堆。 3.2.2 可執(zhí)行的規(guī)范 實(shí)現(xiàn)100分顯然比實(shí)現(xiàn)80分要付出更多的努力?!傲闳毕荨辟|(zhì)量目標(biāo)不是隨心所欲提出 來(lái)的,做得到才有意義。實(shí)現(xiàn)高目標(biāo)需要一套可執(zhí)行的規(guī)范來(lái)保證。 50年代末,全國(guó)掀起了“浮夸風(fēng)”。為了實(shí)現(xiàn)畝產(chǎn)數(shù)萬(wàn)斤推廣各種方法,害得全國(guó)鬧饑 荒。想不到有數(shù)千年種糧經(jīng)驗(yàn)的幾億中國(guó)農(nóng)民就這么整齊地栽倒了。 好規(guī)范必須是本企業(yè)有能力執(zhí)行的。一個(gè)普通企業(yè)照搬一流企業(yè)的規(guī)范未必行得通。 軟件工程的規(guī)范很容易從書(shū)籍中找到,但有了這些規(guī)范并不表明就能把軟件做好。國(guó)內(nèi) 很多軟件公司根本沒(méi)有條件去執(zhí)行業(yè)界推薦的軟件工程規(guī)范。社會(huì)主義初級(jí)階段的“草” 與發(fā)達(dá)資本主義國(guó)家的“苗”的確有不同的培育方式。 軟件是如此的靈活,如果沒(méi)有規(guī)范來(lái)制約,就容易因無(wú)序的喜好而導(dǎo)致混沌;但規(guī)范 如果太嚴(yán)密了,就會(huì)扼殺程序員生機(jī)勃勃的創(chuàng)造力。制定軟件規(guī)范是進(jìn)退兩難的事。程 序員必須深入了解軟件多方面的質(zhì)量因素,把那些能提高軟件質(zhì)量因素的各種規(guī)范植入 腦中,才能在各個(gè)實(shí)踐環(huán)節(jié)自然而然地把高質(zhì)量設(shè)計(jì)到軟件中。 3.3 軟件的質(zhì)量因素 “運(yùn)行正確”的程序就是高質(zhì)量的程序嗎? 不貪污的官就是好官嗎? 時(shí)下老百姓對(duì)一些腐敗的地方政府深痛惡絕,對(duì)“官”不再有質(zhì)量期望。只要當(dāng)官的不 貪污,哪怕毫無(wú)政績(jī),也算是“好官”。也有一些精明的老百姓打出旗號(hào):寧要貪污犯, 不要大笨蛋。相比之下,程序員是夠幸福的了。因?yàn)槲覀兡芡ㄟ^(guò)努力,由自己來(lái)把握軟 件的命運(yùn)。那么就不要輕易放棄提高軟件質(zhì)量的權(quán)利了。 “運(yùn)行正確”的程序不見(jiàn)得就是高質(zhì)量的程序。這個(gè)程序也許運(yùn)行速度很低并且浪費(fèi)內(nèi) 存;也許代碼寫(xiě)得一塌糊涂,除了開(kāi)發(fā)者本人誰(shuí)也看不懂也不會(huì)使用。正確性只是反映 軟件質(zhì)量的一個(gè)因素而已。 軟件的質(zhì)量因素很多,如正確性、精確性、可靠性、容錯(cuò)性、性能、效率、易用性、 可理解性、簡(jiǎn)潔性、可復(fù)用性、可擴(kuò)充性、兼容性等等(還可以列出十幾個(gè))。這些質(zhì) 量因素之間“你中有我,我中有他”,非常纏綿。如果程序員每天要面對(duì)那么多質(zhì)量因素 咬文嚼字,不久就會(huì)迂腐得象孔乙已,并且有找不到女朋友的危險(xiǎn)。 為了便于理解,可以參照武俠小說(shuō)中的武學(xué)分類(lèi),將質(zhì)量因素粗略地分成幾大派。你 想那武學(xué)源源流長(zhǎng),相互滲透,誰(shuí)能數(shù)得清有多少江湖派別。但想在道上混,總得知道 六大門(mén)派:“少林派”、“武當(dāng)派”、“峨嵋派”、“華山派”、“昆侖派”和“崆峒派”。軟件質(zhì) 量因素的分類(lèi)如圖3.2所示。其中“正確性與精確性”排在首位,地位如同“少林派”與“武 當(dāng)派”;而“性能與效率”,“易用性”,“可理解性與簡(jiǎn)潔性”和“可復(fù)用性與可擴(kuò)充性”亦是 舉足輕重的質(zhì)量因素,地位仿佛“峨嵋派”,“華山派”,“昆侖派”和“崆峒派”。其它的質(zhì) 量因素總可以在圖3.2中找到合適的親緣關(guān)系,本節(jié)不再一一細(xì)表。 圖3.2 軟件質(zhì)量因素分類(lèi)和武學(xué)分類(lèi) 3.3.1 正確性與精確性 正確性與精確性之所以排在質(zhì)量因素的第一位,是因?yàn)槿绻浖\(yùn)行不正確或者不精 確,就會(huì)給用戶造成不便甚至造成損失。機(jī)器不會(huì)主動(dòng)欺騙人,軟件運(yùn)行不正確或者不 精確一般都是人造成的。即使一個(gè)軟件能100% 地按需求規(guī)格執(zhí)行,但是如果需求分析錯(cuò)了,那么對(duì)客戶而言這個(gè)軟件也存在錯(cuò)誤。即 使需求分析完全符合客戶的要求,但是如果軟件沒(méi)有100% 地按需求規(guī)格執(zhí)行,那么這個(gè)軟件也存在錯(cuò)誤。開(kāi)發(fā)一個(gè)大的軟件項(xiàng)目,程序員要為“正 確”、“精確”四個(gè)字竭盡精力。 與正確性、精確性相關(guān)的質(zhì)量因素是容錯(cuò)性和可靠性。 容錯(cuò)性首先承認(rèn)軟件系統(tǒng)存在不正確與不精確的因素,為了防止?jié)撛诘牟徽_與不精 確因素引發(fā)災(zāi)難,系統(tǒng)為此設(shè)計(jì)了安全措施。在一些高風(fēng)險(xiǎn)的軟件系統(tǒng),如航空航天、 武器、金融等系統(tǒng)中,容錯(cuò)性設(shè)計(jì)非常重要。 可靠性是指在一定的環(huán)境下,在給定的時(shí)間內(nèi),系統(tǒng)不發(fā)生故障的概率??煽啃员緛?lái) 是硬件領(lǐng)域的術(shù)語(yǔ)。比如某個(gè)電子設(shè)備,一開(kāi)始工作很正常,但由于工作中器件的物理 性質(zhì)會(huì)發(fā)生變化(如發(fā)熱),慢慢地系統(tǒng)就會(huì)失常。所以一個(gè)設(shè)計(jì)完全正確的硬件系統(tǒng) ,在工作中未必就是可靠的。軟件在運(yùn)行時(shí)不會(huì)發(fā)生物理性質(zhì)的變化,人們常以為如果 軟件的某個(gè)功能是正確的,那么它一輩子都是正確的。可是我們無(wú)法對(duì)軟件進(jìn)行徹底地 測(cè)試,無(wú)法根除軟件中潛在的錯(cuò)誤。平時(shí)軟件運(yùn)行得好好的,說(shuō)不準(zhǔn)哪一天就不正常了 ,如“2000年”問(wèn)題。因此把可靠性引入軟件領(lǐng)域是有意義的。我曾買(mǎi)了一本關(guān)于軟件可 靠性的著作,此書(shū)充滿了數(shù)學(xué)公式。我發(fā)現(xiàn)以我目前的學(xué)歷實(shí)在難以看懂書(shū)上講了些什 么。請(qǐng)寬恕我的愚昧,我把此書(shū)給“供”起來(lái),沒(méi)敢用筆畫(huà)一處記號(hào)。 3.3.2 性能與效率 用戶都希望軟件的運(yùn)行速度高些(高性能),并且占用資源少些(高效率)。舊社會(huì) 地主就是這么對(duì)待長(zhǎng)工的:干活要快點(diǎn),吃得要少點(diǎn)。程序員可以通過(guò)優(yōu)化算法、數(shù)據(jù) 結(jié)構(gòu)和代碼組織來(lái)提高軟件系統(tǒng)的性能與效率。優(yōu)化的關(guān)鍵工作是找出限制性能與效率 的“瓶頸”,不要在無(wú)關(guān)痛癢的地方瞎忙乎。如果你想職稱升得快,光靠增加課時(shí)能頂屁 用;你就該一年寫(xiě)它幾十篇文章,爭(zhēng)取破格升教授。 3.3.3 易用性 易用性是指用戶感覺(jué)使用軟件的難易程度。用戶可能是操作軟件的最終用戶,也可能 是那些要使用源代碼的程序員?,F(xiàn)代人的生活節(jié)奏快,干啥事都想圖個(gè)方便。所以把易 用性作為重要的質(zhì)量因素?zé)o可非議。 導(dǎo)致軟件易用性差的根本原因是開(kāi)發(fā)人員犯了“錯(cuò)位”的毛?。核詾橹灰约河闷饋?lái) 方便,用戶也一定會(huì)滿意。俗話說(shuō)“王婆賣(mài)瓜,自賣(mài)自夸”。當(dāng)程序員向用戶展示軟件時(shí) ,常會(huì)得意地講:“這個(gè)軟件非常好用,我操作給你看,……是很好用吧!”軟件的易用性 要讓用戶來(lái)評(píng)價(jià)。當(dāng)用...
軟件工程思想3
[下載聲明]
1.本站的所有資料均為資料作者提供和網(wǎng)友推薦收集整理而來(lái),僅供學(xué)習(xí)和研究交流使用。如有侵犯到您版權(quán)的,請(qǐng)來(lái)電指出,本站將立即改正。電話:010-82593357。
2、訪問(wèn)管理資源網(wǎng)的用戶必須明白,本站對(duì)提供下載的學(xué)習(xí)資料等不擁有任何權(quán)利,版權(quán)歸該下載資源的合法擁有者所有。
3、本站保證站內(nèi)提供的所有可下載資源都是按“原樣”提供,本站未做過(guò)任何改動(dòng);但本網(wǎng)站不保證本站提供的下載資源的準(zhǔn)確性、安全性和完整性;同時(shí)本網(wǎng)站也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的損失或傷害。
4、未經(jīng)本網(wǎng)站的明確許可,任何人不得大量鏈接本站下載資源;不得復(fù)制或仿造本網(wǎng)站。本網(wǎng)站對(duì)其自行開(kāi)發(fā)的或和他人共同開(kāi)發(fā)的所有內(nèi)容、技術(shù)手段和服務(wù)擁有全部知識(shí)產(chǎn)權(quán),任何人不得侵害或破壞,也不得擅自使用。
我要上傳資料,請(qǐng)點(diǎn)我!
管理工具分類(lèi)
ISO認(rèn)證課程講義管理表格合同大全法規(guī)條例營(yíng)銷(xiāo)資料方案報(bào)告說(shuō)明標(biāo)準(zhǔn)管理戰(zhàn)略商業(yè)計(jì)劃書(shū)市場(chǎng)分析戰(zhàn)略經(jīng)營(yíng)策劃方案培訓(xùn)講義企業(yè)上市采購(gòu)物流電子商務(wù)質(zhì)量管理企業(yè)名錄生產(chǎn)管理金融知識(shí)電子書(shū)客戶管理企業(yè)文化報(bào)告論文項(xiàng)目管理財(cái)務(wù)資料固定資產(chǎn)人力資源管理制度工作分析績(jī)效考核資料面試招聘人才測(cè)評(píng)崗位管理職業(yè)規(guī)劃KPI績(jī)效指標(biāo)勞資關(guān)系薪酬激勵(lì)人力資源案例人事表格考勤管理人事制度薪資表格薪資制度招聘面試表格崗位分析員工管理薪酬管理績(jī)效管理入職指引薪酬設(shè)計(jì)績(jī)效管理績(jī)效管理培訓(xùn)績(jī)效管理方案平衡計(jì)分卡績(jī)效評(píng)估績(jī)效考核表格人力資源規(guī)劃安全管理制度經(jīng)營(yíng)管理制度組織機(jī)構(gòu)管理辦公總務(wù)管理財(cái)務(wù)管理制度質(zhì)量管理制度會(huì)計(jì)管理制度代理連鎖制度銷(xiāo)售管理制度倉(cāng)庫(kù)管理制度CI管理制度廣告策劃制度工程管理制度采購(gòu)管理制度生產(chǎn)管理制度進(jìn)出口制度考勤管理制度人事管理制度員工福利制度咨詢?cè)\斷制度信息管理制度員工培訓(xùn)制度辦公室制度人力資源管理企業(yè)培訓(xùn)績(jī)效考核其它
精品推薦
下載排行
- 1社會(huì)保障基礎(chǔ)知識(shí)(ppt) 16695
- 2安全生產(chǎn)事故案例分析(ppt 16695
- 3行政專(zhuān)員崗位職責(zé) 16695
- 4品管部崗位職責(zé)與任職要求 16695
- 5員工守則 16695
- 6軟件驗(yàn)收?qǐng)?bào)告 16695
- 7問(wèn)卷調(diào)查表(范例) 16695
- 8工資發(fā)放明細(xì)表 16695
- 9文件簽收單 16695