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