软件工程专业课程设计中的需求分析
2014-01-12秦放曾维佳
秦放 曾维佳
【摘 要】课程设计是检验理论教学效果的一种有效途径,对于软件开发类型的课程设计而言,需求分析是其中一个非常重要的环节,但由于学生重程序轻代码,重文档轻业务,教师重知识轻技能等原因,使得需求分析环节并没有得到应有的重视,文章结合教学改革实践,针对以上问题,提出了一系列解决方案。
【关键词】软件工程;课程设计;需求分析
一、引言
课程设计是指学生在学完相关课程后,综合利用所学知识分析问题、解决问题、实现理论向实践转换的重要教学环节,也是对前期理论教学效果的检验。
软件工程专业的大部分课程设计是有关软件开发的。这就要求学生在设计过程中经历一个完整的软件开发流程:项目定义、分析、设计、开发、维护[1]。作为软件开发过程中的一个重要环节,需求分析在实际的课程设计中由于各种条件的限制往往被忽略,没有得到应有的重视[2]。针对这一问题,本文首先阐述了需求分析在软件开发过程中的重要性,分析了软件工程专业课程设计中需求分析阶段存在的主要问题,并给出了相应的解决方案。
二、需求分析的重要性
软件需求定义了系统必须具备的能力,即软件能完成什么样的功能,达到什么样的性能,这种能力体现了用户的需要和开发者对用户需要的理解。软件项目的开始,就是因为软件需求的存在,需求是项目开发的基石。
一个项目成败的关键因素之一就是对需求的把握程度,研究表明,软件项目中大部分的问题都是在需求分析阶段埋下的隐患,需求问题发现的越晚,软件维护的开销就越大。很多项目的失败,也是由于需求分析的不明确而造成的,有些项目甚至是在需求没有完全确认的情况下就开始执行了,这必然会导致成本浪费、进度延迟等严重问题。所以分析是软件开发中最为基础和重要的环节,是软件项目迈向成功的第一步。
需求分析也称需求建模,主要任务就是借助当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统“做什么”的问题,即对目标系统提出完整、准确、清晰、具体的要求[4]。分析用户需求主要过程如下:
(1)以图形描述系统的整体结构。
(2)为用户提供可视化界面供用户對需求做出评价。
(3)以模型描述系统功能、实体关系及状态转等内容[3]。
需求分析要保证需求明确,尽量避免需求描述不清楚、需求遗漏、需求互相矛盾等问题,避免在开发后期因需求问题对项目产生困扰。
三、课程设计中需求分析现状
(1)学生重代码,轻需求,急于完成可见的执行软件,大大压缩了需求分析时间。
(2)学生缺乏对所选课程设计题目相关的业务知识的了解,需求分析只是对需求的拼贴,不完善,不系统。
(3)教师缺乏实际项目经验,对需求分析的认知只是停留在理论阶段,不能在实践上给学生以高水平的指导。
四、解决方案
针对以上问题,文中给出解决方案如下:
(1)一方面转变学生对需求分析的认知误区,强调需求分析的重要性,通过一些案例及调研数据让学生了解忽视需求分析带来的严重后果,让学生重视需求。让学生了解软件项目开发工作和项目管理工作都与需求密不可分,如软件项目成本估算、进度计划、项目跟踪控制、验证、确认等工作都以需求为基础;软件设计、编码、测试最终的目的都是为了提交一个满足用户要求的可执行软件,用户的要求主要就体现在需求分析的制品上。
另一方面增强需求分析的趣味性,让学生主动参与需求分析,如选题上给学生充分的自主选择权利,或者让两个同学选相同题目(分别做不同模块),同组间进行需求分析竞赛等。
在软件开发过程中让学生记录并总结,自身项目中存在的那些需求问题,对项目产生了怎样的影响,让学生在实践中体验、总结需求的重要性,加深认识。
(2)题目选择范围上给学生更大空间,可从教师给定的题目中选取,也可学生自拟题目。因为课程设计的时间有限,需求又是一项要求精细、准确、全面的工作,所以在课设开始前至少一个月,让学生预先选好题目,进行需求调研、分析工作。需求分析开始前,由教师预先规定应分析什么,如:软件功能需求、性能需求、可靠性和可用性需求、接口需求、系统约束等;采用什么样的分析方法,建立什么模型,如:功能模型、数据模型、行为模型等;及最终要形成软件需求规格说明,该文档模板由教师提供。任何软件需求都离不开其涉及到的业务领域,因此也要要求学生对业务领域相关的标准模型进行分析和研究,对业界的一些标准和最佳实践进行熟悉,对业务领域进行大量调研。这样才能让才能分析出真正的需求,否则需求就会脱离实际。
(3)作为教师不但要有扎实的理论知识,还应具有较强的实践经验,指导学生完成由理论知识向实践技能的转换。所以在选择课程设计教师的一个重要条件就是教师要有软件项目开发经验及管理经验[5],熟悉软件开发的各个环节。若教师本身不具备这样的能力,也可以通过加强教师培训,让教师到企业中实习的方式来提高教师实践指导水平,通过考核的教师才可以指导课程设计。
五、结论
总之,需求分析是软件开发过程中非常重要的一个环节,是项目所有活动展开的基石,在软件工程专业软件类的课程设计中,作为教师在这一环节应为学生提供有效的理论和实践指导,让学生理解需求分析的重要性,积极主动地做好需求分析工作,为后续的各项软件工程活动展开打下良好基础。
参考文献:
[1] 秦放等.案例驱动与项目导向结合的软件工程课程教学模式探讨[J].计算机教育. 2013(9):87-90
[2] 陈杰.计算机专业课程设计中的需求分析[J].集美大学学报.2009(2):89-92
[3] 韩万江等编著.软件项目管理案例教程(第2版)[M].北京:机械工业出版社,2009.48
[4] 赵英豪等.基于小项目的软件工程教学设计[J].电脑知识与技术.2007(4):1143,1162
[5] 董宗然.应用型院校软件项目管理课程教学探讨[J].计算机教育.2011(03):43-46