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