• <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-18 10:27 | 作者: 不詳 | 來源: 測試時代采編 | 查看: 16次 | 進入軟件測試論壇討論

    領測軟件測試網
    關鍵字:工程實踐 系統開發

    非常高興有這樣一個機會和大家交流軟件開發。我應該算是典型的計算機科班出身,從本科、碩士到在英國讀博士,都是計算機科學。而從1993年讀完博士之后到現在,干的工作則主要是實際的應用軟件系統開發。我曾參加設計開發的主要系統有:動物基因圖譜信息系統,虛擬主機,貨運招標系統,證券分析數據系統,人壽保險查詢系統。這些項目的時間有長有短(從幾個月到幾年),項目組人員有多有少(從幾人到幾十人),開發的系統有些是從無到有建立的,有些是在“半成品”上繼續開發的。我今天主要是從自己的實踐經驗出發,結合目前行業發展談談自己對軟件開發的體會。這些可能受到我的背景和經歷的影響,不當或片面之處還請大家指正。

    一般來說,軟件系統開發應該包括如下三個方面的因素。1. 技術技能:編程技能是軟件開發的核心,除此之外,其他方面的技能也很重要,如工程實踐技能、掌握應用領域知識的技能等;2. 團隊合作:目前一個系統的開發已不是憑一己之力可完成的,軟件開發已是一種群體活動;3. 方法過程:開發所采用的方法與步驟。

    技術技能
    對軟件開發來說,開發人員的技術與技能無疑是起著重要的作用的。當前最主要和基本的技術當數面向對象(Object-Oriented)技術。OO技術可以有效地對一個系統進行描述,并且能有效地支持系統的演進與復用。

    一個開發人員除了需要扎實的計算機科學基礎和嚴密的邏輯思維,還需要具備工程實踐觀念。程序設計不等于軟件工程,我想這已是大家的共識。傳統上的程序設計在一定程度上是偏重于計算機科學的領域,屬于較抽象一些的范疇。而軟件工程則是要實實在在地做出一個滿足用戶要求的系統出來,這是一個很具體的實踐過程。那么對一個開發人員來說,就需要具備從事工程實踐的技能,如系統分析、編寫文檔、源碼控制、使用工具等。

    另一個技能是對應用領域知識的掌握。一般來說,一個應用軟件系統總是用在某一個領域。因此,一個開發人員應該對應用領域知識有一定的掌握。這個要求常被忽略,而根據我在實踐中的觀察,工業界最需要的恰恰是對IT技術和行業知識都精通的開發人員。所以,一個開發人員應該從心理上作好積極的準備去學習行業應用領域的知識。

    團隊合作
    團隊合作是經常聽到的一個詞語,而在軟件開發中團隊合作尤為重要。一般來說,軟件開發人員都是智商不算低的專業技術人員,要開發出高質量的軟件系統,除了前面所說的“硬”技能外,還應具備一些“軟技能”,其中最重要的是人際交流溝通能力。這包括知會、傾聽、表述、討論、處理沖突等技能。在軟件開發中,團隊合作主要是反映在討論設計方案、建立編碼標準、相互審閱源碼以及檢討調整開發過程等。當然,還有一個重要方面是項目管理者需要隨時向大家通報項目進展情況,讓大家知道自己的工作對項目的成功所起的作用,使每個人都有參與感和成就感。

    方法過程
    軟件開發的方法過程的提出是針對開發的隨意性,即邊寫邊改(code and fix)。它主要是借鑒了其他工程領域的方法,最著名的當數“瀑布式”過程了,即把軟件開發分解成這樣一些階段:需求分析、規范說明、系統設計、編碼實現、測試驗證。而在開發實踐中完全遵循這種過程取得成功的并不多。其原因在于這種方法有一個前提條件,那就是系統需求必須是明確的,需求分析一經完成就應該不變了。而在現實世界中,特別是在商用系統開發中,這幾乎是不可能的。需求通常是模糊的,并且在系統開發期間隨時都在變化的。因此要求采用的方法過程也必須是能適應這種變化的,畢竟一個軟件系統的第一要求是它的正確性,即能正確地完成所要求的任務。

    最近幾年興起的以極限程序設計(Extreme Programming 或簡稱XP),引發了一場軟件“敏捷開發” (agile development)運動!敏捷開發”的基本要義是采用遞增式(或稱之為迭代式、螺旋式等)的開發方式。系統功能被分解成若干小的功能。每一個遞增周期為兩周到一兩月(視具體情況而定),實現一項新功能。每個周期做的代碼必須經過充分的(單元)測試。業務人員(business people)或用戶必須和開發組在一起,以隨時保證做出的功能是滿足用戶的需求的。項目組成員應在同一地點工作以保證高效的、面對面交流。要經常性地(典型地是在每個周期結束時)進行回顧檢討,隨時調整方法過程以達到最有效的開發。

    我所參加的大部分項目基本上都是采用了這種“敏捷”型開發方法。有些是比較嚴格地按照這些原則去做。而在有些項目中,因為種種原因沒嚴格遵循有些原則,其結果是從反面證明了這些原則的重要性。如有個項目,開發組分散在兩個國家,做主要開發工作的一邊沒有業務人員和用戶。這樣的后果是開發人員在審讀需求文檔,以及在編碼實現中遇到問題時得通過電話和email去和另一邊業務人員討論,其效率和質量都大打折扣,還很可能會留下一些隱患。

    提到軟件開發,大家可能會想到CMM。我想在這里提一下的是有CMM之父之稱的Watts S. Humphrey。他最近在一個“敏捷”方法大會上作了一次演講,題目是“Setting the agile context”,其中他列出了一些軟件開發原則,還著重描述了如何運用他前些年提出的TSP(Team Software Process)與PSP(Personal Software Process)來進行開發的過程。這些原則和過程與前面提到的“敏捷”原則與過程相當類似。另外,Humphrey在前兩年一份技術報告中把CMM、TSP和PSP統一在一個框架中,并把它們分別定位為:CMM用于改進一個(軟件)企業的管理能力,TSP以提高一個開發團隊的有效性,PSP則是增強個人的技能與紀律性。

    總之,從軟件開發方法的發展趨勢與我個人的工作實踐來看,要開發出高質量的軟件產品,除了技術技能外,很重要的一個方面是團隊合作,與用戶的密切交流,和遞增式的開發過程。當然這些只是一些原則,具體如何實施還要根據具體情況,所謂“運用之妙,存乎一心”。

    延伸閱讀

    文章來源于領測軟件測試網 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>