⑴ 請問你知道應用程序的發展史嗎
第一個寫軟體的人是Ada( Ada Lovelace),在1860年代她嘗試為 Babbage(Charles Babbage)的機械式計算機寫軟體。盡管他們的努力失敗了,但他們的名字永遠載入了計算機發展的史冊。她的父親就是那個狂熱的,不趨炎附勢的激進詩人和冒險家拜倫。她本身也是一個光彩照人的人物—數學尖子和某種程度上的賭徒。她最重要的貢獻來自於與發明家Charles Babbage的合作,從而設計出世界上首批大型計算機—Difference Engine和Analytical Engine。她甚至認為如果有正確的指令,Babbage的機器可以用來作曲,這是一個多麼瘋狂的想法,因為當時大多數人只把它看成是一個機械化算盤,而她卻有渲染力和感召力來傳播她的思想。
20世紀50年代,軟體伴隨著第一台電子計算機的問世誕生了。以寫軟體為職業的人也開始出現,他們多是經過訓練的數學家和電子工程師。1960年代美國大學里開始出現授予計算機專業的學位,教人們寫軟體。
在計算機系統發展的初期,硬體通常用來執行一個單一的程序,而這個程序又是為一個特定的目的而編制的。早期當通用硬體成為平常事情的時候,軟體的通用性卻是很有限的。大多數軟體是由使用該軟體的個人或機構研製的,軟體往往帶有強烈的個人色彩。早期的軟體開發也沒有什麼系統的方法可以遵循,軟體設計是在某個人的頭腦中完成的一個隱藏的過程。而且,除了源代碼往往沒有軟體說明書等文檔。
從60年代中期到70年代中期是計算機系統發展的第二個時期,在這一時期軟體開始作為一種產品被廣泛使用,出現了「軟體作坊」專職應別人的需求寫軟體。這一軟體開發的方法基本上仍然沿用早期的個體化軟體開發方式,但軟體的數量急劇膨脹,軟體需求日趨復雜,維護的難度越來越大,開發成本令人吃驚地高,而失敗的軟體開發項目卻屢見不鮮。「軟體危機」就這樣開始了!
「軟體危機」使得人們開始對軟體及其特性進行更深一步的研究,人們改變了早期對軟體的不正確看法。早期那些被認為是優秀的程序常常很難被別人看懂,通篇充滿了程序技巧。現在人們普遍認為優秀的程序除了功能正確,性能優良之外,還應該容易看懂、容易使用、容易修改和擴充。
1968年北大西洋公約組織的計算機科學家在聯邦德國召開的國際學術會議上第一次提出了「軟體危機」(software crisis)這個名詞。 概括來說,軟體危機包含兩方面問題:一、如何開發軟體,以滿足不斷增長,日趨復雜的需求;二、如何維護數量不斷膨脹的軟體產品。
1968年秋季,NATO(北約)的科技委員會召集了近50名一流的編程人員、計算機科學家和工業界巨頭,討論和制定擺脫「軟體危機」的對策。在那次會議上第一次提出了軟體工程(software engineering)這個概念。
軟體工程是一門研究如何用系統化、規范化、數量化等工程原則和方法去進行軟體的開發和維護的學科。軟體工程包括兩方面內容:軟體開發技術和軟體項目管理。軟體開發技術包括軟體開發方法學、軟體工具和軟體工程環境。軟體項目管理包括軟體度量、項目估算、進度控制、人員組織、配置管理、項目計劃等。
為迎接軟體危機的挑戰,人們進行了不懈的努力。這些努力大致上是沿著兩個方向同時進行的。
一是從管理的角度,希望實現軟體開發過程的工程化。這方面最為著名的成果就是提出了大家都很熟悉的「瀑布式」生命周期模型。它是在60年代末「軟體危機」後出現的第一個生命周期模型。如下所示:
分析 → 設計 → 編碼 → 測試 → 維護
後來,又有人針對該模型的不足,提出了快速原型法、螺旋模型、噴泉模型等對「瀑布式」生命周期模型進行補充。現在,它們在軟體開發的實踐中被廣泛採用。
這方面的努力,還使人們認識到了文檔的標准以及開發者之間、開發者與用戶之間的交流方式的重要性。一些重要文檔格式的標准被確定下來,包括變數、符號的命名規則以及原代碼的規範式。
軟體工程發展的第二個方向,側重與對軟體開發過程中分析、設計的方法的研究。這方面的重要成果就是在70年代風靡一時的結構化開發方法,即PO(面向過程的開發或結構化方法)以及結構化的分析、設計和相應的測試方法。
軟體工程的目標是研製開發與生產出具有良好的軟體質量和費用合算的產品。費用合算是指軟體開發運行的整個開銷能滿足用戶要求的程度,軟體質量是指該軟體能滿足明確的和隱含的需求能力有關特徵和特性的總和。軟體質量可用六個特性來作評價,即功能性、可靠性、易使用性、效率、維護性、易移植性。
軟體不是純物化的東西,其中包含著人的因素,於是就有很多變動的東西,不可能像理想的物質生產過程,基於物理學等的原理來做。早期的軟體開發僅考慮人的因素,傳統的軟體工程強調物性的規律,現代軟體工程最根本的就是人跟物的關系,就是人和機器(工具、自動化)在不同層次的不斷循環發展的關系。
面向對象的分析、設計方法(OOA和OOD)的出現使傳統的開發方法發生了翻天覆地的變化。隨之而來的是面向對象建模語言(以UML為代表)、軟體復用、基於組件的軟體開發等新的方法和領域。
與之相應的是從企業管理的角度提出的軟體過程管理。即關注於軟體生存周期中所實施的一系列活動並通過過程度量、過程評價和過程改進等涉及對所建立的軟體過程及其實例進行不斷優化的活動使得軟體過程循環往復、螺旋上升式地發展。其中最著名的軟體過程成熟度模型是美國卡內基梅隆大學軟體工程研究所(SEI)建立的CMM(Capability Maturity Model),即能力成熟度模型。此模型在建立和發展之初,主要目的是為大型軟體項目的招投標活動提供一種全面而客觀的評審依據,而發展到後來,又同時被應用於許多軟體機構內部的過程改進活動中
⑵ 軟體需求的發展歷程
80年代中期,形成了軟體工程子領域——需求工程(requirement engineering, RE)。從1993年起每兩年舉辦一次需求工程國際研討會(ISRE),自1994年起每兩年舉辦一次需求工程國際會議(ICRE),一些關於需求工程的工作小組相繼成立。需求工程是隨著計算機的發展而發展的,在計算機發展的初期,軟體規模不大,軟體開發所關注的是代碼編寫,需求分析很少受到重視。後來軟體開發引入了生命周期的概念,需求分析成為其第一階段。隨著軟體系統規模的擴大,需求分析與定義在整個軟體開發與維護過程中越來越重要,直接關繫到軟體的成功與否。人們逐漸認識到需求分析活動不再僅限於軟體開發的最初階段,它貫穿於系統開發的整個生命周期。
進入90年代以來,需求工程成為研究的熱點之一。一些關於需求工程的工作小組也相繼成立,如歐洲的RENOIR(Requirements Engineering Network of International Cooperating Research Groups ),並開始開展工作。
⑶ 軟體的發展歷史簡介
軟體業的歷史要追溯到50年前,它有半個世紀的發展。
第一代:早期專業服務公司,1949——1959。第一批獨立於賣主的軟體公司是為個人客戶開發定製解決方案的專業軟體服務公司。
在美國,這個發展過程是由幾個大軟體項目推進的,這些項目先是由美國政府,後來是由幾家美國大公司認購的。這些巨型項目為第一批獨立的美國軟體公司提供了重要的學習機會,並使美國在軟體業中成了早期的主角。
第二代:早期軟體產品公司,1959——1969。在第一批獨立軟體服務公司成立10年後,第一批軟體產品出現了。它們被專門開發出來重復銷售給一個以上的客戶。一種新型的軟體公司誕生了,這是一種要求不同管理技術的公司。
第三代:強大的企業解決方案提供商的出現,1969——1981 。
IBM給軟體與硬體分別定價的決定再次證實了軟體業的獨立性。在隨後的歲月里,越來越多的獨立軟體公司破土而出,為所有不同規模的企業提供新產品——可以看出它們超越了硬體廠商所提供的產品。最終,客戶開始從硬體公司以外的賣主那兒尋找它們的軟體來源並確定為其付錢。
第四代:客戶大眾市場軟體,1981——1994 。個人計算機的出現建立了一種全新的軟體:基於個人計算機的大眾市場提交了它們的產品。這呼喚著極其不同的營銷和銷售方法。
PARC為今日的PC確立了技術基礎:由施樂1969年創立的帕洛阿爾托研究中心(PARC),用突破性的革新,諸如黑白屏幕、位映射顯示、按鈕、激光列印機、字處理器和網路(最值得一提的是乙太網),為個人計算機革命奠定了基礎。
在PARC工作的科學家有些後來為蘋果公司及微軟工作,或者創立了他們自己的公司。
(3)軟體工程的發展歷史擴展閱讀:
80年代和90年代的平台:在80年代和90年代,許多企業解決方案提供商從大型計算機專有的操作系統平台轉向諸如Unix(1973年)、IBM OS/2和微軟NT等新的平台。這個轉變通常使這些公司從使用它們自己所有的軟體中贏得了暴利。
Peoplesoft,一個新的未繼承遺產的企業解決方案公司:朝向更新的操作系統平台的轉變允許其他的公司進入這個市場。其中之一是Peoplesoft,由杜菲爾德(Dave Duffield)和莫里斯(Ken Morris)成立於1987年。
他們是Integral系統公司出來的兩個軟體工程師,看到了基於個人計算機的人力資源管理系統(HRMS)軟體的潛力。 Peoplesoft能夠在HRMS之下通過收購開發許多垂直功能市場(諸如健康保健和財務服務),使自己成了傳統企業解決方案提供商的一個值得認真對待的競爭者。
輔助合作者:大多數EPR公司嚴重依賴於合作者們以輔助和改制它們的產品。這些合作者們通常在一個大的系統安裝中獲得2至6倍於EPR賣家的收入。這樣,兩邊都從90年代初以來的巨大市場增長中有所獲益。
在EPR合作者的陣營里,特別是大會計公司,一種相當活躍的合並——集中化在80年代和90年代裡發生了。1987年KPMG的合並,以及更近的1998年普華/永道合並,似乎是全球范圍專業軟體服務工業化的一個信號。
⑷ 軟體工程的發展過程
軟體是由計算機程序和程序設計的概念發展演化而來的,是在程序回和程序設計發展到一定規模並答且逐步商品化的過程中形成的。軟體開發經歷了程序設計階段、軟體設計階段和軟體工程階段的演變過程。 在Internet平台上進一步整合資源,形成巨型的、高效的、可信的虛擬環境,使所有資源能夠高效、可信地為所有用戶服務,成為軟體技術的研究熱點之一。
軟體工程領域的主要研究熱點是軟體復用和軟體構件技術,它們被視為是解決「軟體危機」的一條現實可行的途徑,是軟體工業化生產的必由之路。而且軟體工程會朝著開放性計算的方向發展,朝著可以確定行業基礎框架、指導行業發展和技術融合的「開放計算」。
⑸ 計算機軟體的發展經歷了哪些歷程,各階段有何特徵、理論體系、優勢與不足
軟體的發展大致經歷了如下三個階段:
⑴第一階段(20世紀40年代中期到50年代中期)。從第一台計算機上的第一個程序開始到實用的高級程序設計語言出現以前是計算機軟體發展初期。這個階段計算機應用領域的比較窄,主要是科學與工程計算,處理對象為數值數據,以個體方式使用機器(或匯編)語言編製程序。第一階段只要研究科學計算程序與工程計算程序、服務性程序和程序庫,人們對與程序有關的文檔的重要性認識不足,重點考慮程序本身。
⑵第二階段(20世紀50年代中期到60年代後期)。從高級程序設計語言出現到軟體工程提出以前是軟體發展的第二階段。這個階段研究對象增加了並發程序,並著重研究高級程序設計語言、編譯程序、操作系統以及各種支撐軟體和應用軟體。隨著計算機系統的處理能力得到加強,設計和編製程序的工作方式逐漸走向合作方式。
⑶第三階段(20世紀60年代後期軟體工程提出以來)。由於大型軟體的開發是一項工程性的任務,採用個體或合作方式不僅效率低、可靠性差、而且很難完成任務,只有採用工程方法才能適應高效率高質量編制軟體的需求,因而在1968年的大西洋公約組織的學術會議上提出的軟體工程的概念。40多年來,軟體領域的工作呈現出了許多新的特點。
⑹ 簡述軟體的發展過程
軟體是由計算機程序和程序設計的概念發展演化而來的,是在程序和程序設計發展到一定規模並且逐步商品化的過程中形成的。軟體開發經歷了程序設計階段、軟體設計階段和軟體工程階段的演變過程。
程序設計階段
程序設計階段出現在1946年~1955年。此階段的特點是:尚無軟體的概念,程序設計主要圍繞硬體進行開發,規模很小,工具簡單,無明確分工(開發者和用戶),程序設計追求節省空間和編程技巧,無文檔資料(除程序清單外),主要用於科學計算。 [2]
軟體設計階段
軟體設計階段出現在1956年~1970年。此階段的特點是:硬體環境相對穩定,出現了「軟體作坊」的開發組
軟體工程
織形式。開始廣泛使用產品軟體(可購買),從而建立了軟體的概念。隨著計算機技術的發展和計算機應用的日益普及,軟體系統的規模越來越龐大,高級編程語言層出不窮,應用領域不斷拓寬,開發者和用戶有了明確的分工,社會對軟體的需求量劇增。但軟體開發技術沒有重大突破,軟體產品的質量不高,生產效率低下,從而導致了「軟體危機」的產生。
⑺ 電腦軟體的發展史
電腦軟體的發展史
第一代軟體(1946-1953)
第一代軟體是用機器語言編寫的,機器語言是內置在計算機電路中的指令,由0和1組成。
第二代軟體(1954-1964)
當硬體變得更強大時,就需要更強大的軟體工具使計算機得到更有效地使用。匯編語言向正確的方向前進了一大步,但是程序員還是必須記住很多匯編指令。
第三代軟體(1965-1970)
在這個時期,由於用集成電路取代了晶體管,處理器的運算速度得到了大幅度的提高,處理器在等待運算器准備下一個作業時,無所事事。因此需要編寫一種程序,使所有計算機資源處於計算機的控制中,這種程序就是操作系統。
第四代軟體(1971-1989)
20世紀70年代出現了結構化程序設計技術,Pascal語言和Mola-2語言都是採用結構化程序設計規則制定的,Basic這種為第三代計算機設計的語言也被升級為具有結構化的版本,此外,還出現了靈活且功能強大的C語言。
第五代軟體(1990-至今)
第五代軟體中有三個著名事件:在計算機軟體業具有主導地位的Microsoft公司的崛起、面向對象的程序設計方法的出現以及萬維網(World Wide Web)的普及。
(7)軟體工程的發展歷史擴展閱讀
依據許可方式的不同,大致可將軟體區分為幾類:
1、專屬軟體:
此類授權通常不允許用戶隨意的復制、研究、修改或散布該軟體。違反此類授權通常會有嚴重的法律責任。傳統的商業軟體公司會採用此類授權,例如微軟的Windows和辦公軟體。專屬軟體的源碼通常被公司視為私有財產而予以嚴密的保護。
2、自由軟體:
此類授權正好與專屬軟體相反,賦予用戶復制、研究、修改和散布該軟體的權利,並提供源碼供用戶自由使用,僅給予些許的其它限制。以Linux、Firefox 和OpenOffice 可做為此類軟體的代表。
3、共享軟體:
通常可免費的取得並使用其試用版,但在功能或使用期間上受到限制。開發者會鼓勵用戶付費以取得功能完整的商業版本。根據共享軟體作者的授權,用戶可以從各種渠道免費得到它的拷貝,也可以自由傳播它。
4、免費軟體:
可免費取得和轉載,但並不提供源碼,也無法修改。
5、公共軟體:
原作者已放棄權利,著作權過期,或作者已經不可考究的軟體。使用上無任何限制。
⑻ 軟體測試的歷史和發展
迄今為止,軟體測試的發展一共經歷了五個重要時期:
1957年之前-調試為主(Debugging Oriented)
1957–1978-證明為主(Demonstration Oriented)
1979–1982-破壞為主(Destruction Oriented)
1983–1987-評估為主(Evaluation Oriented)
1988–至今-預防為主(Prevention Oriented)
調試為主
20世紀50年代,計算機剛誕生不久,只有科學家級別的人才會去編程,需求和程序本身也遠遠沒有現在這么復雜多變,相當於開發人員一人承擔需求分析,設計,開發,測試等所有工作,當然也不會有人去區分調試和測試。然而嚴謹的科學家們已經在開始思考 「怎麼知道程序滿足了需求?」這類問題了。
證明為主
1957年,Charles Baker在他的一本書中對調試和測試進行了區分:
調試(Debug):確保程序做了程序員想它做的事情
測試(Testing):確保程序解決了它該解決的問題
這是軟體測試史上一個重要的里程碑,它標志測試終於自立門戶師出有名了。
當時計算機應用的數量,成本和復雜性都大幅度提升,隨之而來的經濟風險也大大增加,測試就顯得很有必要了,這個時期測試的主要目就是確認軟體是滿足需求的,也就是我們常說的「做了該做的事情」。
破壞為主
1979年,《軟體測試的藝術》 (The Art of Software Testing)第一版問世,這本書是測試界的經典之作。書中給出了軟體測試的經典定義:
The process of executing a program with the intent of finding errors.
測試是為發現錯誤而執行程序的過程。
這個觀點較之前證明為主的思路,是一個很大的進步。我們不僅要證明軟體做了該做的事情,也要保證它沒做不該做的事情,這會使測試更加全面,更容易發現問題。
評估為主
1983年,美國國家標准局(National Bureau of Standards)發布「Guideline for Lifecycle Validation, Verification and Testing of Computer Software」,也就是我們常說的VV&T。VV&T提出了測試界很有名的兩個名詞:驗證(Verification)和確認(Validation)
Verification: Are we building the proct right?
Validation: Are we building the right proct?
人們提出了在軟體生命周期中使用分析,評審,測試來評估產品的理論。軟體測試工程在這個時期得到了快速的發展:
出現測試經理(test manager),測試分析師(test analyst)等職稱
開展正式的國際性測試會議和活動
發表大量測試刊物
發布相關國際標准
以上種種都預示著:軟體測試正作為一門獨立的,專業的,具有影響力的工程學發展起來了。
預防為主
預防為主是當下軟體測試的主流思想之一。STEP(Systematic Test and Evaluation Process)是最早的一個以預防為主的生命周期模型,STEP認為測試與開發是並行的,整個測試的生命周期也是由計劃,分析,設計,開發,執行和維護組成,也就是說,測試不是在編碼完成後才開始介入,而是貫穿於整個軟體生命周期。我們都知道,沒有100%完美的軟體,零缺陷是不可能的,所以我們要做的是:盡量早的介入,盡量早的發現這些明顯的或隱藏的bug,發現得越早,修復起來的成本越低,產生的風險也越小