• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    軟件開發的哲學思考

    發布: 2008-9-19 09:27 | 作者: 不詳 | 來源: 測試時代采編 | 查看: 23次 | 進入軟件測試論壇討論

    領測軟件測試網
    關鍵字:軟件開發 哲學思考

    譯者注:這篇文章雖然年代久遠(1996年寫的,對于IT行業來說用‘久遠’二字應該說還是十分合適的),但讀過之后還是為作者的才華所傾倒,這是不可多見的一篇文章。

    卡內基-梅隆軟件開發學院及其它學院的研究人員用盡畢生的精力去定義一個理論學科(即軟件開發理論),到后來才發現仍有很多東西比較模糊,他們對此也不隱瞞。軟件開發,自從產生以來,它以迷人的風采征服了許許多多有才華的人,一些教授、專家學者及商業管理人士不由提出這樣一個問題:即然軟件能迷住這么多人,為什么人類無法定義它、解釋它,深刻地了解它?為什么一些天才的科學家窮其一生的精力也不能把這些迷惑歸納成一種科學工程學科或行業標準?

    我們當中的大部分人,特別是商人、工程師及學術機構研究人員把計算機與軟件看成一個非常普通的東西,他們用各種荒唐的方式同計算機交流,計算機對來自用戶的威脅與譴責充耳不聞。軟件無處不在,然而軟件卻常常表現為失敗、罷工及不正常,這主要有兩方面原因:一是程序失敗,就會導致文件定義不準確,最后軟件表現為罷工、不正常;二是一些軟件開發主管胡亂指揮,逼迫軟件應用一些華而不實的技巧來實現主管們不切實際的想法及美妙的空想。

    緩慢的軟件開發與互聯網訪問占用了人們大部分時間,尤為重要的是,這兩方面在當代都容易使人上癮。一旦上癮,正常的人也會成為文件處理、文件上載及下載的奴隸,這種情況大都要歸結為管理它的軟件具有一定的缺點。這時不得不讓人疑惑:我們能蓋摩天大樓、能造速度很快的賽車及高性能電子產品,我們甚至能理解量子力學及亞原子,那為什么我們不能開發出高質量的軟件?


    【神秘背后的真相】

    軟件開發的本質就是基于人類思考的一種心智活動,計算機及運行其上的軟件就是人類大腦活動的一面鏡子,因此軟件開發同樣也面臨心理學與精神學所固有的一些問題。眾所周知,心理學的所有目的不外乎去了解人類難以捉摸的靈魂,一些醫學專業人員研究這方面。軟件開發與之相比,情況可能會更糟糕,因為軟件開發畢竟只是人類智力活動的一個模型,它來自于人類的智力思考。不管你承不承認,智力活動只是靈魂行為的一部分。

    從相當多的方面來看,軟件與心理學的關系要比工程學、技術及數學的與心理學的關系要近的多,這是因為軟件直接來自于人類靈魂的思索,上等的軟件常常要借助于靈魂的創造性。與藝術相比,軟件缺少了藝術之美;與自然科學相比,它缺少一點正規性。此外,軟件永久只能是軟件開發人員的心理模仿。

    軟件折射出軟件開發者心理活動,很多因素都會對此心理活動起作用如:開發者本人、開發環境以及系統。開發者本人是指開發者本人在開發軟件過程中會有一些心理活動;開發環境是指所有的計算機硬件、計算機軟件及開發軟件的流程;系統包括所有人、全部開發環境、零部件、組織關系以及有助于達到目的的其它事物。

    軟件如人一樣易變靈活,它受智慧、想像力、恐懼以及希望等諸多情緒的影響。它折射出開發者的觀點、對目標的理解、對客戶的感情、概念的敏銳性、高深的思想、權威的尊敬等等。如果你想用計算機制造一個比較好的產品,軟件開發是核心,它代表著整個系統的精髓之所在。到底是什么賦予軟件產品獨有的格調與感覺,按照人類的觀點來說:是個性。


    【毫無生氣的個性】

    軟件有個性嗎?如果你問我這個問題,我會脫口而出:當然有了。因為軟件開發完工時,將會形成一套用于交流、內部分析邏輯、視音頻支持及內存的一套詞匯。從當代技術的觀點來看,這些資源在理論上是沒有限制的。問題出現在什么地方?問題就出現在由其開發者所規定的亂七八糟的規定上。軟件開發人員,剛開始不受它人影響,后來隨著規模的擴大加入了外來一些計算機高手,以及一個瞎指揮的部門負責人,這一切都會打亂開發人員的工作。

    首先我們要指出的是詞匯是必須的,不管是用于外部交流還是用于內部交流,詞匯是構成思考模塊的基石,如果一個人沒有詞匯他將無法思考,人類之所以能同冷冰冰的機器交流也在于詞匯的存在。計算機能很輕易地被教會對某些詞匯做出反應,它的能力是無限的。但又是什么地方出了問題?首先,雖然計算機具有能理解無限詞匯的潛能,但它的人類主人通常情況下是有限制的,所以人類認為任何事情都要盡可能簡單短小,這竟味著性能很高的計算機也必須委屈一下向能力不大的人類看齊;另外,如果軟件擁有很大的詞匯量,則它肯定會變得很大、很復雜,難于理解、開發與維護。所以雖然計算機有無限的能耐,但是也要套上開發者為其準備的金箍咒。

    【創作者與創造性】

    陶工就是陶罐的主人,陶罐永遠不會超過陶工的能力。這個事實也適用于計算機與軟件開發者的關系上,程序員永遠也不可能讓計算機做出超過它自己想像力的事。當然這樣說并不意味著程序員不能做一些超過人性化計算機能做的事,而是指如果他自己想像不到,他也不可能讓計算機來做。當然,同樣的道理也適用于錯誤,程序員一個微小的錯誤(譯者注:程序員一般情況下是不會想到錯誤存在何處,認識到了,就會改正過來,錯誤就沒了。這就是說錯誤是超出程序員的想像之外的),就會讓計算機做出讓我們人類無法理解的事。

    系統級程序員面臨著很大的挑戰,借助于計算機他就與神仙無異。他能做出他能想到的任何事情,計算機乖乖地聽他的指揮,聽從他發出的任何命令。他能夠隨心所欲地把他的天才、他的不為多數人所知的思想、在虛擬世界中漫游的心靈氣通過他的創造性表現出來。在某一時刻,他的人性極限會再一次被突破,達到新的境界、新的高度。

    盡管程序員能力很大,他的技術逐漸超過他的智力,但是不久以后,他就會發現他必須要找一份工作來養活自己。想到自己無法憑空捏造生活用品,他必須向那些能給他提供衣食住行的人低頭,端人的碗就要屬于人管,于是只好聽從于別人的需求、所選取的顏色、別人的構思,他能做的只是按別人的要求按時出貨。程序員雖然有天馬行空的本事,他的生活很快就要埋沒于如體力工人一樣的日,嵥橹。一個杰出的天才屈從于生活的壓力,把他的創造力給一個老板或一個反復無常的顧客,屈尊做一些維護的苦差事,或者作為一個配置控制的奴隸,這一切究竟為什么?程序員為什么允許別人控制他的生活?


    【商業循環】

    公司決定做某些軟件之后,程序員所做的工作就是讓軟件跳起來唱起來,測試員所做的工作就是盡力找出軟件的錯誤,然后顧客就來買軟件,特別是顧客喜歡購買的軟件。但是誰告訴顧客在該買什么?顧客的購買行為受反復無常的心情驅使,他購買他所想要的東西,他所需要、或者需要的東西。誰也不知道這一切驅動這一切的動力是什么?但是商業循環就像一個陀螺一樣在那兒不停地轉:
    開發→測試→交付使用→淘汰
    在現實世界所有產品中,軟件看起來具有最大的靈活性。它可以隨著程序員的好惡、客戶的要求、老板的指示以及臭蟲的影響或長或短;它可以被擴充、被升級甚至形成循環;它的壽命可能會長達數年,也可能會短則一瞬。軟件開發的周期就掌握在設計者手中,可長可短可大可廣,它也有可以增加功能、被升級,甚至螺旋式上升。怎么會這么亂?

    主要是靈活性導致如此混亂的情況,你想想在軟件中有如此多的變量、如此多的判斷點以及多得無限制的選項。如人類的思維一樣,軟件也必須有一個操作系統來支撐,操作系統時刻運行,一點也不能停息,忙著存儲、進行邏輯運算、聲音視頻處理與其它部件的通信;且有些任務瞬間就可完成,但是操作系統也要過問,很快系統感到很雜亂,干脆罷工。要知道計算機與人類一樣都不喜歡雜亂。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: 軟件開發 思考 哲學

    21/212>

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>