進行軟體開發的基礎知識

來源:互聯網
上載者: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.