软件工程实践报告范例6篇

前言:中文期刊网精心挑选了软件工程实践报告范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。

软件工程实践报告

软件工程实践报告范文1

作为一名在技术岗位的职员,要具备一定的专业知识,不断地充实自己,在不断的工作学习与研究中成长,要有很好的团队协作精神,有很强的执行力,能真正为企业做实事。在智通上班的三个月里,我主要完成了以下工作项目:

一、 刚来的两个星期,由于目前网站工作的需要,师傅指导一边熟悉工作职位环境一边学习asp,用了两个星期系统地学习了这门从未接触过的asp语言,为接下来一个月的工作打了坚实的基础。

二、 接下来的时间,主要配合网站先前asp的后台管理系统进行某些功能优化与系统维护工作。先后完成了销售管理模块的最新注册企业查询、职业推荐给求职者、把求职者推荐给企业、会员职位刷新、职位刷新统计等几个模块的功能修改与优化,解决了业务员带权限控制的查询、推荐时间的控制与查询速度优化、企业职位刷新时的权限控制与企业职位时效性的控制以及完成对各销售组成员的职位数统计,职位刷新数统计的功能设计。在完成这些各种功能需求的时候,对后台管理系统进行了深入的分析研究,因此对销售管理模块非常熟悉,给目前网站新版开发的后台设计提了不少建设性的想法。之后还完成了logo管理模块中的投票项目添加优化与投票结果统计查询修正、logo、banner的管理与文本文件的生成。还完成了客服管理模块中后台开通资料查询的改进,企业管理、个人管理模块查询功能的改进。期间还完成了部分功能错误的修正,如校园招聘管理图片不能上传、文章类别不能修改、文章不能删除等。

三、 目前新版是用jsp开发的,在这三个月里,我进一步对java,jsp的深入学习,了解了mvc模式开发,在这阶段的学习期间,我以一个小商务系统的开发作为学习任务。还对当前流行的jive代码与开发思想进行了初步的学习研究。

四、 作为一名系统开发与维护工作者,当然不能忽视对数据库知识的学习,在这段时间我也进一步对sql语句进行了深入的学习,对sql语句的查询进行了分析,比较重视数据库性能分析与调整这方面的知识学习。通过这阶段的学习,把这些知识与方法运用到了对后台管理系统会员查询的速度优化功能上,在实际工作中得以实践运用。

五、 网站新版开发方面,主要还为新版做了几个数据库对照表。

六、 还参加了网站新版的第二轮测试工作,主要以后台管理系统为主做测试,还参与了前台个人管理与企业管理的流程测试,测出了不少关键性的bug。

七、 入职以来,还担任了网站部群发邮件的工作。三个月内完成了好几批邮件群发的工作,每天定时定量地给在无忧无虑网站上注册的企业或会员群发几十万封邮件。还配合客服部群发了两批特殊活动的邮件,配合网站营销活动群发了两批群件,每天坚持固定给注册会员群发。

在网站技术部工作的三个月里,自己感受非常多。首先,作为刚从学校出来的毕业生,在实际开发中的经验尚不够成熟,还需要在工作中不断的提升自己。其次,要进一步提高自己的开发技能,使自己的技能满足今后的需求,主动获取并学习当今最新技术信息,平衡自己的知识结构,在不断的学习中提高自己。然后,要加强与同事们的沟通,融入团队,互相学习、相互提高,在团队中不断完善自己。

我相信,通过我的努力,一定能成为智通的优秀员工,一定会在优秀成绩之上提升自己。同时我希望公司能根据情况给我培训深造的机会,也希望部门内能有经常性的专业技术学习。

·如何写述职报告 ·个人述职报告范文 ·新员工述职报告 ·教务主任述职报告

·评职称述职报告 ·新教师述职报告范文 ·村干部述职报告 ·销售述职报告

软件工程实践报告范文2

关键词:软件工程;课程;教学改革

中图分类号:G642 文献标识码:B

文章编号:1672-5913(2007)08-0034-03

1 软件工程类的课程结构

软件工程最初是作为一个知识域在计算机科学与技术的课程体系中出现的,随着信息产业的发展,软件工程逐渐发展成为一门独立的学科,并拥有了一整套的课程体系。对于软件工程专业人才的培养来说,作为产业决策、职业认证和课程教育的依据,由美国IEEE的计算机协会(IEEE―CS)和ACM联合公布的2004版《软件工程知识体系指南》(SWEBOK,Software Engineering Body of Knowledge)是十分值得关注和借鉴的。在SWEBOK中,软件工程学科被分解为10个知识域:软件需求、软件设计、软件构造、软件测试、软件维护、软件配置管理、软件工程管理、软件工程过程、软件工程工具与方法、软件质量[1]。

示范性软件学院强调按学生需求设置课程,尤其是计算机专业的人才培养模式和课程设置的区别[2]。软件学院和常规的计算机专业在“软件工程基础”课程的教学要求上存在较大的区别。在计算机专业的课程体系中,除“软件工程基础”课程外的其他软件工程类课程就较少了。而“软件工程基础”课程在软件学院的课程体系中更多地是作为专业平台课程出现的,它需要总揽所有软件工程知识域的要点,为其他课程的学习打好基础。另外,“软件工程基础”课程提供的课程实践也需要为其他各个知识域的深入学习提供实践经验和体会。表1是浙江大学软件学院本科教学体系中与软件工程相关的课程情况。

“软件工程基础”是软件学院本科阶段重要的基础课程之一,这是由软件工程在软件产业中的重要地位所决定的。本文根据在浙江大学软件学院的教学实践,通过分析“软件工程基础”课程在软件学院课程体系中的定位,探讨该课程的目标、教学内容和方法等。

2 教学内容

根据在课程体系中的定位,软件工程基本理论和概念的教学内容应体现平台性和框架性。软件工程是一种层次化的技术,它的学科内容主要包括过程、方法和工具。过程是将技术结合在一起的凝聚力,使得计算机软件能够被合理和及时地开发,而支持软件工程的根基是对质量的关注。所以在实际教学中应着重于软件工程的整体性,了解整个知识体系的内容,不必每个细节都深入完整。在后续的课程中,将会对软件工程的每个知识域做深入的介绍,如需求分析、软件测试等。

我们选用了Roger Pressman的经典教材《软件工程・实践者之路》(影印版,清华大学出版社),主要教学内容包括软件产品与过程、项目管理、传统软件工程方法学、面向对象软件工程等。软件工程是发展非常快的一个研究及应用领域,很多新概念并没有相应的中文术语,硬性翻译既不自然也不便于理解。多年来我们一直采取双语教学,除了课堂讲解中部分使用中文以外,其他环节(包括课件、习题、大型实验项目说明、各阶段实践报告、考试等)都使用英文,使学生理解原汁原味的概念和术语。同时引导他们直接阅读国际软件工程权威们定期召开的研讨会报告原文,理解大师们的观点和软件工程技术的发展趋势,培养学生自主学习的能力以及日后国际交流的能力。

在教学中,我们特别注重教学内容与软件企业实践的相结合,与国内外多家企业合作办学,并经常邀请企业的管理和技术人员到学校来讲学。

课堂理论教学的目的是使学生掌握软件工程的基本概念、原理和方法,并且还要培养学生严谨求实的科学态度和合作精神,激发他们的创新意识和创业精神。我们改革了考试形式,采用开卷方式,改进笔试内容,将需要背诵或能够直接从书上找到的考核内容减少到卷面成绩的30%以下,使其更能反映学生对软件工程思想的理解和运用,目的是尽量避免学习中的死记硬背、不求甚解的现象,注重对分析问题解决问题能力的考核。

3 课程实践

软件工程的研究在短短三十多年的时间里飞速发展,内容更新快且覆盖面非常广泛。对软件工程的理论、方法的掌握需要读者具有一定的实践经验才能真正领会其中的精髓,所以我们在软件工程课程教学中,特别注意避免空洞的理论灌输,强调理论与实践并重的教学理念。教学安排中除了32学时的理论教学之外,还有32学时的课程实践。

考虑到在课程体系中的定位,软件工程的课程实践并不追求最终开发的软件成果的完善性和某个单项技术的深入。我们的目标是通过在课程实践中的系统分析与设计、软件项目管理、合作与交流等方面的训练,培养学生综合运用软件工程的过程、方法等知识开发实际项目的能力。在项目实践中要注重的是项目和过程管理、组织和管理能力的培养,为学生在今后的相关课程学习中打下良好的基础。

在课程实践中布置大型模拟案例,将学生划分为6~10人的小组,分工合作,共同完成该模拟项目。课程实践随理论教学进展布置需求分析、总体设计、详细设计、编码、测试、维护(版本升级)等任务。要求每个小组进行项目管理和过程管理的实践,给学生上台报告的机会,从而训练学生的分析能力、开发能力、组织能力和表达能力,并培养团队精神。

为培养学生的组织和管理能力,在课程实践中我们要求每组对个人的分工上不是简单地采取分系统模块的方法,而是鼓励按过程分配任务,让学生体会到项目开发时沟通和合作的重要性。另外,通过让老师、助教和一小部分学生扮演用户的角色,提高学生在需求分析中的谈判与沟通技巧。

在整个学期的开发过程中,项目组必须定期自行组织召开协商会议,就项目进度、模块接口等管理与技术问题进行非正式的沟通和磋商。学生们需要提交4份正式的书面报告:需求分析报告、概要设计报告、详细设计报告和测试报告。

在实践课中还安排专门的时间用于学生分组演讲,老师和学生可以进行提问。一方面可以对每个小组的工作进行指导和提出意见,另一方面也避免了一些学生的搭车现象。最终经过一个学期的软件系统设计和开发工作,每个小组要提交2个版本的软件产品:初步的和改进的版本。

为了切实体现理论与实践并重的教学理念,本课程加大实践环节在成绩中的比重,将期末笔试的比例降低到60%,将课程实践的考察成绩提高到40%。这在实践中取得了很好的效果。

4 团队精神的培养

真实的软件项目通常是由一定规模的项目小组来完成的。软件工程师不仅需要完成个人的工作任务,还需要与项目组成员协同工作。因此只有具备良好的团队精神,才能与其他成员共同开发出高质量的软件产品。

软件工程并不只有技术问题,还涉及人的问题[3]。通过课程教学和实验使学生深刻认识到软件开发的成败在于人,而不是技术,良好的团队精神对于项目的成功是至关重要的。

所谓团队精神,简单来说就是大局意识、协作和服务精神的集中体现。团队精神要求有统一的奋斗目标或价值观,而且需要相互信赖,需要适度的引导和协调,需要正确而统一的文化理念的传递和灌输。团队精神强调的是组织内部成员间的合作态度,为了一个统一的目标,成员自觉地认同肩负的责任并愿意为此目标共同奉献。

团队精神的培养不能单靠理论灌输,而是要通过课程实践中的磨合才能真正理解。在课程实践中要采取的措施有:建立团队的行为习惯及行事规范;注重从小组的团队去考核;定期的会议交流等。

在课程实践中,我们创新性地提出“项目经费”法,即在验收每一阶段的项目开发工作时,将每组的平均得分乘以该组人数,作为“项目经费”统一划拨给各组长,由组长根据组员工作量进行具体分配,每个人得到的经费多少就代表了他得到的分数。相比于以前由教师统一给分的情况,组长的分数更为客观公平地体现了每个学生的参与程度。

“项目经费法”体现了对团体利益的追求,小组团队得到的“项目经费”直接决定了可供小组内成员分配的利益,让每个人都能体会到团队的利益即是个人的利益。同时,“项目经费”由小组自己决定如何在成员中分配,也体现了对个人贡献的奖惩,能调动大家的积极性。

5 结束语

培养一名优秀的软件工程师需要较长时间实际工作的锻炼,但是在大学的几年里,学生应该养成良好的职业精神、优秀的学习能力以及基本的专业技能。“软件工程基础”是软件学院中一门非常重要的专业基础课程,学习的效果直接影响到后续其它课程的学习以及今后的实际工作,同时软件工程学科的内容日新月异,这些都要求我们在课程教学中以社会和企业的需求为主导,不断创新和探索。

软件学院中“软件工程基础”课程教学的重点在于它需要总揽所有软件工程知识领域的要点,在课堂教学的内容安排上要体现平台性和框架性,课程实践应利用大型模拟案例的锻炼,让学生真正体会到软件工程原理和方法的精髓,从而培养出具有国际市场竞争力、软件产业急需的高层次实用性人才。

参考文献:

[1] /

[2] 张尧学. 关于创办示范性软件学院的思考[J]. 中国高等教育,2004,(10):3-7.

[3] 沈备军,宋超. 反思和抽象在“软件工程中人的因素”课程学习中的应用[J]. 计算机教育,2006,(1):52-56.

软件工程实践报告范文3

关键词:工程硕士;开放式教学;课程组

中图分类号:G642文献标识码:B

1引言

软件学院软件工程硕士的培养目标是培养高层次、应用型人才,针对这个目标,其教学实施应着重体现出以下两个差异性:

(1) 软件工程学科领域和计算机学科领域间专业设置的差异性,这个差异应能够很好地体现培养应用型人才的目的;

(2) 工程硕士课程和软件学院本科课程的差异性,这个差异应能够很好地体现培养高层次人才的目的。

目前国内软件学院软件工程学科和传统的计算机科学学科在课程设置上差异还不显著,工程硕士的培养方案中甚至部分课程只是本科阶段的重复。虽然大都开始强调学生的软件项目实践,但普遍缺乏过程管理。本文在对IEEE的软件工程知识体系进行深入学习的基础上,针对软件学院软件工程硕士提出了实现开放式教学体系的教学改革方案。

2软件工程知识体系

2004版SWEBOK将整个软件工程知识体系分为11个知识领域(Knowledge Area,KA),其中前5个知识领域是按软件开发的生命期诸阶段排列的,即软件需求、软件设计、软件构造、软件测试和软件维护;后6个知识领域是软件开发中的支撑性或者辅的方面,可能覆盖软件开发的多个阶段,包括软件配置管理、软件工程管理、软件工程过程、软件工程工具与方法、软件质量、相关学科知识领域。这些知识领域SWEBOK并没有重新系统规定,而是直接套用已经成型的各领域知识体系,因此不可避免地存在重叠和不匹配。

在SWEBOK的基础上,IEEE与ACM又共同拟定了CCSE。其中的核心部分是软件工程教育知识(SEEK)。SEEK由十个知识领域组成,包括:计算机基础(CMP)、数学和工程学基础(FND)、职业实践(PRF)、软件建模与分析(MAA)、软件设计(DES)、软件验证(VAV)、软件演化(EVL)、软件过程(PRO)、软件质量(QUA)、软件管理(MGT)。

可以看出,SEEK和SWEBOK基本内容是相近的。总的来说,二者都是包含了软件工程核心类的知识领域、基础类或前导类的知识领域,以及其他相关领域的知识。

3高等教育教学改革研究状况

目前国内关于高等教育教学改革的论文很多,如翁敬农、刘云等在软件学院实践教学体系的内容与规划中提出了“一个目标”、“两种途径”、“三大环节”、以及“四级台阶”的具体步骤。王移芝、林艳琴提出基于“两段教学”的计算机基础课程的教学体系框架。谢芳清、闫大顺提出了以素质教育为目标的实践教学体系。王浩、胡学钢等提出计算机科学与技术专业实践教学体系的总体研究与建设。王志英以国家实验教学示范中心为例,提出实践是综合能力培养的基础,并以此构建计算机科学与技术专业实践教学体系。董玮、邱建华等以专业课“程序设计基础(C语言)”为例给出了建设实践教学体系的实践探索。然而目前还没有检索到专门研究软件学院工程硕士教学改革的论文。无论是从传统计算机科学与技术专业与软件学院软件工程专业的区别,还是本科生与研究生的区别来看,针对软件学院工程硕士的教学改革研究都是十分有必要的,同时也是迫切的。

4工程硕士的课程体系设计策略

我们以IEEE SWEBOK和CC2004SE的知识体系为主体,结合中国软件产业以及本院的具体实际情况,设计了中国科学技术大学软件学院软件工程专业的知识体系,作为我院工程硕士课程设置和教学计划实施的依据。以SEEK为基础,我们对软件工程的课程设置进行规划。整个课程设置可以分为三个层次,即导论性课程、软件工程核心课程和其他课程。如图1所示,该知识体系定义了7个知识体系子类。计算机基础和数学和工程学基础属于导论性课程、其他课程包含了职业实践、领域课程、软件工具、工程实践等四个子类。

其中计算机基础定义了软件工程作为计算学科所必需包含的计算科学基础以支持软件产品的设计与建设;数学与工程学基础提供了软件产品获得所需属性的理论和科学基础;职业实践则聚焦于软件工程师以职业行为从事软件工程实践所必需具备的知识、技能和态度;软件工程核心课程应该包含软件开发生命周期所涉及到的主要知识领域;领域课程包含了对于某个特定领域软件工程师应该接受的特定教育或经验;软件工具定义了从事软件工作所必需掌握的当前主流工具与软件产品等;工程实践则是学生使用所学到的知识从事实际开发活动,提供动手能力的重要环节。

对于工程硕士来说,大部分同学经过计算机本科专业的学习,已经具备了初步的计算机基础以及数学与工程学基础,因此目前其课程体系建设如图2所示,重点是完成软件工程核心课程教学,并结合IT界的最新技术趋势设计相关领域课程。教学改革的核心是如何设计软件工程的核心课程,并指导学生熟练掌握相应的软件工具,强化他们的实践动手能力。

5工程硕士开放式教学体系建设

对于如何设计软件工程的核心课程,我们的主要思路是打破原先各子知识体系间的界线,围绕专业培养目标,结合学生的工程实践,引入课程组的概念,实现一个完整的开放式教学体系。如图3所示,整个开放式学习体系包含三个部分:

(1) 设计课程组:在理论环节采用课程组的概念,集中讲授较高层次的、符合硕士生水平的软件工程的某些重要环节;

(2) 开设实践教学环节:在实践教学中采用做中学(Learning by Doing或LBD)理念,由指导教师讲述软件工具的具体操作过程,同学实际动手学习;

(3) 强化工程实践:在工程实践中由学生自主选题,并将LBD中讲述的工具在项目整个生命周期中贯穿使用。

5.1设计 课程组

目前我院开设的高级软件工程和本科的软件工程课程内容并没有太大差别,对于软件工程的各个环节面面俱到,但又都比较浅显,对于工程硕士的培养显然是不合适的。因此我们设计了软件工程课程组的理念,初步设计了以下课程:

(1)“软件开发管理”(Managing Software Development)

(2)“软件系统架构”(Architectures for Software Systems)

第一门课程主要针对以后立志从事软件工程管理方向的同学,课程针对IT项目集中阐述如何实现风险、资金、工期等各方面的管理;第二门课程主要针对以后立志从事软件高级开发方向的同学,课程主要讲述复杂软件系统架构层上的设计,介绍目前通用的软件系统结构、设计技术以及实现这些结构的模型、表述方法等。这两门课程对于软件工程硕士应该至少必修一门。除了这两门课程,其他软件工程类的课程包括了设计模式、软件测试、语言类课程如J2EE、.NET等等,学生可根据自己的实际情况进行选修。

5.2开设实践教学

针对该课程组,我们开设了实践教学环节,采用做中学理念,由指导教师(可以由助教担任)根据事先确定的主题,选用具体工具讲述如何使用该工具完成项目开发的某具体环节,工具涵盖了项目管理、架构设计文档化以及测试等软件项目开发的主要方面。

对于软件工具的选择,有两种思路。一种方法是对软件工程的不同环节分别选择不同工具,例如项目管理选Project、开发文档化选Rational、测试再选别的工具这样来做,但结构分散,不利于整体化考虑。另一种是采用套件,完成项目开发全程的所有操作,目前我们选择了两种套件,一是微软的VSTS,该套件和微软的Visual Studio开发平台绑定,适合学习.net开发框架的同学;另一种是IBM的RSA,该套件和Eclipse开发平台绑定,适合选择开源J2EE开发框架的同学。

5.3强化工程实践

大多数的软件学院目前都开设了专门的工程实践环节,但实际的效果并不尽如人意。因此我们将工程实践环节也纳入到开放式学习体系中,以前面所说的理论以及实践教学环节来指导学生更好地高质量完成整个工程实践。

从教学方法上,工程实践应尽可能地贴近现实项目,除了常见的软件工程文档,我们还要求学生提交过程管理类文档(软件开发合同、会议记录、工作日程记录、合同执行报告:财务报告和开发过程报告、个人总结、小组总结等)。

从技术上,学生可以自由选题,也可参考工程实践题库中的选题。选题涉及所有领域课程包含的内容。要求学生必须采用实践教学环节中介绍的工具全程介入项目开发的各个阶段。学院设立专门的工程实践网站提供学生选题及交流,以及指导教师的监督。

从教学形式上,则注重如何实现应用型软件人才的核心能力分析与培养,要求学生运用职业实践子知识体系中的相应内容,锻炼学生的口头表达能力、书面表达能力等。通过学生的开题演讲、采用各种工具完成相应的项目文档、结题答辩等环节来实现学生职业素质的培养。

从实践效果评价上,我们制定了一系列的成绩考核方法、管理考核信息、分析考核结果、评价教学质量等措施,实现完整的考核体系。

6结论

软件工程专业学生的培养,在学科教育与培养面向市场需求的人才方面有着事实上的矛盾。软件学院现有的实践教学体系存在着专业课程设置定位不准确、课程实验师资不足、实验教学内容质量不高、实验指导和管理落后等问题。根据软件工程专业教学所面临的挑战,在充分调研IEEE SWEBOK和CC2004SE知识体系的基础上,针对软件学院的工程硕士,我们提出了软件工程硕士开放式教学体系的建设,围绕专业培养目标,结合学生的工程实践,引入课程组的概念,制定了一套较为完整的开放式实践教学实施计划。

参考文献 :

[1] Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering [EB/OL]. [2004-08-25]. /ccse/SE2004Volume.pdf.

[2] 翁敬农,刘云. 北航软件学院本科生实践教学体系的研究与实践[J]. 计算机教育,2007(11).

[3] 王移芝,林艳琴.“计算机基础课程”实践教学体系的研究与实践[J]. 实践教学,2008(8).

[4] 谢芳清,闫大顺. 计算机工程专业实践教学体系的研究[J]. 中国科技信息,2008(9).

[5] 王浩,胡学钢,侯,等. 计算机科学与技术专业实践教学体系的研究与建设[J]. 计算机教育,2007(11).

软件工程实践报告范文4

【关键词】软件工程实践;教学模式;校企合作

一、引言

软件工程实践在软件工程专业本科生的培养体系中占有重要地位,如何培养软件技术人才所必需的实践能力、工程能力和创新能力,一直是软件人才培养所面临的问题[1]。目前,一些高校的软件工程实践教学环节,普遍存在这样的问题:

(1)教学内容安排上不注重实践,学生实践的机会较少。

(2)教师理论知识丰富,但缺乏实际软件项目开发经验、动手能力不强,不能给学生提供高水平的实践指导[2]。

(3)实践教学偏重结果,学生只是按要求编写规定文档,但文档内容、开发出的软件质量差强人意[3]。

(4)实践环境不符合软件工程要求,与实际的企业开发环境有一定差距。

软件工程教育与软件产业发展的不相适应,导致产学脱节较为严重,甚至进而导致了软件市场“就业难”与“招聘难”并存的现象[4]。

为了培养符合社会与企业要求的高级软件工程人才,我院提出了“校企合作”的软件工程实践模式,主要措施如下。

二、构建校企合作框架

校企合作的目的是让学生能将自己在校所学的理论知识与企业的项目实践有机结合,让学校和企业的优势互补共同提高专业应用型人才培养的质量[5]。校企合作中,教学环境在企业,教学实施的引导者是教师和企业工程师,教学实施的主体是学生,由此我们提出了“双导双带”的合作框架。

“双导双带”指为每位学生配备了两位导师,一名为学校教师,一名为企业软件工程师,二者共同制定实践计划、指导计划、考核细则,在毕业设计期间为学生提供全面的知识结构和应用能力两方面的指导和训练。学生的毕业设计题目来源于企业的真实项目,开发过程、软件质量由企业工程师指导把握,论文撰写及论文质量由学校教师指导把握。

实践分为两步走:一步是专业技能提升阶段,一步是项目实践提升阶段。无论哪一阶段,都着重学生技术能力、实战体验、职业素养、应试技巧等几个方面的训练。

三、实践模式具体实施

(一)开发环境

学生深入企业,在企业工程师的指导下演练一个已经完成的实际项目后,再以团队为单位集体完成一个难度适合的真实的项目。开发工具、沟通平台、人员分配、开发过程、管理过程等完全按标准的企业项目实施来要求,力求让学生熟悉软件开发过程,了解软件开发的规范性,也促使学生尽早向职业人进行转换。

(二)实施过程

企业导师作为整体项目的负责人预先做好项目计划,规定好项目各阶段应提交的制品及里程碑点,监管所有项目的进度和质量,负责所有项目指导、评审、答疑工作。

人员安排:根据项目规模划分项目组,学生根据自己的兴趣及技能选择合适的项目角色:项目经理、技术经理、分析人员、设计人员、编码人员、测试人员等,让学生在实际开发过程中理解角色、掌握软件工程涉及到的工具、过程、规范。

进度控制:项目组每个成员都了解项目的整体进度计划,同时也清楚自己在不同时间段应该完成的任务,每个人在项目经理协调下都严格按照进度计划执行。如果项目存在进度滞后的情况及时分析当前项目存在的问题,查找影响进度的原因,若有必要可压缩关键路径长度,如:安排关键路径上任务并行,增加关键路径上人员,人员赶工等方式提高项目进展速度。如果进度滞后严重则要考虑重新制定进度计划,评审,执行。

团队沟通:确定沟通原则――准确、完整、及时、可理解[6]。对于一些比较紧急事件或复杂问题可采用口头的非正式的沟通,对于那些重要的信息、与合同有关的信息等则需要采用书面的正式的沟通。确定具体的沟通方案,如:每天下班前项目组成员进行5-10分钟的口头站会交流,沟通当天没有解决的问题,每周五上午9:00-11:00召开项目周例会,沟通项目组成员当前工作内容,工作进展;沟通项目当前进度、项目存在问题。会后会议纪要给相关的项目人员,由专人跟踪项目问题,直到问题解决。

质量控制:按项目要求,在预定的时间提供预定的制品,如:可行性分析报告、软件需求规格说明、软件设计说明、软件代码、软件测试报告、用户验收报告等,在制品提交基线之前,从内容和格式两方面进行严格的评审,保证文档的质量。为了保证软件满足用户要求,且软件与文档二者一致,在里程碑点组织项目组成员对软件演示,进行阶段性的软件验收,及时发现问题,解决问题。

(三)成绩评定

整个实践过程的安排,希望能够帮助学生在短时间掌握软件项目从定义、分析、设计到开发、维护的一般过程,培养学生的实践能力及软件项目管理能力,适应社会及企业对人才的要求。所以从以下两个方面进行考核:

(1)软件质量:各里程碑提交的演示软件的质量及团队最终提交的完整软件的质量,考察内容如:软件软件的可操作性,与需求的一致性,软件中缺陷的数量等。

(2)文档质量:各阶段提交文档的质量,考察内容如:文档结构的正确性,内容的正确性,文档的规范性等。

四、总结

在校企结合的教学实践过程中,学生们在真实项目、真实开发环境中得到了良好的锻炼,学会了将理论知识应用于项目实践,执行了完整的项目开发流程,至少熟练掌握了2~3种主流开发工具;体验较为严格的进度管理和质量管理等流程和规范;增强了创新、竞争和团队意识,培养了良好的职业素养和工作习惯,为将来步入社会,适应社会企业要求打下了良好基础。

参考文献:

[1] 徐玲等.软件工程专业实践教学体系的构建[J].计算机教育. 2010(11):137-139,49

[2] 覃遵跃等.基于校企合作的软件工程专业实践教学体系研究[J].时代教育.2012(11):12,17

[3] 秦放等.案例驱动与项目导向结合的软件工程课程教学模式探讨[J].计算机教育. 2013(9):87-90

[4] 王爱民等.软件工程专业校企合作实践教学模式研究[J].实验技术与管理.2012(1):143-145

软件工程实践报告范文5

关键词:软件工程;课程群;课程设计

中图分类号:G642 文献标识码:B

文章编号:1672-5913 (2007) 20-0005-03

软件工程是计算机学科的重要学科分支,在本科计算机类各专业中都开设一些软件工程的课程,在研究生教学中,无论是硕士还是博士,都设置软件工程的研究方向,开设高一级的软件工程课程。本文中,软件工程课程群是指包括各层次的软件工程类课程。另外,软件工程又是一门发展非常迅速的学科,早年在研究生中讲述的内容现在放在本科中讲。因此,这些课程存在定位不明确,课程间内容交叉重复等问题。本文根据本科生和研究生两个层次对软件工程类课程的教学要求,阐述软件工程课程群的定位、课程设置、主要课程的知识单元和知识点。

1定位

首先分析社会对各层次计算机专业学生在软件工程方面的知识和能力要求。我们认为计算机类本科学生毕业后,主要从事计算机软件的开发工作,他们应掌握软件工程的基本概念、基本原理和基本方法,并能运用这些概念、方法、原理,参与和/或从事软件开发的某些活动(如分析、设计、编码、测试等)。软件工程方向的研究生主要着重研究能力的培养,毕业后主要承担系统分析员和/或系统设计员角色,甚至承担项目经理的角色,他们应掌握软件工程的研究动态,了解软件工程最新的研究成果,具备有关软件的系统分析、构架设计和软件项目管理的知识和能力。

根据以上分析,我们认为,本科生软件工程课程群应以软件工程的基本概念、基本原理和基本方法为主线,使学生具备扎实的软件工程基本理论知识、熟练的编程能力、较好的团队合作能力和实验能力,同时具备一定的分析与解决问题能力和创新能力。研究生软件工程课程群应以研究课题为主线,使学生掌握软件工程最新的研究动态,对其中若干个研究方向有深入的了解,具备较强的分析与解决问题能力和创新能力,以及基本的软件项目组

织和管理能力。

2课程设置

软件工程课程群按学生的层次可分为本科生软件工程课程群和研究生软件工程课程群,按课程类别可分为必修课和选修课。

根据上述定位,本科生软件工程课程群的必修课包括软件工程和软件实践,有些学校在软件工程课中包括足够的实践时间,可将它们合并成一门软件工程课。选修课可根据各校的特点开设不同的课程,如面向对象的分析与设计、软件体系结构、基于构件的软件开发、软件测试等,也可将研究生的某些课程作为本科高年级学生的选修课。

研究生软件工程课程群的必修课可包括高级软件工程、软件项目管理和专题讨论,其中专题讨论没有固定的教材,它以若干专题(如软件复用技术、模型驱动体系结构、软件产品线等)的最新论文为主,以报告和讨论的形式进行。选修课可根据导师的研究方向选择合适的课程,如需求工程、软件过程、形式方法等。

3教学内容

本节参照国外相关的资料,结合我们多年的教学实践,给出软件工程课程群中各必修课的知识单元。

3.1软件工程(本科生)

本科软件工程课程的内容应覆盖教育部计算机科学与技术教学指导委员会制订的计算机科学与技术本科专业规范(计算机科学方向)中有关软件工程的主要知识单元,该课程以软件工程的基本概念、基本原理和基本方法为主,着重国内比较流行的结构化分析与设计方法、面向对象分析与设计方法和常规的软件测试方法。同时对一些较新的软件开发模型、方法和技术(如基于构件的软件开发模型和方法、敏捷开发方法、CMM&CMMI、Web工程等)做简单的介绍,以便学生今后自学。

3.2软件实践(本科生)

该课程是本科软件工程课程的一门后继实验课,以某种软件开发方法(如面向对象方法)和软件过程(如统一软件过程RUP)为基础,引导学生完成一个完整的软件项目开发全过程,包括需求获取、需求分析、系统设计、实现以及测试等基本步骤。该课程主要培养学生的分析与解决问题能力、团队合作能力、实验能力和创新能力

3.3高级软件工程(研究生)

该课程选择当今软件工程研究的热点课题作为主要内容,其知识单元可包括:基于构件的软件工程、软件产品线、软件体系结构、模型驱动体系结构(MDA)、面向方面程序设计(AOP)、需求工程、面向对象测试技术、逆向工程和再工程、Agent技术、形式方法、高可信软件,开源软件等。值得注意的是,在一门高级软件工程课程中很难详细介绍上述所有的内容,各校可根据自己的特点和研究方向,选择几个(以3~5个为宜)知识单元作重点介绍,对其他知识单元可只做简单的介绍。

下面给出几个知识单元所包含的知识点。

基于构件的软件工程(CBSE)主要包括:CBSE基本概念,软件构件规格说明,构件模型,基于构件的开发过程,基于构件开发的语义完整性,构件组装和集成,预测系统的可信度,软件产品线体系结构中的构件,商用第三方构件(COTS)及构件获取技术,基于构件的软件体系结构,基于构件软件的测试与质量保证,构件的可变性机制,软件构件库,构件交易,构件描述与检索等。

软件产品线(SPL)主要包括:软件产品线的基本概念,软件产品线的基本活动(核心资产开发,产品开发,管理),领域工程与应用系统工程,SPL经济学,软件产品线实践域,软件产品线实践模式,产品线组装,基于产品线的应用系统开发技术等。

软件体系结构主要包括:软件体系结构的原则和实践,体系结构框架/方法,体系结构模型与MDA,集成框架,软件体系结构设计与分析,体系结构风格,软件体系结构文档,软件体系结构评估与确认,面向服务体系结构(SOA),体系结构模式,企业体系结构等。

模型驱动体系结构(MDA)主要包括:MDA基本概念,MDA规格说明,MDA模型(CIM,PIM,PSM),模型转换,模型语言(如可执行的UML,对象约束语言OCL等),元建模,MDA过程,领域建模,系统模型,平台无关建模,平台特定的实现等。

3.4软件项目管理(研究生)

该课程的知识单元包括:综合管理,范围管理,时间管理,成本管理,质量管理,人力资源管理,沟通管理,风险管理,采购管理,敏捷项目管理,外包管理,软技能等。下面给出其中若干个知识单元所包含的知识点。

综合管理:项目,项目范围陈述,项目管理计划(编制过程,内容),项目执行的管理,项目评价,项目的监督和控制,集成的变更控制,实施报告,配置管理,关闭项目。

范围管理:启动过程,项目选择方法,项目合同,范围管理计划(编制过程,范围陈述,范围定义),创建WBS,范围验证过程,范围蔓延,范围变更控制过程,目标管理(MBO),影响曲线。

时间管理:活动定义过程,活动排序过程,图示方法(优先图示方法(PDM),箭头图示方法(ADM),条件图示方法,图形评价和评审技术(GERT), 项目网络图,关键路径方法(CPM),计划评价和评审技术(PERT)等),PERT对CPM的估算,活动资源估算,活动持续时间估算,估算工具,进度表开发过程,进度控制过程,净价值术语和公式。

成本管理:资源计划编制过程,成本估算(术语,过程,COCOMO模型,工具),成本管理计划,成本预算过程,成本基线,项目投资需求,成本控制过程,实施度量,预测完成,净价值术语和公式。

质量管理:质量计划编制过程,质量保证计划,过程改进计划,质量保证过程,质量控制过程,统计质量控制(SQC),质量改进过程。

人力资源管理:人力资源计划编制,组织计划编制,项目管理中人的因素,责任委派矩阵,获取项目组,员工获取过程,项目管理者的角色和责任,项目组(建造过程),小组动力,管理项目组,角色与责任,领导风格,能力类型,冲突管理,6动机理论,小组性能估算,管理知识员工。

沟通管理:沟通计划编制,沟通管理计划,信息分发,沟通模型,沟通风格,沟通方法,沟通链接规则,沟通障碍,沟通技巧,绩效报告,管理涉众,管理收尾。

风险管理:风险管理计划编制,实用方法,风险标识,风险分析(定性分析,可能性与风险影响,定量分析,灵敏性分析,决策树分析,预期货币价值,概率方法),风险响应(计划编制,工具与技术),可保险风险,风险监督与控制过程,影响曲线。

采购管理:采购计划编制,购买和获取计划,合同计划,成本补偿合同,固定价格合同,工作陈述,申请计划编制过程,请求供方响应,申请过程,供方选择,源选择过程,谈判,合同,合同管理,合同变更控制,合同收尾。

敏捷项目管理:Agile宣言和原则,迭代与演化开发,产品业主,敏捷管理需求,敏捷估算与计划编制,敏捷设计,敏捷文档,敏捷软件构造,敏捷编程,人员管理问题,敏捷质量保证,敏捷项目管理,项目评审,敏捷度量。

外包管理:识别全球业务机遇,组织模型与商业策略,全球项目的特征和挑战,全球项目经理的技能,国际及多种文化的交融,IP保护与其他法律方面,采购道德规范,道德规范法规,试验计划,风险管理,软件过程与实践的改进,建立团队,需求管理及客户/供应商关系,开发方法学,全球软件开发(GSD)与全球软件工程(GSE),沟通、协调和协作,离岸项目的管理,克服距离和时间,文化交叉的处理,全球项目的安全问题,全球项目收尾,从业人员教育培训及知识管理。

软技能:领导能力,批判性思考,职业道德规范,自我激励,诚实,小组工作,风险捕获,适应性,人际关系,工作压力承受、压力管理,创造性,影响力,研究能力,问题解决能力,组织能力,多文化处理能力,学习能力,时间管理,口头沟通,文字沟通,细心周到。

4小结

本文介绍了软件工程课程群的设计,在具体实施时,可根据各校的特点,对上述课程设置、知识单元、知识点进行裁剪。下一步将继续完善各课程的知识单元和知识点,为软件工程课程群建设打好基础。

参考文献

[1] 教育部高等学校计算机科学与技术教学指导委员会. 计算机科学与技术本科专业规范[M]. 北京:高等教育出版社,2006 .

作者简介

钱乐秋(1942-),男,复旦大学计算机科学与工程系教授,博士生导师,主要研究方向为软件工程。

软件工程实践报告范文6

1软件工程实验教学的意义

软件工程是一门理论与实践并重的基础课程,教学内容紧密围绕软件开发过程中的各种工程化方法、技术和思想。软件工程从工程意义上讲是指软件开发、维护、管理等活动的总体,从学科意义上讲包括软件开发相关的理论、原理、方法、技术[1]。

软件工程课程一般安排在本科三年级开设,此时的学生经过一二年级的学习和实践已经掌握了一定的计算机知识和编程能力,但分析解决复杂软件问题的能力以及工程化软件开发的意识还比较弱。而软件工程课程设计的目标是使学生系统地掌握软件工程及软件管理的过程、方法和工具,为学生将来从事软件的研发和管理奠定基础[2]。软件工程教学内容中的需求分析、设计和软件测试等软件开发技术以及工程化的开发过程(例如软件过程、配置管理、项目管理等)必须通过实际软件问题求解过程以及团队合作进行体验,而综合的软件开发能力更是需要通过一个完整的软件项目开发过程进行锻炼和培养。因此,软件工程课程实验是巩固课堂教学成果、培养学生软件工程实践能力的重要手段。

2总体思路

作为研究工程化软件开发方法和技术的学科,软件工程课程的课程实验主要以课程实践项目的形式进行,从实验目的看主要分为三类:方法性实践、实现性实践、创新性实践。其中,方法性实践是在软件工程课程教学中讲述某种软件开发方法后安排的实践,主要目的是加深对方法的理解。实现性实践的主要目的是让学生参与软件项目的开发全过程,一方面将学得的理论知识运用于实践中,另一方面培养学生的工程能力(包括软件工具的使用)和团队协作精神。而创新性实践的主要目的是培养学生的创新能力,通过在实践项目设计中,有针对性地引入开放性问题和不确定问题,启发学生在探讨中寻找合理的、创造性的解决方案。

2.1三个实验阶段

根据学生的知识和能力基础以及教学目标,软件工程课程实验可以按照由浅入深的顺序分为三部分,即:认知性导入实验、方法性实验和综合实践。而方法性实践、实现性实践、创新性实践三类实践内容又以不同的形式体现在这三个实验阶段中。

认知性导入实验通过一个很小的程序开发案例完成认知性导入,引导学生思考软件工程的基本思想和原则,体会规范化分析、设计、实现、测试的意义和必要性。方法性实验紧贴软件工程教学内容,以结构化分析设计和面向对象分析设计为主要的实验内容。综合实践以面向对象的开发方法和统一软件过程RUP为基础,引导学生完成一个完整的软件项目开发过程,包括需求获取、需求分析、系统设计、实现以及测试等基本步骤,同时强调数据库、网络等开发技术的综合运用以及相关CASE工具的使用,在此基础上还鼓励学生尝试一些新的软件开发方法和技术。

三个课程实验阶段具有各自明确的目的和定位:认知性导入实验完成认知导入,方法性实验帮助学生巩固课堂中所学习到的知识,而综合实践则培养学生综合运用各种软件开发方法和技术的能力。此外,三个阶段的课程实验中还穿插着创新性实践要求,通过各种开放性问题和不确定问题鼓励学生运用自己的思考能力寻找合理的、创造性的解决方案。[2.2课时安排

三个实验阶段中,前两个紧密围绕软件工程课程的教学内容,而综合实践则是对学生工程化软件开发能力的全面训练。因此在课程安排上可以将认知性导入实验和方法性实验穿插在一个学期的软件工程课程中进行,而在后续的软件实践类课程中安排第三个阶段的综合实践性实验内容。

3认知导入、方法性实验和综合实践

3.1认知性导入实验

通过软件工程课程之前的程序设计相关课程的学习和实践,学生已经掌握了一定的问题分析、算法设计、编程和调试能力,但分析解决复杂软件问题的能力以及工程化软件开发的意识还比较弱。认知性导入实验的目标是从软件工程实践的角度完成认知导入,引导学生完成从程序设计到软件开发的第一次跨越。

认知性导入实验通过一个算法小程序(例如日期到星期的转换等)开发案例完成认知性导入,引导学生思考软件工程的基本思想和原则,体会规范化分析、设计、实现、测试的意义和必要性。认知性导入实验一般可以在一学期的第一次软件工程课上布置,要求学生用1-2周时间独立完成一个算法程序的规范化分析、设计、开发和测试过程并提交实验报告,内容包括问题分析、数据结构、算法及界面设计、完整的程序清单、测试过程及结果记录、心得与体会等。

本次实验采用简单的算法程序作为题目,是为了降低学生的认知难度并且通过规范化开发与以前程序设计时的对比加强学生对软件工程基本思想和原则的体验。实验以开发过程的规范性、个人体验和开放问题的思路为主要评价指标,不以算法和程序本身的正确性为主要的评判标准。

本次实验一般安排在一学期第一次软件工程课上布置,与之配套的课堂教学内容是 “软件工程概论”。课堂教学通过对软件工程基本思想和软件开发基本过程的介绍,使学生初步理解软件工程和工程化软件开发的含义,特别强调本次实验与程序设计作业的区别,即强调开发过程的工程性而不是算法和实现本身的正确性。此外,配套教学内容还对系统可用性、可维护性、可扩展性、测试自动化等开放性问题进行了铺垫,希望可以引导学生在完成基本功能之余能够加以思考和探究。

3.2方法性实验

软件工程的课程教学内容覆盖了完整的软件需求分析、设计、实现以及测试过程,对本科学生而言,主要讲述结构化方法和面向对象方法两部分。因此,这部分课程实验与相关教学内容同步进行,分为结构化分析设计和面向对象分析设计两个部分。方法性实验要求学生自由组合,分组完成,每组3人。每个小组从候选项目中选择一个完成结构化分析设计和面向对象分析设计两部分实践内容。本阶段实验可在导入性实验结束后布置。

本阶段实验以结构化及面向对象分析和设计方法以及UML基本表示法的掌握为主要评价指标,同时考查学生理解实际问题需求、解决具体问题的能力。本次实验与教学内容中的“结构化分析与设计”以及“面向对象分析与设计”配套。为了保证本次实验的顺利开展,相应的课堂教学需要着重强调以下内容:明确软件系统分析(做什么)和设计(怎么做)的区别,体会数据流图、系统结构图以及UML各类图的含义;在具体的系统分析和设计中需要综合各种具体要求和约束(例如可复用性、物理分布等)以及各种指导性原则进行系统分析和设计。

3.2.1结构化分析设计部分

这部分实验要求各小组使用结构化分析和设计方法完成实践项目的需求分析和设计过程,并在此基础上撰写实验报告(包括结构化分析和设计文档)。结构化分析阶段要求学生按照结构化分析的基本思想和步骤完成实践项目需求分析过程,将分析结果表示为相应的描述形式(主要包括数据流图、数据字典和加工小说明),并根据相关原则和判定方法保证数据流图的一致性和完整性。结构化设计阶段要求学生在结构化分析结果的基础上运用结构化设计的基本思想和步骤完成实践项目的结构化设计,包括初步的结构图映射以及后续的结构图优化。要求提交的结构化分析文档的内容包括总体需求概述、分层数据流图、数据字典、加工小说明等,结构化设计文档的内容包括总体设计说明、初始结构图、改进的结构图以及各模块说明等。

在完成基本实验要求的基础上,要求学生对一些开放性问题进行思考,并根据自己的理解在实验中加以体现:数据流图中文件的识别;对于数据流图分解程度的把握;对于系统模块物理分布的考虑;模块之间的交互设计,例如通信协议、数据格式等;对于系统可复用性的考虑等。

3.2.2面向对象分析设计部分

这部分实验要求各小组使用面向对象分析和设计方法完成同一个实践项目的需求分析和设计过程,并在此基础上撰写实验报告(包括需求分析和系统设计文档)。面向对象分析阶段要求学生按照面向对象分析的基本思想和步骤完成实践项目需求分析过程,将分析结果表示为相应的描述形式(包括领域模型、用例模型以及用例的详细描述等)。面向对象设计阶段要求学生在面向对象分析结果的基础上完成实践项目的面向对象设计,包括系统体系结构、结构设计、面向对象类设计等。

在完成基本的实验要求上,要求学生对一些开放性问题进行思考,并根据自己的理解在实验中加以体现:层次体系结构等体系结构风格的运用;面向方面(Aspect)、关注点分离的设计思想;系统可维护性和可扩展性的考虑、面向对象设计模式的运用;对于系统边界之外的外部接口的设计考虑等。

3.3综合实践

综合实践一般安排在软件工程课程后进行,此时学生已经学习并掌握了软件工程、程序设计、数据库等方面的基本方法和技术,而且即将走出校门参与软件开发实践。因此,综合性实验突出强调贴近实际软件项目的实践性以及相关软件开发能力的综合运用。实践性实验一般安排在软件工程课程后续的软件开发实践课程中,成绩评定完全根据课程实践情况。

综合实践以面向对象的开发方法和统一软件过程RUP为基础,引导学生完成一个完整的软件项目开发过程,包括需求获取、需求分析、系统设计、实现以及测试等基本步骤,同时强调数据库、网络等开发技术的综合运用以及分析、设计、测试等CASE工具的使用,在此基础上还鼓励学生尝试构件技术、AOP、Web Service等新的软件开发方法和技术。学生自由确定项目团队组成方式,每组设项目经理1名,项目组成员3~5人。每个小组从候选项目中选择一个完成整个开发过程,分需求分析、系统设计和系统实现与测试三个阶段提交文档、代码等实验结果,并提交最终的可运行软件系统进行检查。

与前面几个软件工程实验阶段相比,实践性实验具有以下特点:

1) 完整的软件开发过程。整个实验以一个实际项目的完整开发过程为主线,覆盖了需求获取、需求分析、概要设计、详细设计到实现和测试的整个开发过程。

2) 综合性与真实性。实验中要求完全实现所选择的实践项目,因此学生需要综合运用数据库设计、网络编程等知识,同时相关需求都来自于真实的管理信息系统项目,使学生能够体会到真实的软件开发过程中的一些问题(例如外部交互接口、第三方软件构件等)。

3) 开发过程的规范性。强调每个项目组的开发过程都应该遵从软件过程规范,同时在开发过程中引入基本的项目管理机制。

4) 学生的主体性体现得更见明显。实践项目的开放性更强,学生可以得到更多的自由发挥,例如学生自主参与需求调研确定详细需求、自由决定项目组组成模式和管理方式等。

4软件工程实验教学实践