<rp id="q76zd"><code id="q76zd"><video id="q76zd"></video></code></rp>

    1. <s id="q76zd"><big id="q76zd"></big></s>

      <tbody id="q76zd"><p id="q76zd"><small id="q76zd"></small></p></tbody>

      1. <label id="q76zd"></label>
        嘉興專業的AI軟件外包與定制開發、手機APP及小程序開發服務公司
        聯系電話: 13396739763 (微信同)
        探索最新AI技術與深度解決方案 | 獲取專業軟件開發的經驗智慧

        結構化軟件開發方法的創新發展的過程

        根據對結構化和面向對象這兩種成熟的軟件開發方法的創新發展過程的研究, 總結出了軟件開發方法創新發展過程的規律性—軟件開發方法的創新發展過程有四個環節, 這四個環節是:

        (1)找到軟件開發活動中現存的某些問題;

        (2)為了解決問題而進行思維觀念創新;

        (3)按照新的思維觀念來構建軟件開發方法的核心部分;

        (4)按照新的思維觀念來完善軟件開發方法。按照這個規律, 敏捷軟件開發方法和面向Agent軟件開發方法處于發展中, 有待于進一步完善。

        軟件開發方法是軟件工程理論的重要內容之一, 在軟件開發方法中, 對于開發軟件時“做什么”和“如何做”, 給出了明確的、詳細的回答。人們在不同時期為了解決各種不同的軟件開發問題, 推出了多種不同的軟件開發方法, 并且每種軟件開發方法還有靈活多樣的表現形式?;仡欆浖_發歷史, 我們看到, 軟件開發方法在不斷地創新發展, 將來還會有新的軟件開發方法出現。

        軟件開發方法的創新發展過程有什么規律性?

        值得我們進行研究。找到了這個規律性, 可以幫助人們深刻認識現有的各種軟件開發方法, 更重要的是可以指導人們去創建新的軟件開發方法。

        結構化軟件開發方法包括結構化分析方法、結構化設計方法和結構化實現方法, 其核心是結構化程序設計方法。結構化軟件開發方法是在結構化程序設計方法基礎上逐漸形成和完善的。在結構化程序設計方法出現之前, 軟件開發活動個體化特征非常嚴重, 編寫程序時個人隨心所欲,過分追求程序編寫技巧, 沒有一個行之有效的、大家共同遵循的開發準則, 造成程序的可讀性、清晰性、可理解性比較差, 給軟件維護工作帶來極大的困難。在結構化軟件開發方法出現之前, 由于當時的軟件比較小, 開發過程比較簡單, 當時錯誤地認為開發軟件只是編寫程序, 所以那時的軟件開發方法只是考慮編寫程序, 軟件開發方法內容極不完善, 對編寫程序之外的其它軟件開發階段沒有給予重視。隨著軟件規模的增大和復雜性的提高, 這種個體化隨心所欲編寫程序的現象和只重視編寫程序而忽視軟件開發其它環節的軟件開發方法導致許多問題出現。例如, 由于過分追求程序編寫技巧, 一些程序很難閱讀和理解, 因此當軟件出現問題時無法維護;例如, 由于不重視需求分析工作, 對用戶需求了解的不全面、不細致, 開發出的軟件往往與用戶要求有很大差距。這些問題成為軟件危機的根源之一。在結構化程序設計方法出現之前的相當長的時間里, 人們對軟件開發活動和軟件開發方法的認識停留在上述層面上, 形成了一種傳統的思維觀念, 似乎開發軟件就應該那樣做, 使軟件危機日益嚴重。為了消除軟件危機, 人們開始深入思考軟件開發活動和軟件開發方法。1968 年, Dijkstra在寫給ACM雜志編輯部的信中再次建議從一切高級語言中取消goto語句, 圍繞是否應該取消goto語句, 人們展開了一場激烈的爭論。在這

        之前, 1965年Dijkstra首次建議取消goto語句, 1966年Bohm與Jacopini證明了任何單入口單出口的沒有“死循環”的程序都能由三種基本結構構造出來, 這三種基本結構是順序結構、選擇結構和循環結構。經過爭論,最終人們認識到, 不是簡單的是否取消goto語句的問題, 而是應該改變傳統思維觀念, 創建新的思維觀念, 在此基礎上創建新的程序設計方法。圍繞goto語句爭論的結果使人們形成了新的思維觀念:編寫程序時, 在正確地實現了軟件功能的前提下, 必須將可讀性、清晰性和可理解性放在首位, 必須考慮到程序的可維護性, 而不能個人隨心所欲地去過分追求程序編寫技巧。由于使用三種基本結構(順序、選擇、循環)組成的程序具有良好的可讀性、清晰性和可理解性, 容易維護, 所以應該使用順序、選擇和循環三種基本結構來實現程序, 每個程序模塊只有一個入口和出口, 復雜結構由基本結構通過組合與嵌套來實現, 采用自頂向下逐步細化技術進行設計。按照這樣的新思維觀念, 形成了一個新的程序設計方法———結構化程序設計方法。

        1971年, IBM公司在設計紐約時報信息庫管理系統時使用結構化程序設計方法, 成功完成了83000行程序的編寫, 成為結構化程序設計方法成功運用的一個范例。隨后, 結構化程序設計方法又在美國宇航局空間實驗室飛行模擬系統的設計等許多項目中得到成功運用。1973年, Nassi和Shneiderman提出著名的盒圖(N-S圖), 1974年Chapin對盒圖進行了擴展, 這一創新為結構化程序設計提供了一個強有力的工具,改變了使用傳統流程圖容易產生隨意性的弊病, 使結構化程序設計方法得到完善。隨后, 日立公司的二村良彥等人提出了問題分析圖(PAD圖), 問題分析圖是結構化程序設計的又一個有效的工具, 從而進一步豐富了結構化程序設計方法。1971 年Wieth首先開發出Pascal語言, 1972年貝爾實驗室的Ritchie設計出C語言, 1983年美國正式公布ANSI-Pascal和ANSI-C標準, 以Pascal語言和C語言為代表的結構化程序設計語言的出現和完善, 使結構化程序設計方法得到了更加廣泛的應用。在結構化程序設計方法基礎上, 人們開始從整體范圍思考軟件開發方法。軟件生命周期理論的提出, 是人們正確認識軟件開發整體性的結果。

        一個軟件從開始計劃, 到廢棄不用, 有一個完整的生命周期, 包括這樣幾個階段:問題定義、可行性研究、需求分析、軟件設計、編寫程序、測試、維護。根據軟件生命周期理論, 開發軟件不僅僅是編寫程序, 必須還要完成其它階段的工作, 編寫程序只是軟件開發的整體過程中的一項活動, 因此開發軟件時不能只重視編寫程序而忽視其它軟件開發活動。一個完整的軟件開發方法, 應該對軟件生命周期中的每個階段的任務和目標都能給出清晰的描述。1970 年Royce首先提出瀑布模型, 瀑布模型將軟件生命周期概念非常清晰地表達出來 , 它的出現, 標志著人們開始從軟件開發的整體性出發來構建軟件開發方法。

        在結構化程序設計取得巨大成功的推動下, 以結構化程序設計方法為中心, 開始形成結構化軟件開發方法。1974年, Stevens、Myers和Constantine發表文章“ StructuredAnalysis” , 提出了結構化分析和結構化設計的概念, 隨后許多專家為結構化分析和結構化設計方法的形成和完善做了大量工作, 如1977年Ross和Schoman發表文章“ StructuredAnalysisforRequirementsDefinition”,如1978年Myers出版著作《CompositeStructuredDesign》, 如1978 年Yourdon和Constantine出版著作《Structured Design》, 如1979 年DeMarco出版著作《StructuredAnalysisandSystemSpecification》[ 1] , 等等, 在Yourdon、Constantine、DeMarco、Stevens、Myers等人的積極工作和倡導下, 結構化的思想被應用到軟件開發的整體過程, 逐漸形成了現在大家熟知的、包括結構化分析、結構化設計和結構化實現在內的完整的結構化軟件開發方法。

        結構化分析方法使用數據流圖和數據字典以及ER圖、層次方框圖、Warnier圖、IPO圖等工具來描述軟件需求。結構化設計方法使用模塊化和自頂向下逐步細化技術, 根據數據流圖等結構化分析的結果來設計軟件系統總體結構, 使用盒圖或PAD圖等工具來設計每個模塊的算法和數據結構。結構化軟件開發方法成為20世紀70年代和80 年代占主導地位的軟件開發方法, 直到現在仍在發揮作用。它的廣泛運用, 有效地遏制了軟件危機的蔓延。

        partners
        partners
        partners
        partners
        partners
        partners
        partners
        partners
        三级国产国语三级在线蔓延|欧美人与动人物牲交|欧美A级毛欧美1级A大片免费播|国产无套乱子伦精彩|91香蕉高清国产线观看免费
        <rp id="q76zd"><code id="q76zd"><video id="q76zd"></video></code></rp>

          1. <s id="q76zd"><big id="q76zd"></big></s>

            <tbody id="q76zd"><p id="q76zd"><small id="q76zd"></small></p></tbody>

            1. <label id="q76zd"></label>