中山大学软件所软件工程(中山大学软件研究所 李磊)
中山大學(xué)軟件所軟件工程
——中山大學(xué)軟件研究所 李磊 二○○六年十月
明顯,軟件市場是絕對(duì)存在的,并且是“方興未艾”,但是另一方面,多數(shù)軟件公司生存都是困難的。CMM(軟件成熟度模型)的提出并沒有使的這一局面得到根本的變化。如果說CMM提出軟件開發(fā)要透明化的問題,則我們研究的“復(fù)雜應(yīng)用軟件開發(fā)方法及其平臺(tái)”試圖回答如何透明化的問題。這一答案可(部分地)解決市場絕對(duì)存在和公司生存困難的悖論。
一、前言
人們常說“軟件誰都會(huì)做,但是誰都做不好”。
軟件公司的潮起潮落也說明了這一點(diǎn)。
成功的軟件公司通常都不太像軟件公司,例如,盛大,新浪等,而真正的軟件公司通常都是舉步艱難的公司,或者在歷史上留下悲壯的一頁。
為什么?
這些公司同樣都有過良好的市場機(jī)會(huì),但是也都同樣地缺少關(guān)鍵的條件:知道如何可以可*地把軟件做好。
學(xué)術(shù)界還不能說已經(jīng)找到了可以可*地“把軟件做好”的方法,因?yàn)樵诮裉鞂W(xué)術(shù)界還在討論著原始的問題:軟件是工程結(jié)果,還是藝術(shù)結(jié)果。
自從CMM(Capability Maturity Model,能力成熟度模型)被提出以后,人們認(rèn)為軟件工程的問題已基本解決,但事實(shí)并非如此。
CMM的核心思想是“軟件開發(fā)過程透明化”,但是它沒有搞清楚“軟件開發(fā)過程”和“過程透明化”是兩個(gè)事情。我們認(rèn)為只有存在可操作的“軟件開發(fā)過程”,才可能有“過程透明化”的事情成立。
CMM對(duì)于“過程透明化”的敘述是完全和深入的,但是對(duì)于可操作的“軟件開發(fā)過程”的敘述是平凡的。目前學(xué)術(shù)和企業(yè)界已經(jīng)認(rèn)識(shí)到這一點(diǎn),并且《計(jì)算機(jī)世界》,《軟件學(xué)報(bào)》和國際上的許多學(xué)術(shù)論文都有論述。
總之,可*地“把軟件做好”和使“軟件公司盈利”還都是一個(gè)開放的問題。
二、軟件公司盈利
軟件公司盈利一定要解決如下問題:
1、確定一個(gè)可盈利的市場――定位
2、可*地“把軟件做好”――信譽(yù)
3、較低的軟件開發(fā)維護(hù)成本――盈利
4、公司知識(shí)積累――根本
如果解決了上述4個(gè)問題,并不能保證成為一個(gè)成功的軟件公司,但是如果只要有一條不能滿足,則一定不會(huì)成為一個(gè)一個(gè)成功的軟件公司。
確定一個(gè)可盈利的市場――定位
應(yīng)當(dāng)由公司回答。
可*地“把軟件做好”――信譽(yù)
似乎每個(gè)公司都有答案,但是又似乎都沒有答案。
軟件開發(fā),維護(hù)成本――盈利
是老板想的事,連CMM中都沒有論述。
公司知識(shí)積累――根本
公司立足之本。
三、把軟件做好
就象手工能夠造出好的汽車但是形成不了汽車工業(yè)一樣,手工也能造出好的軟件但無法形成軟件產(chǎn)業(yè)。原因是手工也能造的軟件成本太高。軟件生產(chǎn)工業(yè)化是降低成本的必然之路。軟件生產(chǎn)工業(yè)化必須解決采用工業(yè)化方法。
● 把問題搞清楚
● 把事情做出來
為了“把問題搞清楚”,我們研究了主謂賓需求分析方法。
主謂賓需求分析方法是指把軟件的使用者當(dāng)作主語,所做的操作當(dāng)作謂語和產(chǎn)生的“負(fù)作用”當(dāng)作賓語的一種分析方法。其思想來源于機(jī)械制圖中的視圖方法,并且結(jié)果是:
1.給出了需求獲取及分析標(biāo)準(zhǔn)過程。
2.過程中的每一步基本是演繹產(chǎn)生的(避免構(gòu)造產(chǎn)生)。
3.每一個(gè)視角都是單純的,和不同階段的語言都是統(tǒng)一的。
4.每一步的結(jié)果都是可檢驗(yàn)的。
5.從自然語言到形式化描述是逐漸過度的。
等等。
同時(shí)方法不僅提供了工程化的需求獲取及描述的方法,并且具有可演繹性。這為驗(yàn)證結(jié)果一致和完全性奠定了基礎(chǔ),同時(shí)可演繹性為需求整理,例如:流程重組和表單優(yōu)化提供了便利。
具體的主謂賓將由專門的課程講解。
為了“把事情做出來”,我們研究了兩個(gè)平臺(tái):應(yīng)用軟件裝配平臺(tái)和全局流程集成平臺(tái)。
應(yīng)用軟件裝配平臺(tái)
應(yīng)用軟件開發(fā)的生產(chǎn)線組織方法是一種理想的方法,也是組織者希望的方法,但這是困難的。
中大軟件所研究的應(yīng)用程序裝配平臺(tái)可以部分地實(shí)現(xiàn)軟件開發(fā)的生產(chǎn)線組織,因?yàn)槠脚_(tái)可以使得:
1、每個(gè)程序員生產(chǎn)的只是一個(gè)標(biāo)準(zhǔn)部件。
2、標(biāo)準(zhǔn)部件組裝成的部件。
3、再把部件裝配成程序。
同時(shí),平臺(tái)根據(jù)說明性定義的:
1、流程自動(dòng)地調(diào)度用戶界面,從而實(shí)現(xiàn)動(dòng)態(tài)業(yè)務(wù)流程。
2、操作(或數(shù)據(jù))權(quán)限,自動(dòng)地組織菜單,從而實(shí)現(xiàn)動(dòng)態(tài)操作(或數(shù)據(jù))許可。
3、部件間信息交換規(guī)則,自動(dòng)地實(shí)現(xiàn)部件間的信息交換,從而實(shí)現(xiàn)了部件的可交換性。
從而實(shí)現(xiàn)了:
1、每個(gè)程度員編寫程序都是“單純的”。
2、程序員不必掌握應(yīng)用系統(tǒng)的業(yè)務(wù)知識(shí)。
3、每個(gè)程序員的工作都是可計(jì)量的。
平臺(tái)相當(dāng)于生產(chǎn)線上的工裝設(shè)備。只有合適的設(shè)備才能實(shí)現(xiàn)工業(yè)化生產(chǎn),否則軟件工程化就是一句空話,例如CMM。
應(yīng)用軟件裝配平臺(tái)適用于以操作為中心并且流程性不強(qiáng)的復(fù)雜應(yīng)用系統(tǒng),例如信息管理為中心的業(yè)務(wù)系統(tǒng)。
試驗(yàn)結(jié)果令人鼓舞。
全局流程集成平臺(tái)
在“計(jì)算機(jī)就是網(wǎng)絡(luò)”的今天,計(jì)算機(jī)應(yīng)用系統(tǒng)(如:信息,業(yè)務(wù)或者數(shù)據(jù)分析系統(tǒng))都已不再是獨(dú)立的系統(tǒng),否則就是所說的“信息孤島”。為了消除信息孤島通常采用的是數(shù)據(jù)耦合方法,或說設(shè)計(jì)成一個(gè)“大系統(tǒng)”。有研究指出,應(yīng)用軟件同應(yīng)用問題的復(fù)雜性不是線性增長的。明顯當(dāng)問題的復(fù)雜程度超過了人腦正常可控制的程度,這時(shí)計(jì)算機(jī)應(yīng)用系統(tǒng)的失敗是難以避免的。
全局流程集中平臺(tái)(GPID)通過把“大系統(tǒng)”分散并且承認(rèn)“信息孤島” 的合理性的方法,用松耦合的方法使得分散的系統(tǒng)或者“信息孤島”有效的整合,例如:
1、全局信息交換
2、全局流程調(diào)度
3、全局流程整合
4、全局流程同步
來解決這一問題。
在GPID中,全局信息的交換規(guī)則,全局流程的調(diào)度策略及交換信息的轉(zhuǎn)換方法和流程同步都是說明性定義的,因此是靈活的。
全局的流程集成平臺(tái)理解為通信中的交換機(jī)。難以想象如果沒有交換機(jī),通信系統(tǒng)將會(huì)是多少復(fù)雜和難以控制的。軟件間的關(guān)聯(lián)也是同理,因此GPID也被稱為“軟件交換機(jī)”。
全局流程集成平臺(tái)適用于以流程為中心并且流程性強(qiáng)的復(fù)雜應(yīng)用系統(tǒng),例如:帶有各種審批性質(zhì)的業(yè)務(wù)系統(tǒng)。
由于這兩個(gè)平臺(tái)沒有集成進(jìn)任何業(yè)務(wù)系統(tǒng)的知識(shí),因此它們可以被看作是開發(fā)平臺(tái)。當(dāng)開發(fā)平臺(tái)集成進(jìn)某業(yè)務(wù)系統(tǒng)的知識(shí)時(shí),就可構(gòu)造出高效的應(yīng)用開發(fā)平臺(tái)。
四、軟件開發(fā),維護(hù)成本
如果每一個(gè)軟件項(xiàng)目的開發(fā)過程都是一個(gè)重新研發(fā)的過程,則軟件的開發(fā)成本是不可能降低的。
如果應(yīng)用軟件沒有一個(gè)可維護(hù)的結(jié)構(gòu),則軟件的維護(hù)成本也是不可能降低的。
盡可能的減少對(duì)所有人的依賴。
說明性程序設(shè)計(jì)是減少軟件開發(fā)和維護(hù)成本的基本方法。
說明性程序設(shè)計(jì)并不是新的概念,其基本思想是“做什么”和“怎么做”相分離,例如:SQL , PROLOG等。
在工業(yè)化生產(chǎn)中,適當(dāng)?shù)姆止な墙档蜕a(chǎn)成本的主要方法,例如:可重復(fù)的簡單工作可由生產(chǎn)工人完成。對(duì)于軟件生產(chǎn)也是如此。說明性程序設(shè)計(jì)可以部分地達(dá)到這一目的。上述兩個(gè)平臺(tái)基本上達(dá)到“做什么”和“怎么做”相分離的目的。
“做什么”對(duì)應(yīng)于業(yè)務(wù)邏輯,通常是可以工業(yè)化的。
“怎么做”對(duì)應(yīng)計(jì)算機(jī)技術(shù),通常是難以工業(yè)化的。
如果“做什么”由軟件“藍(lán)領(lǐng)”完成,則明顯可以降低軟件的開發(fā)成本。
不僅如此,平臺(tái)還實(shí)現(xiàn)了業(yè)務(wù)維護(hù)和計(jì)算機(jī)技術(shù)維護(hù)相分離,明顯可以大大地降低維護(hù)成本。
五、公司知識(shí)積累
為什么工業(yè)制造利潤低,但是仍然可以盈利,其主要原因是公司積累,特別是知識(shí)積累。
軟件公司實(shí)現(xiàn)公司知識(shí)積累是困難的。
軟件公司盈利地模式同制造業(yè)有一點(diǎn)是相同的,那就是重復(fù)。
重復(fù)也可分為業(yè)務(wù)知識(shí)和計(jì)算機(jī)技術(shù)重復(fù)。
軟件所研究的主謂賓需求分析方法不但提出了有效的需求獲取,表達(dá)和分析方法,同時(shí)也定義了需求表達(dá)標(biāo)準(zhǔn),并且是“有效的”。明顯,只有有了“有效的”標(biāo)準(zhǔn),才能談的上公司業(yè)務(wù)知識(shí)積累。這才是公司最大的財(cái)富。
軟件所研究的應(yīng)用軟件裝配平臺(tái)和全局流程集成平臺(tái)不但提供了復(fù)雜應(yīng)用軟件開發(fā)基礎(chǔ),同時(shí)也“凝固”公司的計(jì)算機(jī)技術(shù)(不必每個(gè)人去談什么J2EE)知識(shí)。明顯,這些知識(shí)的重復(fù),可以大大地提高軟件企業(yè)地核心競爭力。
六、結(jié)束語
上述結(jié)果都已經(jīng)過試用,效果令人鼓舞。
學(xué)校本來就是應(yīng)當(dāng)同企業(yè)經(jīng)常交流的,國外就是如此。
此課程是專門對(duì)應(yīng)于軟件所的非正式特殊課程,專門講述的是軟件所的研究成果的。
總結(jié)
以上是生活随笔為你收集整理的中山大学软件所软件工程(中山大学软件研究所 李磊)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何在 SAP 电商云 Spartacu
- 下一篇: iptables总结,开启端口,查看端口