摘要:軟件產(chǎn)品是指軟件開發(fā)商根據(jù)市場需要開發(fā)的、具有一定適用性和潛在客戶的、可銷售的軟件成品。它區(qū)別于應(yīng)特定客戶需求或根據(jù)訂單開發(fā)的軟件商品,通常應(yīng)具有更高的通用性和適應(yīng)性。但它的通用性和適應(yīng)性不是輕而易舉就能達(dá)到的。要實(shí)現(xiàn)軟件的產(chǎn)品化,就必須在軟件產(chǎn)品的設(shè)計(jì)上下一番功夫。
關(guān)鍵詞: 軟件設(shè)計(jì);軟件工程;需求分析
中圖分類號:TP317文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)28-0133-02
Requirement Analysis in Software Designed
DONG Ji-yang
(Liaoning University of International Business and Economics,DaLian 116052, China)
Abstract: The software product is the software finished product developing business to need to develop according to the marketplace, having certain serviceability and the lurking customer, but selling point to a software. It differentiates the software commodity needing or developing according to the order form in responding to the specially appointed customer,should have higher General Availability and adaptability generally. But, its General Availability and adaptability fault are an easy job being therefore likely to reach.Should be product-rization realizing a software's,must depend on about once foreign acrobatic fighting of software product design right away.
Key words: software designed; software engineering;requirement analysis
1 軟件產(chǎn)品設(shè)計(jì)的重要意義
所謂軟件產(chǎn)品設(shè)計(jì),在本文中指對軟件產(chǎn)品的功能與架構(gòu)進(jìn)行設(shè)計(jì)。用傳統(tǒng)的軟件工程術(shù)語來說,它覆蓋軟件工程的可行性研究、需求分析、系統(tǒng)設(shè)計(jì)幾個(gè)階段。用RUP(Rational Unified Process:統(tǒng)一軟件過程)術(shù)語來說,它是需求定義與軟件構(gòu)架設(shè)計(jì)的結(jié)果。包括了需求分析、功能定義、技術(shù)方案以及需求管理的策略。
企業(yè)做完一個(gè)產(chǎn)品后,便不得不長期甚至永久地投入幾個(gè)人(通常還是曾參與研發(fā)的技術(shù)骨干)對產(chǎn)品進(jìn)行維護(hù)、跟蹤和服務(wù);企業(yè)在做同類項(xiàng)目時(shí),還不得不投入幾乎相等的資源;系統(tǒng)集成企業(yè)或以管理類項(xiàng)目為主的研發(fā)企業(yè)長期為工程所困,良好的市場需求并不能帶來利潤回報(bào)的規(guī)模增加,等等。造成以上現(xiàn)象,一是由于企業(yè)的軟件過程成熟度不高,另一個(gè)原因,就是缺乏清晰、深入的軟件產(chǎn)品設(shè)計(jì)。下面從功能定位入手,探討怎樣進(jìn)行產(chǎn)品設(shè)計(jì)。
2 軟件產(chǎn)品的分類及定位
與一般的針對用戶明確需求的軟件項(xiàng)目的需求分析稍有不同,軟件產(chǎn)品的功能定義更多的是一種“定義”,而不象面向特定用戶的系統(tǒng),其需求定義是一種記錄、歸納和分析的過程。對于特定用戶的軟件需求,我們也有必要在滿足特定用戶的特定需求的同時(shí),對相關(guān)技術(shù)和業(yè)務(wù)進(jìn)行適當(dāng)?shù)姆治龊皖A(yù)期,使得項(xiàng)目的成果具有更好的適用性和重用價(jià)值。
軟件產(chǎn)品可以分為兩種:面向最終用戶的和面向軟件開發(fā)或集成商的。第一種主要指面向不限于計(jì)算機(jī)技術(shù)人員、完成一定應(yīng)用功能的系統(tǒng);后者指供專業(yè)的軟件開發(fā)人員使用、用于構(gòu)造第一種產(chǎn)品的“中間”產(chǎn)品,它可能是一個(gè)完整的系統(tǒng)平臺,也可能是一個(gè)開發(fā)包或一個(gè)小的程序工具。不同種類的產(chǎn)品具有不同的特性要求:面向集成商/開發(fā)商的產(chǎn)品要求可靠、可擴(kuò)充、有詳盡的技術(shù)說明、有一定的技術(shù)適應(yīng)性;面向最終用戶的產(chǎn)品則要求功能完整、可靠、可維護(hù)、有較好的應(yīng)用適應(yīng)性。
其實(shí),設(shè)計(jì)人員還可以根據(jù)市場形式開發(fā)介于以上二者之間的“半產(chǎn)品”,即通過簡單定制可以\"生產(chǎn)\"出應(yīng)用系統(tǒng)的\"半成品\",但又不同于嚴(yán)格意義上的開發(fā)平臺或是零散的開發(fā)工具包。這種\"半成品\"很實(shí)用,不僅可以提高本企業(yè)的生產(chǎn)率,為產(chǎn)品系列化打好伏筆,還可以在適當(dāng)?shù)氖袌鰰r(shí)機(jī)作為商品提供給系統(tǒng)集成商,為企業(yè)帶來額外的利益。
到底要開發(fā)什么類型的產(chǎn)品,是軟件產(chǎn)品設(shè)計(jì)的第一個(gè)重要決策。
3 軟件產(chǎn)品的非功能性需求定義
軟件產(chǎn)品的需求可以分為功能性需求和非功能性需求。其中軟件產(chǎn)品的非功能性需求是常常被輕視、甚至被忽視的一個(gè)重要方面。其實(shí),軟件產(chǎn)品非功能性定義不僅決定產(chǎn)品的質(zhì)量,還在很大程度上影響產(chǎn)品的功能需求定義。如果事先缺乏很好的非功能性需求定義,結(jié)果往往是使產(chǎn)品在非功能性需求面前捉襟見肘,甚至淹沒功能性需求給用戶帶來的價(jià)值。
所謂非功能性需求,是指軟件產(chǎn)品為滿足用戶業(yè)務(wù)需求而必須具有的、除功能需求以外的特性。軟件產(chǎn)品的非功能性需求包括系統(tǒng)的性能、可靠性、可維護(hù)性、可擴(kuò)充性、對技術(shù)和對業(yè)務(wù)的適應(yīng)性,等等。下面對其中的某些指標(biāo)加以說明。
3.1 系統(tǒng)的完整性
指為完成業(yè)務(wù)需求和系統(tǒng)正常運(yùn)行本身要求而必須具有的功能,這些功能往往是用戶不能提出的。用戶管理功能是另一項(xiàng)必不可少的功能,它定義哪些用戶可以以什么樣的功能使用系統(tǒng)。好的用戶管理功能不僅可以有效控制用戶對系統(tǒng)的使用,使系統(tǒng)處于一個(gè)安全、負(fù)載合理的運(yùn)行狀況,還能提高系統(tǒng)的應(yīng)用適應(yīng)性。
3.2 系統(tǒng)的可擴(kuò)充性與可維護(hù)性
指系統(tǒng)對技術(shù)和業(yè)務(wù)需求變化的支持能力。當(dāng)技術(shù)變化或業(yè)務(wù)變化時(shí),不可避免將帶來系統(tǒng)的改變―不僅要進(jìn)行設(shè)計(jì)實(shí)現(xiàn)的修改,甚至要進(jìn)行產(chǎn)品定義的修改。好的軟件設(shè)計(jì)應(yīng)在系統(tǒng)構(gòu)架上考慮能以盡量少的代價(jià)適應(yīng)這種變化。常用的技術(shù)方法有面向?qū)ο蟮姆治雠c設(shè)計(jì)以及設(shè)計(jì)模式。
3.3 技術(shù)適應(yīng)性與應(yīng)用適應(yīng)性
系統(tǒng)的適應(yīng)性與系統(tǒng)的可擴(kuò)充性和可維護(hù)性的概念相似,也表現(xiàn)產(chǎn)品的一種應(yīng)變能力,但適應(yīng)性強(qiáng)調(diào)的是在不進(jìn)行系統(tǒng)設(shè)計(jì)的修改的前提下對技術(shù)與應(yīng)用需求的適應(yīng)能力。軟件產(chǎn)品的適應(yīng)性通常表現(xiàn)為產(chǎn)品的可配置能力。
對以上重要的非功能性需求進(jìn)行逐一分析后,就可以開始進(jìn)行產(chǎn)品功能設(shè)計(jì)了。實(shí)際上,非功能性需求定義將反映到系統(tǒng)的功能設(shè)計(jì)中,表現(xiàn)為系統(tǒng)的架構(gòu)。下一節(jié)中將會描述怎樣實(shí)現(xiàn)系統(tǒng)的適應(yīng)性。
4 軟件產(chǎn)品的功能設(shè)計(jì)要點(diǎn)
4.1 產(chǎn)品核心功能的選取
軟件產(chǎn)品的設(shè)計(jì),一定有一個(gè)明確的目標(biāo):或是為了解決某個(gè)或某類具體的應(yīng)用問題,或是為解決問題提供一個(gè)或一組工具。產(chǎn)品的目標(biāo)決定了產(chǎn)品的核心功能,產(chǎn)品的其他功能都是對這一功能的補(bǔ)充或圍繞這一功能提供的相關(guān)服務(wù)。適當(dāng)選取核心功能,有幾點(diǎn)原則:
1)規(guī)模適當(dāng),不貪大求全,堅(jiān)持\"有所不為\"。具體來說,在一個(gè)產(chǎn)品中,非核心功能盡量的簡化和弱化。
2)了解應(yīng)用要求以外,還可以根據(jù)關(guān)鍵技術(shù)進(jìn)行版本規(guī)劃。由于不同的技術(shù)對設(shè)備會有不同要求、并產(chǎn)生不同的應(yīng)用效果,因此可以在相同的業(yè)務(wù)框架下構(gòu)造基于不同技術(shù)的不同產(chǎn)品。
3)盡量遵從標(biāo)準(zhǔn)協(xié)議和行業(yè)標(biāo)準(zhǔn)。除了計(jì)算機(jī)系統(tǒng)有多種技術(shù)標(biāo)準(zhǔn)和協(xié)議外,各行各業(yè)還有自己的行業(yè)標(biāo)準(zhǔn)。有時(shí)如果不參照標(biāo)準(zhǔn)或自定義一些協(xié)議處理解決方案帶來一時(shí)的快捷,但往往生命力和可靠性經(jīng)不起時(shí)間的考驗(yàn),在系統(tǒng)與其他相關(guān)系統(tǒng)聯(lián)合使用時(shí)就會帶來問題。
4.2 多重可重用性的分析與設(shè)計(jì)
可重用性是現(xiàn)在軟件設(shè)計(jì)較為重視的一個(gè)特性??芍赜眯圆粌H應(yīng)該在系統(tǒng)設(shè)計(jì)中考慮,還應(yīng)該在系統(tǒng)分析時(shí)就加以考慮,使系統(tǒng)達(dá)到多重可重用性。這就要求我們不僅要采用面向?qū)ο蟮乃枷雭磉M(jìn)行系統(tǒng)分析,用對象概念構(gòu)造系統(tǒng)行為,還要求我們在更高層次上對系統(tǒng)的操作模式或應(yīng)用模式進(jìn)行抽象,發(fā)現(xiàn)更高級的可重用性
4.3 輔助功能的設(shè)計(jì)
這里提到的\"設(shè)計(jì)得當(dāng)\",就包括輔助功能的設(shè)計(jì)這一重要因素。前面所述的非功能性需求有一些就反映在輔助功能的設(shè)計(jì)中。在我們把最終業(yè)務(wù)用戶作為產(chǎn)品的唯一用戶時(shí),我們把全部注意力放在產(chǎn)品的主要功能設(shè)計(jì)上;當(dāng)我們把產(chǎn)品的用戶范圍擴(kuò)大到系統(tǒng)管理人員、數(shù)據(jù)維護(hù)人員以及系統(tǒng)集成商/軟件開發(fā)商時(shí),我們就必須對產(chǎn)品的輔助功能給予足夠的關(guān)注。
5 軟件產(chǎn)品工程-方法和規(guī)范
軟件產(chǎn)品設(shè)計(jì)同樣也是一項(xiàng)軟件工程,適用軟件工程管理的規(guī)律,只是在功能設(shè)計(jì)上有更大的自主性――進(jìn)行產(chǎn)品設(shè)計(jì)時(shí)可能不必完全遵從某個(gè)用戶的需求。但這一自主性是為了以更高的質(zhì)量滿足更多用戶的需求。從這一點(diǎn)來說,軟件產(chǎn)品工程并無更大的自由度。所有的軟件工程規(guī)范都適用于軟件產(chǎn)品的開發(fā)。由于軟件產(chǎn)品往往對質(zhì)量有更高的要求,且在設(shè)計(jì)中有更多的不確定性,因此特別要做好需求管理、配置管理與質(zhì)量管理。
總之,軟件需求分析方法和工具的使用,對我們軟件開發(fā)過程影響是很深遠(yuǎn)的,選用高效能的正確的方法與工具,可以使我們的軟件更加正確地反映現(xiàn)實(shí)需求,更加具有可用性、可擴(kuò)展性和可維護(hù)性;降低了軟件項(xiàng)目的風(fēng)險(xiǎn)。
參考文獻(xiàn):
[1] 田志剛.企業(yè)信息化的十條原則[EB/OL].[2008-6-17].http://www.lniib.gov.cn/lniib/news/news_content.jsp?ntype=1nid=212.
[2] 王小銘.管理信息系統(tǒng)及其開發(fā)技術(shù)[M].北京:電子工業(yè)出版社,2003.
[3] Siegel J,Shim J.數(shù)據(jù)庫管理系統(tǒng)的管理人員必讀[M].尹買華,譯.北京:清華大學(xué)出版社,2004.