進行軟體開發的基礎知識

來源:互聯網
上載者:User

標籤:os   使用   java   strong   sp   檔案   資料   on   問題   

 

      軟體開發:需要做什嗎? 如何做? 用什麼去完成?

 

       一、過程:控制和管理軟體開發活動

        軟體過程用來控制和管理軟體團隊的開發活動和進度,對於個人來說,也需要使用一定的過程方法來正常化自己的開發流程。

        一個值得嘗試的方案是:迭代+瀑布模型+測試驅動開發。 這種方案首先將系統分成多個迭代故事,然後,針對每個迭代故事使用瀑布模型並融入測試驅動開發理念。

        具體做法:

        S1:將系統開發分解為多個故事的迭代,每個故事中包含若干個模組。

        S2:針對每個故事中的模組,使用 “需求分析---設計---測試案例---編碼調試---測試---模組整合---使用者反饋---迭代的子故事”的流程來完成;每個模組完成後,整合成一個迭代的子故事。


      二、方法: 用什麼來構建軟體模組和應用程式

        電腦中最基本的要素是資料和邏輯,這對應於早期的機器語言和組合語言時代。然而,這樣不利於大型軟體的開發和管理,程式中容易充斥大量混亂的goto跳轉邏輯,因此,出現了結構化程式設計方法,主要思想是:程式=資料結構+演算法+模組組織。首先,用規範的控制語句(順序,條件,迴圈)消除容易混亂的goto跳轉邏輯;其次,用模組化的思想來管理軟體的構造。這種方法的基礎是:管道與重新導向。管道是指一個程式的輸入可以充當另一個程式的輸出。重新導向是將資料來源或資料目的地指定為所期望的流(標準I/0,檔案等)。通過對程式的靜態分析,通常就能準確推理出程式的行為。

        隨後,出現了物件導向的程式設計方法,將應用程式分解為對象及對象之間的互動和通訊。對象是資料與緊密相關的邏輯的良好封裝。物件導向的程式設計的一個複雜性表現在,無法通過靜態程式分析來推理程式的行為;其原因之一是使用了多態機制。

        為了各種系統之間的互操作,出現了面向服務的理念。使用面向過程或對象的方法,將某些功能打包成服務提供給外界。這需要有相應的應用協議來輔助,比如資料交換格式XML。面向服務: 物件導向(過程) +服務模組+應用協議。

        未來還將會出現怎樣的程式設計和軟體構造方法學呢?拭目以待。

 

        三、語言、架構和可用庫:選擇現有技術和架構構建應用和服務

        為了能夠快速建立應用,通常不會重新發明輪子,而是直接選擇合適的現有架構和庫、語言。比如,javaweb開發可能選擇Struts+ hibernate + spring 來完成,C++有STL,MFC等,C有大量的標準庫函數可用,PHP和Perl都有海量的模組可供選用。有時可能需要開發自己專有的庫,以避免依賴於其它商業公司的決策行為。

        令人欣慰的是,通常能夠找到好的開源工具和軟體作為開發的基礎。當然,來而不往非禮也,利用開源的優勢和服務,也應當儘力用某種方式回饋開源社區。


      四、工具與IDE:選擇合適的工具並能高效使用

       磨刀不誤砍柴功。構建自己喜愛的工具箱是高效開發應用的要素之一。Windows下的程式編輯工具有UltraEdit,SourceInsight等,Linux下的程式編輯工具有Emacs和vim ;編譯工具有gcc, g++,javac;運行調試工具gdb,測試架構有XUnit等,部署工具有ant,make, maven等;建模工具有草圖,UML,還有程式碼分析工具lint,profile,代碼控制CVS, SVN. 選擇一款好的IDE也是非常重要的。比如Eclipse,就是一款非常不錯的JavaIDE。


      五、環境部署與軟體發布、反饋

        軟體開發出來後,必須進行運行環境部署。首先,必須知道軟體將要啟動並執行平台:Windows ,Linux, Unix , Mac, 還是跨平台?其次,如果是客戶/伺服器模型,還必須配置好相應的伺服器和用戶端軟體,比如web應用中的apache, tomcat,JBOSS, 瀏覽器IE, firefox等。

      過去的軟體發布主要是單機形式,而隨著網路時代的來臨和雲端運算的興起,未來的軟體發布將更多地集中於幾個主流平台上,通過網路市集的形式發布。在發布之後,要用心傾聽使用者的反饋以不斷完善軟體的功能與服務。 


      六、內功: 快速領悟新技術

       無論從事電腦的哪個行業,深厚的內功是非常重要的。紮實的專業基礎、敏捷縝密的思維有助於快速領悟新技術。專業基礎包括:1. 對電腦系統深入而整體的理解;2. 作業系統、資料結構、演算法設計、資料庫、程式網路通訊等。

      要做好實際開發工作,從兩個方面入手:1. 熟悉掌握開發領域的動態和技術;2. 博覽群書,廣泛涉獵,從任何可能的地方去汲取有益的啟示。

  
     七、原則: 構建怎樣的軟體?

              1.  構建必需的服務; 

              2.  不做不需要的功能,但為可擴充性留下後路;

              3.  及時交付軟體;

              4.  可重用、可維護、可擴充;

              5.  安全性、可靠性;


     八、習慣:構建高品質軟體的開發習慣和職業素養 

              1.  與同伴交流,瞭解他們正在做什麼及其意義

              2.  善於問題分析與建模

              3.  敏捷與應對變化

              4.  保持條理性和抓住重點

              5.  不要為了短暫的便捷破壞良好的開發習慣

              6.  通過編寫代碼來表達思想

              7.  不斷學習

              8.  組態管理和原始碼控制

              9.  單元測試

            10.  持續整合

            11.  維護短期迭代   

            12.  評估開發速度   

            13.  追蹤問題

進行軟體開發的基礎知識

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.