登錄

軟件生產(chǎn)

百科 > 軟件 > 軟件生產(chǎn)

1.什么是軟件生產(chǎn)

  軟件生產(chǎn)是知識(shí)密集型的智力活動(dòng),它是資金密集、勞動(dòng)密集型工作,軟件項(xiàng)目中包含了許多極易出錯(cuò)的手工勞動(dòng),例如編碼。

2.軟件生產(chǎn)的四種模式[1]

  1.程序設(shè)計(jì)模式

  軟件生產(chǎn)的第一個(gè)時(shí)期可以說(shuō)是自從有了計(jì)算機(jī)以后,一直到20世紀(jì)60年代中期以前的這段時(shí)期。在這個(gè)時(shí)期內(nèi),軟件生產(chǎn)的主要模式就是程序設(shè)計(jì)模式。我們知道,計(jì)算機(jī)的研制來(lái)源于龐大而復(fù)雜的數(shù)學(xué)計(jì)算,如第一臺(tái)通用電子數(shù)字計(jì)算機(jī)“埃尼阿克”(ENIAC),它是由美國(guó)軍械部撥款研制的,其主要任務(wù)就是用于計(jì)算和分析炮彈軌道的。在這個(gè)時(shí)期,軟件的生產(chǎn)主要是基于機(jī)器語(yǔ)言、匯編語(yǔ)言和Fortran語(yǔ)言等編程語(yǔ)言為標(biāo)志的算法技術(shù)。那時(shí),軟件的生產(chǎn)就是程序設(shè)計(jì),由程序設(shè)計(jì)人員根據(jù)特定的要求,通過(guò)當(dāng)時(shí)的編程語(yǔ)言提供的算法來(lái)編寫相應(yīng)的程序的。以程序設(shè)計(jì)模式進(jìn)行的軟件生產(chǎn)主要有以下一些特點(diǎn):

  1)軟件的范疇主要是程序。在這種模式下生產(chǎn)的軟件主要就是程序,其中大部分是用來(lái)進(jìn)行數(shù)學(xué)計(jì)算的程序。而且這些程序一般都沒(méi)有很好的數(shù)據(jù)結(jié)構(gòu),而是程序設(shè)計(jì)人員根據(jù)需要和相關(guān)語(yǔ)言提供的算法自由編寫的。

  2)軟件的編寫者和使用者往往為同一個(gè)或同一組人。在這個(gè)時(shí)期,計(jì)算機(jī)是作為某些特殊領(lǐng)域特殊人員的專用工具的,而這些特殊人員往往都是我們現(xiàn)在所說(shuō)的領(lǐng)域?qū)<?,他們大都具有某些領(lǐng)域的專業(yè)知識(shí),而且又需要進(jìn)行復(fù)雜而又龐大的數(shù)學(xué)計(jì)算,于是他們借助計(jì)算機(jī)及其語(yǔ)言,進(jìn)而編寫出適合他們自己需要的程序,即軟件。

  3)軟件基本上都是專用軟件。在這個(gè)時(shí)期,由于軟件是使用者根據(jù)自身的需要而編寫的,只要能夠幫助他們達(dá)到目的即可。所以這樣的軟件往往沒(méi)有很好的結(jié)構(gòu)和說(shuō)明,別人看不懂,也不需要?jiǎng)e人看得懂,它們往往只屬于個(gè)人或僅在少數(shù)一些人中間交流,因而不具有通用性,是專用的。4)軟件的規(guī)模很小。由于這個(gè)時(shí)期的軟件主要就是程序,而且這些程序常常是領(lǐng)域?qū)<覟榱私鉀Q某些特殊的需要而編寫的,如完成某一特殊的計(jì)算或算法等,所以這些軟件經(jīng)常是小規(guī)模的,而且是輔助性的。它們僅是幫助領(lǐng)域?qū)<彝瓿赡稠?xiàng)工程的輔助部分而已。

  2.軟件作坊模式

  軟件生產(chǎn)的第二個(gè)時(shí)期是從20世紀(jì)60年代中期到70年代中期這段時(shí)間,這個(gè)時(shí)期又叫程序系統(tǒng)時(shí)期;而這個(gè)時(shí)期軟件生產(chǎn)的主要模式就是軟件作坊模式。

  早在19世紀(jì)50年代,伴隨著第一臺(tái)電子計(jì)算機(jī)的誕生和問(wèn)世,以寫軟件為職業(yè)的人已經(jīng)開(kāi)始出現(xiàn)了,他們多是經(jīng)過(guò)訓(xùn)練的數(shù)學(xué)專家和電氣工程師。然而由于他們?nèi)藬?shù)較少,所以無(wú)法構(gòu)成當(dāng)時(shí)社會(huì)軟件生產(chǎn)的主流。到了19世紀(jì)60年代,在美國(guó)的一些大學(xué)里,開(kāi)始出現(xiàn)了授予計(jì)算機(jī)專業(yè)的學(xué)位,教導(dǎo)人們?nèi)绾稳戃浖慌c此同時(shí),軟件的需求也越來(lái)越多,軟件開(kāi)始作為一種產(chǎn)品被廣泛使用了,于是出現(xiàn)了“軟件作坊”。軟件作坊一般是由少數(shù)幾個(gè)或幾十個(gè)人組成的軟件生產(chǎn)團(tuán)體,他們是專門應(yīng)別人的要求而編寫軟件的。軟件作坊的出現(xiàn),極大地推動(dòng)了當(dāng)時(shí)的軟件生產(chǎn)和發(fā)展,進(jìn)一步確立了軟件作為獨(dú)立產(chǎn)業(yè)的基礎(chǔ)。然而無(wú)論從軟件生產(chǎn)的理論和方法上,軟件作坊并沒(méi)有為軟件生產(chǎn)提供什么系統(tǒng)的方法來(lái)遵循,軟件作坊的生產(chǎn)仍然沿用早期的個(gè)體化軟件開(kāi)發(fā)方式。這個(gè)時(shí)期的軟件設(shè)計(jì)仍然是在某個(gè)人頭腦中完成的一個(gè)隱蔽的過(guò)程,而且軟件開(kāi)發(fā)以后,除了源代碼以外往往沒(méi)有軟件的說(shuō)明書等文檔。以軟件作坊模式進(jìn)行的軟件生產(chǎn)主要有以下一些特點(diǎn):

  1)軟件的范疇是:程序+數(shù)據(jù)。在軟件作坊的生產(chǎn)模式下,軟件已經(jīng)從早期的簡(jiǎn)單的程序,轉(zhuǎn)換到軟件;程序+數(shù)據(jù)的模式。程序是按照事先設(shè)計(jì)的功能和性能要求執(zhí)行的指令序列;而數(shù)據(jù)則是程序能正常操縱的數(shù)據(jù)結(jié)構(gòu)。

  2)軟件的編寫者和使用者已逐步分開(kāi)。隨著軟件作坊的出現(xiàn),軟件的使用者和軟件的編寫者已逐步的分開(kāi)了。軟件作坊作為軟件的編寫單位獨(dú)立存在,應(yīng)軟件的使用者的要求而編寫相應(yīng)的軟件;而軟件的使用者則只需要向軟件作坊提出他們的要求和需要即可。

  3)軟件已經(jīng)作為產(chǎn)品被廣泛使用。在這個(gè)時(shí)期,軟件已經(jīng)成為一種產(chǎn)品了,就和其他的商業(yè)產(chǎn)品一樣,被廣泛地使用。軟件使用者向軟件作坊提出要求,并付出相應(yīng)的價(jià)錢,由軟件作坊為他們定制特殊的軟件。這就是我們現(xiàn)在所說(shuō)的軟件外包的最開(kāi)始的雛形。

  4)出現(xiàn)了軟件危機(jī)。由于軟件作坊仍然沿用早期的個(gè)體化軟件開(kāi)發(fā)方式,所以最后生產(chǎn)的軟件仍然是個(gè)人或少數(shù)幾個(gè)人的頭腦風(fēng)暴的自由實(shí)現(xiàn),充滿了各種別人無(wú)法理解的編程技巧;它們往往只具有源程序,而沒(méi)有相關(guān)的使用說(shuō)明和各種文檔資料。這就造成軟件的可讀性和可維護(hù)性極差,即使是同一個(gè)人編寫的軟件在過(guò)一段時(shí)間之后,自己也無(wú)法讀懂。特別是后來(lái),隨著軟件數(shù)量的急劇膨脹,軟件的需求越來(lái)越復(fù)雜,軟件維護(hù)的難度也越來(lái)越大,軟件開(kāi)發(fā)的成本令人吃驚的高,從而導(dǎo)致越來(lái)越多的軟件開(kāi)發(fā)項(xiàng)目失敗,于是產(chǎn)生了軟件危機(jī)。

  3.軟件工程模式

  軟件生產(chǎn)的第三個(gè)時(shí)期是從20世紀(jì)70年代中期之后開(kāi)始的這段時(shí)間,也就是軟件工程模式時(shí)期。軟件工程的提出是為了解決軟件危機(jī)的。在1968年北大西洋公約組織的計(jì)算機(jī)科學(xué)家在聯(lián)邦德國(guó)召開(kāi)的國(guó)際學(xué)術(shù)會(huì)議上第一次提出了“軟件危機(jī)”(SoftwareCrisis)這個(gè)名詞,指出軟件危機(jī)是在計(jì)算機(jī)軟件的開(kāi)發(fā)和維護(hù)過(guò)程中所遇到的一系列嚴(yán)重問(wèn)題;它主要包括2個(gè)方面,一是如何開(kāi)發(fā)軟件來(lái)滿足不斷增長(zhǎng)、日趨復(fù)雜的需求;二是如何維護(hù)數(shù)量不斷膨脹的軟件產(chǎn)品。軟件危機(jī)的出現(xiàn),使得人們開(kāi)始對(duì)軟件及其特性進(jìn)行了更深一步的研究,人們改變了早期那些被認(rèn)為是優(yōu)秀的,但常常很難被別人看懂,通篇充滿了編程技巧的程序的看法;而普遍認(rèn)為優(yōu)秀的軟件除了功能正確、性能優(yōu)良以外,還應(yīng)該容易看懂、容易使用、容易修改和擴(kuò)充。于是在1968年秋季,NATO(北大西洋公約組織)的科技委員會(huì)召集了近50名一流的編程人員、計(jì)算機(jī)科學(xué)家和工業(yè)界巨頭,召開(kāi)了一次學(xué)術(shù)會(huì)議,討論和制定擺脫“軟件危機(jī)”的對(duì)策,并第一次提出了軟件工程(SoftwareEngineering)這個(gè)概念。

  軟件工程的提出,為人們提供了一種新的系統(tǒng)化規(guī)范化、數(shù)量化的工程原則和方法去進(jìn)行軟件的開(kāi)發(fā)和維護(hù),使得人們?cè)絹?lái)越認(rèn)識(shí)到,按照工程化的原則和方法來(lái)組織管理軟件的開(kāi)發(fā)與維護(hù)工作,是擺脫軟件危機(jī)的一個(gè)主要出路。于是從20世紀(jì)70年代中期之后一直到現(xiàn)在,以軟件工程為指導(dǎo)思想的軟件工程模式逐漸成為軟件生產(chǎn)的主要模式。以軟件工程模式進(jìn)行的軟件生產(chǎn)主要有以下一些特點(diǎn):1)軟件的范疇是:程序+數(shù)據(jù)+文檔。其中程序是按照事先設(shè)計(jì)的功能和性能要求執(zhí)行的指令序列;數(shù)據(jù)是程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu);而文檔是與程序開(kāi)發(fā)維護(hù)和使用有關(guān)的各種圖文文檔資料。

  2)軟件具有生命周期。軟件從提出需求到最后廢止不用,是有一個(gè)周期的。雖然說(shuō)這個(gè)周期隨著行業(yè)領(lǐng)域和軟件技術(shù)的不同而有所不同,但從軟件的開(kāi)發(fā)與維護(hù)過(guò)程來(lái)看,它們都會(huì)完成一個(gè)周期,經(jīng)歷過(guò)類似的階段。即計(jì)劃時(shí)期(問(wèn)題定義階段,可行性研究階段)、開(kāi)發(fā)時(shí)期(需求分析階段,軟件設(shè)計(jì)階段,編碼階段,測(cè)試階段)、運(yùn)行時(shí)期(維護(hù)階段)。

  3)以工程化的原理和方法來(lái)開(kāi)發(fā)和維護(hù)軟件。軟件工程的提出為人們提供了一整套的原則和方法來(lái)開(kāi)發(fā)和維護(hù)軟件,同時(shí)也指出軟件工程包括兩個(gè)部分,即軟件開(kāi)發(fā)技術(shù)和軟件項(xiàng)目管理。軟件開(kāi)發(fā)技術(shù)指的是軟件開(kāi)發(fā)方法學(xué)、軟件工具和軟件工程環(huán)境;而軟件項(xiàng)目管理則是指軟件的度量、項(xiàng)目估算、進(jìn)度控制、人員安排、配置管理和項(xiàng)目計(jì)劃等。

  4)軟件的分工越來(lái)越細(xì),需要組織協(xié)作。從軟件的生命周期來(lái)看,軟件從開(kāi)發(fā)到消亡包括3個(gè)時(shí)期8個(gè)階段,隨著軟件規(guī)模的不斷增大和軟件復(fù)雜度的急劇膨脹,每個(gè)階段都需要具有不同專長(zhǎng)的人分工協(xié)作,才能得以完成。這將進(jìn)一步導(dǎo)致軟件的分工越來(lái)越細(xì),從而導(dǎo)致出現(xiàn)不同的IT專業(yè)從業(yè)人員。5)軟件危機(jī)并沒(méi)有完全消除。軟件工程的出現(xiàn),雖然說(shuō)為消除軟件危機(jī)提供了一種新的系統(tǒng)的原理和方法,但它并不能完全消除軟件危機(jī)。統(tǒng)計(jì)數(shù)字表明,到目前為止雖然有很多成功的軟件項(xiàng)目,但也有許多軟件開(kāi)發(fā)項(xiàng)目是失敗的。

  4.軟件工廠模式

  其實(shí)早在1968年伴隨著軟件工程的概念提出,軟件工廠的概念也幾乎在同時(shí)被提了出來(lái),最早提出軟件工廠概念的可能就是R.W.Bemer了。他是基于通用電氣公司為了開(kāi)發(fā)一種提高軟件工程師生產(chǎn)力的新的軟件開(kāi)發(fā)模式而提出的。在他的軟件工廠的設(shè)計(jì)里,通過(guò)使用標(biāo)準(zhǔn)化軟件生產(chǎn)工具、計(jì)算機(jī)接口和帶有歷史數(shù)據(jù)的數(shù)據(jù)庫(kù)組成的。而在1969年第一個(gè)標(biāo)榜自己的軟件組織為軟件工廠的公司是日本的日立公司;但是到了1975年以后,軟件工廠的概念才開(kāi)始逐漸在日本和歐美的一些公司得到發(fā)展,如日本的NEC、東芝、富士通三菱等公司。在此期間,軟件工程得到了快速的發(fā)展和提高,而軟件工廠大多都還處于探索和實(shí)踐階段,一直到最近幾年,隨著軟件外包的流行,軟件工廠才又被提到學(xué)者們和各大軟件公司的面前。筆者認(rèn)為,軟件工廠主要有2種模式,一種是基于軟件開(kāi)發(fā)的軟件工廠,而另外一種是基于軟件集成的全自動(dòng)化的軟件工廠。

  (1)基于軟件開(kāi)發(fā)的軟件工廠

  這種形式的軟件工廠是以軟件工程和軟件的生命周期作為軟件公司的管理和開(kāi)發(fā)的指導(dǎo)思想,著重軟件的開(kāi)發(fā)和管理。其最主要的體現(xiàn)在3個(gè)方面,1)在公司的組織劃分和項(xiàng)目及人員管理上深入貫徹落實(shí)軟件工程思想,強(qiáng)調(diào)軟件開(kāi)發(fā)的“工程”性,把軟件的設(shè)計(jì)、開(kāi)發(fā)、測(cè)試、維護(hù)和管理當(dāng)作一項(xiàng)系統(tǒng)工程來(lái)抓,表明軟件不僅僅是編寫代碼的工作,而需要各個(gè)學(xué)科的綜合應(yīng)用和各部門團(tuán)隊(duì)之間的通力合作,才能得以實(shí)現(xiàn)。2)嚴(yán)格項(xiàng)目管理和改進(jìn)軟件過(guò)程。承認(rèn)軟件開(kāi)發(fā)是具有相當(dāng)風(fēng)險(xiǎn)的工作,為了降低風(fēng)險(xiǎn),使項(xiàng)目能夠按照預(yù)定的成本、進(jìn)度和質(zhì)量順利完成,而對(duì)軟件開(kāi)發(fā)的成本、人員、進(jìn)度、質(zhì)量和風(fēng)險(xiǎn)等進(jìn)行科學(xué)地分析和管理,同時(shí)結(jié)合先進(jìn)的管理軟件和工具軟件,如引進(jìn)先進(jìn)的國(guó)際管理標(biāo)準(zhǔn)ISO9000和CMM等,對(duì)公司的工作流程進(jìn)行分析、整理、改進(jìn)和完善,形成適合自己公司發(fā)展的軟件過(guò)程和相關(guān)文檔,并指導(dǎo)軟件項(xiàng)目的開(kāi)發(fā)。3)廣泛地使用軟件復(fù)用技術(shù)。在公司級(jí)別上建立軟件復(fù)用類庫(kù),對(duì)各知識(shí)領(lǐng)域的可復(fù)用構(gòu)件進(jìn)行分類和提煉,并在全公司上下和各個(gè)項(xiàng)目之間廣泛推行和落實(shí),從而提升各個(gè)團(tuán)隊(duì)乃至整個(gè)公司的軟件生產(chǎn)質(zhì)量和生產(chǎn)力。

  (2)基于軟件集成的軟件工廠

  以軟件集成為核心的軟件工廠,強(qiáng)調(diào)的是軟件“集成”。就像傳統(tǒng)行業(yè)的產(chǎn)品生產(chǎn)線一樣,軟件工廠拿到軟件需求,通過(guò)軟件的需求分析和設(shè)計(jì),確定要達(dá)到相關(guān)功能和性能所需要的各種軟件構(gòu)件,在軟件工廠的集成平臺(tái)上通過(guò)集成而生產(chǎn)出符合用戶要求的軟件,它是一個(gè)高度自動(dòng)化的軟件生產(chǎn)模式?;诩傻能浖S,它的主要工作大致可以分為2個(gè)階段。第一個(gè)階段是軟件的需求分析和設(shè)計(jì)。在這一階段,軟件公司針對(duì)不同的軟件需求,集中公司的信息技術(shù)專家、管理專家、行業(yè)專家和項(xiàng)目開(kāi)發(fā)人員組成項(xiàng)目組,對(duì)軟件的需求進(jìn)行分析,設(shè)計(jì)出生產(chǎn)工藝方案,繼而按方案對(duì)所需要的軟件構(gòu)件(中間件、模塊等)進(jìn)行選型和配置。第二個(gè)階段是在軟件集成平臺(tái)上對(duì)各種軟件構(gòu)件進(jìn)行組裝、集成和客戶化,以最終生產(chǎn)出符合客戶要求的軟件產(chǎn)品。由此可見(jiàn),以集成為核心的軟件工廠,它不強(qiáng)調(diào)軟件的開(kāi)發(fā),或者說(shuō)它不怎么關(guān)心軟件的開(kāi)發(fā),而是通過(guò)使用各種軟件集成工具來(lái)搭建軟件集成平臺(tái),以領(lǐng)域標(biāo)準(zhǔn)和支持這些標(biāo)準(zhǔn)的領(lǐng)域中間件和構(gòu)件為原料來(lái)實(shí)現(xiàn)軟件生產(chǎn)自動(dòng)化的。

評(píng)論  |   0條評(píng)論