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

軟件開(kāi)發(fā)演化史:尋找“銀彈”之道

開(kāi)發(fā)
軟件開(kāi)發(fā)演化史即研究管理軟件復(fù)雜度方法的歷史。本文探討了軟件開(kāi)發(fā)史上五種軟件方法論的發(fā)展及應(yīng)用,其中包括面向?qū)ο缶幊毯蜆O限編程。

軟件開(kāi)發(fā)方法的演化史絕對(duì)是一部尋找“銀彈”的歷史,即研究管理軟件復(fù)雜度方法的歷史。我個(gè)人的體會(huì):開(kāi)發(fā)復(fù)雜的軟件系統(tǒng)的確,呃,復(fù)雜,由此帶來(lái)不菲的時(shí)間和金錢(qián)的花費(fèi)。下面我們看一下5種軟件方法論的發(fā)展及應(yīng)用。

軟件方法論之結(jié)構(gòu)化編程(Structured programming)

在結(jié)構(gòu)化編程思想提出之前幾年,我就已經(jīng)開(kāi)始了(始于1973)職業(yè)編程生涯。結(jié)構(gòu)化編程涉及正確使用代碼塊,過(guò)程調(diào)用以及各種循環(huán)結(jié)構(gòu)。還有一條黃金法則:go-to是有害的。

程序結(jié)構(gòu)應(yīng)該清晰、流程控制易于理解,這點(diǎn)在今天看來(lái)是毋庸質(zhì)疑的。同時(shí)我也認(rèn)為,結(jié)構(gòu)化編程的想法已經(jīng)融入后來(lái)所有的編程方法論之中。

軟件方法論之面向?qū)ο缶幊蹋∣bject oriented programming)

面向?qū)ο缶幊?OOP)方法自然也是從結(jié)構(gòu)化編程思想演化而來(lái)。OOP通過(guò)封裝代碼與代碼使用的數(shù)據(jù)來(lái)管理軟件復(fù)雜度。我們習(xí)慣于處理真實(shí)世界的物理對(duì)象,在OOP中,我們可以為真實(shí)世界的對(duì)象建模(如編寫(xiě)模擬程序,這也是OOP概念開(kāi)始提出的地方),并對(duì)非具體概念如進(jìn)程、信息組織方法等建立軟件模型。

程序里“對(duì)象”維護(hù)自己的內(nèi)部狀態(tài),這與結(jié)構(gòu)化編程非常地不同。在結(jié)構(gòu)化編程里面,代碼是以一種結(jié)構(gòu)化的、容易理解的方式組織,全局共享數(shù)據(jù)對(duì)于軟件系統(tǒng)的各個(gè)部分都是可見(jiàn)的,包括那些并不需要訪問(wèn)或修改那些共享數(shù)據(jù)的部分。

軟件方法論之設(shè)計(jì)模式(Design patterns)

睿智的人關(guān)注他們世界的各種模式。學(xué)生時(shí)候,我們可能會(huì)注意班上同學(xué)的良好學(xué)習(xí)習(xí)慣所形成的學(xué)習(xí)模式帶給他們優(yōu)異的成績(jī)。我們學(xué)習(xí)烹飪時(shí),可能注意到有經(jīng)驗(yàn)的廚師做菜的模式,如烹飪前先備料,加調(diào)料的時(shí)候不斷的嘗一下等。

在軟件開(kāi)發(fā)領(lǐng)域,設(shè)計(jì)模式的使用是基于對(duì)某些項(xiàng)目失敗而另外類(lèi)似項(xiàng)目成功的觀察(這些也可能是管理模式,計(jì)劃模式,測(cè)試模式等等)。在軟件設(shè)計(jì)過(guò)程中,模式的使用是基于對(duì)一些通用的設(shè)計(jì)方式在成功項(xiàng)目中的重復(fù)使用的進(jìn)一步研究的結(jié)果。

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

極限編程基于對(duì)客戶需求的快速確認(rèn),快速開(kāi)發(fā)與快速交付使用。極限程序員與客戶交流過(guò)程中使用簡(jiǎn)單的設(shè)計(jì),并以迭代方式優(yōu)先開(kāi)發(fā)軟件最被需要的部分。

極限編程與傳統(tǒng)開(kāi)發(fā)方式背道而馳。傳統(tǒng)開(kāi)發(fā)方式是開(kāi)發(fā)者與客戶花費(fèi)大量時(shí)間來(lái)試圖事先將一切細(xì)節(jié)寫(xiě)入文檔,這種開(kāi)發(fā)方式占用相當(dāng)長(zhǎng)的時(shí)間。有經(jīng)驗(yàn)的開(kāi)發(fā)者知道,階段性的完成編碼對(duì)設(shè)計(jì)流程有正面影響。極限編程尤其適合那些需求復(fù)雜、或需求事先無(wú)法達(dá)成一致的情況。

在學(xué)習(xí)本書(shū)中的UML時(shí)候,我們會(huì)涉及個(gè)人如何使用軟件系統(tǒng)的例子。極限編程有類(lèi)似的概念,叫做"user stories"(這個(gè)詞不知道應(yīng)該如何正確翻譯-by譯者),即客戶提供的他們感覺(jué)軟件系統(tǒng)應(yīng)該如何使用的信息。User stories會(huì)被用來(lái)估計(jì)開(kāi)發(fā)時(shí)間,并幫助建立自動(dòng)測(cè)試用例——用于開(kāi)發(fā)測(cè)試和交付用戶測(cè)試。

極限編程經(jīng)常被描述為——對(duì)于我而言更加容易理解——測(cè)試驅(qū)動(dòng)的編程,在編碼前即編寫(xiě)測(cè)試代碼!然后編寫(xiě)足夠的能通過(guò)測(cè)試的代碼即可。在所有單元測(cè)試通過(guò)之前,軟件代碼不允許改動(dòng)。使用像JUnit 這樣的工具來(lái)編寫(xiě)自動(dòng)測(cè)試。

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

面向切面編程(AOP)后面的主要思想是對(duì)軟件系統(tǒng)不同關(guān)注點(diǎn)的分離,開(kāi)發(fā)者通過(guò)攔截方法調(diào)用并在方法調(diào)用前后添加輔助代碼來(lái)實(shí)現(xiàn)。切面可以在對(duì)象里除了行為之外新定義特定的切面數(shù)據(jù)(aspect-specific data)。原理上,這種哲學(xué)允許系統(tǒng)開(kāi)發(fā)更加模塊化,這種模塊化的實(shí)現(xiàn)通過(guò)程序員不同的關(guān)注點(diǎn)來(lái)驅(qū)動(dòng)。對(duì)于Java程序員,我推薦看一下AspectJ項(xiàng)目(eclipse.org/aspectj). 下面是從AspectJ站點(diǎn)引用的:

”AspectJ 通過(guò)對(duì)以下關(guān)注點(diǎn)的橫切達(dá)到簡(jiǎn)潔的模塊化:錯(cuò)誤檢測(cè)和處理,同步,對(duì)上下文敏感的行為,性能優(yōu)化,監(jiān)控及日志,調(diào)試支持,多對(duì)象協(xié)議”

無(wú)論是免費(fèi)的Eclipse還是商業(yè)的IntelliJ Java IDE都支持AspectJ. AspectJ 是Java語(yǔ)言的擴(kuò)展,需要預(yù)處理。我在為開(kāi)源web框架Jaffa做收費(fèi)咨詢(xún)的時(shí)候用過(guò)Java的切面。在使用動(dòng)態(tài)語(yǔ)言像Ruby和Lisp時(shí),切面更加有用。Ruby和Common Lisp允許在任何源文件為一個(gè)類(lèi)增加方法,這種優(yōu)勢(shì)意味著特殊的目的以及特定應(yīng)用的對(duì)庫(kù)的擴(kuò)展可以與庫(kù)的源代碼相分離。

一個(gè)簡(jiǎn)單的使用切面的例子如下:你有一個(gè)類(lèi)庫(kù)來(lái)處理收發(fā)郵件,然后來(lái)了一個(gè)商業(yè)方面的需求,按收信人和發(fā)信人分類(lèi),記錄郵件的數(shù)目和大小。分離的切面就能讓你通過(guò)代碼注入的方式來(lái)實(shí)現(xiàn)對(duì)郵件的監(jiān)測(cè),而不需要改變?cè)?lèi)庫(kù)的代碼。這會(huì)讓類(lèi)庫(kù)作者更加容易地維護(hù)他們的代碼,不用增加對(duì)郵件監(jiān)測(cè)的代碼。

本文來(lái)自metaphy的博客:《軟件設(shè)計(jì)和開(kāi)發(fā)的簡(jiǎn)史》

【編輯推薦】

  1. C#歷史回顧及C# 4.0新特性一覽
  2. .NET正則表達(dá)式的歷史
  3. J2SE歷史回顧:JDK 1.1時(shí)代開(kāi)始
  4. EJB技術(shù)的歷史
  5. Java歷史回顧:開(kāi)發(fā)人員十大問(wèn)答
責(zé)任編輯:yangsai 來(lái)源: metaphy的博客
相關(guān)推薦

2018-08-03 16:00:09

人工智能神經(jīng)網(wǎng)絡(luò)高級(jí)算法

2021-01-18 12:31:46

物聯(lián)網(wǎng)

2023-08-07 18:45:30

電商訂單訂單類(lèi)型批量發(fā)貨

2009-07-01 10:11:04

.NETLINQ

2023-07-05 09:37:49

AI人工智能

2020-06-30 18:04:41

RPA應(yīng)用

2012-07-06 11:03:15

Intel等燈等燈

2019-10-21 13:03:04

編程語(yǔ)言PythonJava

2009-05-25 15:00:20

2019-10-09 16:14:30

Web服務(wù)器Tomcat

2021-09-06 14:37:19

軟件開(kāi)發(fā) 技術(shù)

2020-06-24 11:21:47

軟件開(kāi)發(fā)面試

2017-03-17 08:15:17

敏捷軟件開(kāi)發(fā)軟件開(kāi)發(fā)

2024-11-07 12:14:36

2012-06-18 09:34:14

2010-09-04 15:27:31

多平臺(tái)移動(dòng)開(kāi)發(fā)黃洋成尚郵

2023-10-31 00:49:20

對(duì)話式軟件開(kāi)發(fā)

2009-02-10 17:11:53

SaaSSaaS開(kāi)發(fā)PaaS

2015-03-02 09:35:07

軟件開(kāi)發(fā)

2016-12-14 13:51:56

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 天天色天天| 精品视频在线一区 | 欧美激情亚洲天堂 | 国产精品一二区 | 亚洲国产精品一区 | 国产高清视频 | 久久另类视频 | 亚洲毛片 | 精品网站999| 午夜免费福利影院 | 玖玖玖在线观看 | 美女黄网 | 国产一级一片免费播放 | 91精品国模一区二区三区 | 欧美精品一区二区三区在线播放 | 北条麻妃av一区二区三区 | 亚洲国产精品一区二区三区 | 欧美日韩亚洲视频 | 成人精品国产免费网站 | 视频一区二区中文字幕 | 91色综合 | 国产一区二区在线91 | av不卡一区 | 亚洲精品一区二区三区四区高清 | 夜夜操天天干 | 国产精品爱久久久久久久 | 久热m3u8 | 中文字幕在线欧美 | 99精品视频免费观看 | 色伊人久久 | 国产免费自拍 | 久草院线 | 看毛片的网站 | 亚洲入口| 国产情侣啪啪 | 特黄小视频 | 国产免费一二三区 | 国产精品国产成人国产三级 | 亚洲免费一区二区 | 精品1区2区 | 久久99精品久久久久久国产越南 |