摘 要:為了開發(fā)出真正滿足用戶需求的軟件產(chǎn)品,首先必須知道用戶的需求。對軟件需求的深入理解是軟件開發(fā)獲得成功的前提和關(guān)鍵。本文從軟件設(shè)計的需求分析和需求分析對系統(tǒng)體系結(jié)構(gòu)設(shè)計的影響兩方面,淺談了軟件開發(fā)人員怎樣才能全面、準(zhǔn)確、具體地了解用戶需求,以確定“目標(biāo)系統(tǒng)必須做什么”的問題以及根據(jù)需求的變化,設(shè)計合適的體系結(jié)構(gòu),達(dá)到增強(qiáng)軟件生命力的目的。 

  關(guān)鍵詞:軟件;抽取;需求 

  信息化產(chǎn)業(yè)經(jīng)過幾十年的發(fā)展和建設(shè),正逐步從最初的用于解決局部問題的小型或簡單軟件,向復(fù)雜、成體系、網(wǎng)絡(luò)化的企業(yè)級系統(tǒng)擴(kuò)展。軟件系統(tǒng)的構(gòu)成不再只是模塊,越來越多的是功能構(gòu)件和子系統(tǒng),使軟件系統(tǒng)成為“系統(tǒng)的系統(tǒng)”,或叫復(fù)雜系統(tǒng)。如何構(gòu)建可擴(kuò)充、可裁剪、可生長的滿足企業(yè)應(yīng)用的大型軟件系統(tǒng),已成為軟件業(yè)研究的重要課題之一。其中,復(fù)雜系統(tǒng)的結(jié)構(gòu)設(shè)計是人們最關(guān)注的核心問題。 

  1 軟件設(shè)計的需求分析 

  軟件通常是因需求才進(jìn)行設(shè)計開發(fā),由用戶方從解決業(yè)務(wù)問題的角度提出,均以專業(yè)的術(shù)語或事務(wù)性的語言描述。高質(zhì)量、清晰準(zhǔn)確的需求描述,可有效約束軟件系統(tǒng)的結(jié)構(gòu)設(shè)計和功能定位。邊緣清晰、描述規(guī)范的要求,會在一定程度上降低軟件設(shè)計和開發(fā)的成本,提高軟件質(zhì)量和開發(fā)效率。但是,需求的成長和變化,往往伴隨軟件的整個開發(fā)過程,這種現(xiàn)狀使得軟件設(shè)計的難度不斷增加,程序開發(fā)也從傳統(tǒng)的開發(fā)方法向敏捷編程轉(zhuǎn)化。 

  用戶基于一定的業(yè)務(wù)需要提出需求,通常不能直接指導(dǎo)軟件的開發(fā),只有經(jīng)過軟件設(shè)計者的分析提取,通過規(guī)范的技術(shù)語言描述,形成面向軟件開發(fā)者的需求規(guī)格說明,才能指導(dǎo)軟件的研制。抽取需求是軟件設(shè)計師必須完成的工作,傳統(tǒng)的需求抽取方法一般包括面談、問卷、觀察和業(yè)務(wù)文檔研究等,這些方法簡單、成本低,對業(yè)務(wù)邏輯清晰、封閉性較好的需求比較適合,而對復(fù)雜且很難封閉的需求,采用傳統(tǒng)的抽取方法,則風(fēng)險很大。在軟件開發(fā)領(lǐng)域,需求抽取方法有原型法、聯(lián)合應(yīng)用開發(fā)法和快速應(yīng)用開發(fā)法三種。 

  1.1 原型法 

  通過構(gòu)造軟件演示系統(tǒng),即根據(jù)理解的需求,建立一個快速而粗糙的工作模型,由可視化方法獲得用戶的反饋。 

  1.2 聯(lián)合應(yīng)用開發(fā)法 

  是將領(lǐng)導(dǎo)、用戶、開發(fā)人員、系統(tǒng)設(shè)計師等召集起來通過會議的方式,集中所有人的智慧,對要求進(jìn)行分析抽取。 

  1.3 快速應(yīng)用開發(fā)法 

  就是集前兩種方法,加上最優(yōu)方案的系統(tǒng)研制而進(jìn)行的一種需求抽取方法,是一種快速軟件開發(fā)方法。 

  以上是目前常被采用的需要抽取方法,但對于系統(tǒng)分析員或系統(tǒng)設(shè)計師來說,無論采用哪種方法,都必須面臨提取關(guān)鍵需求、判斷需求增長點(diǎn)和發(fā)展方向的問題。 

  2 需求分析對系統(tǒng)體系結(jié)構(gòu)設(shè)計的影響 

  2.1 抽取影響軟件結(jié)構(gòu)的需求,是需求分析的核心 

  關(guān)鍵需求是軟件結(jié)構(gòu)設(shè)計的核心,而提取關(guān)鍵需求是軟件結(jié)構(gòu)設(shè)計師必備的技能。以一個數(shù)據(jù)錄入軟件為例,一般需要提供一個交互式界面,由用戶鍵入所需數(shù)據(jù),提交存儲到文件或數(shù)據(jù)庫里即可。但用戶要求錄入的數(shù)據(jù)項,應(yīng)能隨著業(yè)務(wù)的不斷變化而進(jìn)行增加或刪減,可多人同時進(jìn)行錄入。同時,要求對存儲的數(shù)據(jù)按照需要的方式進(jìn)行查詢調(diào)閱,甚至進(jìn)行一定的復(fù)合計算或評估分析等。對于這樣的需求,錄入項不斷變化、多人同時操作、存儲要求等都是核心元素,這些元素將直接影響軟件結(jié)構(gòu)的設(shè)計。軟件設(shè)計應(yīng)考慮分布式并發(fā)機(jī)制和大量的數(shù)據(jù)存儲訪問要求。這些需求均與功能無關(guān),但會影響軟件結(jié)構(gòu)的設(shè)計。數(shù)據(jù)庫訪問相關(guān)的軟件,一般采用傳統(tǒng)的C/S結(jié)構(gòu)。當(dāng)用戶增加到一定量時,該結(jié)構(gòu)會導(dǎo)致數(shù)據(jù)庫服務(wù)器負(fù)載加重,甚至系統(tǒng)崩潰。為了適應(yīng)這種變化,應(yīng)采用多層結(jié)構(gòu),將用戶操作與數(shù)據(jù)存儲進(jìn)行分離。采用多層結(jié)構(gòu),不僅可以緩解數(shù)據(jù)庫服務(wù)訪問壓力,還能降低數(shù)據(jù)庫變化給用戶操作帶來的影響。錄入項的變化需求,潛在地存在著數(shù)據(jù)項擴(kuò)充、界面調(diào)整等功能要求。一般情況下,完全適應(yīng)這種變化的軟件很難設(shè)計。為此,可把錄入項作為配置要素,界面設(shè)計和數(shù)據(jù)存儲項根據(jù)配置項進(jìn)行定制,應(yīng)用服務(wù)層要在接口設(shè)計上考慮數(shù)據(jù)項的擴(kuò)充能力。具有這類需求的軟件,一般由界面構(gòu)造工具、錄入界面、應(yīng)用服務(wù)軟件和數(shù)據(jù)庫服務(wù)器構(gòu)成。 

  在抽取關(guān)鍵需求的過程中,抽取與業(yè)務(wù)無關(guān)的需求非常重要。“與業(yè)務(wù)無關(guān)”指支撐業(yè)務(wù)功能運(yùn)行且與業(yè)務(wù)處理邏輯無關(guān)的功能。傳輸服務(wù)是典型的與業(yè)務(wù)無關(guān)的功能,在任意基于網(wǎng)絡(luò)運(yùn)行的軟件中,不可避免的需要信息傳輸功能的支持。抽取與業(yè)務(wù)無關(guān)的需求,需要分析人員有豐富的軟件設(shè)計經(jīng)驗,這種公共需求的抽取,有利于開發(fā)過程中軟件的重用,可降低開發(fā)成本。 

  2.2 關(guān)注需求中與規(guī)模發(fā)展相關(guān)的因素 

  軟件設(shè)計應(yīng)用規(guī)模的發(fā)展速度,是軟件結(jié)構(gòu)設(shè)計時應(yīng)考慮的主要需求之一。規(guī)模是考驗軟件支撐能力的主要因素。規(guī)模的發(fā)展可能是用戶量的膨脹,也可能是數(shù)據(jù)量的迅猛增長,或兩者都有。軟件能力的成長性設(shè)計,通常會使開發(fā)付出代價,這是由于一方面在設(shè)計初期沒有考慮這種成長性,導(dǎo)致設(shè)計失。涣硪环矫,雖然考慮了成長性,但由于軟件復(fù)雜度的增大,增加了開發(fā)成本和風(fēng)險。因此,對并發(fā)和負(fù)載的設(shè)計,應(yīng)在設(shè)計之前就要給予充分考慮。 

  2.3 捕捉需求的變化方向 

  確定需求的增長點(diǎn)是考驗軟件適應(yīng)能力的關(guān)鍵。需求的變化和調(diào)整是客觀存在的,軟件設(shè)計者分析需求時,應(yīng)考慮到需求中可能存在的變化點(diǎn)或變化趨勢,以提高軟件的適應(yīng)能力和成長能力。需求的增長點(diǎn)通常隱含在企業(yè)發(fā)展和技術(shù)發(fā)展中,一類是業(yè)務(wù)發(fā)展引起的工作流變化或增長。這種軟件結(jié)構(gòu)應(yīng)具備新業(yè)務(wù)處理軟件的集成能力;一類是業(yè)務(wù)轉(zhuǎn)向。原有的業(yè)務(wù)處理軟件不能滿足轉(zhuǎn)向后的業(yè)務(wù)處理要求,存在改造、裁剪、新增能力等潛在需求。軟件結(jié)構(gòu)還應(yīng)具備可裁剪、可擴(kuò)充的能力,否則將會造成巨大的經(jīng)濟(jì)損失。 

  抓住需求的變化點(diǎn),設(shè)計合適的體系結(jié)構(gòu),可增強(qiáng)軟件的生命力。面對需求多變的現(xiàn)實,降低結(jié)構(gòu)的耦合度是有效緩解軟件適應(yīng)能力的方法之一。但是,降低耦合度一般會帶來效率或系統(tǒng)復(fù)雜度的上升。因此,小型軟件選擇這種方法應(yīng)慎重。(下轉(zhuǎn)第16頁)(上接第13頁) 

  綜上所述,設(shè)計滿足需求的軟件結(jié)構(gòu),重點(diǎn)關(guān)注的是功能,而設(shè)計適應(yīng)需求變化的軟件結(jié)構(gòu),關(guān)注的往往是非功能性需求,這需要系統(tǒng)設(shè)計師除了具備豐富的經(jīng)驗和敏銳的洞察力外,還應(yīng)花大量的時間和精力同用戶不斷溝通與交流,從中獲取最需要的需求,以支持軟件整體結(jié)構(gòu)的設(shè)計。 

  參考文獻(xiàn): 

  [1] 張海藩.軟件工程[M]北京:人民郵電出版社,2004. 

  [2] 李千目等.軟件體系結(jié)構(gòu)設(shè)計[M].北京:清華大學(xué)出版社,2008.