软件设计在软件开发过程中的重要性分析
2016-11-22姜琪张月芬
姜琪 张月芬
摘 要: 在信息技术爆发的现社会,软件领域也正在如火如荼的发展着。如今为了能够开发出更简易实用的软件,很多软件工程师都在学习各种新语言,但是软件工程师在进行软件开发的过程中,一定是最先通过用户的需求分析来确定自己的工作内容,之后便是最重要的软件设计环节,因为优良的软件设计是软件开发的灵魂,该文章将着重讨论软件设计在软件开发过程中的重要性。
关键词:软件设计 用户需求 软件开发
中图分类号: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-),女,云南昌宁人,云南大学信息技术中心副研究员、硕士生导师,研究方向为教育技术。