• <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-28 09:48 | 作者: sfcyyc | 來源: 測試時代采編 | 查看: 34次 | 進入軟件測試論壇討論

    領測軟件測試網

    經常遇到做軟件設計的朋友抱怨用戶的需求老是變化,自己不斷的修改自己的設計,結構搞得自己疲憊不堪,而且軟件的應用效果也不理想。其實類似的問題每個人都會遇到,關鍵是我們應該如何對待,如果我們總是不斷的修改代碼以適應用戶的要求,這時候我們應該考慮軟件是否具備足夠的讓軟件開發人員自己比較舒適的適應能力,如果不具備這種能力,則改進設計,甚至具備足夠的適應能力,否則,軟件設計真的就成了苦差事。

        軟件設計師不應該害怕需求的變化,更不應該為需求的變化而煩惱,任何需求的變化都可能蘊藏著巨大的機會,這種機會就是創新,這種創新就是未來的市場機遇,就是企業的進步的推動力。創新源于需求的不斷變化。這是多年來從事軟件開發工作的一點非常深刻的體會,這種變化包括各個方面的,可能是硬件的變化,可能是操作系統的變化,可能是用戶群的變統統可以歸結為用戶需求的變化。我們的軟件產品就是在需求不斷的變化之中發展的。

        如果我們為用戶編寫了一個軟件,不管具體實現的功能如何,只要上述的幾種變化出現,我們都不得不不對軟件的設計進行調整,有時可能需要對系統的整體框架進行調,甚至重寫部分或全部的源代碼。剛開始學習編程的時,總是希望一條語句表達盡可能多的含義,夢想一個算法解決所有的問題,一個程序滿足所有用戶的要求,但這是不可能的,因為我們周圍的世界處于不斷的變化之中,今天你寫的程序完全滿足用戶要求,一段時間之后,用戶的系統升級了,你的程序在新的系統上運行就會產生錯誤,所以你必須更新程序以適應這種變化。這種變化還包括機器主板的變化引起硬件的沖突,某種型號板卡的停產或改型,用戶特別指定的硬件設備等等。另外,我們的頭腦不可能聰明到完全可以預覽未來發生的事情,所有很難設計一個一勞永逸的軟件,另外市場的選擇,競爭對手的壓力,也逼著我們不斷的修改設計。

        需求的變化是一個客觀存在的事實,軟件設計人員必須正確的面對這樣的事實,不要指望你辛辛苦苦編寫了一年的代碼之后,你就可以高枕無憂,盡管你對軟件的架構、算法處理的非常好,甚至可以說是完美,然而所有的你所津津樂道的那些完美的設計,都是相對的,當用戶 的需求開始發生變化的時候,他們可能提出要增加一個新的功能,那么你很可能要改進設計。 除非你設計的東西沒有人使用,否則對設計的更改總是不可避免的。

        2000年底的時候,我的第一個商品化軟件完成,盡管我不覺得多么好,但是在同其他廠商的競爭中贏得了用戶的青睞,聽到從市場上反饋的信息,我當時的感覺非常好,然而,很快我不得不修改我的代碼,除了程序中存在的一些BUG之外,在用戶群不到增加的情況下,用戶的要求開始發生變化了,例如:A用戶希望整個界面的字體采用楷體比較好,B用戶50多歲的人比較多,希望字體能夠大一些,可以看得清楚,C用戶希望界面上的“醫生”改為“醫師”,D用戶希望界面上的字段數量少一些,等等諸如此類的。關鍵是有些用戶的需求是存在沖突 的,如果程序滿足了張三的要求,而張三所要求的東西恰恰是李四要極力避免的,所以對于使用VB時間不長,經驗不多的我來說,只能靠保留多個版本來解決這樣的問題,我為每個用戶保留一個備份,這樣每個用戶的要求都可以滿足了,但是后期的代碼的維護幾乎讓我陷入絕望的境地,試想一下,一個存在問題的函數,需要你在10個甚至更多的版本上同時修改,是一種什么樣的感覺,而且每個版本的程序都多少有點區別,任何一次修改,你都必須小心翼翼,一不留神就會產生一個新的BUG,這種更改讓人精神緊張;蛟S,我應該使用VSS之類的工具管理代碼,但是我當時根本不知道世界上有這樣的一種工具。所以在萬般無奈之下,我必須想辦法拯救自己,可不能陷入到需求變化和版本層出不窮的深淵,于是我開始構思下一版的軟件,這個軟必須能夠解決現有版本的程序所面臨的一切問題,同時可以支持網絡版的功能。

        在2002年,與后來的兩個同時鼎力合作,終于在11月份完成的這個新版本的程序,整個程序界面上的控件都是在程序啟動時動態創建,可以直接編輯,編輯完成之后將界面信息保存到數據庫中,下次啟動應用程序時再從數據庫中動態加載界面,界面上的字體,顏色,甚至整個界面的風格都可以由用戶自己選擇。當這個軟件第一次推出的時候,用戶也比較喜歡,很多設計非常新穎。直到今天,這個版本的程序還在不斷的完善,但是程序的樣子與2002年11月相比,已經大不相同了,現在的程序更加美觀,看起來更加專業,使用更為方便,也更穩定。但是這個程序比較龐大,因為它要同時支持Access和SQL Server數據庫。這個程序也就成了我們的產品由單機版向網絡版過度的一個橋梁。這就是我們的第三版軟件。

        可以說第三版軟件徹底解決了第二版軟件面臨的問題,但是在網絡方面遇到了挑戰,那就是所有的網絡版軟件都面臨的問題:流程的變更和業務規則的變更。第三版的設計初衷就是為了解決第二版遇到的問題,不過為了節約工作量,同時兼顧了網絡版的功能,這就導致了第三版代碼比較多,其中經常出現是單擊版還是網絡版的判斷。對于網絡版的用戶需求的適應能力,第三版顯得有點吃力了,我們不得不在程序中專門為某個用戶增加一些特殊的處理,當網絡版的用戶快接近10家的時候,我們的噩夢又開始了,當然比第二版要樂觀一點,因為VC中可以使用預編譯條件解決了不少的問題,例如一個對話框資源可以根據不同的條件顯示不同的外觀等等。由于針對多家用戶添加的那些if else實在是太多了,修改一個地方,一不小心就會影響其他的功能。當然這也與第三版程序結構的設計不太合理有關系,因為這個版本的程序我依然是在現蒸現賣,賣到2005年底的時候,我對于VC才有了點感覺,什么是面向對象的設計,什么是設計模式,系統架構等等的概念開始接觸和學習。

        在2003年非典剛剛開始的時候,我們的第一個網絡版用戶開始裝機,從那時起第三版軟件開始了網絡版的考驗,從第三個網絡用戶開始我就不得不規劃第四版軟件了,這個新版本的軟件必須同時解決第二版和第三版所遇到的所有問題,同時可以非常方便的解決流程的變更和業務規則的變更問題。2004年2月,我正式開始設計第四版軟件,這個軟件可以設計界面,設計流程,增加和編輯業務規則,而且支持腳本和二次開發,到2005年11月,我們的BUG管理器通過第四版軟件配置完成了,現在用得很好,到元旦前,估計我們得計劃管理器也可以配置出來。這個版本的軟件就像一個平臺,可以搭建起幾乎所有的數據庫管理軟件實現的功能,從而開發人員可以自如的面對用戶需求 的變化。當然,并不是所有的需求都可以在不改變程序代碼的情況下實現,但是相對于第三版軟件,新版本的軟件已經很優秀了,至少我們不需要為了實現每個用戶的要求而修改程序的代碼。另外,同第三版軟件相比,該版軟件的系統架構好多了,盡可能采用面向對象的設計,關于設計模式的很多規則也應用了不少。

        軟件設計師就是為了解決麻煩而存在的,既要解決用戶的麻煩,也要解決自己的麻煩,在這樣的過程中不斷的進步。抱著這樣的一種心態,我們可以從容面對用戶需求的變化,如果我們設計的軟件不能夠做到隨需應變,那么很可能軟件的結構和設計上遇到了問題,我們必須考慮如何改進設計以適應這種變化,如果你絞盡腦汁之后發現修改代碼將會把一切搞得更糟,那么我們應該考慮是否重新設計一個新的產品。

    延伸閱讀

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

    TAG: 機會 需求


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