第一篇:《人月神話》讀后感
~-7-6 字數:407
1不同的社會經驗,不同的思想狀態,對讀本書的心得也不一樣,我在此說說我的讀后感,書中有許多非常好的觀點,但我只把我感觸最深的寫下來。這確實是一本很值得多次閱讀的好書,每次閱讀可能都能從中得到一些提示。
1.外科手術隊伍TheSurgicalTeam
項目經理在項目的初期必須清楚的估計項目的人月運作模式(時間、人力在項目各階段的分配),例如什么時候需要出什么樣成果,決定了什么時候需要什么樣的人加入項目,這是項目經理的責任。
2.貴族~,民主政治Aristocracy,Democracy,System
要獲得概念的完整性,設計必須由一個人或具有共識的小組來完成。
有四個問題:
1。如何得到概念的完整性
2。是否要有一位杰出的精英,或者說是結構設計師的貴族~.....3.如何避免結構設計師產出無法實現或代價高昂的技術規格說明,使大家陷入困境。
4。如何才能與實現人員就技術說明的瑣碎細節充分溝通,以確保設計被正確地理解,并精確地整合到產品中。
對1。2。4的回答基本上都可以找到,但第3個似乎找不到。
3.畫蛇添足TheSecond-SystemEffect
講述的基本都是基于IBM360操作系統以及編譯程序等方面的經驗,講述如何避免開發第二個系統的風險,作者認為開發第二個系統的設計師設計出來的系統是最危險的,因此要求他們自律。
4.貫徹執行passingtheword
印象比較深刻的是"體系結構設計人員必須為自己描述的任何特性準備一種實現方法,但他不應該支配具體的實現過程。"
5.為什么巴比倫塔會失敗WhydidtheTowerofBabelFail?
講述巴比倫塔會失敗的原因是缺乏交流。
6.胸有成竹CallingtheShot
主要講述如何計算編程時間,以及提出幾個人的經驗算法。
講述的各種算法可能都不太適合與現在的高級語言,但portman的觀點仍然適合現在,即編程人員實際的編程時間只有50%,其他的時間都花在了無關的瑣碎事情上。
7.削足適履TenpoundsinaFive-poundSack
主要講述程序占用的空間等,在70年代比較突出,但現在好多了。
8.提綱擎領TheDocumentaryHypothesis
說明文檔的作用
9.未雨綢繆plantoThrowOneAway
唯一不變的是變化本身。
在大型項目中,項目經理需要有兩個和三個頂級程序員作為技術輕騎兵,當工作繁忙最密集的時候,他們能急馳飛奔,解決各種問題。講述技術人員與項目人員的互換是,對我有一定的提示,但圖中IBM的兩條職位晉升線,不太理解。
10.干將莫邪SharpTools
主要講述項目中管理好各種工具的重要性,項目經理首先要制定一種策略,讓各種工具成為公用的工具,這樣才能使開發、維護和使用這種工具的開發人員的效率更高,這種工具可能是開發人員開發出來的,也可能是使用現有的,可能是通用的,也可能是專用的或個人偏好的。比如:文檔編寫工具、開發工具(包括各種不同開發平臺)、調試工具、測試工具、數據庫工具、版本管理、項目管理工具等。
11.整體部分TheWholeandtheparts
一讀這一章,就讓我感觸頗深,特別是這句話"BELL實驗室監控系統項目的V.A.Vyssotsky提出,'關鍵的工作是產品定義。許許多多的失敗完全源于那些產品未精確定義的地方',細致的功能定義,詳細的規格說明,規范話的功能描述說明以及這些方法的實施,大大減少了系統中必須查找的BUG數量"。雖然這句話的意思只是說明精確定義產品將減少BUG的數量,但我看到了系統分析的最重要的工作——產品定義。現在,許多開發人員嘴里口口聲聲說也做過需求調研、系統分析、系統設計,但大多數沒有涉及到產品定義的深度,嚴格意義上不能叫做系統分析。這句話對我的以后想從事系統分析工作有很大的幫助。
這一章余下的內容,也值得一看,雖然有些地方有些過時,但剔除BUG的設計以及部分測試/調試方法仍值得一看。
12.禍起蕭墻HatchingaCatastrophe
這章節說明使項目進度拖后的最大原因不是重要的事件,如新技術、重組等,而是一些瑣碎的小事,每件小事只耽誤半天或一天時間,但這種小事多以后,將使項目的進度嚴重拖后。
項目對于公司就如程序對測試工程師一樣,如果不了解它,它就是一個黑盒子,如果不打開這個黑盒子,你可能永遠不知道盒子里面有什么。這部分描寫項目經理以及小組主管的一些心理,值得一看。
13.另外一面Theotherface
本章說明程序的另一面——文檔。
不了解,就無法真正擁有——歌德,作者引用的歌德的話來描述文檔對客戶的重要性,提出客戶需要什么樣的文檔以及文檔的格式和包含的內容,指出當時存在的大多數文檔只描述了樹木,形容了樹葉,但沒有整個森林的圖案。
想想,這種情況在現在仍然沒有改變。于是作者提出了兩個觀點:
&n
bsp;1.流程圖:流程圖是被吹捧得最過分的一種程序文檔。許多程序甚至不需要流程圖,很少程序需要一頁以上的流程圖
2.自文檔化(self-documenting)的程序:提出文檔與程序合為一體,能很好的解決文檔與程序分開造成的文檔過時的問題,并說明了在程序中加入文檔的一些方法和技巧。2002年,我看到一位網友關于文檔與程序合一的文章,當時就覺得是個好方法,沒想到70年代,老美已經提出來了。
14.沒有銀彈-軟件工程中的根本和次要問題(NoSilverBullet-EssenceandAccidentinsoftwareEngineering)
這是一篇論文,發表于1986年,我自認為我的理論水平沒有上升到可以對他的論點和論據做出懷疑或質疑的結論,我只是說說我的感想。
人狼是傳說中的妖怪,只有銀彈才能殺死他。作者認為軟件項目具有人狼的特性,因為軟件項目也可能變成一個怪物,一個落后進度、超出預算、存在大量缺陷的怪物。作者通過軟件系統的內在特性復雜性、一致性、可變性和不可見性來分析說明了軟件天生就沒有銀彈。
作者試圖通過分析軟件問題的本質和很多侯選銀彈的特征來探究其中的原因。他行動的第一步是將大塊的“巨無霸理論”替換成“微生物理論”。這個變化的過程告訴你,進步是逐步取得的,伴隨著辛勤的勞動,對規范化過程應
進行持續不懈的努力,而這個努力的過程相應的就誕生了軟件工程。作者對軟件工程誕生的原因做出這樣的解釋,我覺得符合外國思維的特點,這正是國人所缺乏。記得有一位朋友說過,中國媽媽與德國媽媽的區別,他說,如果手里拿的針掉到地上了,中國媽媽的第一反應是估計針掉下去的范圍,然后在這個范圍里面找,可能很快就找到了,也可能一直都找不到;但德國媽媽不同,她會拿一根粉筆來,把整個屋子畫成一個大圈,接著把大圈分成許許多多的小圈,然后再到每個小圈里找,雖然比較慢,但最終肯定可以找到。仔細想象,大多數情況下,中國媽媽都會找到得比較快,這確實符合大多數中國媽媽的思維習慣,每個中國媽媽都這樣找,這好象是與生俱來的本事,但為什么德國媽媽沒有這個本事呢?是德國媽媽笨嗎?為什么中國媽媽也有找不到的情況?而德國媽媽,雖然速度慢了點,卻始終能夠找得到?如果把這件故事推而廣之,多年以后,德國媽媽創建了找針工程,她通過多次找針的實驗數據,分析出針掉到整個房間中各個小圈的概率,總結出針在哪個小圈的概率最大,很快就可以找到針,找針速度早已高過中國媽媽,而中國媽媽還在依循與生俱來的本事。你能說德國媽媽笨嗎?為什么中國媽媽和德國媽媽會有這么大的區別?是德國媽媽把大塊的“巨無霸理論”替換成“微生物理論”嗎?我覺得是是,你說呢?作者在后面的論述中用數學和物理的發展為例子也說明了,這種思想的成立。
余下的作者把軟件工程按“巨無霸理論”替換成“微生物理論”的過程詳細的說明,值得看,我關注的不是具體的內容,具體內容可能有些不合適宜,我關注的是作者的思考方式以及處理方法,這是非常重要的。
在“以往解決次要困難的一些突破”和“銀彈的希望”章節,從概念上講述了軟件的發展,其中講到“專家系統”時,使我想起一部科幻電影,忘了電影名字了,有個情節大致是這樣的,一位非常有經驗的主管死后,有一名較優秀的下屬接任,但這時出現了一位非常厲害的敵人,這位新主管無論如何也戰勝不了敵人,這時想起了以前的主管,心想前主管一定有辦法對付這個敵人,而前主管的大腦就存放在系統里,
第二篇:人月神話讀后感
人月神話讀后感
二十九年前(1975)﹐IBM大型電腦之父──Fred Brooks 出版一本書﹕“The Mythical Man-Month”。收集了他在1960年代領導1000多人共同發展OS/360大型軟件系統的心得和經驗。該書是論文集﹐其中有一篇文章叫“The Mythical Man-Month”﹐他就以此作為書名。在1956~1965 之間﹐Brooks實際領導IBM 360 大型電腦的開發計劃﹐包括硬體結構及龐大的OS/360作業系統在內﹐因之他具有IBM 大型電腦之父的尊稱。由于OS/360是多達1000位程式師共同合作的大型軟件開發工作﹐讓他深刻了解到大型軟件開發的技術和管理上所面臨的種種困難和挑戰。于是﹐他就將其領導開發OS/360軟件系統的經驗心得收集在這本書里。人們常拿Man-Month(多少人﹐做多少個月)來計算軟件的工作量﹐但是Brooks發現軟件的開發工作是需要人與人之間密切溝通的﹐使得設計工作不易分割﹐所以Man-Month 為單位的計算方法是有問題的(mythical)。也就得出著名的Brooks法則── 「對于進度已落后的軟件開發計劃而言﹐若再增加人力﹐只會讓其更加落后。」(Adding manpower to a late software project makes it later)這是該書名稱的涵義。
看完此書后,我發現人月神話無處不在,其實在我們做
軟件工程來說,此書已經滲透進去了。本書作者為人們管理復雜項目提供了頗具洞察力的見解,既有很多發人深省的觀點,也有大量的軟件工程實踐。本書對我觸動最大的,一是保持設計的概念完整。無論對小軟件還是大軟件,都必須由一個設計師主導,最多兩個人討論來共同完成軟件的整體設計。作為一個軟件,一個系統,必須有一個清晰明確的概念模型,大家都在這個框架下工作,所有的創新發展都必須與基本的概念相吻合。具體的實現人員可以細化概念,但只有總設計者才有否定與發展基本概念的權力。需要注意的一點是,即使是總設計師一直是同一個人,他腦海中所認為理所當然的規則或者概念,很可能由于沒有明確的文檔化,而沒有成為所有開發者共同的概念。概念的完整性,對于很多小規模軟件,由于開發人員不多,開發經理一般都能控制住所有的代碼,概念完整性在組織層面就維持住了。但要注意以后的Bug修改,功能擴展的時候,也要時刻留意與最初的設計是否概念上相容。對于大規模的軟件系統,則必須通過樹狀組織結構,層層控制,總設計師還是一到兩人,每一層都有對下層的絕對把握能力。
二是“一個拿2倍工資的人,生產率可能是其他人的10倍。”不知道其他公司的程序員們如何看。我覺得,作為公司,應該給最好的人最好的待遇,或者說給比目前更高的待遇。組建一個團隊,最好的就是那種精英團隊。微軟就是這
種思路吧,把最聰明的人集中在一起,想不成功都難。
三是進度落后與增加人力。記得當年看《C++編程思想》,Bruce說“十個婦女不能在一個月內生下小孩”(大意),于我心有戚戚焉。而本書作者Brooks得出的結論是對我是震撼性的:“向進度落后的項目中增加人手,只會使進度更加落后”。以前,增加人手基本是挽救進度落后項目的主要辦法。這個辦法行不通的話,難道只有“加班”一條路了?如果不想加班,不想削減功能,不想推遲發布日期,那么。。。唯一的方法還是只有….加人。加足夠的人。而且不要逐步加入,一定要一次性加入。要小心的是,新加入的人可能對原來的組織造成沖擊,或者對原來的設計有不同意見(特別是加入的人中有比較強大的設計者)。那么,就當作,新組建了一個團隊吧。交流,培訓新人,就設計達成一致,繼續向者目標前進。
不同的社會經驗,不同的思想狀態,對讀本書的心得也不一樣。在此我說說書中許多非常好的觀點。
1.外科手術隊伍The Surgical Team
項目經理在項目的初期必須清楚的估計項目的人月運作模式(時間、人力在項目各階段的分配),例如什么時候需要出什么樣成果,決定了什么時候需要什么樣的人加入項目,這是項目經理的責任。
2.貴族專制,民主政治Aristocracy,Democracy,System
要獲得概念的完整性,設計必須由一個人或具有共識的小組來完成。
3.畫蛇添足The Second-System Effect
講述的基本都是基于IBM 360操作系統以及編譯程序等方面的經驗,講述如何避免開發第二個系統的風險,作者認為開發第二個系統的設計師設計出來的系統是最危險的,因此要求他們自律。
4.貫徹執行Passing the word
印象比較深刻的是“體系結構設計人員必須為自己描述的任何特性準備一種實現方法,但他不應該支配具體的實現過程。”
5.巴比倫塔會失敗Why did the Tower of Babel Fail?講述巴比倫塔會失敗的原因是缺乏交流。
6.胸有成竹Calling the Shot
主要講述如何計算編程時間,以及提出幾個人的經驗算法。講述的各種算法可能都不太適合與現在的高級語言,但Portman的觀點仍然適合現在,即編程人員實際的編程時間只有50%,其他的時間都花在了無關的瑣碎事情上。
7.削足適履Ten Pounds in a Five-Pound Sack
主要講述程序占用的空間等,在70年代比較突出,但現在好多了。
8.提綱擎領The Documentary Hypothesis
說明文檔的作用
9.未雨綢繆Plan to Throw One Away
唯一不變的是變化本身。在大型項目中,項目經理需要有兩個和三個頂級程序員作為技術輕騎兵,當工作繁忙最密集的時候,他們能急馳飛奔,解決各種問題。
10.干將莫邪Sharp Tools
主要講述項目中管理好各種工具的重要性,項目經理首先要制定一種策略,讓各種工具成為公用的工具,這樣才能使開發、維護和使用這種工具的開發人員的效率更高,這種工具可能是開發人員開發出來的,也可能是使用現有的,可能是通用的,也可能是專用的或個人偏好的。比如:文檔編寫工具、開發工具(包括各種不同開發平臺)、調試工具、測試工具、數據庫工具、版本管理、項目管理工具等。
11.整體部分The Whole and the Parts
特別是這句話"BELL實驗室監控系統項目的V.A.Vyssotsky提出,“關鍵的工作是產品定義。許許多多的失敗完全源于那些產品未精確定義的地方”,細致的功能定義,詳細的規格說明,規范話的功能描述說明以及這些方法的實施,大大減少了系統中必須查找的BUG數量。雖然這句話的意思只是說明精確定義產品將減少BUG的數量,但我看到了系統分析的最重要的工作——產品定義。
12.禍起蕭墻Hatching a Catastrophe
這章節說明使項目進度拖后的最大原因不是重要的事件,如新技術、重組等,而是一些瑣碎的小事,每件小事只耽誤半天或一天時間,但這種小事多以后,將使項目的進度嚴重拖后。項目對于公司就如程序對測試工程師一樣,如果不了解它,它就是一個黑盒子,如果不打開這個黑盒子,你可能永遠不知道盒子里面有什么。
13.另外一面The other face
本章說明程序的另一面——文檔。
不了解,就無法真正擁有——歌德,作者引用的歌德的話來描述文檔對客戶的重要性,提出客戶需要什么樣的文檔以及文檔的格式和包含的內容,指出當時存在的大多數文檔只描述了樹木,形容了樹葉,但沒有整個森林的圖案。想想,這種情況在現在仍然沒有改變。于是作者提出了兩個觀點:
1.流程圖:流程圖是被吹捧得最過分的一種程序文檔。許多程序甚至不需要流程圖,很少程序需要一頁以上的流程圖
2.自動文檔化(self-documenting)的程序:提出文檔與程序合為一體,能很好的解決文檔與程序分開造成的文檔過時的問題,并說明了在程序中加入文檔的一些方法和技巧。
14.沒有銀彈-軟件工程中的根本和次要問題(No Silver Bullet-Essence and Accident in software Engineering)
人狼是傳說中的妖怪,只有銀彈才能殺死他。作者認為軟件項目具有人狼的特性,因為軟件項目也可能變成一個怪物,一個落后進度、超出預算、存在大量缺陷的怪物。作者通過軟件系統的內在特性復雜性、一致性、可變性和不可見性來分析說明了軟件天生就沒有銀彈。作者試圖通過分析軟件問題的本質和很多侯選銀彈的特征來探究其中的原因。他行動的第一步是將大塊的“巨無霸理論”替換成“微生物理論”。這個變化的過程告訴你,進步是逐步取得的,伴隨著辛勤的勞動,對規范化過程應進行持續不懈的努力,而這個努力的過程相應的就誕生了軟件工程。
15.再論《沒有銀彈》No Silver Bullet Refired
看完再論《沒有銀彈》后,雖然作者說有不少人對他的觀點持反對或不同意見,但我始終覺得他的觀點是對的——根本和次要問題的劃分以及定義。作者認為軟件開發困難的部分是概念的結構,如規格化、設計和測試等概念的結構,而不是概念的表述和實現概念,雖然實現概念可能占用了小于90%的時間,就如現今的軟件開發一樣,系統分析通常占用的整個項目開發時間不超過20%,而80%的時間花在編程上一樣。
第三篇:《人月神話》讀后感
~-6-23 字數:1345當我捧起《人月神話》,馬上就被深深的吸引了。書中很多細微之處都對我的思維造成了沖擊。上一本給我類似感覺的書是那本四人幫的《設計模式》,已經很久沒有看到這么好的書了,鄭重推薦。把感觸比較深的幾點記下來,順便整理一下自己的思路,與大家分享。1,保持設計的概念完整。無論對小軟件還是大軟件,都必須由一個設計師主導,最多兩個人討論來共同完成軟件的整體設計。作為一個軟件,一個系統,必須有一個清晰明確的概念模型,大家都在這個框架下工作,所有的創新發展都必須與基本的概念相吻合。具體的實現人員可以細化概念,但只有總設計者才有否定與發展基本概念的權力。需要注意的一點是,即使是總設計師一直是同一個人,他腦海中所認為理所當然的規則或者概念,很可能由于沒有明確的文檔化,而沒有成為所有開發者共同的概念。在其他開發者編碼的時候,就可能會生成與概念相抵觸的東東(模塊,功能,算法),導致整體結構的惡化。這個時候總設計師一定要即時發現,做出更正。概念的完整性,對于很多小規模軟件,由于開發人員不多,開發經理一般都能控制住所有的代碼,概念完整性在組織層面就維持住了。但要注意以后的Bug修改,功能擴展的時候,也要時刻留意與最初的設計是否概念上相容。對于大規模的軟件系統,則必須通過樹狀組織結構,層層控制,總設計師還是一到兩人,每一層都有對下層的絕對把握能力。我以前參加過一個15人左右的項目組,就是分為兩層。感覺整體概念完整性的控制效果還不錯。我沒有更多人數項目的具體實踐經驗,希望以后能有機會參與比較大的項目。2,“一個拿2倍工資的人,生產率可能是其他人的10倍。”我和我的同學,一個小公司的技術總監聊起這個,他也是十分的認同。不知道其他公司的程序員們如何看。我的同事中有一個牛人,做出的貢獻特別大,應該相當于我們公司普通的十個程序員,不過工資最多也就是普通程序員的二倍。是不是有些不公平呢?我也說不清楚。因為那些普通程序員也十分的努力。不過,我覺得,作為公司,應該給最好的人最好的待遇,或者說給比目前更高的待遇。組建一個團隊,最好的就是那種精英團隊,大家都是牛人,效率會特別高。微軟就是這種思路吧,把最聰明的人集中在一起,想不成功都難亞。3,進度落后與增加人力。記得當年看《C++編程思想》,Bruce說“十個婦女不能在一個月內生下小孩”(大意),于我心有戚戚焉。而本書作者Brooks得出的結論是對我是震撼性的:“向進度落后的項目中增加人手,只會使進度更加落后”。以前,增加人手基本是挽救進度落后項目的主要辦法。這個辦法行不通的話,難道只有“加班”一條路了?但長期加班是對個人的摧殘,我更愿意利用業余時間去看書,例如看這本“人月神話”。:)如果不想加班,不想削減功能,不想推遲發布日期,那么。。。唯一的方法還是只有….加人。加足夠的人。而且不要逐步加入,一定要一次性加入。要小心的是,新加入的人可能對原來的組織造成沖擊,或者對原來的設計有不同意見(特別是加入的人中有比較強大的設計者)。那么,就當作,新組建了一個團隊吧。交流,培訓新人,就設計達成一致,繼續向者目標前進。感觸還有很多,以后如果有機會再寫。不過,我決定去買本英文版回來,收藏,以后再多看幾次。
第四篇:《人月神話》讀后感
《人月神話》讀后感
通過閱讀《人月神話》,我從中學到了一些東西:
首先,開發一個項目,我們錯誤的認為用人月這個工作量單位來估計和進行進度安排。成本的確隨開發產品的人數和時間的不同,有著很大的變化,進度卻不是如此。因此我認為用人月作為衡量一項工作的規模是一個危險和帶有欺騙性的神話。它暗示著人員數量和時間是可以相互替換的。人數和時間的互換僅僅適用于以下情況:某個任務可以分解給參與人員,并且他們之間不需要相互的交流,而在系統編程中近乎不可能。當任務由于次序上的限制不能分解時,人手的添加對進度沒有幫助。調試、測試的次序特性,許多軟件都具有這種特征。因為軟件開發本質上是一項系統工作——錯綜復雜關系下的一種實踐——溝通、交流的工作量非常大,它很快會消耗任務分解所節省下來的個人時間。從而,添加更多的人手,實際上是延長了,而不是縮短了時間進度。
對于編程,有其樂趣和苦惱。創建事物的快樂,開發對其他人有用的東西的樂趣,將可以活動、相互嚙合的零部件組裝成類似迷宮的東西,這個過程所體現出令人神魂顛倒的魅力,面對不重復的任務,不間斷學習的樂趣,工作在如此易于駕馭的介質上的樂趣——純粹的思維活動,其存在、移動和運轉方式完全不同于實際物體。將做事方式調整到追求完美,是學習編程的最困難部分;由其他人來設定目標,并且必須依靠自己無法控制的事物(特別是程序);權威不等同于責任實際情況看起來要比這一點好一些;真正的權威來自于每次任務的完成任何創造性活動都伴隨著枯燥艱苦的勞動,編程也不例外 人們通常期望項目在接近結束時,(bug、工作時間)能收斂得快一些,然而軟件項目的情況卻是越接近完成,收斂得越慢產品在即將完成時總面臨著陳舊過時的威脅。
開發一個軟件,我們要有合理的時間進度,開發人員要少而精,概念完整性必須考慮在內,要盡量做到盡早交流和持續溝通。
同時,文檔形成了關鍵的樞紐,每個項目管理的工作都圍繞著它們運轉,它們是經理們的主要個人工具。對于計算機硬件開發項目,關鍵文檔是目標、手冊、進度、預算、組織機構圖、空間分配、以及機器本身的報價、預測和價格;對于大學科系,關鍵文檔類似:目標、課程描述、學位要求、研究報告、課程表和課程的安排、預算、教室分配、教師和研究生助手的分配;對于軟件項目,要求是相同的:目標、用戶手冊、內部文檔、進度、預算、組織機構圖和工作空間分配。即使是一個小型項目,我們都會要求書寫相關文檔,對每個關鍵文檔的維護提供了狀態監督和預警機制并且本身就可以作為檢查列表或者數據庫。
良好的工作手冊和組織架構可以開發出更加符合用戶的需求。手冊、或者書面規格說明,是一個非常必要的工具,盡管光有文檔是不夠的。手冊是產品的外部規格說明,它描述和規定了用戶所見的每一個細節;同樣的,它也是結構師主要的工作產物。
形式化定義是精確的,它們傾向于更加完整;差異得更加明顯,可以更快地完成。但是形式化定義的缺點是不易理解。記敘性文字則可以顯示結構性的原則,描述階段上或層次上的結構,以及提供例子。它可以很容易地表達異常和強調對比的關系,最重要的是,它可以解釋原因。在表達的精確和簡明性上,目前所提出的形式化定義,具有了令人驚異的效果,增強了我們進行準確表達的信心。
通常,開發一個軟件我們還會設立規模目標,控制規模,發明一些減少規模的方法——
就如同硬件開發人員為減少元器件所做的一樣。規模預算必須與分配的功能相關聯; 在指明模塊大小的同時,確切定義模塊的功能。培養開發人員從系統整體出發、面向用戶的態度是軟件編程管理人員最重要的職能。
調試,是一種檢驗程序中的方法。然而調試是系統編程中很慢和較困難的部分,而漫長的調試周轉時間是調試的禍根。它可以持續一個很長的時間,從而可能影響項目的交付日期。
為了更好的控制進度,我們需要制定一個嚴格的進度表來控制項目的進度表,進度表由里程碑和日期組成。里程碑必須是具體的、特定的、可度量的事件,能進行清晰能定義。進度表有時可以根據進展情況進行適度的修改。
產品測試時每個產品在提交給用戶的一道程序。而這項工作主要由產品測試機構/小組根據規格說明檢查機器和程序,充當麻煩的代言人,查明每一個可能的缺陷和相互矛盾的地方。每個開發機構都需要這樣一個獨立的技術監督部門,來保證其公正性。產品-測試小組則是顧客的代理人,專門尋找缺陷。不時地,細心的產品測試人員總會發現一些沒有貫徹執行、設計決策沒有正確理解或準確實現的地方。出于這方面的原因,設立測試小組是使設計決策得以貫徹執行的必要手段,同樣也是需要盡早著手,與設計同時實施的重要環節。
一個已開發的項目,我們需要對它進行后期維護。其維護基本上不同于硬件的維護,它主要由各種變更組成,如修復設計缺陷、新增功能、或者是使用環境或者配置變換引起的調整而且維護總成本通常是開發成本的40%或更多。維護成本受用戶數目的嚴重影響,用戶越多,所發現的錯誤也越多。在每次修復之后,必須重新運行先前所有的測試用例,從而確保系統不會以更隱蔽的方式被破壞。其實,對于一個項目,我們要盡量做到完美,減少以后的維護困難和成本。
在計算機技術進步的同時,計算機相關學科知識也在飛速發展。興趣太多,令人興奮的學習、研究和思考的機會也太多——多么不可思議的矛盾啊!這個神奇的時代遠遠沒有結束,它依然在飛速發展。更多的樂趣,盡在將來。
第五篇:《人月神話》讀后感
學號:0967020449姓名:張小波班級:軟件工程專升本3班
《人月神話》讀后感
在軟件領域中,很少能有像《人月神話》一樣具有深遠影響力和暢銷不衰的著作。Brooks 博士為人們管理復雜項目提供了最具洞察力的見解,既有很多發人深省的觀點,又有大量軟件工程的實踐,影響著一代又一代….通過閱讀《人月神話》,我從中學到了一些東西:
首先,開發一個項目,我們錯誤的認為用人月這個工作量單位來估計和進行進度安排。成本的確隨開發產品的人數和時間的不同,有著很大的變化,進度卻不是如此。因此我認為用人月作為衡量一項工作的規模是一個危險和帶有欺騙性的神話。它暗示著人員數量和時間是可以相互替換的。人數和時間的互換僅僅適用于以下情況:某個任務可以分解給參與人員,并且他們之間不需要相互的交流,而在系統編程中近乎不可能。當任務由于次序上的限制不能分解時,人手的添加對進度沒有幫助。調試、測試的次序特性,許多軟件都具有這種特征。因為軟件開發本質上是一項系統工作——錯綜復雜關系下的一種實踐——溝通、交流的工作量非常大,它很快會消耗任務分解所節省下來的個人時間。從而,添加更多的人手,實際上是延長了,而不是縮短了時間進度。
對于編程,有其樂趣和苦惱。創建事物的快樂,開發對其他人有用的東西的樂趣,將可以活動、相互嚙合的零部件組裝成類似迷宮的東西,這個過程所體現出令人神魂顛倒的魅力,面對不重復的任務,不間斷學習的樂趣,工作在如此易于駕馭的介質上的樂趣——純粹的思維活動,其存在、移動和運轉方式完全不同于實際物體。將做事方式調整到追求完美,是學習編程的最困難部分;由其他人來設定目標,并且必須依靠自己無法控制的事物(特別是程序);權威不等同于責任實際情況看起來要比這一點好一些;真正的權威來自于每次任務的完成任何創造性活動都伴隨著枯燥艱苦的勞動,編程也不例外 人們通常期望項目在接近結束時,(bug、工作時間)能收斂得快一些,然而軟件項目的情況卻是越接近完成,收斂得越慢產品在即將完成時總面臨著陳舊過時的威脅。
開發一個軟件,我們要有合理的時間進度,開發人員要少而精,概念完整性必須考慮在內,要盡量做到盡早交流和持續溝通。
同時,文檔形成了關鍵的樞紐,每個項目管理的工作都圍繞著它們運轉,它們是經理們的主要個人工具。對于計算機硬件開發項目,關鍵文檔是目標、手冊、進度、預算、組織機構圖、空間分配、以及機器本身的報價、預測和價格;對于大學科系,關鍵文檔類似:目標、課程描述、學位要求、研究報告、課程表和課程的安排、預算、教室分配、教師和研究生助手的分配;對于軟件項目,要求是相同的:目標、用戶手冊、內部文檔、進度、預算、組織機構圖和工作空間分配。即使是一個小型項目,我們都會要求書寫相關文檔,對每個關鍵文檔的維護提供了狀態監督和預警機制并且本身就可以作為檢查列表或者數據庫。
良好的工作手冊和組織架構可以開發出更加符合用戶的需求。手冊、或者書面規格說明,是一個非常必要的工具,盡管光有文檔是不夠的。手冊是產品的外部規格說明,它描述和規
定了用戶所見的每一個細節;同樣的,它也是結構師主要的工作產物。
形式化定義是精確的,它們傾向于更加完整;差異得更加明顯,可以更快地完成。但是形式化定義的缺點是不易理解。記敘性文字則可以顯示結構性的原則,描述階段上或層次上的結構,以及提供例子。它可以很容易地表達異常和強調對比的關系,最重要的是,它可以解釋原因。在表達的精確和簡明性上,目前所提出的形式化定義,具有了令人驚異的效果,增強了我們進行準確表達的信心。
通常,開發一個軟件我們還會設立規模目標,控制規模,發明一些減少規模的方法——就如同硬件開發人員為減少元器件所做的一樣。規模預算必須與分配的功能相關聯; 在指明模塊大小的同時,確切定義模塊的功能。培養開發人員從系統整體出發、面向用戶的態度是軟件編程管理人員最重要的職能。
調試,是一種檢驗程序中的方法。然而調試是系統編程中很慢和較困難的部分,而漫長的調試周轉時間是調試的禍根。它可以持續一個很長的時間,從而可能影響項目的交付日期。
為了更好的控制進度,我們需要制定一個嚴格的進度表來控制項目的進度表,進度表由里程碑和日期組成。里程碑必須是具體的、特定的、可度量的事件,能進行清晰能定義。進度表有時可以根據進展情況進行適度的修改。
產品測試時每個產品在提交給用戶的一道程序。而這項工作主要由產品測試機構/小組根據規格說明檢查機器和程序,充當麻煩的代言人,查明每一個可能的缺陷和相互矛盾的地方。每個開發機構都需要這樣一個獨立的技術監督部門,來保證其公正性。產品-測試小組則是顧客的代理人,專門尋找缺陷。不時地,細心的產品測試人員總會發現一些沒有貫徹執行、設計決策沒有正確理解或準確實現的地方。出于這方面的原因,設立測試小組是使設計決策得以貫徹執行的必要手段,同樣也是需要盡早著手,與設計同時實施的重要環節。
一個已開發的項目,我們需要對它進行后期維護。其維護基本上不同于硬件的維護,它主要由各種變更組成,如修復設計缺陷、新增功能、或者是使用環境或者配置變換引起的調整而且維護總成本通常是開發成本的40%或更多。維護成本受用戶數目的嚴重影響,用戶越多,所發現的錯誤也越多。在每次修復之后,必須重新運行先前所有的測試用例,從而確保系統不會以更隱蔽的方式被破壞。其實,對于一個項目,我們要盡量做到完美,減少以后的維護困難和成本。
在計算機技術進步的同時,計算機相關學科知識也在飛速發展。興趣太多,令人興奮的學習、研究和思考的機會也太多——多么不可思議的矛盾啊!這個神奇的時代遠遠沒有結束,它依然在飛速發展。更多的樂趣,盡在將來。