標籤: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. 追蹤問題
進行軟體開發的基礎知識