軟件工程思想3

  文件類別:其它

  文件格式:文件格式

  文件大?。?0K

  下載次數:63

  所需積分:1點

  解壓密碼:qg68.cn

  下載地址:[下載地址]

清華大學卓越生產運營總監(jiān)高級研修班

綜合能力考核表詳細內容

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

[下載聲明]
1.本站的所有資料均為資料作者提供和網友推薦收集整理而來,僅供學習和研究交流使用。如有侵犯到您版權的,請來電指出,本站將立即改正。電話:010-82593357。
2、訪問管理資源網的用戶必須明白,本站對提供下載的學習資料等不擁有任何權利,版權歸該下載資源的合法擁有者所有。
3、本站保證站內提供的所有可下載資源都是按“原樣”提供,本站未做過任何改動;但本網站不保證本站提供的下載資源的準確性、安全性和完整性;同時本網站也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的損失或傷害。
4、未經本網站的明確許可,任何人不得大量鏈接本站下載資源;不得復制或仿造本網站。本網站對其自行開發(fā)的或和他人共同開發(fā)的所有內容、技術手段和服務擁有全部知識產權,任何人不得侵害或破壞,也不得擅自使用。

 我要上傳資料,請點我!
COPYRIGT @ 2001-2018 HTTP://m.musicmediasoft.com INC. ALL RIGHTS RESERVED. 管理資源網 版權所有