作者简介:李洪进(1983-),女,硕士,遵义医学院医学信息工程系工程师,研究方向为计算机软件与理论、软件工程、软件测试、医学信息处理。
0引言
软件工程是医学信息工程系信息与计算科学专业的一门专业核心必修课,该课程的理论性和逻辑性强、内容抽象、较难掌握。软件工程涉及到计算机学、工程学、管理学等领域。一个高质量的软件系统需要软件工程理论的指导和具体实践相结合。如果按照传统的填鸭式教学方法,纯讲理论、照本宣科,学生会觉得枯燥无味,学习兴趣低。在软件工程教学中采用案例驱动式教学来进行课程改革,把学生分成多个项目小组,把软件工程课程中包含的软件工程管理、需求分析、软件总体和详细设计、软件测试、软件维护用项目来具体实施,可以提高教学效果,使学生一边实践一边学习、理解软件工程的理论,积累编程经验和软件项目的开发经验,把以前学习的知识巩固,使学生明白软件的开发不仅仅是编写代码那么简单,从而为以后从事项目开发和管理工作打下坚实的基础。
案例驱动式课程教学法是美国的哈佛大学在20世纪20年代提出的,因为实践效果好,目前在我国很多课程教学中也经常采用。这种教学方式主要以案例作为基本的教学素材,在教师的指导下,组织学生来分析、讨论、调查案例。在软件工程教学中,教师既可以选择案例来分析讲解,互相讨论交流,还可以选择案例给学生在课堂后搜集资料分组完成,最后综合考察具体开发的软件项目成品(论文+系统);另外可以把一些优秀的案例放到软件工程的精品课程网站上,供学生下载资料来学习研究。
1案例选取
比如在讲解用面向对象方法进行软件系统的分析、设计和开发过程时,通过学生比较熟悉的案例ATM自动取款机来贯穿。
首先根据ATM系统的需求陈述来建立问题域的对象模型,找出候选的类—&—对象,通过筛选确定类—&—对象有如下:ATM、中央计算机、分行计算机、柜员终端、总行、分行、柜员、储户、账户、事务、现金兑换卡。找出对象之间的关系,进一步完善和确定关联,并按照问题领域把系统划分为“总行”、“分行”和“ATM”3个主题,编号分别是1、2和3,如图1所示。
然后确定属性,分析和选择属性时要注意不要将对象和状态误当作属性,不要过于细化;确定了类的属性后,可以识别出类的继承关系,通过反复修改得到ATM系统的对象模型,如图2所示。在建立对象模型时,并不一定严格执行这样的顺序,可以交替完善。
第二步:建立ATM系统的动态模型,编写正常情况和异常情况下交互行为的脚本,设计出系统的应用逻辑和设想友好的用户界面,然后从脚本提取事件并画出事件跟踪图,描绘出事件与对象关系的状态图,如图3所示。
第三步:建立ATM系统的功能模型,根据系统中数据之间的依赖关系和数据处理的功能,画出基本系统模型,把基本系统模型中单一的处理框分解成若干个子处理框,得到功能级数据流,并描述处理框的功能和定义服务。
最后用面向对象方法对系统进行设计,设计问题域子系统时把ATM系统进一步划分为3个子系统,分别为:ATM站、中央计算机、分行计算机子系统,如图4所示。详细讲解ATM系统的需求分析报告和系统设计说明书后,学生可以采用面向对象的编程方法来实现一个简单的模拟系统,一般采用VisualStudio2010+SQL2008,后台编程语言是C#或VB,也有的项目组采用JSP+MYSQL数据库来完成。
这样通过具体的案例讲解使学生懂得怎样去设计人—机交互子系统、任务管理子系统和数据管理子系统,并书写系统的概要设计报告和详细设计报告,理解面向对象分析、设计和实现的具体流程。要求使用UML语言和RationalRose2007工具来统一建模,为软件工程课程实践打下基础。
2项目考核
软件工程的这种案例驱动式课程教学模式有利于提高学生的项目管理和软件开发素养。遵义医学院医学信息工程系的教师建立了软件工程实验室,把学生分成了几个小组,每个教师带领一个团队,项目结束后学生先提交每个阶段的开发文档报告,然后以教师参与的项目答辩的形式,让学生一边演示软件系统、教师一边提问,对所做的工作进行总结,考察了学生的学习态度、软件开发能力和编写文档的能力。采用案例教学和多元化的考核方式来提高学生的学习主动性和兴趣,更好地理解软件工程的理论知识并加以实践,使学生课堂内外结合,培养具有良好的团队开发能力和开拓精神人才。
3结语
根据医学信息系近几年的实践,教学改革取得了优良的成绩。教师采用软件工程课程案例式驱动教学,学生通过近一年的项目实践,能够全面掌握面向对象的软件系统的开发设计和维护,提高了分析问题和解决问题的能力,掌握了项目开发管理的基本流程方法,为将来的学习、毕业设计和工作奠定基础。当然,在今后的教学工作中,还要更多地开发和探索其它优秀的教学方法,积累经验,争取获得更好的教学效果。
参考文献:
[1]汪璟玢.案例与项目实践结合的“软件工程”教学方法[J].计算机教育,2012(5).
[2]王小刚.改进软件工程类课程课堂教学效果的几种方法[J].计算机教育,2012(6).
[3]甘沅鑫.高职院校软件工程课程中案例教学法的实现[J].科教纵横,2012(5).
关键词:《软件工程》教学改革理论教学实践教学
当前《软件工程》课程教学中存在的一系列问题,直接影响了教育质量和教学效果。具体表现为:教学内容重理论而轻实践,不能有效地培养学生软件开发技能[2];教学案例缺乏完整性和实用性,不能帮助学生从整体上全面理解软件开发的各环节及其之间的关联[3];实践教学也缺乏系统性和针对性,不能将基本原理融入当前软件实际案例中去讲解,教学内容与软件工程实践有明显的差距等。因此,迫切需要对教学体系进行改革,形成一个融基础理论、实验教学、工程实践为一体的整体培养机制,让学生的基础知识、科学素养、专业知识、创新能力、工程能力和职业素质都得到全面均衡的发展[4]。本文将从理论教学、实践教学以及教学评价几个方面进行改革与探索。
1理论教学探索与思考
为了满足当前软件工程教育国际化和工程化的发展要求,《软件工程》教学以IEEE的软件工程知识体系为基础,结合基础知识、先进技术和工程实践等方面构建该门课程的知识体系。《软件工程》课程知识体系分为基础、应用、实践三个部分。基础部分为理论教学,根据教学目的和教学要求,采用案例及问题驱动等教学方法,讲解软件工程的理论基础知识,包括软件生命周期各个阶段、软件质量和软件项目管理等核心内容,通过案例的分析,促进学生的独立思考,提高其对理论知识的理解和掌握。应用部分是以当前流行的统一开发过程、面向对象技术和UML语言为核心,融入实际案例,RationalRose、Visio、Project、SVN、Loadrunner等软件工程工具和环境,使学生掌握当前先进的软件工程方法与技术。实践部分要求学生分组组建团队协作完成一个软件系统的开发,让学生从“可实践”软件工程的角度学习和运用软件工程的思想和现代技术解决软件开发问题,拥有识别、分析和解决具体问题的能力。《软件工程》课程知识体系如图1所示。
单纯地讲授《软件工程》的理论和方法显得枯燥且难以理解,若能通过一些软件开发案例对理论知识进行形象的表述,不仅能让学生易于理解这些理论和方法,亦能建立软件开发的系统化与工程化观念和质量意识。那么如何收集经典案例以及采纳何种教学方法是关系理论教学成败的关键因素。首先案例的选择与设计要有针对性,如结构化和面向对象,这两种方法侧重知识点不同讲解所贯穿的典型案例应不同,其次案例的选取应是学生熟悉的领域且它的实用性能激发学生的求知欲和兴趣。如在软件工程技术方面,作者结合学生成绩管理信息系统、宿舍水电费管理系统、教学管理系统等,论述需求分析、软件体系结构设计、用户界面设计、详细设计和软件测试等内容,重点讨论基于案例的面向对象方法和组件技术。采用何种教学方法应根据具体的知识点而定,如以IBM初期系统开发失败的缘由为例利用问题驱动法引出软件工程的概念和原理;对于软件开发工具RationalRose的介绍则采用项目驱动法。因此,在理论教学中,把抽象的知识尽量形象化、案例化,采用引导式、探索式、讨论式和交互式等教学方式营造融洽轻松的学习氛围,鼓励学生独立思考,查阅资料,细心体会当前软件工程的精髓。
2实践教学内容创新模式
应用部分和实践部分均属于实践教学,在此教学过程中,实施项目驱动教学法,实验设计以项目开发为主,模拟企业软件的项目管理和开发过程,碰到问题困难,进行师生互动讨论寻找解决方案,开发完成通过成果展示来进行教学评价,整个过程使学生初步体验到一个软件项目开发的全过程。实践教学活动的流程具体如下。
(1)分配任务:第一次课,要求学生以项目小组(一般5~6人,自由组合,每个成员扮演项目开发过程中的不同角色)的方式组建开发团队协同开发一个规模及难度适中的完整项目,要求按照正规软件开发流程组织实施,完成项目开发过程中形成的分析、设计、编码和测试文档,同时将RationalRose、Visio、Project及Loadrunner等软件工具在实施过程中进行有效地应用。
(2)组建团队:学生自愿组建团队,选出组长,每组角色包括项目经理、系统分析员、软件设计师、软件开发工程师、软件测试工程师等,组员项目角色可随项目开发进度而调换。项目实施过程中采取组长负责制,负责小组的讨论和项目实践的安排,分配组员任务,各小组查资料,自选软件项目,分析开发的各项任务的安排和沟通,制定项目的开发计划。
(3)计划可行性评定:授课教师审核各组项目及项目计划实施的可行性,不行则指导小组重新选定软件项目和制定项目计划。符合要求,方可进入实施阶段。
(5)项目验收:根据软件开发流程的各个阶段成果包括可行性分析报告、需求规格说明书、项目计划书、总体设计报告、详细设计说明书、软件测试报告、项目开发总结报告等。项目验收采用阶段验收分析设计文档,每次均以小组的形式提交作业。教师根据提交的材料结合学生是否熟悉软件常用技术和工具按照软件工程管理方法进行评审,还要求各组之间互评,发现不足之处进行讨论,提供给大家一个互相交流的机会。项目结束后,每组要组织答辩,先由小组长对项目基本情况及组员作简要介绍,然后让各组员对自身完成的任务进行PPT答辩,教师和其他同学针对该成员实际负责的部分进行提问。最后项目组提交系统和所有文档。
3教学评价体制改革
教学评价是课程教学的必要环节,在本次教学改革实践中,将课程学习评价分成3个组成部分:理论考核占50%,项目实践成绩占30%,考勤、平时作业、实训练习等占20%。项目实践成绩的评定包括小组成绩和个人成绩两部分,各占50%。小组成绩为小组中所有成员开发项目的考核成绩,包括各阶段成绩的平均值与最终答辩成绩;个人成绩为小组成员在项目开发过程中个人的考核成绩。度量因素包括个人分配工作量及难易程度、平时工作态度及项目汇报时表现等。这种评价体制充分调动了学生学习的主动性和合作精神,教学效果明显。
4结语
本文对《软件工程》的课程教学进行了探索和改革,以IEEE公布的软件工程知识体系为基础构建了软件工程课程知识体系,提倡理论教学与实践教学并重。理论教学着重于经典案例的选取及教学方法的采纳,理论教学不再是抽象的讲授,而是贯穿案例的具体实践操作,达到了理论与实践的紧密结合。实践教学以项目为驱动模拟企业软件的项目管理和开发过程,引导学生积极思考和参与讨论,教师由知识的灌输者成为学习的引导者,学生由被动地接受教育变成主动地探索知识。实践证明,本课程极大地提高了学生的学习兴趣,取得了良好的教学效果。在今后的教学工作中,将进一步完善和实践教学改革的内容,逐步使这门课程规划化、工程化,取得更好的教学效果。
参考文献
[1]张海藩.软件工程导论[M].5版.北京:清华大学出版社,2008:5-7.
[2]董跃华,杨书新,李淑芝.软件工程专业多元化实践教学体系研究[J].江西理工大学学报,2009,30(3):53-55.
关键词:软件工程能力;产学合作模式;实践环境;团队协作
1企业需要应用型计算机人才
IT企业要求员工掌握符合国际标准的软件工程规范和技术规范,熟练运用外语,具有良好的团队协作能力,能够参与国际软件开发竞争。然而近10年来,我国各类高等院校培养的软件人才的质量存在很多问题,由于与实践严重脱节,导致大量拥有较高知识体系的大学生不能很好地胜任软件开发工作。
2《软件工程实验》课程的现实问题及反思
《软件工程》课程教学目标是:使得学生能够学会将“系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即工程化应用到软件上”。
《软件工程实验》课程应该成为教学与实践之间的桥梁,然而现实教学中软件工程的教学与实践之间存在着一条跨度不小的鸿沟,教学与实践脱节的现象普遍存在。一些现实状况需要引起我们的注意与反思。
2.1大部分学生的软件开发实践较少,很少参与开发实际的软件项目,学生普遍感觉软件工程课程中的理论知识抽象,不容易在课堂讲授中获取切身的体会和认识,很难真正理解和掌握软件工程的内涵。
2.2没有好的实际项目给学生提供给做实验,缺乏完整的项目训练,与实践严重脱节,无法满足软件企业发展的需要。
2.3无法提供实际环境给学生。在一般的学校实验室环境下,软件工程过程能力和团队协作能力很难体现出来,做不到锻炼综合运用知识的能力。
2.4落后的实验教学指导方法,忽略了系统分析环节及学生系统分析能力的培养。现在老师给出的题目不管是什么应用领域,教师对课程作业的布置形式依然大同小异,首先会描述涉及到的数据结构信息甚至数据库信息,然后将具体功能需求详细罗列出来,最后要求学生提交设计报告和源程序。使得很多学生重视编程等技术的学习而忽视学生在软件工程的各个环节能力的培养和文档的编写。
以上《软件工程实验》的问题可以说各个学校都存在,非常现实。如果把培养应用型软件人才的指导思想放在首位,发挥教师的能动性,就有多种办法可以实施。《软件工程实验》课程采用产学合作就是一种新型有效的模式。它能解决本科生在学习中重理论轻实践,缺乏综合运用各种知识来完成实际工作的问题。
3产学合作模式在培养应用型软件人才的优势
《软件工程实验》课程和企业联合,可以达到双赢:
3.2企业方面选择符合企业发展的战略合作伙伴,一方面建立人才资源共享链,可以选择较优秀且成本较低的合格人才,在员工录用上做到录用适合企业的人。另一方面可以把一些适合学生做的各种实际项目交给学生做,希望能做到真正的产出,降低项目开发的的成本。实践证明,经过一系列的努力,合格的软件是可以由这些学生在软件工程实验课程中完成的。学生收获很大,企业既收获了软件又收获了人才。
4以培养应用型软件人才为目的的产学合作模式
针对各种软件工程实验课程的问题,再结合培养应用型软件人才的目的,我们在设计《软件工程实验》课程时,采用了产学合作模式。
4.1《软件工程实验》课程和产学合作的特点①可以选定合适的企业实际软件项目。该软件项目必须来自现实社会,具有实用性和时代性。②学生必须按照一定的组队原则组成项目组。项目组内按软件开发阶段和任务划分设置若干个岗位,分工明确、各负其责,又互相协作。③学生可以深入企业,了解项目的背景和业务。使学生能提炼一个真正的公司的需求。④让学生能够得到企业对软件工程规范性的要求。驱使学生严格按软件工程的原理、技术、过程、管理等要求去完成项目。⑤企业可以以很低的成本得到合乎质量的软件。因为企业的积极参与及过程管理、质量管理,学生可以开发出满足企业要求的软件。⑥企业可以可以选择较优秀且成本较低的合格人才。
4.2《软件工程实验》课程和产学合作的实施
4.2.1在教学计划制定时,从2008级开始我们把软件工程专业的学生的《软件工程实验》课排在所有软件工程专业模块课程之后,为36学时,在大学四年级上学期第10周到第18周进行,周学时为4。这样的安排是希望软件工程专业的学生在学完软件工程导论和所有软件工程专业模块课程之后,对软件工程的各个阶段的理论、方法、技术、工具有了详细的了解之后,按照软件工程的要求进行一次完整的软件开发训练。
4.2.2三年级结束后的暑假开始企业提供实际项目的原型或简单说明,让学生基本熟悉业务,在项目中进行业务分工,明确组织中的成员关系。
【关键词】软件;度量;管理;应用
一、软件开发过程度量体系架构
图1软件度量过程体系结构
(一)度量过程计划的制定
(二)度量过程的实施
度量过程的实施是依据制定的度量过程计划来进行的。因此,实施度量过程也有两个方面的内容:一个是进行数据的采集,即依据已经度量好的操作去进行数据的采集,并做好记录与存储工作;另一个方面就是对采集到的数据进行分析并提交分析报告。
(三)改进度量过程
改进度量过程是度量过程体系中可能存在的一个活动,这是一个进行不断优化的过程活动。这个活动存在的目的就是为了对度量过程进行不断的改善与优化,使这个度量过程能够适应项目进行过程中各种突发问题对项目管理产生的干扰。
二、软件规模度量方法及其应用
(一)度量方法介绍
(二)基于FPA方法的软件度量体系及其应用
随着知识经济水平的不断提高,加上信息化建设步伐的加速,计算机软件行业得到了迅猛的发展,这也给软件产业的发展带来了一定的挑战。对于软的开发过程实施有效的管理不仅能够提升软件开发过程的成本和效果,而且还能促进企业管理水平的提升。对于一个成功的开发软件系统的过程,开发出的软件能够按时保质的完成并交付给用户。从对国内外软件项目开发的管理来看,影响软件开发过程成败的因素多种多样,而这其中的关键因素主要是软件开发成本的估算和管理控制。因此,对于一个即将进行的软件开发项目,需要对这个项目的规模大小、研发需要的资源和进度等情况作出一个合理的估算。
借助于当前在软件发展行业广泛应用的度量体系来解决企业软件项目管理方面的问题,其现实意义和作用巨大。如下将对基于FPA构建满足决策者需求的度量方法进行探讨。
1.FPA方法介绍
对于一个软件项目的规模,FPA方法认为由三个部分组成:信息处理规模、技术复杂程度和功能点数(FP)。
(1)信息处理规模
依据FPA方法,分析软件开发的度量管理过程,发现采用这样的方法对信息进行标注,能够计算出对系(或模块)中的每一种元素的数目,将计算出的元素数目与加权值的合计数进行相乘,即为信息的处理规模,成为UAF。每一种描述权值对应的数据如表1所示。
表1功能点权值表
功能点统计值加权因数
容易较难偏难容易较难偏难
外部输入数I1I2I3235
外部输出数O1O2O3346
外部查询数Q1Q2Q3257
内部逻辑LF1LF2LF381014
外部接口
文件数EF1EF2EF36712
计算的方法为:FP=I+O+Q+LF+EF
式中每一项的计算值分别是统计值和加权系数的累加。其值分别为对应的加权因素的系数乘积之和。
(2)技术复杂度
(3)计算功能点数
对于修订后的功能系数,直接将功能点书和修订系数进行相乘即可得到。
2.FPA方法在软件工程开发管理中的应用
(1)计划度量
(2)完善和提升度量体系,促进软件开发过程改进
三、总结
[1]周伟良.软件开发过程质量与产品质量度量方法研究[D].合肥工业大学,2012.
[2]郭都.基于软件度量技术的项目管理系统关键模块设计[D].中国科学院大学(工程管理与信息技术学院),2013.
1.1盲目性应用
1.2无规范性操作
2项目管理在软件开发中的应用措施
(1)对软件开发项目的成功标准做准确的设定。
(2)对项目之间的各种要求把握要合理。
(3)对软件的标准进行新的定义。
(4)建立适合的沟通渠道。
(5)制作个人计划。
(6)具备完备的需求说明。
(7)对任务进行有规律的分配。
(8)选择正确的技术并进行相应的估算。
项目管理在软件开发中的具体作用为:
(1)可实现人力、物力、财力的合理分配。
(2)对企业软件的启动、研发进行高标准的组织。
(3)合理的对各个项目进行合理的划分,实现层次管理、合理分配。
(4)调动员工的积极性,实现企业利益的最大化。因此,可以看出项目管理可有效地促进软件开发的进程与管理,是实现软件开发任务、资源管理、成本预算、项目跟踪及企业利益的良好标尺。实现项目管理与软件开发结合是企业形成良好的业务循环的重要手段。项目管理在软件开发中具体的应用措施有:
2.1完善制度
2.2初步设计
2.3硬件选型
硬件选型的过程就是根据软件的运行状况选择其运行于哪种硬件上的过程。硬件设备的选择需要根据所开发软件的类别进行选择,例如:开发小型单机软件,需要一台电脑就够了,但是开发大型单机软件则不一样了,需要多台电脑、外网网线、路由器、局域网。项目管理的软件开发首先要构建软件系统,做好预算,不断改进设计模型,做好项目资源管理的控制和软件的优化方案。其次,需要对软件系统进行测试,根据项目管理对软件的需求设计科学合理的测试方案,不断完善硬件选型上的不足,做到硬件与软件的科学有效运行。
2.4软件设计
2.5软件的测试
软件的测试是检测所开发软件好坏的良好标尺。软件的测试,即由软件工程师编制代码后,按照《测试大纲》进行自测,并将自测后的数据进行可靠性的综合分析测试。其主要包括:
(1)功能性测试,即对产品的每一项功能进行逐一测试。
(2)应用性测试,即将所开发产品运行与实际操作中,进行现场模拟的EMC、EMI测试。并根据测试的结果,做好详细真实的记录,列出不合格项目,有待加强项目、研发人员定位等确立故障的具体原因,为故障的分析与改正打下基础。
2.6文件归档
文件的归档,即对所开发的软件项目做出完整的整合记录,实现软件的可升级性、可维护性、可继承性及可完善性的良好数据说明系统,是加强积极管理的有效手段之一。对于软件来说,确保一次性研发成功最好,若中途发生了变差,则需要进行修改,在对软件系统进行修改的时候,就需要对文件再次进行归档。所要归档的文件一般有: