李尤丰, 曾 岳
(金陵科技学院 软件工程学院, 江苏 南京 210007)
“软件需求分析”实验教学研究与实践
李尤丰, 曾 岳
(金陵科技学院 软件工程学院, 江苏 南京 210007)
以金陵科技学院软件工程学院“软件需求分析”课程实验教学开展为例,探讨该课程教育教学模式。该课程实验环境为USDM平台系统的“需求/设计管理工具”;实验内容从项目的准备、启动、展开、定型、评审五个环节开展,各环节采用CMMI标准管理,量化考核。学生自行组队,提出Dirty Example,角色轮换,团队协力工作,课中讨论、评审,课后复查、修正,高质量完成文档。并配套实验教材,直观指导,过程化实验环节,提出知识能力与职业能力一体培养的工程教育模式。
软件需求分析; 实验教学; USDM; CMMI; Dirty Example
软件需求是软件系统成功的基础,软件需求分析是软件工程最重要的阶段[1]。软件需求分析实验是软件需求分析类课程重要的实践环节,其目的是将理论联系实际,在理解软件需求工程的过程、方法基础上,学习掌握实际软件项目中的需求开发和需求管理,提高学生应用相关平台、环境、工具进行软件需求分析和管理的能力[2-6],帮助学生掌握软件需求阶段文档的编写和验证。然而软件需求分析理论知识枯燥难理解,在实验课程中的应用难体现[7]。如何从有限的学时中帮助学生理解理论内容,并较好地应用实践,同时训练和培养学生的工程能力、职业能力,是软件工程专业人才培养研究的核心问题[8]。
软件需求分析课程(下文简称“本课程”)的任务,要求学生不仅仅学习和理解软件技术知识,还要学习和理解语言学、哲学、认知心理学、社会学、人类学,以及掌握涉众的信仰与理念,即认识论等综合知识[9]。其中软件技术知识,尤以软件建模与分析技术为重[10],要求分析在现实中观察到的各种现象(现象学),掌握应用软件分析、设计和实现的基本过程和方法,了解应用软件系统开发的一般过程,学习使用相关工具。
本课程培养学生的专业技能,培养包括抽象能力、整合能力、系统化思想的分析技能;培养交谈和提问技巧,尤其是倾听技巧;培养学生的观察技能、归纳技能、建模技能;培养学生的文档组织能力、语言驾驭能力;培养学生的创新技能;培养发现连用户都没有意识到的潜在需求的协调能力。实验要求学生能够根据实际问题进行沟通、获取、提炼、分析、设计软件需求模型,提出系统解决方案。并在需求获取、需求分析等各个阶段掌握各种方法,提供相应标准化格式的文档。
该课程的开设结合行业特点及发展,联系软件工程专业,采用真实项目案例,反映软件需求工程的发展水平和实验水平。
基于这样的背景,金陵科技学院软件工程学院开展教学课程改革,按照“华盛顿协议”标准要求,开展工程教育,培养工程能力强、职业素质优的应用型本科人才[11-13]。目前已编写出版该课程实验教材,正积极申报该课程为校级优秀课程,着手建设MOOC、微课等一系列工作。
本课程要求学生掌握软件需求工程逐步展开的迭代过程;掌握实际软件需求的过程;掌握软件需求的种类、特性和各种文档书写规则;掌握软件需求获取的各种方法和技术,并且能够灵活运用;掌握软件需求分析的各种技术,并能够综合运用;掌握软件需求工程的文档要点和文档写作技巧;了解需求验证的常用方法和过程,即掌握需求评审的各种方法和过程;强化需求是“工程”的概念;培养融知识能力培养与职业能力于一体的应用型本科人才。
实验课的过程和任务,首先教师课堂提出实验要求和任务目标。然后学生自行分组,每组提出一个Dirty Example,要求课题复杂度适中,解决应用型软件中可能存在的问题。接着完成项目的准备工作,分析业务需求,包括功能需求和非功能性需求,编写项目前景和范围文档。在此基础上,进行用例建模,编写用例说明文档。最后对系统及系统各用例进行面向对象方法建模、数据建模,完成软件需求规格说明书。本课程从软件需求项目准备、启动、展开、定型、评审五个环节开展实验。每个实验环节均以USDM平台环境的“需求/设计管理工具”(下文简称“该工具”)为实验平台,并在该环境下完成相应文档和过程管理。
2.1 USDM平台介绍
统一软件数据管理系统(Unified Software Data Management System,USDM)是基于CMM/CMMI管理的企业级管理平台,内容覆盖了从CMM/CMMI最新模型框架1.2的中文学习到软件开发每个过程的生命周期,具有完整性、规范性和实用性。CMM/CMMI是当前世界上最流行、最实用的软件生产过程的评价标准,已被国际软件产业界公认为相关企业进入国际市场的通行证。CMM/CMMI帮助软件企业规范生产过程,保证产品按时保质保量完成。本课程各实验环节均在USDM平台的“需求/设计管理工具”下完成文档和过程管理。
该工具支持项目组管理,包括项目团队的组建、成员角色、权限管理和维护;岗位角色管理,包括岗位角色设置、默认权限管理和维护。每次每个项目组学生及角色一目了然,方便老师管理和指导,为设置和轮换学生在项目团队中的角色起到记录、监督等管理作用。如图1所示。
图1 项目团队组建和角色安排
该工具是基于UML的软件分析设计管理系统,有全套的软件建模工具,软件需求建模过程可在该平台下轻松完整完成。如图2所示,为用例模型创建界面。
该工具支持跨平台。实验各环节文档可以生成自定义格式,也可生成Word等格式,方便各平台间导入和导出,方便留存教学资料,记录教学及管理过程。
图2 创建用例模型
该工具支持自动统计度量。对各项目各阶段的生产数据集中、自动统计度量并存储,同时支持自动化和手动计算度量结果,允许自定义计算公式,并形成报表输出。也可根据用户自定义生成报表。例如,可以对学生实验环节产生的用例数量进行统一度量,生成评审报告等(见图3),为手动需求规格说明书评审界面。
图3 评审界面
该工具支持并行、串行或串并行混合工作流程。例如,可支持多个教师同时在线、离线评审。本功能是实验各环节评审或同行评审的重要组件。
2.2 课堂内外安排
2.2.1 课前准备
课前准备的主要工作是组建项目团队,提出 Dirty Example。学生自由组队,在USDM平台的“需求/设计管理工具”中完成团队及角色设置。后续的角色轮换,也在该工具下实现记录和管理。课前准备要求,在理论课上提出。
(1) 分组,每组提出一个Dirty Example,并多角色工作。 具体过程为每个小组构想或调研得到一个需要解决的实际问题,请其他小组提供解决方案。也就是每个小组提出一个Dirty Example,该Dirty Example通过自由选择的方式,最后由其他小组来解决,这样每个小组最后有了一个别组提出的Dirty Example。该Dirty Example一定是符合本课程的、有问题的应用型软件,并且复杂度适中。如课题过于复杂,评审时,教师指导裁减部分功能,如过于简单,则增加部分功能,如偏题,则教师责令重拟课题名称。例如可以是**管理系统或者**网站设计等等。提出Dirty Example的小组扮演客户方,负责解决问题的小组扮演需求方,以需求方工程团队为主,完成项目的业务需求,建立用户需求,最终完成系统需求。并完成每个阶段的文档。
自由分组,建议4人左右一组,推举组长,即每个组有一个项目经理。每个小组成员充当不同角色,包括客户方(用户评审方)、需求工程师、技术评审方。每个成员都应注意工作中的交流技能、沟通技能、倾听技能、技术能力。要求队员能力互补,各有所长,组内能够有效协调。教师指导跟踪该环节,及时有效处理该环节产生的问题。该环节较好培养学生的团队协作能力、交流和沟通等职业能力。多角色工作,真实模拟实际企业工作流程和环境,与企业无缝对接,帮助学生适应就业。
Dirty Example的来源,改变了传统由教师定课题的模式,培养考察学生的生活观察能力,业务捕捉能力,思维创新能力等。以金陵科技学院软件工程专业某班学生本课程提出的Dirty Example为例,有“大学生二手交易平台”“悦动圈”“智能帮助睡眠系统”“金科通”“广播放放”……。很多课题,在后续课程中有很好的延续和实现。很多软件申请了软件著作权、专利。团队及成员参加各类竞赛,获得诸多奖项,包括国家级奖项。部分优质软件,学院正在推广,以期商品化,产业化。学院为此专门建设创新实验室,设置专项款用,吸引更多学生将提出的Dirty Example在该课程后进行实现。可见,学生的力量是无限的,教学就是挖掘学生的能量,使之释放,绽放灿烂光芒,为人类科技进步努力。
(2) 选择示范小组,有效指导考核。由任课教师挑选一示范小组,详细跟踪和考核该小组的各实验环节,遇问题及时沟通解决。该组进度比其他组进度控制稍快。其他组有问题和示范组沟通解决,解决不了提请任课教师解决。
此过程使各实验环节既有目标参照,实验结果不会“离题”,又能“优带差”,节约教师精力,较好完成实验指导任务。
(3) 强调实验规则。 课前对实验课程要求部署,并强调实验规则,包括实验要求、实验安排、实验计划、注意事项,强调每个环节的度量要求,强调考核要求。度量数据通过USDM平台工具记录并自动计算,控制和记录整个实验过程。
2.2.2 课中讨论评价
课堂上主要针对各实验环节进行考核和问题解决,并将过程及文档记录到实验平台工具下。课堂形式主要有学生现场讨论、模拟讨论、分组讨论、报告发言、辩论、问题评价等。教师把控现场,评审学生实验结果,记录各阶段考核结果,并对学生遇到的问题,进行探讨解答。
例如,对学生的用例说明书评审时,通过度量需求获取的次数,度量面谈方法获取的用例数量,度量原型方法获取的用例数量,度量用户需求数量、用例数量、平均用例的场景数量、平均用例的描述字数、以及最大用例描述的字数等。如果用例多,而用户需求数量少,表明本实验环节学生存在问题。如果用例多,而用例场景少,则表明也存在问题。考虑用例分割得是否太小等。提醒注意事项包括注意系统边界的设置,参考目标模型的建立[14]等。
该过程锻炼和培养学生的知识运用能力,即实际工程能力,同时培养学生表达、思维、分析等职业能力。该过程真实有效考核学生所做工作,并帮助其分析,以得到良好的教学效果。进度慢的督促,有严重问题的指出,以防偏离方向。实验过程、结果文档、结果度量、注意事项均记录在USDM平台工具中。配套实验教材演示其在USDM中的相应完成过程。
2.2.3 课后自主学习
每个实验环节的内容完成都要依靠学生课后调研、探讨、分析、完成,然后提请课堂讨论,针对课堂讨论提出的修改意见,再课后修正实验内容结果,最终完成每个实验环节。
例如,项目启动时学生提出一个合理的Dirty Example,角色扮演完成后,要真实调研,采用面谈、调研报告、建立原型等真实过程,得到真实需求。对真实需求进行充分整理、分析、设计,得到前景和范围文档,同时完成问题分析的过程文档,提请课堂讨论。
例如,项目展开时以前景和范围文档为依据,安排计划,展开需求获取活动。利用理论课学习的需求获取的各种方法,结合多次获取和分析的迭代过程,获取用户需求,建立用户需求列表,完成用例文档。根据用户需求,建立分析模型,为问题设计解决方案。要求完成需求获取安排计划书,用例文档(用户需求文档),用户需求列表,使用面谈报告、原型物件等,最终形成用例文档说明书。
该过程充分调动学生的自主能动性,自学能力,社交能力,工程能力。能有效使用和反馈理论课堂内容,缩短理论与实践的距离,增强学生的学习兴趣。另外课后时间自由安排,学生自主性、自控能力凸显。
2.3 配套实验教材,细化各实验环节,强调系统性
本课程市场上很难找到实验教材,更别提适合我校的实验教材。针对这种情况,金陵科技学院软件工程学院,组织课程组,根据几年的教学积累,联合企业,合作编写《软件需求工程实验教程》教材,帮助学生熟悉本课程实验平台环境,解决学生对需求分析文档来源、实现过程难以理解的问题。以实际企业项目为案例,细化需求得到的各环节,还原得到需求的过程,指导学生开展每个实验环节。将一完整的企业真实项目案例——“Android点餐系统”,贯穿始终,进行教学,既充分考虑各实验环节的细节及迭代,又充分体现教学的整体性、连贯性和系统性[15],即既分割又耦合,帮助学生理解整个需求过程的每个环节及过程。例如,针对用例说明书的建立过程,首先以前期“Android 点餐系统”前景和范围文档为基础,讲解“什么是用例,绘制用例的规范,角色和用例分析”等基础理论知识。接着举例“Android 点餐系统”的“菜品信息管理用例”,分析该用例的参与者是“管理员”,用例是“菜品信息管理”。接着细化和迭代分析,分析“菜品信息管理用例”又包含“查看菜品信息、添加菜品、删除菜品、修改菜品信息”四个子用例。然后表述“用例图如何表示”,“如何创建各用例描述”,“如何设计用例模型图”,并说明“在USDM中如何建立用例说明书文档和管理该过程”[16]。后期又以该用例文档说明书为基础,开展建模,编写“Android 点餐系统”的软件需求规格说明书。
该教材作为本课程的实验依据和参考资料,帮助和指导学生完成本课程实验的每个环节。
软件工程学科知识发展快速,软件需求工程作为软件工程专业前端课题,理论枯燥难懂,实验无法准确体现理论内容。实验相关教材的编写数量也极少。如何较好地开展实验课程,有良好的教学效果和教学反馈,培养与实际企业无缝接轨的工程能力和职业能力一体化的人才,是软件工程专业教育的目标和方向[6]。目前软件需求分析方法分类众多,创新方法也较多,如何针对每个案例,采用合适的方法,很好地指导学生开展实验,值得探讨。该课程如何与软件工程专业后续课程有效衔接,将学生提出的Dirty Example课题的系统解决方案有效实现和商品化,值得研究。
金陵科技学院软件工程学院培养的是应用性强、地方性特点明显的软件工程类专业学生,特别强调工程能力,包括项目实践能力、文档能力、创新能力等。目前我校在USDM平台环境上,进行软件需求分析实验课程的实际教学和演练,使用企业真实案例,改变了以往一味接受式的教学模式,教学效果良好。培养的学生具有很好的工程性和创新性。本专业学生就业情况良好。
[1] 钱乐秋,彭 鑫,赵文耘,等.软件工程课程群设计[J]. 计算机教育, 2007(10):5-7.
[2] 吴 斌,汪 琦,顾 庆,等.基于本质用例的软件需求分析和获取[J].计算机科学,2005(3):141-143.
[3] 刘 嵩.软件需求分析方法创新研究[D].武汉理工大学,2005.
[4] 孙玫肖.软件需求分析方法的研究[J].铁道科学技术新进展,2005(6):32-34.
[5] 赵承乾.软件需求分析方法创新分析[J].计算机光盘软件与应用,2013(2):17-18.
[6] 杨 波,吴 际,徐 珞, 等.一种软件测试需求建模及测试用例生成方法[J].计算机学报,2014(3):124-127.
[7] 曾明星.软件工程专业“项目化”教学实施体系的构建[J].实验室研究与探索,2013,32(5):158-163.
[8] 林丕源,刘才兴,张明武,等.软件工程专业的实践教学改革初探[J].实验室研究与探索,2007(12):238-240.
[9] 毛利峰. 对软件需求分析的一些思考[J]. 计算机时代, 2008(7):63-64.
[10] 田 良,杨 溢.关于提高软件需求分析质量的几点思考[J].电子技术与软件工程,2015(3):23-26.
[11] 陈 昊.软件工程课程群实验教学改革探讨[J].实验科学与技术,2011(8):94-96.
[12] Edward F.Crawley,Johan Malmqvist,S ren stlund,Doris R.Brodeur.Rethinking Engineering Education: The CDIO Approach, 2007.
[13] 沈 岩.工程教育认证的实践与思考[J].学位与研究生教育,2009(3):52-55.
[14] 张 勇.电子线路实验教材编写研究[J].实验科学与技术,2008(8):100-102.
[15] 李尤丰,洪 蕾.软件需求工程实验教程[M].南京:南大出版社,2015.
[16] 雷 环,汤威颐,Edward F.Crawley.培养创新型、多层次、专业化的工程科技人才——CDIO工程教育改革的人才理念和培养模式[J]. 高等工程教育研究, 2009(5):29-34.
Research and Practice "Software Requirement Analysis" Experimental Teaching
LIYou-feng,ZENGYue
(The Software Engineering Institute, Jinling Institute of Technology, Nanjing 210007, China)
Taking the experimental teaching of Software Requirement Analysis in the School of Software Engineering, Jinling Institute of Technology as an example, this study discusses the teaching mode of engineering education. The experimental environment of the course is the Requirements/Design Management Tool of the USDM .The course includes preparing, beginning , analyzing and designing, and verifying a project. Every step is managed by CMMI standard and quantitative assessments. Students are to format their own teams, put forward dirty examples, rotate the roles, teamwork, discuss in class, review and verify after class, finish high quality documents. By offering the experimental materials, to guiding and refining the experiments, the knowledge ability and occupation ability of students can be improved.
software requirement analysis; experimental teaching; USDM; CMMI; Dirty Example
2015-05-14
校教育教改研究课题(40714007);软件工程学科项目资助
李尤丰(1977-),女,江苏宜兴人,硕士,讲师,从事一线教学工作,研究方向为图像分析。
Tel.: 18913805565; E-mail:flllyf@126.com
TP 311.5; G 642
A
1006-7167(2016)04-0228-04