时间:2022-04-11 03:09:25
绪论:在寻找写作灵感吗?爱发表网为您精选了1篇软件工程论文,愿这些内容能够启迪您的思维,激发您的创作热情,欢迎您的阅读与分享!
杨挚
ISO9000系列标准及软件质量认证
近年来,国际上影响最为深远的质量管理标准当属国际标准化组织于1987年公布的ISO9000系列标准,这一国际标准发源于欧洲经济共同体,但很快就波及美国、日本及世界各国。到目前为止,已有70多个国家在它们的企业中采用和实施这一系列标准。中国对此也十分重视,也采取了积极态度。一方面确定对其等同采用,与其相应的质量管理国家标准系列GB/T19000;同时积极组织实施和开展质量认证工作。计算机软件行业自然也和其它领域一样被席卷进去。
ISO9000系列标准如此迅速地在国际上广为流行,其原因主要在于:
1)市场经济,特别是国际贸易的驱动。无论任何产业,其产品的质量如何都是生产者、消费者、以及中间商十分关注的问题。市场的竞争很大程度上反映了在质量方面的竞争。ISO9000系列标准客观地对生产者(也称供方)提出了全面的质量管理要求、质量管理办法,并且还规定了消费者(也称需方)的管理职责,使其得到双方的普遍认同,从而将符合ISO9000标准的要求作为国家贸易活动中建立互相信任关系的基石,并且在国际贸易中,把生产者是否达到ISO9000质量标准作为购买产品的前提条件,取得ISO9000质量标准认证被人们当作进入国际市场的通行证。
2)ISO9000系列标准适用领域广阔。它的出现最初针对制造行业,但现已面向更为广阔的领域,这包括:
(1)硬件:指不连续的具有特定形状的产品,如机械、电子产品,不只是计算机硬件。
(2)软件:通过支持媒体表达的信息所构成的智力产品。计算机软件当然属于其中。
(3)流程性材料:将原料转化为某一特定状态的产品。如,流体、粒状、线状等,通过瓶装、袋装等或通过管道传输交付。
(4)服务:为满足客户需求的更为广泛的活动。
ISO9000系列标准的内容
2000版ISO9000系列标准的内容
ISO9000:2000质量管理体系基本原则和术语
ISO9001:2000质量管理体系——要求
ISO9004:2000质量管理体系——业绩改进指南
ISO19011:2000质量和环境审核指南
2000版ISO9000族标准的特点
新版ISO9000族标准对比现行的1994版而言,具有以下的特点。
1.面向所有组织,通用性强。新版ISO9000族标准适用于所有的产品类别、所有的行业和各种规模的组织,总之,新版标准面向所有组织,通用性很强,将成为适用范围最广的国际标准之一,表现在:
(1)新版标准消除了1994版对硬件产品制造业的偏向性。
2000版标准巧妙地采用了“产品实现”、“动作控制”、“过程的测量和监控”和“产品的测量和监控”等词汇和要求,消除了行业的偏向性,对非制造业贯彻ISO9000族标准所带来的方便是不容置疑的。
(2).为特种行业制定行业附加要求奠定了共同的基础。有些行业确有其特殊性,2000版本标准允许在ISO9001基础上增加行业特殊要求的条款。这样既能使所有组织的质量体系基本要求具有一致性,又确保行业特殊要求的适用小性。已有软件.通讯.汽车.等行业都已用此方式制定各自的行业特殊要求。
(3)。‘‘允许裁剪“的规定使2000版ISO9001标准的适用范围扩大到1994版ISO9001/9002/9003/三个保证摸式的标准户群。三个保证没摸式的差异都在第7章产品实现过程中,2000版ISO9001,1.2允许对第7章要求中不影响满足顾客和法规要求,不及组织责任的标准条款进行裁剪,从扩大了ISO9001标准的适用范围,又获得”以一顶是三(三个质量保证摸式),减少标准数量的功效。
(4)。考虑了小型企业的适用性。2000版标准保留了大小企业都是必要的条款,有的还进行强化,对小型企业可能不太上适合的具体要求则进行弱化。使2000版ISO9001标准的通用性更强了。
2.确立八项原则,统一留念理念。
3.鼓励过程方法,操作性强。2000版标准的修订采用了过程摸式,提倡用过程方法来识别和建立体系。
4.强化关键:领导作用。
5.自我评价测量,突出改进。
6.关心各相关方,利益共享。
ISO9000系列标准原本是为制造硬件产品而制定的标准,不能直接用于软件制作。后来曾试图将ISO9001改写用于软件开发方面,但效果不佳。于是,以ISO9000系列标准的追加形式,另行制定出ISO90003标准。这样,ISO90003就成了用于“使ISO9001适用于软件开发、供应及维护”的“指南”。不过,在ISO90003的审议过程中,日本等国曾先后提出过不少意见。所以,在内容上与ISO9001已有相当不同。ISO90003(即GB/T19000.394),全称《质量管理和质量保证标准第三部分:在软件开发、供应和维护中的使用指南》。
制定与实施ISO9000系列标准
1)强调质量并非在产品检验中得到,而是形成于生产的全过程。ISO90003叙述了需方和供方应如何进行有组织的质量保证活动,才能得到较为满意的软件;规定了从双方签订开发合同到设计、实现以至维护整个软件生存期中应当实施的质量保证活动,但并没有规定具体的质量管理和质量检验方法和步骤。
ISO90003的核心思想是“将质量制作入产品之中”。其实道理是很明显的,软件在完成编码以后,不论花多大的力气用于测试,提高质量都是有限度的,更不必说需求规格说明存在的问题常常是测试无法发现的。事实上,软件产品的质量取决于软件生存周期。
2)为把握产品的质量,ISO9000要求“必须使影响产品质量的全部因素在生产全过程中始终处于受控状态”。为使软件产品达到质量要求,ISO90003要求软件开发机构建立质量保证体系。首先要求明确供需双方的职责,针对所有可能影响软件质量的各个因素都要采取有力措施,作出如何加强管理和控制的决定。对与质量有关的人员规定其职责和职权,使之责任落实到人,产品质量真正得到控制。
3)ISO9000标准要求证实:“企业具有持续提供符合要求产品的能力”。质量认证是取得这一证实的有效方法。产品质量若能达到标准提出的要求,由不依赖于供方和需方的第三方权威机构对生产厂家审查证实后出具合格证明。显然,如果这一认证工作是公正的、可靠的,其公证的结果应当是可以信赖的。正确实施产品质量认证制度自然会在促进产品质量提高,指导消费者选购产品,提高质量合格产品企业的声誉,以及节省社会检验大量费用等方面发挥积极作用。
生产企业为了达到质量标准,取得质量认证,必须多方面开展质量管理活动。其中,企业负责人的重视以及企业全体人员的积极参与是取得成功的关键。
4)ISO9000标准还强调“质量管理必须坚持进行质量改进”。贯彻ISO9000标准是企业加强质量管理、提高产品质量的过程,这个过程包含许多工作绝非轻而易举、一蹴而就所能奏效的。即使已经取得了质量认证也不能认为一劳永逸而放松质量管理。实际上认证通常以半年为有效期。取得认证之后尚需接受每年1~2次的定期检查,其目的在于促使企业坚持进 行质量改进。
摘要:软件工程专业是计算机领域发展最快的学科分支之一,软件工程(software engineering,简称为se)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。这一学科包括许多的内容,具体来讲有程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等。当今社会,网络化迅速发展,软件的应用领域越来越广。现在比较普遍的软件有电子邮件,人机界面,办公套件,操作系统,游戏等。目前,基本上每个行业都会某种程度的运用到计算机软件。这些应用对于推动经济和社会的发展起到了举足轻重的作用,提高了工作效率,改善了人们的生活质量。
关键词:软件工程 计算机领域 程序设计 开发工具 设计模式 生命周期、软件开发
1 概述
软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。这一学科包括许多的内容,具体来讲有程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等。当今社会,网络化迅速发展,软件的应用领域越来越广。现在比较普遍的软件有电子邮件,人机界面,办公套件,操作系统,游戏等。目前,基本上每个行业都会某种程度的运用到计算机软件。这些应用对于推动经济和社会的发展起到了举足轻重的作用,提高了工作效率,改善了人们的生活质量。
我们究竟是将软件的开发看成一门科学,还是将其看成是一门工程,关于这个问题已经讨论了很长时间了。事实上,软件的开发具备这两者的特征。但是我们不能将二者混淆了。大多数人认为软件工程基于计算机科学和信息科学就像是传统意义上的工程学之于物理和化学。在世界各个国家,尤其是美国大约有40%的软件工程师都有计算机科学的学位。他们可能不经常运用到计算机科学上的知识,但是会经常运用到软件工程上的知识。许多应用都需要软件工程,在软件开发的许多程序中也需要软件工程。软件工程的主要作用就是指导软件项目的方方面面。在软件工程中,软件开发与各种市场活动紧密相连。软件工程的方法学认为程序员在开发软件的时候是处在一个团队中的,而且在编写程序时要符合软件的需求,设计,以及客户的利益。
伴随着开发技术的不断进步,软件开发过程也在不断的改进。从早期的瀑布式(waterfall)的开发模型直到最近开始兴起的敏捷开发方法(agile),表现出来的是随着时代的变化,软件产业对于开发过程的认识也在不断的变化,对于各种类型项目的理解方法也在发生着变化。在美国曾经有权威机构对软件组织的绩效做过评估,所得到结论是:软件工程的专业分工不足,是造成品质低落、时程延误、预算超支的最关键因素。2003年,the standish group年度报告指出,在他们调查的13522个专案中,有66%的软件专案失败、82%超出时程、48%推出时缺乏必需的功能,总计约550亿美元浪费在不良的计划、预算或软件估算上。
2 软件工程的需求分析
有一种观点认为软件工程是学习怎么做软件的,对吧?我认为,这种观点算对,但不是全对。得到一个软件产品,自然是软件工程的目的所在,但是软件工程所包含的却不仅仅是这些。就拿软件业界比较常见的例子来给大家讲一下,这个例子就是盖房子,我们盖房子,是不是就买块地,然后准备好建材,就哐当哐当地开始建房子了呢?大家明白不是这样,要建好一座房子,先要对土地进行测量勘察,确定可以在上面建房屋,之后还得先规划出整个房子的蓝图来,接下来才是对根据蓝图开始建房子。建好房子后,还得经过一些检测,比如甲醛有没有超标啊,包工头有没有偷工减料啊,这些都合格之后才能交付使用。于是有人入住了,住久了,发现浴室漏水,那就得修补一下。再住久了,住了几十年,房子旧得不成样子了,这时候它的寿命也到了终点了。
软件工程之所以叫软件工程,就是因为它使用了工程学方法来帮助软件开发,建筑也是一门工程学,所以它们之间是会有些共通之处的,不信?请看:首先,我们在对土地进行测量勘察的时候,是在确定它是否适宜建房子,在软件工程上来讲,这个术语叫“可行性分析”,可行性分析的任务就是确定开发这个软件是否在技术上可以做到,在资金上有充足支持,在市场上能够受欢迎,如果答案是肯定的,那么就可以继续下一步的开发步骤。规划
房子的蓝图,在软件工程上被分为两个过程:“需求分析”、“设计”。需求分析就是得到软件需要做什么,需要实现什么功能。而设计就是告诉开发人员怎么实现这些功能。也就是规划出软件的一个蓝图,在“编码”阶段再对其进行实现,这就对应着建房的关键阶段,就是按照蓝图盖好房子啦。房子在入住前需要检测是否合格,软件在交付给用户使用的时候自然也需要检测是否合格,这个阶段叫做“测试”。检测合格了,那就可以交付给用户使用,在市场上销售。软件不可能完美无缺,所以在使用过程中,一定会出现某些问题,这时候就要将问题提交给软件开发人员,修复问题,这个阶段就是软件过程中的“维护”阶段。过了一段时间,这段时间可能很长,也可能很短,这软件已经不适应生产力的发展了,那么就可以正式宣告这软件寿终正寝了,至此,软件的生命周期才正式结束。
我们还要注意,软件生命周期包括制定计划、需求分析和定义、软件设计、程序编码、软件测试、运行维护这六个阶段,是指一个计算机软件从功能确定、设计直到不再使用该软件的全过程。
软件工程,正是贯穿在一个软件的整个生命周期中的。从开发某个软件的计划被提起或者立项,软件工程就开始发挥着作用,用自己的一套方法体系,来指导软件开发的整个过程。因此软件工程不等于编程,编程只是软件工程整个过程中的一个重要环节而已。据统计,在整个开发周期中,平均编码这个过程只占了整个周期的大约30%的时间。
3 软件工程原则
软件工程学主要是用来对软件开发和维护进行指导,是为了经济地获得能够在实际机器上有效运行的可靠软件而建立和使用的一系列完整的工程化原则。它充分的运用计算机科学、数学及管理科学等方面的知识,并借鉴传统工程的原则、方法来完成开发软件的任务,这样就能够最大限度的开发高质量的软件,并且能够减少成本。
boehm是一位知名的软件工程专家,在借鉴了许多的专家和学者的经验之后,再加上自己在开发软件方面的经验,在1983年总结出了软件工程的七条基本原理:
①用分阶段的生存周期计划严格管理;
②坚持进行阶段评审;
③对产品严格把关;
④在技术上运用现代程序设计;
⑤结果能清楚地审查;
⑥开发小组的人员不要太多,但是这些人员要有真才实学;
⑦不断对软件工程实践进行改进是很有必要的。
一般来说,一个软件方法往往规定了明确的工作步骤、具体的描述方式以及确定的评价标准。软件开发的基本方法包括结构化方法、面向对象方法等。
随着软件工程学的发展和软件开发的实践,软件开发模型依次被提出:瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、形式化方法模型等。
目前,已经推出很多软件开发工具,如需求分析阶段的psl/psa系统;编码阶段的各种语言编译工具、编辑程序、连接程序等,都是软件编码阶段的软件工具;测试阶段的测试数据产生程序、动态分析程序、静态分析程序等软件自动测试工具;维护阶段的版本控制系统等。从广义上来讲,软件分析、设计阶段的各种图形工具,如数据流(dfd)等也可以称为软件开发工具。
从技术和管理上采取多项措施后,组织实施软件工程的最终目的是保证项目成功,即达到以下几个主要目标:
①使开发成本最少;
②达到预期的软件功能;
③软件性能更好;
④使软件易于移植;
⑤最大限度降低维护费用;
⑥按时完成开发任务,及时交付使用。
4 结束语
软件工程的方法的意义是非常广泛的。具体来讲包括项目管理,分析,设计,程序的编写,测试和质量控制。有些人认为人们要认真遵守这些方法进行软件开发,但是有些人还没有足够的能力实施这些方法。事实上,具体运用哪种方法开发软件是受很多方面因素的限制的。
随着科学技术的不断进步,计算机硬件也进入了高速发展阶段,软件开发方法也随之得到不断更新。面向对象(oo)方法于60年代后期被提出,但花了近乎20年才被人们广泛认识和使用。如今,面向对象软件已成为行业内的主流,并在软件行业中占据着非常重要的位置。传统的软件工程方法常把数据与处理的过程分开,大大增加了软件开发的难度。面向对象方法吧软件工作视作离散解空间对象的结合,并使问题空间与解空间的结构、描述模型相一致,简化了程序的同时降低了软件系统开发的难度。
目前,国内普遍采用传统的结构化分析设计和面向对象程序相结合的方式进行项目开发,并且大部分项目也取得了成功。但这种方法无法让实现两者的平滑过渡及连续性,并且不利于软件重用、维护、测试等工作的进行。如果全过程仅采用面向对象软件工程方法,则能确保信息系统开发的完整性和一致性。由于面向对象数据库产品尚未完善,因此此方法很难应用于实际中。为此,必须制定相应的规则和算法,确保面向对象分析、面向对象设计的结果能正确地向关系数据库转换。
一、关于面向对象软件工程
1.面向对象。面向对象主要是指在满足客户需求的基础下,将需求合理构建成独立的业务模块,之后利用多态、继承、封装、抽象的编程思想对业务逻辑进行构建,使之与业务需求相一致,最后将各模块整合以达到最佳的预期效果。
2.面向对象软件工程。面向对象软件工程时面向对象技术和软件工程相结合的产物。面向对象技术贯穿到面向对象软件工程的全过程,并将过程中形成的面向对象分析、面向对象设计和面向对象程序设计三部分,贯穿到软件工程的各个相应阶段。面向对象软件工程所采用的具体模型不外乎以下几种:整体——部分模型、类——对象模型、对象模型、分类模型和状态模型。
3.面向对象的方法。随着时代的发展,面向对象分析和面向对象设计的理论和技术都得到了逐步完善,软件开发方法也不断地推陈出新。国内外目前已衍生出多种的面向分析方法,其中最有影响力的主要有:booch方法、rumbaugh方法、coad和yourdon方法、jacobson方法、统一的ooa方法(uml)。从面向对象分析到面向对象设计是一个将模型逐渐扩充的过程。在这个过程中,主要考虑的是如何分析处理问题,对于与特定计算机相关的问题则可以忽略不计。面向对象设计可以分为高层设计和低层设计两个阶段,高层设计主要用于建立体系整体架构,低层设计则主要用于对类的详细设计。
二、面向对象方法在医院收费信息系统的应用
为了更好地理解面向对象软件工程方法在信息系统开发中的应用,我们采用了医院的收费信息系统为例。首先,可将医院收费的需求构建成三个独立的业务模块——功能模型、动态模型、对象模型。
1.功能模型
对收费信息系统进行业务分类,其中主要包括划价和查询统计两个子系统。分类的目的是为了业务模块的构建更合理清晰,节省和减少了系统操作人员的工作时间和工作量。病人缴费以后,操作人员可通过划价子系统输出其收费单据,并按有关规定将单据导入数据库中。如果病人想清楚医院的具体收费,操作人员可键入查询条件,从而为病人输出相关单据。
2.动态模型
医院收费信息系统被划分为两个子系统,其中划价子系统的动态模型主要显示为一些列的前台操作,其主要表现为:病人请求→划价员根据相关单据进行划价;病人付款→操作人员打出收据→将信息导入数据库→修改记录。查询统计子系统跟划价子系统类似,主要均是由病人提出请求,操作员再根据病人需求键入查询条件,从而输出病人的相关统计表单。
3.对象模型
本系统主要涉及到的重要的类模型为——库存类图、人员类图和单据类图。
(1)库存类图。库存类模型所增加的属性(库存量、生产日期、保质期)主要跟药物和其特性密切相关。医院内各种药物及材料都标明了库存量和保质期,而药品则常被细分为:西药、中药、中成药。
(2)人员类图。病人和医院工作人员均继承在人员类中,其中病人是医院收费信息系统的主角,划价请求、查询请求、缴费等划价子系统业务都是病人类的方法。医院工作人员类又可细分为三个子类,包括医生类、收费员类和操作员类。医生类是必然的存在,病人的病情及其主治医生,这些都需要存档。操作员是除病人外在系统中的又一主角,查询、划价、统计均是其工作。由此可见,系统的操作运行离不开操作员。收费员的工作极为简单,只需进行收费操作即可。
(3)单据类图。单据可分为治疗单据和收费单据。治疗单据在病人治疗后由医生开出,单据上主要标有:单据号、医生和病人的姓名、日期等项目。其中父类为单据号、医生和病人的姓名,子类为治疗项目如手术项目类、药品项目类等。收费单据时是系统根据治疗单据划价、病人缴费后所打印出的凭据。其父类为收费项目类,子类则为药品收费项目类、手术收费项目类等。由于单据的不同,子类会根据其属性而有所变化,因而系统可以根据需要打印出不同类别的单据。
笔者所在学院的软件工程系是成立于2005年的新专业,为校级特色专业。近年来,随着对软件工程特色专业建设进程的推进,课程体系日趋完善。针对软件工程学科具有理论多且实践性极强的特点,本系较大幅度地加大了实践类课程和环节所占的比例,“软件开发设计实训”便是其中很重要的一门实践课程。由于软件工程学科发展速度很快,在软件产业不断发展,全国对高素质的软件人才的需求量激增的形式下,迫切需要研究和探索实践类课程的教学模式,激发学生学习兴趣,以更有效的手段和方式提高教学和指导质量,为培养更加符合社会实际需要的软件开发人才打下坚实基础。在我校教改基金的资助下,依托软件工程教学团队,本文对将软件工程应用于“软件开发设计实训”课程的教学模式及主要措施进行探讨。
1 选择适当的软件工程过程
“软件开发设计实训”课程的主要目的是使学生学会用面向对象的设计方法设计实际系统。结合软件工程学科的发展和应用现状,软件开发过程主要采用rup(rational unified process,统一软件开发过程)的方式组织软件开发。rup是风险驱动的、基于use case(用例)技术的、以架构为中心的、迭代的、可配置的软件开发流程。
rup分为初始、精化、构造和交付四个阶段,各阶段涉及多种工作流。rup的核心工作流主要包括:
需求捕获工作流:需求捕获通过对问题的理解和分析,确立问题涉及的信息、功能和系统行为,将用户需求精确化、完全化。需求的焦点主要在初始和精化阶段,在精化阶段后期,需求捕获的工作量大幅下降。
分析工作流:分析的主要工作开始于初始阶段的结尾,和需求一样是精化阶段的主要焦点。精化阶段的大部分活动是捕获需求,分析工作与需求捕获在很大程度上重叠。
设计工作流:设计的主要工作是位于精化阶段的最后部分和构造阶段的开始部分的主要建模活动。系统建模最初的焦点是需求和分析,在分析活动逐步完善后,建模的焦点开始转向设计。
实现工作流:实现(实施)是关于把设计模型转换成可执行代码的过程。从系统分析师或系统设计师的角度看,实现工作流的重点就是完成软件系统的可执行代码。实现工作流是构建阶段的焦点。
测试工作流:测试是一项相当主要的工作。测试工作流贯穿于软件开发的整个过程。它开始于软件开发的初始阶段,而细化阶段和构造阶段是测试的焦点。测试是为了找出程序中的错误与缺限,而不能证明程序无错。
rup就像一个元过程,通过对rup进行裁剪可以得到很多不同的开发过程,非常灵活,所以可以将其按本课程需要进行精简,从而把深奥的理论指导融入具体软件项目的开发设计中,让学生更加深切地体会到什么叫学以致用,消除畏难情绪,培养和增强在软件开发设计中自觉遵从软件工程思想的习惯。本课程使用的case(computer aided software engineering,计算机辅助软件工程)工具集采用sybase公司的powerdesigner。
2 将有价值的软件工程知识引入课堂,教学采用项目贯通案例
为让学生在中小规模的实训项目中也能体会到较大型项目通常会用到的一些软件工程技术,让本课程更有实用价值,教师需要对学生补充一些软件工程相关知识,包括:设计模式、架构设计、类的持久化以及数据库设计、面向对象实现以及文档的书写这四个方面。
为配合上述四个方面的软件工程相关知识的介绍,教师采取“项目驱动的案例教学”方法【2】,在课堂讲授中引入一个完整的、规模适中、难易适度的软件项目案例。该案例需要通俗易懂而又具有实际意义,涉及的应用领域应该是学生较为熟悉的,这样理解起来更为容易。以此案例完整的开发设计过程为主线,借助这个贯穿整个课程教学进程、文档齐全的完整案例来将软件项目开发设计过程中的各个环节串连起来,着重展现上述四个方面的知识运用,让学生熟悉和掌握软件开发设计的具体实施步骤和技术。
3 学生实践环节分小组按项目方式进行
由于在本实训课程之前学生已经学习过一门先导课程:“软件需求分析实践”,所以可以把学生仍然按照在“软件需求分析实践”课程中的各小组成员组成来进行项目分组,这样各小组便可将该课程中的最终成果——《软件需求分析规格说明书》作为本课程的起点来进行,需求捕获工作流便只需粗略进行。由于本课程侧重于软件开发过程的分析工作流和设计工作流,对实现工作流和测试工作流也只作粗略涉及。
每个项目小组通常为3到5人,分组时采用了优势互补的方式,注意合理搭配,尽量让每组各个成员具有不同的优势能力,并让其民主推选一名组长负责组内的组织和协调【3】。
教师的项目贯通案例教学分阶段间插在学生实践过程中,每介绍一个阶段的rup理论,就紧跟几次课的学生实践环节,如此交替进行,当教师的教学案例施教完毕,学生的项目也同步进行到最后阶段。
项目进行中模仿软件公司的例会形式,定期由项目小组长召开小组讨论会(如每周一次),对最近这段时间的项目进展情况和技术问题进行讨论。每个开发设计阶段结束时教师均要求各小组给出相应的文档,且每个阶段完毕要进行一个模拟的里程碑式的评审(教师参与作为评审团的一员)【4】。
教师还应在课程即将结束的最后课时中对各小组的项目完成情况及普遍存在的共性问题作一个分析总结,并让各小组组长总结本组项目完成的经验教训,以利于同学之间取长补短,活跃思维,提高分析总结问题的能力。
4 依托教学团队,理论及案例部分采用轮流授课法
笔者所在的软件工程系于2009年底成立了软件工程教学团队。团队兼顾了职称、学历、教学、科研的合理搭配,由有大型项目开发和管理经验的老教师提供指导来提升年轻教师的教学能力,并让其参与到科研项目中积累项目经验。本课程的任课教师均由该团队中选出。本课程所用的《软件开发设计实训指导书》的编写由各任课教师分工完成,每人负责完成一章内容。本课程每个教学班安排30人左右,各教学班的教师全程负责该班整个课程的实践指导环节。而理论及案例讲授部分的教学则采用轮流授课法,实施方案是每个阶段的课堂讲授由编写实训指导书的相应章节的教师对全体教学班集体授课,其他教师同时到场辅导。具体各阶段的课堂讲授内容安排如下:
1)rup总论以及课程概述
2)设计模式
3)常用的软件架构风格及适用情况分析
4)对象持久化与数据库设计
5)面向对象实现及文档编写与整理
对应进行的学生的各阶段实践任务如下:
1)按既定方式确定各小组成员和组长,并且重新审核各组在先导课程“软件需求分析实践”中的最终成果《软件需求分析规格说明书》,进一步完成分析模型,得出用例图,分析类图,序列图及协作图。这一阶段学生需提交分析模型文档。
2)按照设计模式重新设计类。这一阶段学生需完成两个任务:一是实现设计模型中的具体设计类,具体要求学生:使用设计模式和机制;创建初始设计类;确定持久类;定义类可视性;定义操作;定义方法;定义状态;定义属性;定义依赖关系;定义关联;定义内部结构;定义泛化关系;解决用例冲突。二是完成用例实现的设计,主要设计模型内的协作关系,以设计类及其对象为基础,描述各个特定用例的实现和协作。这一阶段学生需提交设计模型、类图和用例实现。
3)完成架构设计。这一阶段学生需要设计包结构,完成系统设计模型图的实现子系统、接口设计类及架构模型(组件图),重新审查用例模型,得出用例模型的架构视图。这一阶段学生需提交子系统设计文档、接口设计文档及架构模型文档。
4)根据持久类以及数据库知识对数据库进行设计(包括字段编码设计)。这一阶段学生需提交数据库设计文档。
5)本课程的最后阶段。完成实施模型(部署图);完成界面以及输入输出(报表等)设计;完成具体子系统的编程工作,并进行二次迭代重新审核前面的设计部分;整理测试报告;整理文档并编写软件使用说明书。这一阶段学生需提交组件图、部署图、输入输出设计说明及具体子系统代码执行程序。
5 考核方式强调过程考核,开发设计能力与书写文档能力并重
本课程的实训目标是使学生能综合运用所学的知识进行中小型应用项目的软件开发设计。为此,我们提出了本课程考核的指导思想:重视实训过程,看重软件开发设计能力的提高,采用复合考核的方式,课程成绩由平时考核、过程考核和项目验收答辩成绩组成。重点突出“会不会做”,强调对学生的实际开发设计能力考核,同时注意防止轻视书写文档的观念。这种考核方式不但能更客观地反映学生的学习情况,还能引导学生有意识地加强软件开发设计技能的培养,开发设计能力与书写文档能力并重,更利于达到预期的教学效果。本课程具体的课程考核成绩组成如下:
1)平时成绩*10%(考勤成绩*50%+小组开发设计工作中的合作精神表现*50%);
2)阶段考核成绩*60%(五个阶段,各阶段的能力表现及提交的文档各占20 %);
3)项目验收成绩*30%(项目文档汇总整理占50%,项目答辩50%)。
6 结束语
“软件开发设计实训”课程是软件工程专业实践类课程中非常核心的一门,其实践性和综合性都很强,能集中训练和提高学生进行软件项目开发和设计的实际技能。其教学实施过程不应被视为只要学生针对项目要求能编写出相应的软件即可,而更应注重软件开发设计过程的方法和技能的培养,以培养具有软件工程思想的真正符合社会需求的软件人才。本课程应紧随软件工程学科的发展而不断更新。在今后的课程开展过程中,其教学模式和措施还需要不断创新、总结和改进,需要持续不断地研究和探索。
论文 关键词:软件工程管理 开发人员 组织结构用户
论文摘要:通过对软件产品特点的分析,讨论软件工程管理可能涉及的人员、组织机构、用户、控制、文档资料等内容.
一、引言
软件工程管理目前还没有引起人们的足够重视。究其原因:首先是人的传统观念,工程管理不为人们所重视;另一方面软件工程是一个新兴的学科领域,软件工程管理的问题也是刚被提出的。同时,由于软件产品的特殊性,使软件工程管理涉及到很多学科。因此.对软件工程管理,人们还缺乏经验和技术。但事实证明,由管理失误造成的后果要比程序错误造成的后果更为严重。很少有软件项目的实施进程能准确地符合预定目标、进度和预算的,这也就足以说明软件工程管理的重要。
二、软件工租,理的内容
目前软件生产自动化程度很低,在开发过程中人是起决定性的因素,因此,软件工程管理很大程度上是对人的管理。我们可根据软件产品的特点.分析软件下程管理的具体内容,它包括对开发人员、组织机构、用户、文档资料等方而的管理。
(一)开发人员
软件开发人员一般分为:项目负责人、系统分析员、高级程序员、初级程序员、资料员和其他辅助人员.根据项目的规模人小,有可能一人身兼数职,但职责必须明确。不同职责的人,要求的素质不同。如项目负责人需要有组织能力、判断能力和对重大问题能做出决策的能力;系统分析员则要有概括能力、分析能力和社交活动能力;程序员需要有熟练的编程能力等。人员要少而精,选人要慎重。软件生命期各个价段的活动有分工又互相联系。因此,要求选择各类人员既能胜任工作,又要能相互很好地配合.没有一个和谐的工作气氛很难完成个复杂的软件项目。
(二)组织机构
组织机构不等于开发人员的简单集合。这里的组织机构要求:好的组织结构、合理的人员分工和有效的通讯。软件开发的组织机构没有统一的模式。下面简单介绍三种组织机构。
1.主程序员组织机。ibm公司提出的主程序员组是软件系统结构化思想在组织上的体现。它的目的是为了保证全组的协调和统一。一位高级工程师(主程序员)主持计划、协调和复审组的全部技术活动。技术人员(一般25人)负责分析和开发活动,一位后援工程师支持高级工程师的工作,并且在该项目继续进行时,可以代替高级工程师工作,以减少可能的损失.
2.专家组。专家组强调每个人的才能,把每个人都看作是某一方面的专家,由这些专家组成一个开发机构。这种组织结构虽然能发挥所有工作人员的积极性,但往往有可能出现协调上的困难,选择这种方式要慎重.
3.民主组织.民主组织由从事各方面工作的人员轮流担任组长。很显然,这种组织结构对调动积极性和个人的创造性是很值得称道的。但是由于过多地进行组长信息“转移”不符合软件工程化的方向。
(三)用户
我们是为用户开发软件的,在开发过程中自始至终必须得到用户的密切合作和支持。作为项目负责人,要特别注意与用户保持联系,掌握用户的心理和动态.防止来自用户的各种干找和阻力。
1.用户不积极,不配合。这种表现通常来自对采用先进技术持怀疑态度的用户,他们心理上的抵触情绪会在行动上表现为消极、漠不关心。在需求阶段,做好这部分人的工作很重要,通过他们中的业务骨千,才能真正了解到用户的要求。要使他们认识到: 计算 机的 发展 和应用是 现代 化的必然趋势,使用计算机将会带来巨大的 经济 效益:让他们掌握新的技术和方法去取代某些可能过时的或淘汰的专长。
2.用户求快求全.这种表现来自对使用计算机持积极态度的人.他们中一部分人希望一个早上就能用上计算机,并且全能用上计算机。要他们认识到;开发一个软件项目不是一朝一夕就能完成的,软件工程不是靠人海战术就能加快的工期。另外,即使计算机能够处理的事情,系统也不能下于包罗万象,贪大求全。要根据现有的条件量力而行。如果系统大而全,必然会很复杂,开发时间就拖得很长,因此可能会导致一个系统的失败或性能太差.
3.用户需求变化.在软件开发过程中,用户可能会不断提出新的要求和修改以前提出的要求。从软件工程的角度不希望有这种变化。但实际上,不允许用户提出变动的要求是不可能的.因为一方面每个人对新事物有一个认识过程,不可能一下子提出全面的、准确的要求:另一方而还要考虑到与用户的关系。对来自用户的这种变化要正确对待:要向用户解释软件工程的 规律 ,并在可能的条件下部分或有条件地满足用户的合理要求.例如:软件需求分析阶段结束后软件的设计口标已经确定,这时用户要求的重大变化要导致设计目标的变化,特别是到软件开发的后期,一般不可能满足这种变化的要求。要向用户解释清楚工程的内在规律,但对用户提出的如性能等局部方而的要求,只要是合理的,就要加以考虑。
4控制。人员控制是对开发组织内部人员控制。就是要保证开发人员的积极性和稳定性。人员的频繁更换或流动将会大大增加软件出错误的机会。至少要保证软件项目每一期工程或软件生命期每一阶段中人员的相对稳定性。同时注意发挥每个开发人员的积极性和创造性。经费控制要编制详细的经费预算。并在各阶段进行经费的核算。在经费上失去控制,软件项目就没有经济保证。质量控制与各阶段的复审在意义和作用上是一致的,在此不再叙述。
5.文档资料。开发过程的各种活动后都要反映在文档资料上。每一个阶段的文档资料是以后各阶段工作的基础,又是对前面各阶段工作的复审。软件工程管理很大程度上是通过对文档资料管理来实现的。因此,要把开发过程中的初步设计、中间过程、最后结果等建立成一套完整的文档资料。文档标准化是文档管理的重要方面。
三、结束语
在当今的软件工程时代,每个项目涉及众多的人力和物力,管理问题日益突出。在实际工作中,不管是否正式提出管理问题。都在自觉或不自觉地进行着管理,只不过是管理的好坏程度不同而已。随着软件规模的不断增大.开发人员也随着增多,开发时间也相应持续增长。而对于规模大、人员多、开发时间长的软件项目,必须要有良好的管理和力求在确定的时间和预算范围内有效地、合理地组织人力、物力.按计划完成预定的软件项目。
2004年,世界工程师大会在中国召开,会议的主题是“工程师塑造可持续发展的未来”。这个主题告诉我们,“工程师”对人类未来发展的重要性,同时也告诉我们“工程教育”对人类未来发展的重要性。[1]应该看到,尽管一些应用型本科院校把培养“一线工程师”作为学校的办学宗旨,并在此基础上对教学模式、教学方法进行了一系列的教学改革,但由于与企业的结合不够紧密,高等工程教育所培养出的“一线工程师”与企业、与社会的脱节比较严重,不能适应现代社会发展的需求。
2010年6月教育部基于提高工科院校专业教育教学水平而正式启动推出的“卓越工程师教育培养计划”(以下简称“卓越计划”)[4]是贯彻落实《国家中长期教育改革和发展规划纲要(2010-2020年)》和《国家中长期人才发展规划纲要(2010-2020年)》的重大教育计划。该计划旨在培养造就一大批创新能力强、适应经济社会发展需要的高质量各类型工程技术人才,为国家走新型工业化发展道路、建设创新型国家和人才强国战略服务,对促进高等教育面向社会需求培养人才,全面提高工程教育人才培养质量具有十分重要的示范和引导作用。
上海应用技术学院“软件工程”专业从 2010 年起即着手准备,在原有专业设置基础上不断探索与实践,根据it学科行业发展的特殊性,制定具有前瞻性的人才培养标准,并通过全面修订人才培养方案、实施人才培养模式、教学方式、训练方式和评价方式等的改革。
一、培养模式
本专业实施“3+1”校企联合培养模式,学生须接受3年的在校培养,累计1年的企业实践和毕业设计。前三年学生在校学习学科基础知识和软件工程的基本理论知识和技能,打好从事软件工程领域工作的扎实专业基础。在校学习过程中,定期聘请企业教师参与到教学实践中,使学生对企业的生产实际有初步的了解。
第四年学生将被安排在合作企业进行为期一年的学习与实践。一些与企业联系密切的专业课程及毕业设计在企业完成,学生参与到企业的各个项目组,随项目组一起参与实际项目的开发。项目组负责人将视学生为自己的员工,分派合适的工作要学生随导师或独立完成。通过参加一个或几个实际项目的工作,独立地完成一部分工作,并以企业标准进行考核,使学生对软件标准化设计的全过程有更深入的了解。增强学生的责任心,提高学生的实际工作能力。
二、培养标准
按照教育部“卓越工程师教育培养计划”的总体工作思路和标准要求,上海应用技术学院“软件工程专业卓越计划”将以“培养面向未来国家建设需要,适应未来科技发展,德智体全面发展,掌握软件工程学科的基本原理和基本知识,具有扎实的基础理论、宽厚的专业知识和良好的实践能力,获得工程师基本训练,能胜任软件工程项目的规划、设计、实施、管理、研究、教育,以及投资与开发等工作,具有创新精神和国际视野的卓越的专业工程师”。
三、培养方案架构
按照课程群和模块化的指导思想搭建培养方案的课程架构,满足不同学生、企业对知识能力培养的需求。培养方案课程体系总体架构如图1所示。1-5学期按照课程群进行教学,满足学生对不同知识能力的需求;第6学期根据学生实习企业对知识能力的需求分模块进行教学;第7-8学期进入对口的企业实习并完成毕业设计。
四、校内培养方案
校内培养方案的设计目标是通过学习使学生具有较强的工程意识、工程素质、工程实践能力,成为专业知识扎实、动手能力突出、素质优良的卓越软件技术人才。为了保证卓越工程师培养计划的实现,制定了卓越工程师计划专业知识与能力的实现矩阵,进一步明确了本科课程体系设置,包括课程模块的构成、具体翔实的课程教学目标以及教学考查方式。结合专业特点以及学校学院的教学平台、 教学设施、教学创新实践基地等,加强了教育教学中的基础性、创新性、实践性、国际化,使专业的教育教学更上一个新的台阶。
(一)课程群划分
将课程划分为三条主线进行教学:1.基本理论课群,包括操作系统、计算机网络、离散数学、数据结构、算法、计算机原理等。本部分课程培养学生计算机学科的基本理论和体系结构,使学生具备坚实的理论基础,为其今后的继续学习和发展打下基础,同时满足学生考研需求。2.程序设计能力课程群,.net、java两个主流平台并重,再加上三门培养综合设计能力的课程,以提高学生的实践动手能力,并满足不同企业对开发工具的需求。为了加强学生的程序设计能力,我们在课程设置上体现了在校学习期间三年不断线的思想,每学期都有与程序设计有关的课程和实训。要求学生第一年编写代码不少于5000行,第二年不少于10000行,第三年不少于20000行。在进入企业之时,已经具备了较强的程序设计能力。3.软件工程能力课程群,以提供学生软件工程的管理与被管理能力。
(二)课程模块划分
根据合作企业的知识能力的不同需求划分为若干不同模块。通过对学生工作去向的跟踪调查和软件工程行业需求调查,确定了erp开发、web应用开发、手机应用开发、软件咨询服务等几个方向。每个方向设立若干课程构成若干课程模块,对应不同的去向,满足不同企业的需求。在基本能力培养的基础上,根据学生第四年去向选择模块,在第6学期完成,由企业方参与教学,完成学生进入企业的过渡。
五、企业培养方案
企业培养方案突出了理论和实践综合素质的培养,在教学体系上形成了企业导师教学讲解、专题实训、项目实践的“三位一体”、工学交替的人才培养方案。
整个企业阶段的培养方案划分为企业工程教育或专业特色实习(累计15周)、现场工程实践和专业综合设计(累计25周)两个部分,共40周,其中:
1.企业工程教育或专业特色实习(15周)
根据企业的业务和项目情况设置相关课程,折合15周。目的是培养软件企业需要的一线工程人才。为了提高本专业特色实习的质量,聘用计算机软件工程专业知识过硬、实践经验丰富的技术人员为教师。在实习过程中,采用案例教学法,把企业实际软件工程项目纳入学生实习范围,让学生接触和开发企业实际的工程项目。为了提高实习效果,企业工程教育要做到讲授、训练、实践穿插进行,使学生全面感受企业的工作环境、管理体制和项目开发过程,做到学生学习的专业特色内容与企业实践相结合。
2.现场工程实践或专业综合设计(25周)
为使学生成为满足软件产业需求的创新型人才,专业综合设计采用项目驱动的实习模式,专业综合设计通过参与企业实际项目完成,共25周。专业综合设计课题全部来源于企业的工程项目,实行1人1题,由实习单位的专业技术人员和学校的专业教师担任设计指导教师。专业综合设计结合实际工程问题,进行有针对性的研究与实践,培养学生综合运用所学知识和技能、分析与解决实际问题的能力,培养学生勇于探索的创新精神、严肃认真的科学态度和严谨求实的工作作风。
经过一年多的实践,卓越工程师人才培养成效显著,一批特色鲜明、实践能力强的工程应用型创新人才脱颖而出,2012届参加卓越工程师培养方式的学生,在就业方面占据了明显的优势。受到了企业的普遍欢迎。目前,2013届学生参加卓越工程师培养计划的工作正在进行,受到2012届成功运作的影响,学生们积极性很高。在卓越工程师计划的实施过程中,我们也发现了一些培养计划中的不足之处,并在2013届的实施中加以以调整。相信经过几年的努力,我们的培养方案会愈加成熟。
地方院校教学目标是培养社会所需要的应用型人才,这是其优势所在。实训教学是指独立设课的实训课和理论课中的实训环节,是实现培养目标的主体教学环节之一。实训教学是培养学生专业技术应用能力及分析问题和解决问题能力的重要途径,是教育过程中不可缺失的重要环节。本课题的研究基于某些国内外知名企业提供技术服务为基础,以梧州学院软件工程专业为探索平台进行的教学改革实践。校企合作的内容主要包括实践教学体系建设、实训教材建设、实训基地建设、产学研等多方面。
着力打造“4+5”的实践教学体系
学院软件专业打破传统的三段式教学,着力打造“4+5”的实践教学体系。“4”是指突出培养学生四种能力(实践能力、创造能力、就业能力和创业能力);“5”是指培养过程的“课程实验—期末实训--毕业实训—顶岗实习—创新性实践活动”五个模块。五个模块是根据软件工程特点,循序渐进地培养四种能力,体现工学结合。这五个模块和整个课程体系,都是围绕主线来展开。其中的“创新性实践活动”对软件技术人才来说是非常重要的,一个软件就像一个作品,必须有创意和实用的算法。
校企合作,共同开发实训课程和教材
为了支持“一条主线,五个模块”的实践教学体系,学院软件专业采取校企合作方式,共同开发实训课程,分别用于各个模块教学中。目前,已与多家企业共同建设基于任务驱动、项目导向、工作过程的《信息开发技术》课程,基于工作过程的 “教学做”一体化情景化教学的《网络综合布线》课程。与企业合作开发《信息开发技术教程》、《多媒体技术与应用实训教程》、《网站规划与设计实训教程》、《计算机组装与维护实训教程》、《角色动画教程》等教材。
校企合作,共建校内生产性实训基地
学院软件专业采取校企合作方式,与多家企业共建网络构建、服务器、综合布线实训室,实训室建设贯彻先进性、真实性、工程性、开放性的建设原则,将实训基地建成具备多类网络架构真实环境,集教学、科研、工程、培训、技能鉴定等多种功能于一体的网络技术与软件工程中心,着力培养学生的职业技能和创新能力,提高人才培养质量,提升社会服务能力。
以产学研充实教学内容,提高教学和管理水平
为搞好产学研,学院建立二级科研机构软件开发中心,软件专业教师在研究所兼职搞开发,取得了良好的效果。先后完成了梧州市国税限时办结税务系统、广西财政厅的预算单位银行账户管理系统、基于cmpp的短信系统的研究、广西科技厅的nsq物流信息实时智能配对系统、新型农村合作医疗信息系统等。在重大课题研究中积累了丰富的研究经验。特别是在医疗卫生行业, 建立医疗卫生行业综合信息平台。医疗卫生行业以新型农村合作医疗、城镇居民健康档案管理系统为切入点,以现有系统为基础,以国家农村合作医疗建设政策为指导思想,以具体的信息化项目作为实际载体,参与到医疗卫生行业“一个平台、四大系统”的建设中(即建立一个包含网络硬件和基础软件的统一技术基础平台,建立卫生行政管理信息系统(卫生电子政务)、突发公共卫生事件应急系统(突发公共卫生事件应急指挥决策、疾病预防控制、卫生监督、医疗救治等系统)、医疗服务信息系统(医院信息)和卫生应用信息系统(合作医疗、社区卫生、妇幼保健、医教科研等系统)),在加快全市公共卫生信息化建设进程,全面提高突发公共卫生事件监测、应急反应、医疗救治、执法监督和指挥决策的能力方面作出我们应有的贡献。
总结
软件工程专业的“3+0.5+0.5”的教学模式的实训环节是按照校内半年、校外半年的方式进行组织的。校内实训基地引入来自企业的真实项目,学生在贴合软件企业工作环境的实训室中完成校内综合实训。校外实训基地由来自企业的兼职教师带领在企业顶岗实习的学生参加企业项目的研发,在实战中进一步深化所掌握的专业知识。通过分方向、多层次、分阶段来逐步训练学生的专业技术能力和职业素质。整个实训环节包括专业认知、基本技能实训、核心技术实训、综合实训、顶岗实习几个环节,实训涵盖了基础知识、专业核心技术及综合能力培养等各个方面,所建立的实训教学体系有一定的借鉴意义。
目前流行的领域本体构建方法有:英国edinbunrgh大学ai应用研究所的enterprise项目组开发的“骨架法”,该方法使用middle—out开发方式提供与商业和企业有关的术语及其定义的集合;加拿大toronto大学企业集成实验室开发了tove项目本体,通过该本体来建立指定知识的逻辑模型;bernaras等人开发的欧洲eaprit kactus项目中由应用来控制本体的开发,每个应用都有相应的知识本体,这些本体即能复用其他的本体,又能集成到项目以后的本体应用中;西班牙madrid理工大学ai实验室开发的,methontology法构建知识级本体;美国southern california大学信息科学研究所开发的sensus法,主要通过自然语言处理,提取和合并不同电子知识源的信息而得到该领域本体的内容。
本文借鉴了上述传统领域本体构建方法中的基本思想,并在构建框架中融合了软件工程开发方法中的结构化开发方法和原型化开发方法。
1 传统领域本体构建方法分析
1.1 共同点分析
纵观上述“骨架法”、“评估法”、“bernaras”、“methonotology”及“sensus”方法构建领域本体过程中的思路,它们之间存在以下共同点:
(1)许多本体构建方法都以一个具体任务为起点,这样易于知识的获取和本体功能的描述。
(2)本体构建大致可划分为阶段法(如骨架法)和演化法(如methontology法)。
(3)在构建过程中可分为“非形式化描述本体”和用正规描述语言“形式化描述本体”前后两个阶段。
(4)希望通过累积的方法构建本体,即先构建一个基础本体,然后做进一步开发。
(5)对于由同一个基础本体构建出的领域本体,由于高层概念的共享,本体系统之间具有互操作能力。
1.2 缺陷分析
ieee 1074—1995标准是软件开发生命周期过程的标准,其中包括模型阶段、项目管理阶段、软件开发阶段与集成阶段4个开发阶段,其中软件开发阶段的具体步骤如下:
(1)开发前期:主要进行可行性研究等活动;
(2)开发阶段:主要进行需求分析、设计和实现等活动;
(3)开发后期:主要进行软件的安装、试运行、操作和维护等活动。
与ieee 1074—1995标准对比而言,目前领域本体构建还远远没有成为一种工程性活动,还具有如下缺陷:
(1)没有一种方法是完全成熟的,不论是bemaras法、sensus法、骨架法、评估法,还是methontology法。
(2)缺乏工程化的本体通用构造方法和标准。由于每个研发团队处于不同的学科领域,虽然总结出各个领域不同的开发方法和体系结构,但是各个本体开发方法都不尽统一,缺乏通用的标准。
本文在领域本体构建过程中扬弃上述5种领域本体构建方法中的优缺点,而且借鉴了软件工程开发的基本标准。
2 基于软件工程开发的领域本体构建
2.1 构建框架
本文在领域本体框架构建的形式上采用结构化方法中分段式模式,将整个领域本体构建过程分为领域本体规划阶段、领域本体分析阶段、领域本体设计阶段、领域本体实施阶段及领域本体运行阶段,每个阶段都有自己独立的目标及主要任务,前一阶段任务的完成是后一阶段任务开始的前提和基础,后一阶段任务通常是对前一阶段提出的解决问题方法的进一步具体化,即该过程是按照软件工程开发的生命周期流程来逐步解决问题的。在领域本体分析阶段,根据领域本体规划阶段提出的具体要求和目标,采用原型化方法不断地对分析结果进行修改和完善。其构建框架如图1所示。
2.2 构建框架分析
2.2.1 领域本体规划阶段
(1)确定领域本体的用途和范围
确定领域本体范围的方式之一是设计并填写本体的性能调查表,以下从需求的角度对本体支持的性能调查表进行简单的分类:
①需求细化。需求细化过程必须满足何种标准?会产生多余的需求吗?需求是客户的清晰表述吗?
②需求追溯能力。需求还能分解吗?需求的来源是什么?谁记录需求?需求在特定的设计团队中适用吗?
③需求满足。需求能够满足吗?两个或多个需求间相互冲突吗?更高抽象级别的需求怎样满足评估?
④文档生成。需求属于哪类文档?哪些是与需求文档中的段落相符的需求?不属于客户报告的需求有哪些(商业机密)?
⑤升级。这是需求的最新版本吗?需求的旧版本有哪些?为什么还要改变需求?变化对需求文档的一致性和完整性有影响吗?
(2)考虑复用现有领域本体
一些本体已经初具规模,可以在网上找到相应的本体库及相关资料,在具体开发之前,有必要在这些本体中寻找系统可以重用的本体,这样可以省去元本体和顶层本体的建立,而把本体建立的目标重点放在领域本体的建立上。
2.2.2领域本体分析阶段
(1)定义类和类层次
类描述了领域的概念而非单词。在类和类层次的定义过程中,需要依据以下8个原则:
①确保类层次的正确性
恰当使用is—a和kind-of等类间关系,is-a关系指类a是类b的子类,前提是b的每个实例也是a的实例。类的子类表示概念是kind-of父类表示的概念;层次关系间具有传递性,并应区分直接子类和间接子类的关系;避免类层次的循环,确保类层次随着领域发展而进化。
②分析类层次中的兄弟关系
在类层次中,兄弟关系是同一类的直接子类,并在同一抽象级别上。关于直接子类的个数并没有明确规定,但父类一般只有2-12个直接子类,过多或过少不都合适。
③多重继承关系
一个类可以是几个类的子类,则子类的实例是其所有父类的实例,子类将继承所有父类的属性和关系约束。
④引入新类的时机
当类的子类有其父类不具有的新属性,或有已定义的新属性值,或覆盖父类属性的约束,此时可以引入一个新类。新类可以没有任何新的属性,没有必要为了一个额外的限定条件来创建新类。
⑤新类或特性值
如果有不同属性值的概念变成其他类中不同属性的约束,则应该生成新类,以便加以区别;类的单个实例不应经常改变,当使用概念的外在(非固有)属性来区别类时,这些类的实例将需从一个类移动到另一类。
⑥类或实例
判断类结束和单个实例开始依赖于知识表示中最低的粒度级,而粒度级又由本体应用来确定;如果概念已经形成自然的层次,则应表述为类,单个实例是最特殊的概念表述,实例没有层次性。
⑦限定范围
确保不包括类具有的所有特性,仅在本体中表述类最突出的特性,不增添所有类(术语)间全部的关系。
⑧不相关子类
很多系统明确指定某些子类不相交,如果类没有任何共同的实例,则它们不相交。
(2)定义类的属性及其约束
类的属性是描述类和实例的特性,也是类间区分的特性。通常有四种对象特性能变成本体中的属性:
①固有的特性,如圆柱的半径和高度。
②外在的属性,如螺旋的设计者。
③局部,若对象是结构化的,物理和抽象的部分。
④与其他个体间的关系。
不同的约束可以用来描述属性的值类型、值范围、值基准,及值的其他特征。下面从5个方面来描述属性普通的约束:
①属性基数。基数定义属性有多少值。有些系统定义单一和多个基数,而有些系统用最小和最大基数来描述属性值的个数。有些属性设置最大基数为o,目的是为了表示特定子类的属性不能有任何值。
②属性值类型。通常属性值类型可分为字符串型(string)、“浮点或整数”数值型(float或integer number)、“是或否”布尔型(yes或no boolean)、枚举型或符号型(enumerated或symbol)、实例型(instance)。
③属性的领域和范围
属性应能描述其领域中所有的类,属性应能填充其范围内所有类的实例,同时不应指定属性的范围是本体中最通用的类。
④逆属性
属性值可能会依赖于另一属性值,称为逆关系,在两个方向保存此数据是冗余的,通常使用逆属性,可以自动填充另一逆关系的值。
⑤默认值
如果类的多数实例的特定属性值是相同的,则可把该值定义成默认值。当类的每个新实例包含这个属性值时,系统自动填充默认值,还能把此值改成约束允许的其他值。
(3)生成实例
定义类的单个实例首先需要选择类,接着生成这些类的单个实例,最后填充属性值。
为了使生成的类、类间层次关系、类属性及约束、类实例等更符合构建目标和用途,并为了保障在较短时间内适合用户的需求,在领域专家的指导下,采用原型化软件工程开发方法对该阶段产生的成果不断修改和完善。
2.2.3 领域本体设计阶段
(1)领域本体的形式化表示
一般用语义模型表示领域本体。perez等人用分类法组织领域本体,归纳出5个基本建模元语:
①类(classes)或概念(concepts)
从语义上讲,它表示的是对象的集合,其定义一般采用框架(frame)结构,包括概念的名称、与其他概念之间的关系集合、以及用自然语言对概念的描述。
②关系(relatiom)
在领域中概念之间的交互作用,形式上定义为n维笛卡尔积的子集,即:r=c1×c2×……×cn
③函数(functions)
一类特殊的关系。该关系的前n-1个元素可以惟一决定第n个元素。形式化定义为f:c1×c2×……×cn-1→cn。
④公理(axioms)
代表永真断言,如概念乙属于概念甲的范围。
⑤实例(instances)
代表元素,从语义上讲实例表示的就是对象。
另外,从语义上讲基本的关系有4种:整体与部分关系(part—whole)、分类关系(is—a)、实例与概念关系(instance—concept)和属性关系(attribute-of)。但在实际建模过程中,概念之间的关系不限于上述4类关系,可以根据领域的具体情况定义相应的关系。
(2)领域本体的形式化描述语言
领域本体可用自然语言、框架、语义网络或逻辑语言等来描述。但对计算机来说,形式化描述语言做为一种可供计算机处理的概念模型,应具备以下条件:
①应该具有较强的表示能力,同时也应兼顾推理能力,以满足智能检索中进一步实现推理的需求。
②应该具有较强的内在逻辑系统支持。
③应该具备一致的描述概念和表示数据的能力。
④应该尽可能与w3c已有标准兼容,从而保证其持续发展需求。
⑤应该具备xml语法特性,最好是基于语义web。
⑥所表示的领域知识是形式化的,即机器可读和可理解的。
目前已经开发了6种本体语言,有些是直接基于xml语言的语法,如简单html本体扩展(simple html ontologyextension,shoe)、本体标记语言(ontology markup language,oml)和基于xml的本体交换语言(xml—based ontology exchange language,xol);另外有2种本体语言是建立于rdf(s)之上,以便改善rdf(s)的特征:本体交互语言(ontology interchange language,oil)和darpa主体标记语言+本体推理层(darap agent markup language with ontology inference layer,daml+oil)。最近,以oil和daml+oil语言为起点,已开发出语义网所用的web本体语言(web ontology language,owl)。各个本体语言之间的层次化关系如图2所示:
(3)领域本体的文档化构建和存储
构建领域本体文档,可对后续领域本体修改和进化奠定基础。1个owl文档由以下4个部分组成:
①本体首部:包含了文档的元数据,如导入数据、版本数据及与其他owl文档的兼容数据。
②类的定义:通过(owl:class)标签定义类,使用(rdfs:subclassof)来继承1个或多个类,由此建立类的层次关系。类的语义用类的描述来表达。owl区分了6种类的描述:1个类标识,1个详细的列举,1个属性的限定,2个或多个类描述的交,2个或多个类描述的并,1个类描述的补。
③属性的定义:owl存在2种类型的属性,即对象属性(object property)和数据类型属性(datatype property)。对象属性是用来表述2个类实例之间的关系,而数据类型属性则描述类的实例、rdf literals,以及xml schema数据类型之间的关系。属性之间还能够定义子属性关系以及为属性声明额外的特征(传递属性和逆属性)。如能够定义father是parent的子属性,定义anceator为传递属性,定义child为parent的逆属性。
④个体(实例)的定义:一个个体是一个特定类的实例,并与其属性相联系。
2.2.4 领域本体实施和运行阶段
(1)领域本体评价
这里采用gruber在1995年提出的5条准则:
①清晰性。所定义的术语应尽量客观,避免受社会背景和客观环境的影响;给出的定义应尽可能完整。
②一致性。即本体中定义的公理应该是逻辑一致的,概念和概念间关系在逻辑上也应该是一致的。
③可扩展性。本体应该能够保证添加新的通用或专用术语,而不需要修改原有的定义,即能支持在已有的概念基础上定义新术语。
④编码偏好程度最小。概念应该在知识层次上说明,而不应该依赖于特定的符号层次的编码,因为不同的系统可能采用不同的表示风格。
⑤最小本体承诺。一般地,本体承诺只要满足特定的知识共享需求即可,这可以通过定义约束最弱的公理及只定义交流所需的基本词汇来保证。
(2)领域本体试运行
可针对某一应用目标,可利用初始生成的领域本体在特定的应用范围内进行试运行,来验证初始领域本体是否能够满足领域范围应用的需求,特别是要检验其一致性、完整性和可扩展性。经过试运行,若符合要求则转向(4);若不符合要求则要重新经过本体分析阶段,然后转向(3)与(4)。
(3)领域本体文档的修改
针对试运行的结果,可在owl文档的基础上做一些标注性的修改。
(4)领域本体应用
对于修改后的领域本体,可正式投入实际运行应用过程。
3 总结和展望
本文在总结与分析传统领域本体构建方法中的基本思想及缺陷的基础上,提出了基于软件工程开发角度来构建领域本体的思路。其中利用结构化开发方法构建领域本体整体开发流程,充分借鉴了结构化开发方法中的用户至上原则,结构化、模块化、自顶向下地对系统进行分析和设计等优点,但由于结构化开发方法中存在开发周期过长、不易满足用户需求并难易修改等缺陷,因此在领域本体构建的重要环节,即在领域本体分析阶段采用原型化开发方法,使用户与开发者通过不断地沟通尽快确定领域本体初始模型,并通过结构化开发方法所划分的层次结构过程不断地优化和修改初始模型,使其能够尽快满足用户的需求。
摘要:针对“软件工程”这门课的课程特点,本文提出几种实用的教学方法和手段,目的为了提高“软件工程”的教学质量。
关键词:软件工程 教学改进 实践
中图分类号:
1、 引言
提起软件,在当今社会人们并不陌生,正是由于软件的发展,使计算机应用逐步渗透到社会生活的各个角落,使各行各业都发生很大的变化。这同时也促进人们对软件的品种、数量、功能和质量等提出了越来越高的要求。然而,软件的规模越大、越复杂,人们的软件开发能力越显得力不从心。于是,人们开始重视软件开发过程、方法、工具和环境的研究,软件工程应运而生。
“软件工程”主要介绍软件工程的基本原理、开发方法和开发工具,通过本课程的学习,使学生了解和初步掌握开发1个软件项目所使用的方法和工具,以及“软件工程”的发展过程和发展趋势,为进行软件开发打下1个良好的基础。
2、 课程特点
1。 课程综合性强。
软件工程与其他计算机课程,如程序设计语言、数据结构、编译原理、数据库以及操作系统等课程都是相互作用和影响的。在1定程度上说,软件工程讨论的是在实际开发当中综合运用这些课程中讲过的理论和方法,将这些课程的理论和方法放在1个统1的目标下,这个目标就是在有限的时间及预算条件下,开发出高质量的令用户满意的软件。
2。 课程内容不断更新。
软件工程课程的教学培养目标应该以市场需求为导向,使课程培养的学生真正能够在软件行业中发挥作用。因此,在授课时,我们不能拘泥于教材内容的限制。在讲解基本原理、基本概念和基本方法的同时,介绍1些新方法、新技术。这样,有助于开拓学生的视野和培养创新意识与开发能力,使他们走向社会后不至落伍。
3。 课程的实践性强。
软件工程是1门实践性很强的课程,它是各种开发经验的总结与提炼。在学习过程中不但应注重概念、原理、方法和技术的掌握,更应注重方法、技术的实际应用。学习软件工程必须投身于软件开发的实践,才能真正领悟软件工程的精髓。
实际教学当中,这门课的教学效果往往不是很理想,教师觉得这门课教起来较困难,学生学习中多数也觉得枯燥无味,很难达到较好的教学效果或获得较强的实践能力等预期目的。如何改善?结合软件工程的课程特点,笔者认为可以从以下几个方面来改进《软件工程》的教学质量。
三、软件工程教学改进的内容和方法
1。 教学过程引入实际案例
软件工程课程涉及面很广,如果不结合实际工程项目进行教学,很难把教学内容教授给学生。因此,在教学过程中引入案例,将复杂抽象的概念用具体生动的实例进行诠释,能够收到事半功倍的效果。例如,在授课时教师可结合1个“学校教材购销系统”实例,给学生介绍具体的开发过程和方法。
另外,学校还可邀请领域内有实际经验的资深程序员,针对软件工程中具体理论和方法在实际开发中的应用,在课堂上和学生进行面对面讲座,深入浅出地作讲解。这样,学生可以更加熟悉、掌握软件开发的过程。
2。 组织课堂讨论,形成教学互动
我国有句名言:“授人以鱼,不如授人以渔”。学生是教学活动的核心,教师要利用合适的方法调动学生的积极心理和参与意识,改变传统的教师高高在上的教学方式,让学生参与教学过程,有机会发表自己的看法。
比如在讲授需求分析这章内容时,可结合“学校教材购销系统”这个案例,要求学生按照软件工程教学的思想和方法认真做好需求分析。在实施过程中,首先由学生独立思考,给出解决方案。然后在课堂上,组织学生进行讨论,分析各自解决方案的优劣,并进行综合。最后由老师进行总结和评价,指出该案例所涉及的理论知识及其应用方法,就学生提出的问题进行解答。这样通过组织学生讨论,可使学生进1步理解和掌握课程内容的方法和步骤,使抽象的知识变得看得见,用得着,大大激发了学生学习的兴趣和自信。
3。 加强实践环节
从本质上看,软件工程的实践性和综合性是其他相关课程难以比拟的。因此,必须结合设计项目和实际应用加以施教,才能取得良好的教学效果。那么,在把握教学进度的同时,必须及早安排好课程设计,让学生同步开展课程设计。这样,理论课讲完了,课程设计也基本结束,学生们能从理论和实践的结合上,加深对软件工程知识难点、重点的理解,进1步深刻理解软件过程和系统消化理论知识,训练项目设计的思路,锻炼实际开发能力,培养严格规范的项目开发方法和步骤,体验文档编写整理、阶段性评审总结以及软件测试等各个方面的工作流程,直接培养了学生从事实际开发的能力。
四、结束语
在教学中,我们还应根据学生的具体情况,因材施教。总之,通过不断改进教学,使学生能更好地理解、掌握知识,运用所学服务社会。
摘要:提出了面向学生主体和项目驱动的软件工程教学模式。从开展以学生为主体的理论教学过程、实施基于项目驱动的实践教学环节、制定符合教学特点的课程考核体系三个方面出发,对该模式进行了研究和探讨。
关键词:软件工程;教学模式;软件工程;学生主体;项目驱动
1 引言
长期以来,在我国《软件工程》课程教学中强调理论学习而忽视实践能力培养的现象比较普遍,现有的国内不少教材对实践能力的培养重视不够,表现为:①教材中的案例缺乏完整性、统一性和实用性;②缺乏与理论教学相适应的实验教材。evelyn等在他们的著作《project-based software engineering an object-oriented approach》中强调了学生具备开发项目经历的重要性,认为现有的教材过分强调软件工程理论的教学,不能有效地培养学生的软件开发技能。由于缺少软件开发各个阶段的经历,因此,学生较难理解、掌握所学的课程内容。
我们主要围绕《软件工程》课程的内容体系、教学方法、课程考核等方面对该门课程的教学模式进行了改革,其根本思想是开展以学生为主体的理论教学过程;实施基于项目驱动的实践教学环节;根据教学过程的特点,制定该课程的考核体系。我们把改革后的、新的教学模式称为“面向学生主体和项目驱动的软件工程教学模式”。
2 开展以学生为主体的理论教学过程
2.1 建立合理的课程内容体系
建立合理的课程内容体系首先应合理地选择教材,我们选用的教材为shari lawrence pfleeger 编著的《software engineering(theory and practice)》。该教材内容的特点是:①理论性,教材比较全面地介绍了软件工程中的基本原理、概念和方法;②实践性,课程的内容体系强调基本原理、方法在实践中的具体应用;③先进性,教材较为详细地介绍了软件工程中的新技术、新方法。同时,我们选用的辅助教材为清华大学张海藩编著的《软件工程导论(第四版)》。
其次,应根据学生的培养方向、学时数等因素对所讲授的内容作必要地取舍。我们以传统的生命周期方法学和面向对象方法学为主线,建立了课程内容体系,参考国内外先进的软件工程理论和应用实例,对教学内容进行了必要的补充和删减;以培养学生的软件开发过程中的技能为目标,制作了内容丰富、联系项目开发实际的多媒体教学课件;建立了较为完善的软件工程典型项目案例库,为每一个案例提供详细的分析说明;编写了供实践环节使用的《软件工程项目案例实施指南》。
2.2 开展以学生为主体的案例式教学
在教学过程中,开展以学生为主体的案例式教学,克服了传统的“教师教、学生学”的模式。在课程的开始,即将学生分为若干个项目小组(每个小组5至7人),并为每个小组确定一个负责人,各个项目小组选定一个互不相同的项目,并明确所选项目的总体要求及考核标准。教师以一个完整的项目案例贯穿于整个理论教学过程中,学生则带着自己项目中的问题去理解、思考教师所讲授的内容。学生的作业主要体现为项目的阶段性的分析和设计文档,项目小组的成员在讨论、协作的基础上,每次均以小组的形式提交作业。
2.3 建立《软件工程》课程教学资源平台
该课程的教学辅助资料围绕《软件工程》网络课程建设而展开,所建设的网络课程主要内容包括:教学大纲,教学内容,电子教案,课程习题,模拟试题,多媒体课件,实验部分,课程评价反馈等。建立网络课程平台的目的是为了便于学生进行网上自学、讨论交流、作业提交、在线测试、教学效果评价等功能,充分发挥学生在学习过程中的主体作用。
通过该门课程的理论教学改革,学生普遍反映能够较好地理解、掌握软件工程项目的开发理论和方法,和单纯的理论教学相比,改革后的教学方式更容易让人接受,学习的主动性得到了提高。
3 实施基于项目驱动的实践教学环节
我们把实践教学和项目开发相结合,实施基于项目驱动的实践教学环节。不同的项目小组开发不同的项目,学生在实践环节中主要完成在理论学习过程中形成的分析、设计文档,以小组成员分工协作的方式共同开发一个完整的项目。完成一个符合要求的项目是该门课程实践考核的主要内容。学生的学习活动是在项目开发的各项过程和活动的驱动下完成的。在具体的实施过程中应注意以下几个问题:
(1)由项目负责人在课外时间召集项目组成员讨论、进行人员分工,使项目小组的所有成员熟悉和感受软件开发小组的组织和管理。
(2)实验内容应覆盖软件生存周期的各个阶段,使学生通过实验加深对理论知识的理解。项目小组的所有成员均应参加软件开发的每一个阶段。
(3)应保证实验内容具有可操作性和适当的难度。可操作性保证学生都能完成实验,帮助学生树立学习信心,并在一定程度上减少学生抄袭的现象;适当的难度有助于培养优秀学生进一步钻研的精神。
4 制定符合教学特点的课程考核体系
传统的考核方法不能在教学的过程中把握学生的学习效果,不能充分调动学生学习的主动性和提高学生的学习兴趣,课程的考核应该和课程的教学特点相适应。因此,我们制定了分阶段、互评定的二次考核体系,具体措施为:
(1)课程考核由三部分组成:理论考核占40%,实践考核占40%,平时考核(作业、考勤)占20%。
(2)实践成绩的评定包括小组成绩和个人成绩两部分,各占50%。小组成绩为小组中所有成员的第一次考核成绩,个人成绩为小组成员的第二次考核成绩。
(3)小组成绩由各个小组阶段成绩的平均值与完成的项目的最终验收的情况(包括系统是否达到需求规格说明中的功能性、非功能性要求,文档是否全面、合理、规范等)组成。小组的阶段性成绩由教师和该项目组之外的其他项目组共同评定。
(4)个人成绩由教师根据小组每个成员的答辩成绩来评定,答辩的内容为小组成员在项目开发中所完成的任务,其中,评定项目负责人个人成绩时,还应考查其项目开发的组织、
管理能力。
考核结果表明,我们采用的考核方法提高了学生按照软件工程的原理、方法、技术、标准和规范进行软件开发的综合能力和软件项目的管理能力,特别在基础技能、团队协作、人际交流、项目规划几个方面明显具备较强的能力。
5 结束语
《软件工程》课程的教学模式改革主要体现在以下三个方面:在理论教学方面,以学生为主体的教学模式,表现为以分组形式的案例教学过程;在实践教学方面,通过小组内成员分工协作的方式,完成小组所选定的项目案例;在课程考核方面,制定了符合教学特点的课程考核体系。在整个教学过程中,学生始终处于主导地位,是学习的主体,教师处于指导和评价学生阶段性学习效果的地位。从学生反馈的结果来看,通过对该门课程的教学模式进行改革,使学生经历了软件开发的全过程,锻炼和培养了学生的系统分析能力、设计能力、编程能力、测试和维护能力、团队协作能力和文档书写能力,全面地提高了学生的综合素质。
摘要:信息工程是企业信息系统中不可或缺的一部分,其包括信息网络工程、信息资源工程、信息应用工程。该文将凭借着软件工程理论,从信息工程开发的角度,进行信息工程的三维监理,从而构建一种新型监理模式,即“三控四管一协调”。从而使信息工程监理走向更深入、更全面、更有效的水平。
关键词:软件工程;信息工程监理;监理模型
自从二零零二年十二月我国信息产业部颁布《信息系统工程监理暂行规定》(简称《规定》)之后,信息工程监理公司越来越多。根据《规定》,信息工程监理主要是指依法设立且具备相应资质的信息系统工程监理单位,受业主单位委托,依据国家有关法律法规、技术标准和信息系统工程监理合同,对信息系统工程项目实施的监督管理。[1]
1 信息工程的特点
跟其他的一般的建设工程项目相比,企业信息工程有着复杂高度、能见度低等不确定因素。其主要有以下几个特点:
1.1 组织驱动技术
企业信息工程项目的组织和建设越来越表现出不可分割的一面。工程项目组织要求信息工程必须严格确定“前期准备-工程项目规划-工程项目设计-工程项目实施-工程项目验收-工程项目维护”的“组织思维”过程,设立周密的“组织标准”通过这些组织标准来带动技术标准的设立,通过组织的需求来带动技术方面的需求,也通过组织的满意度还评价技术方面的满意程度。
1.2 全员全程参与
信息工程并不能跟那种“交钥匙”工程一样,其要求建设单位的所有员工进行全程参与。这主要是由于企业信息工程项目不并简单,而是一个非常复杂的知识传递的过程,其要求建设单位的所有员工必须学习并接受相关知识;因此建设单位与开发单位之间必须相互适应、相互协调,必须协同共进。企业信息工程系统是一个人机相结合的有机系统,没有建设单位人员的全程参与,信息工程系统将不可能实现其有效性、完整性、全面性。
1.3 复杂度高,不确定因素多
由于信息工程项目的需求比较复杂,其不像其他建筑工程那样具有可见性。检验复杂,较长的维护期,还有其它非技术因素原因导致企业信息化项目失败[2]。因此,企业的信息工程项目具有搞复杂度、低能见度,存在许多不确定的因素。
2 信息工程监理的必要性
现在,我国企业实现信息工程项目的成功几率还非常低,根据我国企业信息工程项目的自身特点,保证信息工程项目的成功几率的提高,必须进行信息工程建立,即必须通过第三方监理单位对企业信息工程项目的实施进行监督。信息工程监理将有利于开发单位跟企业的相互协调,彼此协同共进,能确保信息工程项目的有效进行。对于信息工程监理的必要性,主要原因在于:目前我国企业信息工程监理对过去传统的建筑工程监理模式进行了参考,但又跟一般的建筑工程的监理有一定的差别。第一,信息工程的可见度非常低,开发过程相当多变、复杂,其知识密度也相当高。不像建筑工程项目的监理那样能随时对施工现场进行其质量、进度进行监督管理,信息工程监理根本无法对信息工程的操作现场、质量进行监督和管理,信息工程的进合同执行情况、软件质量、资金使用情况、进度等很难把握和操控。从而致使了信息工程监理低能见度、高复杂度、差操作度等现象。为了解决这些监理中出现的问题,必须采用软件工程理论。通过软件工程,可以将高复杂度的信息工程项目进行分解,对信息工程中低“能见度”的难题设置了一套有效的解题方案。根据现有的软件工程平台和工具,将能为信息工程项目的监理提供一套“复杂度”低、“可见性”高的监理平台,很大程度上满足了现阶段我国企业信息工程项目建设的需要。
3 基于软件工程理论的信息工程监理模型
软件工程是一门通过工程化的手段来维护和构建高质量的、实用的、有效的软件的学科。软件工程涉及到的内容有:设计模式、软件标准、系统平台、软件开发工具、数据库、程序设计语言等多个方面。在目前的现实生活中,软件的应用领域非常广泛,政府部门、航空、银行、农业、工业都会应用到软件,其最具典型的软件有:游戏、数据库、编译器、操作系统、办公套件、人机界面、嵌入式系统和电子邮件等等。软件工程的应用将对社会和经济有着极大的促进作用。多年的实践证明,通过软件工程的方法对信息工程进行监理能更易被监理活动过程中的三方接受,因此将软件工程引入信息工程项目监理中,将能为信息工程项目的监理提供一套“复杂度”低、“可见性”高的监理平台。
3.1 设立信息工程监理的目标
进行软件工程最主要的目的是利用科学的有效的管理方法来促进软件开发质量的提高。其主要要求是要将过去的软件开发模式(小作坊开发模式)进行转变,对过去的开发模式其进行细分和分解,按照各阶段的特征选用不同的方法和工具,从而使复杂度较高的软件生产进行可度量、可控的设置。再者,经过对各个阶段进行严密的、有效的控制,从而促使一些可能出现的风险和问题在前期阶段就得以解决和重视,从而促使软件开发风险的降低和软件质量的提升。总之,企业信息工程监理的最主要的任务就是对工程的进度、质量、投资等进行有效的、科学的控制和规划,其最基本的方法是进行有效的合同管理、展开合理的组织协调、实现工程的动态控制、完成理想的目标规划,使监理贯穿于整个“前期准备-工程项目规划-工程项目设计-工程项目实施-工程项目验收-工程项目维护”的工程项目过程。因此,信息工程监理的最终目的是通过合同管理、质量控制、进度控制、成本控制、信息管理来保证工程项目的有效、高质量、顺利的进行。
3.2 构建信息工程监理的模型
根据信息工程监理的目标,信息工程项目应该分为:项目分析、项目设计、项目实施以及项目维护等四个阶段[3]。基于软件工程理论的信息工程监理并不是机械地复杂软件工程的相关理论于信息工程的监理中,而是根据软件工程理论,对搞复杂度、低能见度的工程项目进行设计和管理,并将其融入到信息工程的监理中去的一种方法。根据这中方法,从而建立基于软件工程理论的信息工程监理模型。该模型以信息工程项目过程控制为主线,对企业信息工程的项目分析、项目设计、项目实施以及项目维护等四个阶段进行全方位控制和监督,从管理上对其进行风险管理、需求管理、合同管理、信息管理,从控制上对其进行进度管理、质量管理、成本控制,并从管理角度对项目阶段进行总体协调,形成企业信息化项目监理的“三控四管一协调”三维监理模型。其监理模型如图1所示。
4 结束语
综上所述,软件工程是一门通过工程化的手段来维护和构建高质量的、实用的、有效的软件的学科。通过软件工程的方法对信息工程进行监理能更易被监理活动过程中的三方接受,因此将软件工程引入信息工程项目监理中,将能为信息工程项目的监理提供一套“复杂度”低、“可见性”高的监理平台。进行软件工程最主要的目的是利用科学的有效的管理方法来促进软件开发质量的提高。其基于软件工程理论的信息工程监理的模型应该以信息工程项目过程控制为主线,对企业信息工程的项目分析、项目设计、项目实施以及项目维护等四个阶段进行全方位控制和监督。
摘要:课程体系的研究,是通过对软件企业软件工程师的职业工作过程分析,建立软件工程师的职业能力模型,然后建立针对工作领域的岗位特定能力模型、行业通用能力模型、核心能力模型。根据以上模型映射出实训体系的四个组件:实训教程、流行技术、职业素质、软件素养,然后建立不同技术特点的课程开发标准。
关键词:职业能力模型;核心能力;岗位特定能力
1 基于工作过程的课程开发模式的必要性
近年来在政府推动与经济发展需求的刺激下,我国高等职业教育的规模有了很大发展;全国职业教育工作会议的召开,又为高职发展迎来了新的历史机遇。然而,我们可以在短短几年内建设起大量被称为高职学校的校舍,却无法在短期内形成真正的高职教育。受传统教育体制的影响,教材更新速度也严重滞后于软件技术发展,师资素质又得不到提高,人才培养模式缺乏创新,这种传统教育模式无法真正适应软件企业对软件人才的需求。一方面是大批企业找不到急需的技能型、实用型、国际化、规范化的软件职业技术人才;另一方面,学校培养出的软件人才由于不能适应企业需求而找不到理想的工作。如何凸显特色已经成为高职发展的重大课题;如何开发一套既适合高职生学习特点,又能增强其就业竞争能力的教材,是高职课程建设面临的另一个重大课题。
要有效地解决这些问题,建立能综合反映高职发展多种需求的课程体系,必须进一步明确高职人才培养目标。为此,不能仅仅满足于对“高职到底培养什么类型人才”的论述,而是要从具体的岗位与知识分析入手。高职专业的定位要通过理清其所对应的工作岗位来解决,而其课程特点应该通过特有的知识框架来阐明。也就是说,高职课程与学术性大学的课程相比,其特色不应仅仅体现在理论知识少一些,技能训练多一些,而是要紧紧围绕基于工作过程和工作目标重构其知识、技能、素质的课程体系。
2 软件工程师能力素质模型
2.1 软件工程师能力素质模型
职业人的能力分为三层:岗位特定能力、行业通用能力、核心能力。每个具体的职业、工种、岗位和工作都会对应一些岗位特定能力。岗位特定能力从总量上是最多的,但是适应范围又是最窄的,对每个行业来说,又存在着一定数量的通用能力,从数量上看,它比特定能力少得多,但他们的适应范围要宽些,涵盖整个行业活动领域。而整体上,存在着每个人都需要的,从事任何职业或工作都离不开的能力,这就是核心能力。核心能力往往是人们职业生涯中更重要的、最基本的能力,对人的影响和意义更深远。我们在日常生活中看到的岗位特定能力,其实是浮出海面的冰山一角,而行业通用能力和核心能力则是海面下的冰山主体,它们是每个人在职业生涯中,甚至日常生活中必备的最重要的能力,它们具有普遍的适用性和广泛的可迁移性,对人的终身发展和成就影响极其深远,目前核心能力包括:交流表达、数字运算、革新创新、自我提高、与人合作、解决问题、信息处理、外语运用。
2.2 软件工程师岗位特定能力分解
根据软件工程从业人员的岗位不同,从java软件工程师和.net软件工程师两个方面,提取了基于工作过程的能力描述。
(1)java软件工程师
(2).net软件工程师
2.3 行业通用能力分解
2.4 核心能力分解
3 软件工程师课程内涵
根据软件工程师能力模型影射出职业课程中的四个组件:实训教程、软件素养、职业素质、流行技术。
根据软件工程师能力形成规律,我们分s1、s2、s3三个阶段逐步实施。通过s1阶段的训练,学生具备了利用面向过程思想、面向对象思想分析设计解决问题的能力,掌握c/s软件体系的程序开发方法。通过s2、s3阶段的训练,使学生具备利用b/s软件体系结构进行软件开发、设计的能力;掌握大型企业级应用问题的分析、设计方法。
3.1 实训教程
“实训教程”以项目为主线,分为learning案例、training案例、mentoring案例三种。项目案例均为企业真实项目,由经验丰富的软件工程师编写而成,在实施环节由实训工程师带领学生完成。
“实训教程”重点提高学生的职业特定能力,通过项目实训,学生能够将理论知识与实际项目相结合,不但提高了软件开发技术水平,还能够具备大型项目的开发经验与行业知识,增强团队合作的能力。
3.2 软件素养
软件素养要求对软件行业知识的认识有足够的深度与广度。它是软件工程师应具备的基本素质,是软件行业通用能力,软件素养组件与大学的计算机相关课程共同培养学生的这一能力。
“软件素养”主要包括实用操作系统知识,各种软件开发团队模型的理解与认识,项目开发流程与规范,项目文档编写,软件开发中各种工具的配置与管理,设计模式的原理与实现等。
3.3 职业素质
职业素质是劳动者对社会职业了解与适应能力的一种综合体现,在软件开发中包括责任心、学习能力、创新能力、沟通与合作能力、高效的团队协作能力、积极主动的心态、扎实的工作作风、科学的工作方式及较强的解决问题能力等。
3.4 流行技术
it业正在以传统行业七倍的速度快速发展,软硬件技术在以摩尔定律的速度更新,即使学生在大学中学习的是最新软件版本与技术,毕业之后,版本也已经更新,“流行技术”正是为解决此问题而提出的,目的是让学生与it信息同步,把自我知识与最新知识做到无缝衔接。
1. 引言
软件工程硕士专业学位的设立,是我国学位与研究生教育改革的重大举措。经过近十年的发展,已经逐渐发展壮大成为我国规模最大、覆盖面最广的专业硕士学位之一。随着数量的不断扩大, 软件工程硕士生的培养中出现了不少问题。如导师难以对每一个硕士生进行悉心指导和严格要求, 而且招生生源有着不同的理论及实践基础。在这种情况下,硕士学位论文质量难以提高,因此, 确保软件工程硕士的培养质量已成为一个不容忽视的问题。需要进一步对培养质量进行审视,并采取切实措施,保障培养质量。
2. 预审制度的必要性
硕士学位论文是综合衡量软件工程硕士培养质量的重要标志。它体现了研究生综合运用基础理论、专业知识与科学方法、解决行业实际问题的能力,以及反映具有新思想,新方法或新进展的创新能力。在数量不断扩大、培养质量面临严峻挑战的背景下,科学公正地评价软件工程硕士学位申请者的学位论文, 是保证培养质量的一个重要环节。
2.1目前软件工程硕士学位论文主要存在如下的问题:
论文缺乏自己的实际创新点和具体工作。部分论文停留在对以往研究内容的重组或综述的水平,缺乏对自己实际工作的阐述和验证,技术难度和工作量不够。论文写作缺乏整体性思路,很多学生论文撰写结构欠合理,对本领域内的工程和学术动态了解不全面,缺乏实用价值和社会效益。论文格式不够规范。主要表现在各级标题字号、错别字、参考文献引用格式不够规范、图标排版不符合要求等方面。
2.2目前学位论文评阅及答辩制度存在以下问题:
2.2.1校内外评阅制度难以切实起到监控作用:以往硕士学位论文评审实行的是校内外专家的实名评阅制度,校内、校外两位专家评审意见中有一人没有通过的,就不能直接进入答辩阶段;如果两位专家评审意见都是可以通过的,就可以直接进入答辩阶段。评阅制度是对论文质量的一种监控方式,是对硕士生是否达到培养要求及质量的检验,但目前现实情况是对评审专家没有一套严格、完整的遴选机制,往往评审专家都是圈内熟人, 甚至是硕士生指导老师的好友、课题合作人等,他们事先知道论文作者和导师是谁, 碍于情面,论文一般均可顺利通过评审。即使觉得论文不符合评审要求的,也不会直接给出不同意进行答辩的意见结论。
2.2.2“双盲”抽检制度不能全覆盖所有硕士学位论文:硕士学位论文“双盲”抽检制度(即评审专家不知道被评人、被评人也不知道评审专家),在多年实践中的确是提高学位论文水平的一项重要举措,实现并达到了非常好的效果,但由于实行的是抽检机制,并不全部覆盖所有的学生,抽中参加双盲审的学生比例有限,大部分学生和导师在得知未抽中参加“双盲”后,往往对论文的重视程度不足。
2.2.3硕士学位论文答辩流于形式:学位论文答辩成员组成尽管回避了导师,聘请了一些校外企业专家,但由于答辩专家通常是由导师聘请,会导致答辩专家们答辩时往往留面子,缺乏打破沙锅问到底的精神, 即使有些专家坚持原则认真负责的, 但在投票时少数比率起不了作用, 结果常常是评审结论与实际水准不符, 答辩流于形式。目前硕士学位论文一旦进入答辩程序,就很少有不通过的,使得论文答辩本应该具有的权威性大有所失。
2.2.4无法确保论文修改质量:答辩专家即使指出论文中有些较大的缺陷和问题,需要进行修改,但是由于答辩已经完毕,并且决议通过答辩,在申请学位之前,学生就没有动力也不会去花时间对要求修改的论文内容去做充分的修改和完善。答辩专家组也很难在答辩之后继续跟踪确保对原答辩论文进行修改质量的监控。
目前学位论文评审方式与答辩方式不足以及时发现和有力遏制以上所述的问题,而学位论文作为全面衡量软件工程硕士生培养质量的主要指标,因在各环节上予以严格要求,并在制度上给予切实的保证。因此,有必要在正式答辩之前建立一套硕士学位论文质量的内部控制管理机制,以确保硕士学位论文的质量。
3. 我们的预审制度和执行效果
预审,就是在硕士学位论文成型之后论文正式评阅之前进行的一项审查过程,采用匿名方式请专家对论文进行评审、以决定是否可否进入答辩阶段的一项论文评审制度。对于达不到要求的,就要求其继续修改或者下一次再申请。设立预审制度的目的是想通过匿名评审专家组对硕士学位论文进行内容和形式上的审查,发现问题,查找缺陷,提出改进意见,并决定可否提交正式评阅并进入答辩流程,以保证论文写作和论文答辩的较高质量。这是对以往论文答辩制度的一种修正、补充。它把对硕士学位论文的质量监控重心提前到评阅前,使得学生拥有充足的时间修改论文,并采用匿名审核,力争做到公平公正。对保证论文质量有较大的作用。
3.1预审制度的主要内容
预审由硕士学位候选人提出书面申请, 经导师同意并签署书面意见后,于每学期开学后第3周之前(大致在每年3月31日前、9 月30 日前)向学院软件工程硕士教学管理中心(以下简称管理中心)提交完备的申请材料。申请材料包括学位论文一式2份以及已发表的符合学校有关规定要求的论文复印件, 并由管理中心形式审查相关培养环节是否全部完成。符合条件者进人预审程序。管理中心根据论文研究内容,选择2名以上相关领域的教授或副教授组成预审小组进行匿名预审。导师不得作为本论文预审组成员。论文预审的主要内容是审查论文选题、分析框架结构、研究方法、工作量、引用资料文献数据和写作规范、基本结论,并进行原创性审查,看是否存在抄袭、剽窃等问题。预审组在规定时间内本着认真负责的态度严格把关论文质量,对预审中提出的问题要求进行书面记录并填写《软件学院--工程硕士学位论文预审意见表》反馈至管理中心,由管理中心及时反馈预审结论至相关导师告知答辩申请人。硕士生根据预审小组提出的问题和建议认真修改论文。
预审结论分为以下几种:
(1)可以参加答辩:认为论文达到了硕士学位论文水平,且不需要修改,可以直接参加答辩;
(2)修改后再审:认为论文及课题工作接近硕士学位水平。但论文需要修改,并给出具体修改意见。学生需根据预审意见认真进行修改,修改后的论文经导师审查确认后,再提交管理中心提请原预审专家组审核。符合要求的,可正常参加答辩,否则就不能参加本次答辩,需整改后下一学期再重新申请。逾期未提交修改论文的,视为自动放弃本次答辩申请;
(3)不通过:认为未达到工程硕士学位论文要求,不能参加本次答辩。导师应指导答辩申请人完善课题工作,修改论文,下一学期再申请参加论文预审和答辩。
(4)涉嫌抄袭:发现论文涉嫌抄袭、并经查实的,则一律退回,并至少一年内不得再申请答辩。如果以后再次发现抄袭,则直接取消答辩资格和申请学位的资格。
3.2预审制度实施效果
预审制度实施以来,迄今已经完成了对1367位硕士学位论文申请者的审查, 其中通过预审的629人、推迟答辩的167人、需要修改的544人、抄袭27人,共授予学位1143人。从总体上看,预审制度真正起到了对论文质量的监控、提高作用。由于论文预审不是最终性的,且匿名进行评审,排除了论文本身之外的因素,预审专家组本着对学生负责任、帮助提高论文质量的态度对硕士学位论文提出问题和修改建议,有助于硕士生多方位思考并对论文进行有效改进,起到了协助其导师把住质量关的作用。论文预审不仅对当事人有很大的帮助, 并且对其他准备提交论文的学生也具有很大的促进作用,导师们也更加重视论文的质量和指导。?
4. 预审制度实施的总结和思考
预审制度最主要的优势是对硕士学位申请人的论文质量进行事前监控,在正式答辩前,学位申请人能够在导师指导下根据预审专家提出的修改意见对论文进行修改和完善。预审未通过的论文不许提交答辩,这在制度上将那些质量差的论文隔离在外,有效地把好了硕士生出口的质量。
在看到预审制度效果的同时, 我们也清醒地认识到要最大限度地发挥预审的功能, 必须同时严格硕士生的开题工作,只有抓牢抓实开题工作,才能在论文工作的源头保障论文的质量;同时引起导师及其论文作者对论文质量的重视,导师是保障论文质量的关键因素,只有导师和论文作者共同重视,才能保障培养的质量。为了更好的完善论文预审制度,我们觉得今后还需要在以下方面进行进一步的改进:
(1)落实论文预审的后续检查机制,预审结束后, 学位申请人应该严格按照专家提出的修改意见认真仔细地修改论文。在评阅和正式答辩阶段, 评阅专家及答辩专家除了对论文的主要工作给予评价外, 也要评判硕士生的学位论文是否按预审意见进行了修改和完善。如果后续的检查机制落实不彻底, 预审专家所提的修改意见得不到严格贯彻, 预审也难免会流于形式。
(2)预审过程中,为了避免论文预审的偏颇,尽量做到同一位导师所指导的学生论文分送到不同的预审组,以尽量提高论文预审的公正性和合理性。
(3)进一步细化预审复议环节的工作,对导师、学生提出的论文预审复议要求交由学科专业委员会复议,并指导导师、学生对论文做后续的修改。
(4)增强预审奖惩机制管理,促进导师持续关注论文质量,对预审结果优秀的老师予以适当的奖励,反之则需对导师增强后续再培训,鼓励导师改进研究生培养质量。
预审制度在我院已取得一定效果,我们将继续总结经验,不断探索和完善预审制度,切实提高我院的研究生培养质量。
摘要:本文就案例教学法在软件工程中的应用作了初步的探讨,同时,简要介绍我们在尝试软件工程案例教学中的一些体会。
关键词:软件工程;案例教学法;分析设计
1 引言
随着计算机应用日益普及和深化,正在运行使用着的计算机软件的数量以惊人的速度急剧膨胀,而且现代软件的规模往往十分庞大,所以指导计算机软件开发和维护的工程学科—软件工程,日益显示其重要地位。然而学习者一般不好理解软件工程的实践性,不能将所学的知识真正应用到软件开发过程中去。如何将理论与实际联系起来呢?我们认为在软件工程中采用案例教学发将会弥补这一缺憾。
案例教学法以对案例的分析解决为主线,通过对案例中的问题进行分析,激发学生的求知欲,调动学生的积极性,使学生自觉主动的学习案例,掌握原理和方法,实行科学的教育思想观念的一种教学方式。它是一种互动式的教学方法,可以实现启发式教学,能够极大的促进学生的学习兴趣,实现真正的教学相长。它更是实现理论联系实际的现实可实施的途径。案例教学法在软件工程教学中的应用将在更大程度上激发学生学习的学习兴趣和参与的积极性。同时,利于学生掌握理论知识,并运用知识解决软件开发中的实际问题,最终提高教学质量,达到学校教育培养的目标。
有鉴于此,本文试对案例教学法在软件工程中的应用作了初步探讨,以期对教育同行和广大学习者有所启发和借鉴。
2 案例教学法的含义
案例教学法(case methods of teaching)可简单地界定为一种运用案例进行教学的一种方法,它是美国当今教育行业中非常盛行而有效的一种方法,在我国正在慢慢推广开来。1910年,美国哈佛商学院最先使用案例教学,开创了案例教学的先河。案例教学法于20世纪80年代初传入我国,它有利于培养学生分析问题、解决问题的能力,提高教学效果。
案例教学是在学生掌握了有关基本知识和分析技术的基础上,在教师的精心策划和指导下,根据教学目的和教学要求,运用典型案例,将学生带入特定的现场进行案例分析,通过学生的独立思考和集体协作,进一步提高识别,分析和解决某一具体问题的能力,同时培养学生的沟通能力和协作精神的教学方式。通过案例分析,学生可以获得蕴涵其中的那些已形成的教育原理、教学方法等知识,同时可以提高和发展学生的创造能力以及解决实际问题能力。更重要的是,通过案例教学获得的知识是内化了的知识,是“做中学”获得自己理解了的能驾驭的知识,不再像传统教学下获得的抽象的、过度概括化的生硬知识,它能立即被用到类似教学实践情境中去解决处理类似的疑难教学问题。所以从美国教育家舒尔1986年在美国教育研究协会(aera)年会重要演讲中发出要发展关于教学的案例知识的呼吁,时至今日,在众多国家的教育研究领域中都能发现案例教学法的应用。
3 软件工程案例的选择
概括而言,案例是含有问题或疑难情境在内的真实发生的典型性事件。没有案例,案例教学无从谈起,没有好的案例,便没有有效的案例教学,所以案例的选择在案例教学中至关重要。一个高质量的案例应该具备以下几个特点。
(1)目的性。案例教学的目的是为了让学生理论联系实际,通过案例让学生掌握基本的原理和概念,提高发现问题,解决实际问题的能力。一个好的案例应该使学生在讨论中加深对教材中某一重点或难点知识的理解和把握,能利用课堂学习的理论知识来分析和解决案例中所涉及的问题。所以案例的选择一定要围绕教学目的和教学要求来。如果脱离这两个中心,即使案例再生动,其教学效果也大打折扣。
(2)真实性。案例一定是现实中发生的真实事件,是常见又复杂的问题,有助于学生实践能力的提高。
(3)启发性。一个好的案例需要蕴涵一定的问题,能启发学生思考,发现多种解决的途径。问题越诱人深入,越能够给学生留下较多的思维空间,教学效果越好。
(4)生动性。案例必须生动活泼,引人入胜,这样才能引起学生的兴趣,以便展开深入的思考。
软件工程是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。它强调使用生存周期方法学和各种结构分析及结构设计技术,所以软件工程案例即是选择一些典型的软件开发系统,介绍其开发和维护的过程。
我们根据讲解软件工程课的具体体会和开发软件的实际经验,撰写了五个案例,开发了《软件工程案例分析》网络课件,详细介绍五个软件系统的开发过程,互动的方式讲述了用软件工程的方法是如何进行分析和设计的,同时在系统开发的每个过程中提出大量的问题供学生思考。案例选择了房产管理系统、财务管理系统、机票预定系统、计算机储蓄系统四个应用软件系统,同时为了提高学习者理解开发软件的难度,特别介绍l-simple语言编译系统。采用传统的生命周期方法学,从问题定义、可行性研究、需求分析、总体设计到详细设计做了比较详细的研究。系统中五个案例涉及到当前人们日常生活中关注的几个领域:房产管理、财务管理、计算机储蓄、机票预定,还有计算机的语言编译系统。案例既具有典型性,同时又具有真实性。我们选择四个应用软件和一个系统软件,一方面考虑到目前软件市场涉及应用范围的广泛性,另一方面考虑到软件工程学习者中大部分为计算机专业,对于系统软件也有一定爱好,对于将来开发系统软件作一个铺垫。
4 软件工程案例教学的主要环节
案例教学的需要具备三个主要环节:
阅读案例,个人分析——分组讨论,集体交流——总结归纳,消化提升
我们尝试的软件工程案例教学中同样采用了这三个阶段:
(1)阅读案例,个人分析
学生首先对具体案例进行必要的基础知识的了解,认真阅读案例,并且要有个人的研究与分析,用软件工程的传统途径—生命周期方法学作为理论指导,熟悉软件开发过程各阶段的基本任务。
其次,学生需要尽快进入案例情境,了解、掌握案例中揭示的有关事实、情况,自居案例中的教师角色,设身处地地分析思考案例中教师的行为及对策的合理性与不合理性。在案例的分析过程中,要注意寻找其中的因果关系,只有弄清问题产生的原因,才可能找到问题的合理解决手段。注意区分基本性问题和现时性问题。基本性问题即抽象或一般的问题,常与事实背后的概念、原理、规则等有关,需要通过对案例中所包括的信息进行解释、分析、演绎、推理和抽象以得到概括化的结论。现时性问题即案例中教师所面对的特殊决定、疑难问题等要求在一定的时间范围内得到解决的那些问题,需将自己已有的知识或过去形成的经验与案例展示的背景材料、内外部因素等整合起来进行综合评判来提出多种经得起别人反驳的见解、对策以及方案。
(2)分组讨论,集体交流
分组讨论是案例教学中非常重要的环节,本质上是一种概念或想法的交流。围绕案例的重点,难点,疑点,进行讨论,辩论和争论。每个学生可以自由的抒发己见,相互启迪,互相借鉴,重点是想法的交流。要求每个学生简要介绍自己对软件开发所做的分析设计,并提出自己对该软件开发流程的看法,供大家讨论与切磋,可以按照案例中所提出的问题一个一个讨论。在教师的引导下,让学生进行课堂发言,进行全体学生的交流。本阶段要讨论主要解决两个问题:1、小组讨论没有达成共识的问题;2、按照教学目标,有意引导学生掌握软件工程的生命周期法各阶段所做的具体工作以及进行相关工作的必要性。
为了使分组讨论有效地开展,教师要作好充分的课前准备。除了熟知案例陈述的事实、观点外,还要谙知案例反映或蕴涵的原理、规则等知识,以便引导学生概括出来。要认真学习研究案例后给出的教学指南,具体拟定出课堂教学计划,这要求教师认真思考回答以下问题:希望课堂上发生些什么?如何引导这些情况的发生?讨论如何开展?时间如何安排?自己扮演什么角色?是先得结论再分析,还是相反?并对课堂讨论中可能出现的情况作出预测。教师还要依据课程目标、案例目标及教学计划的具体安排重点分析以下方面的内容:案例中反映的那些重要论题、案例中易得出两可结论的那些材料、案例中反映的情况发生的根源、案例中人物的行为、案例中所反映的而学生可能设想不到的情况等。在讨论掌握上,教师要力保讨论沿预期的轨道进行,把讨论引导到问题的解决上去,并引导出与论题相关的理论知识,力争班上每个学生都至少有一次发言的机会,切实做到有效参与。
(3)总结归纳,消化提升
总结归纳是软件工程案例教学的最后阶段,要求学生要对每个案例写出学习报告。该报告中包含学生在阅读案例中所得到的具体收获;通过分析与设计软件,提出自己所解决的实际问题;对理论上软件工程概念和案例中的实际是否一一相对应;以及对软件工程仍然存在的困惑。通过反思进一步加深对案例的认识,真正作到理论和实践的相结合。
案例教学中,师生都要注意角色转换,如果学生仍然热衷于将自己置身于教学过程之外,只做一名旁观者,案例教学也就失去了它的价值。学生只有真正地深入案例、体验角色,才会有案例情境的“再现”,案例教学的价值才能被体现。而教师在教学过程中也要不断变换自己的角色,可充当监督员,激励启发学生,监督案例分析、讨论情况;可充当示范员,向学生演示、讲解、分析案例中的事实、图表、材料等;可充当主人翁,制定下一步的工作计划并在实施中起主导作用;可作仲裁,解决各种争端;可充当交警,使讨论回到预定的轨道上来;等等。
5 结束语
传统的“黑板教育学”越来越受到冷落,案例教学已经提到教育改革的重要日程上来。华东师范法学教育系郑金洲曾指出,案例教学并不是单纯的一种教学方法,它实际上是以教学内容的变革为前提条件的,正是有了形形色色的案例,才使案例教学成为可能;案例教学也并不是一种单纯的教授法,它实际上也是以学生行为的转变为前提条件的;如果学生仍然热衷于自己先前的角色,把自己置身于教学过程之外,只是一个旁观者,案例教学也就失去意义。
笔者从事软件工程的教学工作,在软件工程中进行案例教学法的尝试,并且在实践中得到了一定的效果。然而,在软件工程案例教学中仍有很多问题需要进一步研究探讨,比如在案例中如何体现软件的测试阶段,它需要具体的环境来实现;如何在案例中能够让学生更深入理解软件的维护过程等等问题,都是有待于我们进一步完善,使案例教学在软件工程中得到进一步的推广。
计算机组成原理在我院的软件工程系被定为专业基础课,在学科体系中起着基础性和准备指导性的作用。目标是通过该课程的学习,使学生掌握计算机各功能部件及整机运行的工作原理和方法,并为学生建立起整机的概念。为后期的系统开发的理论、实践的学习奠定基础。但该门课程具有概念多、知识点多、内容抽象等特点,加上学生思想上有“偏软”现象,使该课程的组织教学有一定难度。本文将对计算机组成原理的教学现状、教学方法、教学内容、及通过实践等辅助教学手段来改进教学等方面进行阐述,以期对一般本科院校的计算机组成原理教学有一定借鉴促进作用。
一、计算机组成原理的课程的教学现状
(一)课程本身的特点决定这门课程教学难度大
1、基础概念多的特点
计算机组成原理这门课程由于内容较多,所涉及的基础概念也较多。在cpu模块有微程序、微指令及流水线等系统类概念,其中alu部分有原码、补码等与编码相关的概念;在存储器部分,与存储器单元相关的有ram、sram、dram、rom及各种rom设备,与存储系统相关的有cache存储器、虚拟存储器等概念;外设部分有中断等信息的各种传送方法。对整个计算机系统,有计算机的各种性能指标。对各个概念,靠单纯记忆的方法很难掌握,必须放在系统中学习。
2、理论性强的特点
计算机组成原理这门课程首先要考虑其原理性,现在仍然采用冯.诺依曼式计算机模型作为基本模型,但也要考虑现代计算机的发展,以融入实际的需要。如何对内容进行合理的安排、衔接,对任课教师来说,是一不小的挑战。
3、内容抽象的特点
要让学生明白计算机的工作原理、方法和实现,需弄清数据和信号在计算机各部件件间的流动情况,对学生来说,这看不见也摸不着,如何将信息流动的复杂情况形象、生动地向学生展示、讲解,教师对此需要作出相当的努力。
(二)学生对该们课程的认识误区
大部分的学生认为,我们学的专业是软件工程,专业是“偏软”的,而计算机组成原理这门课程是“偏硬”的,对其转为实际能力表示怀疑。由于对这门课程在学科中的作用认识不明确,在学生中就有一种印象,学习这门课程主要目的是修学分的需要,另外还有考研的需要,但考研的学生比例较小,再加上这门课程本身的学习难度,因此认真学习且能学好这门课程的人数就不多了。
二、对组成原理教学的几点建议
(一)对学生对该门课程的认识进行相应正确引导
由于是一门基础理论课,加上本身的教学内容特点,可能内容较为枯燥,因此学生可能会因为课程内容本身而不感兴趣。因此我们要在思想上要对学生加以引导,使学生认识到,学习这门课程不仅对计算机本身的运转有更深刻的认识,更对与硬件相关的嵌入式系统设计,软件的设计实现有基础指导作用。并为学生在计算机领域的进一步研究和发展奠定基础。因此,学生不能因为这门课程“偏硬”,而自己的专业和就业方向“偏软”就否定这门课程的重要性。
(二)根据课程设置需要对教学学时进行相应调整
根据不同的专业,学生的不同层次,及大部分学生的就业方向对该课时设置不同的教学学时。报告[3]中指出,对于多数调查对象为毕业生的调查结果,多数人认为这门课开设为64、48或32学时。而48学时的人稍多些。这与本人想法基本一致,对于非计算机专业,作为导论型的,32学时足矣;对于软件专业,其目的主要是通过掌握其基本原理,能更好的为软件系统的设计服务,开设48学时,其中8学时实验较合理。而对于偏硬件的计算机专业,可以根据需要,开设56或64学时。
(三)根据专业要求及课程设置对教学内容作出调整
计算机组成原理在学科中的地位被定为专业基础课,在学科中具有承上启下的作用,希望通过本门课程的学习,使学生对计算机硬件的组成、各部件及各部件之间运转情况进行了解。对于软件专业的学生来说,为硬件相关的嵌入式系统设计及其他软件的设计奠定基础。计算机组成原理从内容上主要分为三部分:cpu、存储器、外设。但由于学时的限制及课程的安排(本专业开设了微机原理课,外设是其讲授重点),重点讲授cpu和存储器两部分。存储器内容分为主存储器和存储体系两部分内容。前者讲述存储元器件的基本原理,而后者则是cache、主存和辅存之间的区别与联系,如果开设了计算机体系结构这么课程,这存储体系的内容可简略介绍,具体内容由计算机体系结构讲解。cpu部分与存储器一样,在详细介绍完其核心部件alu后,重点即是中央处理器章节,即指令的运行,而指令的运行需要访问存储器,这就将cpu与存储体系联系起来了。故这两部分又是有联系的。由此有关硬件的内容就脉络清晰、分工明确了。
(四)对实验内容进行合理的学时分配
实验课对于一门课程来说,主要目的是加深对知识点认识,使抽象的理论变得形象、具体。因此,对本身理论性强,内容抽象的计算机组成原理课程,实验课就显得尤为重要。我们采用的是西安唐都科教仪器公司生产的实验箱作为实验设备。与其相配套的实验有9个,其中主要包括与cpu中的与alu相关的3个实验、静态存储器存取实验、微程序控制实验及4个模型机的设计类实验。根据实验学时的设置,只有8个学时的实验课。8个学时全部完成这些实验有一定难度,因此,可将这些试验进行合理的学时分配,如第1、2个学时完成第一、二个实验,因为刚开始做硬件实验不熟悉,但第二个运算器进位实验教简单,可顺便完成;有了前面的基础,完成第三个运算器移位控制实验就简单多了,因此和第四个稍麻烦的静态存储器存取试验合并在第3、4学时完成;第5个实验内容较复杂,可单独安排2个学时完成;这样就留出了2学时来研究后面的模型及设计与实现的实验了。
(五)以实践为手段带动学生的学习积极性
为了提高学生的学习积极性,加深对知识的掌握,实践就显得尤为重要。对软件专业的学生来说,利用软件对所学知识进行模拟不失为一种好的办法。对于计算机组成原理这门课程,实验内容较为抽象,不易被理解,因此,采用“硬件软化”的方法,对课程的实验内容等进行模拟,既可加深对知识的掌握,又可提高大家的软件设计、编程能力。本系为了提高大家参与的积极性,采用了学生科技立项的办法,系里拿出一部分资金,将“计算机组成原理虚拟实验系统的设计与实现”作为一学生科技项目,鼓励学生组队参加,和其他项目一起参加评比,并进行奖励的办法,在学生中得到了良好的响应。学生做出的项目教师可拿来作为课堂教学用,并可鼓励学生在此基础上进行改进,进一步完善。以后甚至可以将系统分块,让学生分组做,并作为课后作业的一部分,计入学生平时成绩。以此提高学生的学习兴趣和动力。
三、结语
计算机组成原理这门课程由于其本身知识点多、内容相对抽象、知识“偏硬”等特点,对软件专业的学生来说,普遍学习的积极性不高,对知识的掌握不能达到预期的目的。本文从对学生的引导、课时的设置、教学内容的调整等方面进行了讨论,特别提出通过“硬化软件”的方法,提高大家学习的积极性。相信经过多方面的努力,学生会喜欢并学好这门课程,该课程也将很好地发挥其在学科体系中的作用。