成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

軟件開發演化史:尋找“銀彈”之道

開發
軟件開發演化史即研究管理軟件復雜度方法的歷史。本文探討了軟件開發史上五種軟件方法論的發展及應用,其中包括面向對象編程和極限編程。

軟件開發方法的演化史絕對是一部尋找“銀彈”的歷史,即研究管理軟件復雜度方法的歷史。我個人的體會:開發復雜的軟件系統的確,呃,復雜,由此帶來不菲的時間和金錢的花費。下面我們看一下5種軟件方法論的發展及應用。

軟件方法論之結構化編程(Structured programming)

在結構化編程思想提出之前幾年,我就已經開始了(始于1973)職業編程生涯。結構化編程涉及正確使用代碼塊,過程調用以及各種循環結構。還有一條黃金法則:go-to是有害的。

程序結構應該清晰、流程控制易于理解,這點在今天看來是毋庸質疑的。同時我也認為,結構化編程的想法已經融入后來所有的編程方法論之中。

軟件方法論之面向對象編程(Object oriented programming)

面向對象編程(OOP)方法自然也是從結構化編程思想演化而來。OOP通過封裝代碼與代碼使用的數據來管理軟件復雜度。我們習慣于處理真實世界的物理對象,在OOP中,我們可以為真實世界的對象建模(如編寫模擬程序,這也是OOP概念開始提出的地方),并對非具體概念如進程、信息組織方法等建立軟件模型。

程序里“對象”維護自己的內部狀態,這與結構化編程非常地不同。在結構化編程里面,代碼是以一種結構化的、容易理解的方式組織,全局共享數據對于軟件系統的各個部分都是可見的,包括那些并不需要訪問或修改那些共享數據的部分。

軟件方法論之設計模式(Design patterns)

睿智的人關注他們世界的各種模式。學生時候,我們可能會注意班上同學的良好學習習慣所形成的學習模式帶給他們優異的成績。我們學習烹飪時,可能注意到有經驗的廚師做菜的模式,如烹飪前先備料,加調料的時候不斷的嘗一下等。

在軟件開發領域,設計模式的使用是基于對某些項目失敗而另外類似項目成功的觀察(這些也可能是管理模式,計劃模式,測試模式等等)。在軟件設計過程中,模式的使用是基于對一些通用的設計方式在成功項目中的重復使用的進一步研究的結果。

軟件方法論之極限編程(Extreme programming)

極限編程基于對客戶需求的快速確認,快速開發與快速交付使用。極限程序員與客戶交流過程中使用簡單的設計,并以迭代方式優先開發軟件最被需要的部分。

極限編程與傳統開發方式背道而馳。傳統開發方式是開發者與客戶花費大量時間來試圖事先將一切細節寫入文檔,這種開發方式占用相當長的時間。有經驗的開發者知道,階段性的完成編碼對設計流程有正面影響。極限編程尤其適合那些需求復雜、或需求事先無法達成一致的情況。

在學習本書中的UML時候,我們會涉及個人如何使用軟件系統的例子。極限編程有類似的概念,叫做"user stories"(這個詞不知道應該如何正確翻譯-by譯者),即客戶提供的他們感覺軟件系統應該如何使用的信息。User stories會被用來估計開發時間,并幫助建立自動測試用例——用于開發測試和交付用戶測試。

極限編程經常被描述為——對于我而言更加容易理解——測試驅動的編程,在編碼前即編寫測試代碼!然后編寫足夠的能通過測試的代碼即可。在所有單元測試通過之前,軟件代碼不允許改動。使用像JUnit 這樣的工具來編寫自動測試。

軟件方法論之面向切面編程(Aspect oriented programming)

面向切面編程(AOP)后面的主要思想是對軟件系統不同關注點的分離,開發者通過攔截方法調用并在方法調用前后添加輔助代碼來實現。切面可以在對象里除了行為之外新定義特定的切面數據(aspect-specific data)。原理上,這種哲學允許系統開發更加模塊化,這種模塊化的實現通過程序員不同的關注點來驅動。對于Java程序員,我推薦看一下AspectJ項目(eclipse.org/aspectj). 下面是從AspectJ站點引用的:

”AspectJ 通過對以下關注點的橫切達到簡潔的模塊化:錯誤檢測和處理,同步,對上下文敏感的行為,性能優化,監控及日志,調試支持,多對象協議”

無論是免費的Eclipse還是商業的IntelliJ Java IDE都支持AspectJ. AspectJ 是Java語言的擴展,需要預處理。我在為開源web框架Jaffa做收費咨詢的時候用過Java的切面。在使用動態語言像Ruby和Lisp時,切面更加有用。Ruby和Common Lisp允許在任何源文件為一個類增加方法,這種優勢意味著特殊的目的以及特定應用的對庫的擴展可以與庫的源代碼相分離。

一個簡單的使用切面的例子如下:你有一個類庫來處理收發郵件,然后來了一個商業方面的需求,按收信人和發信人分類,記錄郵件的數目和大小。分離的切面就能讓你通過代碼注入的方式來實現對郵件的監測,而不需要改變原類庫的代碼。這會讓類庫作者更加容易地維護他們的代碼,不用增加對郵件監測的代碼。

本文來自metaphy的博客:《軟件設計和開發的簡史》

【編輯推薦】

  1. C#歷史回顧及C# 4.0新特性一覽
  2. .NET正則表達式的歷史
  3. J2SE歷史回顧:JDK 1.1時代開始
  4. EJB技術的歷史
  5. Java歷史回顧:開發人員十大問答
責任編輯:yangsai 來源: metaphy的博客
相關推薦

2018-08-03 16:00:09

人工智能神經網絡高級算法

2023-08-07 18:45:30

電商訂單訂單類型批量發貨

2021-01-18 12:31:46

物聯網

2009-07-01 10:11:04

.NETLINQ

2023-07-05 09:37:49

AI人工智能

2020-06-30 18:04:41

RPA應用

2012-07-06 11:03:15

Intel等燈等燈

2019-10-21 13:03:04

編程語言PythonJava

2009-05-25 15:00:20

2019-10-09 16:14:30

Web服務器Tomcat

2021-09-06 14:37:19

軟件開發 技術

2010-09-04 15:27:31

多平臺移動開發黃洋成尚郵

2020-06-24 11:21:47

軟件開發面試

2024-11-07 12:14:36

2012-06-18 09:34:14

2017-03-17 08:15:17

敏捷軟件開發軟件開發

2020-12-03 15:54:15

軟件開發工具

2023-10-31 00:49:20

對話式軟件開發

2009-02-10 17:11:53

SaaSSaaS開發PaaS

2015-03-02 09:35:07

軟件開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩免费福利视频 | 精品国产伦一区二区三区观看体验 | 波多野结衣电影一区 | 色播视频在线观看 | 成人视屏在线观看 | 亚洲电影一区二区三区 | 国产在线精品一区二区三区 | 91麻豆蜜桃一区二区三区 | 日韩精品一区二区三区中文在线 | 国产一区二区视频免费在线观看 | 亚洲精品一区二区三区在线观看 | 97碰碰碰| 四虎精品在线 | 欧美日韩大片 | 久久精品久久精品 | 中文在线a在线 | 国产一区二区三区四区在线观看 | 在线看av网址| 精品一级 | 精品一区二区久久久久久久网精 | 中文字幕在线观看www | 在线观看中文字幕 | 国产日韩欧美一区二区 | 国产精品久久久久久久久久三级 | 91在线视频观看 | 97热在线| 三级视频在线观看 | 成人国产精品久久 | 欧美一区二区三区 | 午夜私人影院在线观看 | 国产一级特黄视频 | 男人的天堂在线视频 | 午夜天堂精品久久久久 | 亚洲视频手机在线 | 免费视频一区二区 | 国产精品视频观看 | 欧美精品在线播放 | 色综合一区二区三区 | 欧美乱大交xxxxx另类电影 | 亚洲精品国产电影 | 国产激情一区二区三区 |