谈谈软件工程设计的艺术
生活随笔
收集整理的這篇文章主要介紹了
谈谈软件工程设计的艺术
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
談談軟件工程設計的藝術
如果生活的方式與你背道而馳,
如果正確的行為被你視而不見,
毀滅就會降臨,難得保全。
馬基雅維利, 約1514年
作為最重要的事情之一,如果不是唯一最重要的,一個系統的核心性質是它必須在
其生命周期內保持一種 穩定的 結構。
艾瓦耳。雅可布森
以上的兩段話,一是引自一位文藝復興時期的實用主義政治學家,另一是引自一位
當代設計大師。這兩段話很好的反映了軟件設計工程所面臨的困境,兩個相反方向
的作用力,就象陰陽相生相克:一方面,軟件設計需要盡一切可能減少開發時間,
使軟件盡快面市,同時也對市場的和客戶需求的變化作出 迅速的反應;而另一方面,
我們又必須花費足夠的時間以保證軟件的設計有一個好的架構,這樣我們可以降低
軟件的維護費用,而且軟件可以有較長的生命期。
軟件設計過分強調任何一個方面都會造成軟件工程投資的極大浪費甚至失敗。過分
強調軟件開發的速度,而忽視軟件架構的設計是那些對軟件開發工程缺乏經驗者最
容易犯的錯誤。糟糕的軟件架構設計會導致所謂的1.0版現象,即軟件只能開發到第
一版。后續開發往往因為修改原有代碼過於困難而夭折。因為設計者缺乏長遠的目
光和足夠的項目開發經驗而導致過於急躁的作出架構上的決策,因而導致軟件結構
的支離破碎是很可悲的,往往很多好的軟件設計創意就這樣胎死腹中。
另一個極端同樣會導致災難,因為如果過於強調軟件結構的優雅和可擴展性,導致
過多的開發時間放在軟件架構設計上,結果使 軟件的開發時間過長,等到軟件推向
市場的時候,雖然設計上是完美的,但是競爭對手卻早已占據了市場。軟件設計的
完美主義者容易犯這樣的錯誤。這種人通常是設計方面的
行家里手,而且對軟件結構的完美有著不懈的追求。但是正是過於追求完美才是工
程開發方面的大忌。不是每一個軟件的設計都有時間和精力(同時也是財力)做到象
STL那樣的完美設計。
通常一個好的軟件設計會努力在這兩個互斥的極端之間達到一種平衡。就象儒家講
的中庸。這兩個極端之間的張力是隨著軟件開發的領域,環境,條件,時間,客戶
的要求,競爭對手現有的水平,等等變化而變化的。就象水形之常變。但是若能領
會其中的道,能夠把握其中的藝術,就能夠象庖丁解牛一樣“以無厚而入有間”,
游刃而有余了。但是關鍵在於經驗的積累和對平衡的領悟。經驗可以很大一部分從
前人那里得來,但是對道的把握卻是另一度的思維空間了。 所以說軟件工程既是科
學又是藝術。但是值得注意的是,這絕對不應當成為忽視軟件工程規范的借口,就
象楊振寧可以談論科學研究的藝術并不表示柯云路之流的所謂“生命科學”就不是
純粹的胡扯。
設計一個容易維護并且有很強生命力的軟件不是一件很容易的事;設計一個能夠很
快實現的軟件也不是小菜一碟。平衡這兩者來給出一個可行的,健壯的設計,使軟
件能夠在市場上獲得成功并生存下去是一件需要奇跡般力量的事業, 然而我們卻必
須在普通的工作中用我們的創造力去完成這個奇跡。
如果生活的方式與你背道而馳,
如果正確的行為被你視而不見,
毀滅就會降臨,難得保全。
馬基雅維利, 約1514年
作為最重要的事情之一,如果不是唯一最重要的,一個系統的核心性質是它必須在
其生命周期內保持一種 穩定的 結構。
艾瓦耳。雅可布森
以上的兩段話,一是引自一位文藝復興時期的實用主義政治學家,另一是引自一位
當代設計大師。這兩段話很好的反映了軟件設計工程所面臨的困境,兩個相反方向
的作用力,就象陰陽相生相克:一方面,軟件設計需要盡一切可能減少開發時間,
使軟件盡快面市,同時也對市場的和客戶需求的變化作出 迅速的反應;而另一方面,
我們又必須花費足夠的時間以保證軟件的設計有一個好的架構,這樣我們可以降低
軟件的維護費用,而且軟件可以有較長的生命期。
軟件設計過分強調任何一個方面都會造成軟件工程投資的極大浪費甚至失敗。過分
強調軟件開發的速度,而忽視軟件架構的設計是那些對軟件開發工程缺乏經驗者最
容易犯的錯誤。糟糕的軟件架構設計會導致所謂的1.0版現象,即軟件只能開發到第
一版。后續開發往往因為修改原有代碼過於困難而夭折。因為設計者缺乏長遠的目
光和足夠的項目開發經驗而導致過於急躁的作出架構上的決策,因而導致軟件結構
的支離破碎是很可悲的,往往很多好的軟件設計創意就這樣胎死腹中。
另一個極端同樣會導致災難,因為如果過於強調軟件結構的優雅和可擴展性,導致
過多的開發時間放在軟件架構設計上,結果使 軟件的開發時間過長,等到軟件推向
市場的時候,雖然設計上是完美的,但是競爭對手卻早已占據了市場。軟件設計的
完美主義者容易犯這樣的錯誤。這種人通常是設計方面的
行家里手,而且對軟件結構的完美有著不懈的追求。但是正是過於追求完美才是工
程開發方面的大忌。不是每一個軟件的設計都有時間和精力(同時也是財力)做到象
STL那樣的完美設計。
通常一個好的軟件設計會努力在這兩個互斥的極端之間達到一種平衡。就象儒家講
的中庸。這兩個極端之間的張力是隨著軟件開發的領域,環境,條件,時間,客戶
的要求,競爭對手現有的水平,等等變化而變化的。就象水形之常變。但是若能領
會其中的道,能夠把握其中的藝術,就能夠象庖丁解牛一樣“以無厚而入有間”,
游刃而有余了。但是關鍵在於經驗的積累和對平衡的領悟。經驗可以很大一部分從
前人那里得來,但是對道的把握卻是另一度的思維空間了。 所以說軟件工程既是科
學又是藝術。但是值得注意的是,這絕對不應當成為忽視軟件工程規范的借口,就
象楊振寧可以談論科學研究的藝術并不表示柯云路之流的所謂“生命科學”就不是
純粹的胡扯。
設計一個容易維護并且有很強生命力的軟件不是一件很容易的事;設計一個能夠很
快實現的軟件也不是小菜一碟。平衡這兩者來給出一個可行的,健壯的設計,使軟
件能夠在市場上獲得成功并生存下去是一件需要奇跡般力量的事業, 然而我們卻必
須在普通的工作中用我們的創造力去完成這個奇跡。
總結
以上是生活随笔為你收集整理的谈谈软件工程设计的艺术的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3DSlicer29:Debug or
- 下一篇: 3DSlicer30:VS-Qt5VSa