姜琪 張月芬
摘 要: 在信息技術(shù)爆發(fā)的現(xiàn)社會,軟件領(lǐng)域也正在如火如荼的發(fā)展著。如今為了能夠開發(fā)出更簡易實用的軟件,很多軟件工程師都在學(xué)習(xí)各種新語言,但是軟件工程師在進行軟件開發(fā)的過程中,一定是最先通過用戶的需求分析來確定自己的工作內(nèi)容,之后便是最重要的軟件設(shè)計環(huán)節(jié),因為優(yōu)良的軟件設(shè)計是軟件開發(fā)的靈魂,該文章將著重討論軟件設(shè)計在軟件開發(fā)過程中的重要性。
關(guān)鍵詞:軟件設(shè)計 用戶需求 軟件開發(fā)
中圖分類號:TP311 文獻標識碼:A 文章編號:1003-9082(2016)08-0002-02
一、引言
信息技術(shù)已成為當今社會不可或缺的一部分,很多公司都擁有自己的軟件產(chǎn)品,而這些軟件產(chǎn)品就是所屬公司的生存和發(fā)展之本。因此,現(xiàn)在的軟件公司都會以工程的思想來對待軟件的開發(fā)和維護。從軟件工程的角度來說,軟件的生命周期包括以下幾個階段:問題定義、可行性分析、概要設(shè)計、詳細設(shè)計、編碼、調(diào)試和測試、驗收與運行、維護升級到廢棄。而良好的設(shè)計是軟件開發(fā)的關(guān)鍵,它直接關(guān)系著軟件的質(zhì)量和開發(fā)成本[1]。
二、軟件設(shè)計的步驟和要素
軟件設(shè)計是以全局觀點將需求的具體實現(xiàn)用陳述方式描述出來,使之接近源代碼。設(shè)計過程分為兩個基本步驟:第一步是初步設(shè)計(Preliminary Design),關(guān)注于如何將需求轉(zhuǎn)化成數(shù)據(jù)和軟件框架;第二步是詳細設(shè)計(Detail Design),用數(shù)據(jù)結(jié)構(gòu)和算法來細化框架的實現(xiàn)。
在軟件設(shè)計的步驟中包括以下四個要素,這四個要素既包含了軟件設(shè)計的內(nèi)容,又體現(xiàn)了設(shè)計的價值:
1.結(jié)構(gòu)設(shè)計:確定并定義軟件系統(tǒng)各個功能模塊之間的關(guān)系。
2.數(shù)據(jù)設(shè)計:將模型轉(zhuǎn)換成數(shù)據(jù)結(jié)構(gòu)的定義。通俗地說,就是用數(shù)據(jù)庫或程序中專有名詞或?qū)傩詠韺嵗钪谐橄蟮母拍罨蚴挛铩?/p>
3.接口設(shè)計:定義軟件內(nèi)部、軟件和操作系統(tǒng)之間、軟件和用戶之間的通信接口。
4.過程設(shè)計:用形象的圖形和簡單的代碼來預(yù)設(shè)功能的交互以及用戶的操作流程。
三、軟件設(shè)計對軟件開發(fā)的影響
軟件開發(fā)和其它耗費人力、物力、財力的工程一樣,需要對客戶的需求和要求進行全面的設(shè)計,以滿足客戶的需求,并保證軟件持續(xù)良好地運作。從設(shè)計的具體內(nèi)容中可以看出,軟件設(shè)計在軟件開發(fā)過程中扮演著承上啟下、牽動全局的角色。
1.實現(xiàn)需求的藍圖
在軟件開發(fā)過程中,需求是決定做什么,而設(shè)計是決定要怎么做。很多時候,為了完成某項任務(wù),并非是直接動手進行操作。在明確任務(wù)目的和目標的基礎(chǔ)上,實現(xiàn)方法才是達到效果的關(guān)鍵所在。充分的軟件設(shè)計可以精細地描述實現(xiàn)思路、實現(xiàn)方法、功能的關(guān)聯(lián)與銜接。一個需求的實現(xiàn)方法可能存在很多種,但各個公司的人力、物力、財力或時間條件并非相同,找到適合自己的模式和方法,才能節(jié)約成本,高效保質(zhì)地完成需求。實際情況中,客戶的需求存在多樣性和變動性,而良好的設(shè)計架構(gòu)和模式很大程度上可以應(yīng)對多種需求。
2.編碼的基礎(chǔ)和前提
通常一個軟件的開發(fā),需要團隊合作完成,倘若在沒有總體設(shè)計的情況下著手開發(fā),那么這樣的開發(fā)必將是耗時且混亂的。每個程序員的知識擁有和開發(fā)習(xí)慣各不相同,單個完成指定開發(fā)任務(wù)也許并非難事,但單個任務(wù)結(jié)果結(jié)合到一起卻很難實現(xiàn)一個整體功能。在提供軟件服務(wù)的行業(yè),由于多框架、多組件、多結(jié)構(gòu)化等因素,通常會導(dǎo)致不同人的代碼很難融合到一起。可見,統(tǒng)一的軟件設(shè)計和開發(fā)規(guī)范是編碼的必要前提。
編碼過程是嚴謹?shù)倪壿嬎季S過程,頁面展示與后臺數(shù)據(jù)之間的關(guān)聯(lián)、各個功能模塊之間的跳轉(zhuǎn)等等,這些功能的實現(xiàn)需要基于整體框架。軟件設(shè)計就是基于整體框架的模塊化設(shè)計,在邏輯上將軟件分割成各個部分,用以實現(xiàn)特定的功能和子功能,在各個功能獨立的前提下,降低模塊之間及其與外部環(huán)境的連接復(fù)雜性,使得層次結(jié)構(gòu)分明,軟件各部分之間的控制更加明智。另外,軟件設(shè)計中不僅描述著清晰且可分離的數(shù)據(jù)和過程,還定義了滿足軟件需求的可重復(fù)方法。充分合理的設(shè)計就是編碼的基礎(chǔ),有助于節(jié)省編碼時間、提供編碼質(zhì)量[2]。
通常情況下,需求分析人員和開發(fā)人員不是同一組人,依靠口頭轉(zhuǎn)述,開發(fā)人員很難直觀、詳細地了解客戶的需求。通過細致的設(shè)計說明書,準確地展示客戶需求的實現(xiàn)流程,并描述各種實現(xiàn)接口,直觀地將需求過渡到編碼,客戶的要求和開發(fā)的架構(gòu)及基礎(chǔ)代碼都有跡可循。
3.軟件運行和維護的重要保證
軟件運行和維護的實質(zhì)是向客戶提供軟件服務(wù),軟件發(fā)布的開始就是真正驗證開發(fā)成果的時候。一個軟件產(chǎn)品的好壞,早在軟件設(shè)計的時候就已經(jīng)產(chǎn)生影響,而且這種影響是較為深遠的。很多軟件在前幾次交付之后,較好地滿足了客戶需求。但隨著后期客戶需求的不斷變更以及新需求的提出,在現(xiàn)有的軟件基礎(chǔ)上很難更新已有的功能,或是延展出新型的功能??梢姡瑑?yōu)質(zhì)的軟件設(shè)計是軟件運行和維護的重要保證。因為軟件設(shè)計就是對具體需求的設(shè)計和實現(xiàn),直接關(guān)系到需求的傳遞和滲透、編碼的合理性和有效性、軟件的可擴展性和可移植性[3]。
四、不規(guī)范軟件設(shè)計的分析
筆者曾經(jīng)在軟件公司擔任軟件產(chǎn)品的售后服務(wù)員一職,在向開發(fā)人員反饋客戶的問題時,經(jīng)常聽到開發(fā)人員抱怨軟件設(shè)計本身就存在缺陷或漏洞。經(jīng)過與客戶之間的問題解決,以及與開發(fā)人員的長期交流,筆者深刻的體會到不規(guī)范的軟件設(shè)計帶來壞處:
1.引發(fā)時間成本。錯誤或不合理的設(shè)計導(dǎo)致開發(fā)結(jié)果不符合需求,需要修正設(shè)計、更改或重寫代碼。開發(fā)人員投入了很多無效的勞動時間,整個軟件開發(fā)周期也受到影響;
2.影響軟件質(zhì)量。很多軟件問題會在交付后,或者多次功能更新后產(chǎn)生。由于當初設(shè)計的不夠全面,或者耦合度太高,導(dǎo)致各個功能直接匹配不上或是相互影響;
3.影響開發(fā)團隊的士氣。開發(fā)團隊的時間受到壓縮,質(zhì)量受到質(zhì)疑,打擊了團隊開發(fā)的積極性,并產(chǎn)生惡性循環(huán);
4.資金損失。項目周期有限,在錯誤或不合理的軟件設(shè)計下開發(fā)完成并按時交付的軟件產(chǎn)品,將得不到客戶的認可??蛻魰蟾e誤,自然會帶來新開發(fā)的成本。更重要的是,產(chǎn)品將很難銷售出去,得不到投資回報;
5.名聲受損。由于從設(shè)計到開發(fā),再到產(chǎn)品交付,周期很長。反復(fù)更新設(shè)計,軟件質(zhì)量長時間內(nèi)難以滿足客戶的要求。致使業(yè)務(wù)客戶失去耐心,必然將懷疑項目的團隊能力,公司的名聲也會受到影響[4]。
由于不規(guī)范的軟件設(shè)計會造成上述諸多嚴重的后果,說明軟件設(shè)計對于軟件開發(fā)來說,是至關(guān)重要的環(huán)節(jié),它直接影響著需求實現(xiàn)、產(chǎn)品質(zhì)量和研發(fā)成本。所以,重視軟件設(shè)計,對于軟件公司是極有必要的。
5.1軟件設(shè)計的注意事項
通過分析設(shè)計缺陷導(dǎo)致的不良后果,總結(jié)出設(shè)計過程中需要注意的幾個重點:
(1)建立更改控制過程來應(yīng)對用戶的典型的變動。用戶的需求是多變的,但是變化的形式不可能超出指定的行業(yè)或業(yè)務(wù)。基于業(yè)務(wù)的純熟度,制定各種控制過程和方法,應(yīng)對變動的業(yè)務(wù)需求;
(2)擬定模塊測試方案。再好的理論都需要實踐檢驗,制定相應(yīng)的測試方案和需要測試的功能點才能檢驗出設(shè)計的邏輯性、合理性、適應(yīng)性;
(3)分類軟件開發(fā)的各個過程切莫過于精細。過于細致的劃分會使得各項工作過于緊湊,沒有彈性,很容易出現(xiàn)報告的任務(wù)完成進度跟不上實際的項目進度,從而導(dǎo)致項目的延期。
五、總結(jié)
軟件設(shè)計是以不同的層次和角度將涉及的事物和問題抽象起來,然后分解并模塊化,使得問題變得容易解決。隨著時代的發(fā)展,軟件設(shè)計方法在不斷進化,并且經(jīng)過反復(fù)的測試和細化,可以良好地將信息領(lǐng)域的表達轉(zhuǎn)換為軟件設(shè)計的表達機制,最終實現(xiàn)以友好界面的形式與客戶進行交互。在設(shè)計模式和設(shè)計方案符合實際用途的基本前提下,優(yōu)良的軟件設(shè)計將帶來多方面的益處:便于程序評價和技術(shù)交流、提高研發(fā)人員之間的溝通效率,從而減少誤差錯;使得軟件開發(fā)過程更易管理;縮短軟件開發(fā)周期;提高軟件的可靠性、可維護性和可移植性;提高軟件的生產(chǎn)率;降低軟件產(chǎn)品的研制成本和運行維護成本。正因為軟件設(shè)計的好壞對整個軟件開發(fā)過程有著至關(guān)重要的影響,所以軟件項目實施過程中,一定要認真關(guān)注軟件的設(shè)計,為制作出優(yōu)秀產(chǎn)品打下堅實的基礎(chǔ)[5]。
參考文獻
[1]陳勇, 生命周期理論對軟件開發(fā)項目管理的重要性分析. 科技信息(學(xué)術(shù)研究), 2008(06): 第215-216頁.
[2]王穎, 呂顯強與王建彬, 軟件設(shè)計中的若干問題分析. 數(shù)字技術(shù)與應(yīng)用, 2013(10): 第165頁.
[3]趙鵬飛, 軟件設(shè)計與開發(fā)中的用戶體驗. 產(chǎn)業(yè)與科技論壇, 2014(21): 第72-73頁.
[4]敖冰峰, 軟件教學(xué)中關(guān)于軟件設(shè)計的概要設(shè)計與詳細設(shè)計. 北方經(jīng)貿(mào), 2002(05): 第119-120頁.
[5]李月華, 個人科研數(shù)據(jù)管理軟件開發(fā)的概要設(shè)計. 電腦知識與技術(shù), 2013(33): 第7447-7448頁.
作者簡介:姜琪(1991-),女,黑龍江哈爾濱人,云南大學(xué)職業(yè)與繼續(xù)教育學(xué)院碩士研究生,研究方向為教育信息化,教育技術(shù)理論與應(yīng)用研究;張月芬(1972-),女,云南昌寧人,云南大學(xué)信息技術(shù)中心副研究員、碩士生導(dǎo)師,研究方向為教育技術(shù)。