34基于核心概念的现代软件工程多视角教学体系及实践
本文关键词:基于核心概念的现代软件工程多视角教学体系及实践,由笔耕文化传播整理发布。
实验技术与管理第2ISSN1002-49567卷;基于核心概念的现代软件工程多视角;教学体系及实践;郭军,张红霞,王云升,张斌;()东北大学信息科学与工程学院,辽宁沈阳1100;摘要:随着软件产业的不断发展,软件工程的最新理论;关键词:软件工程;教学体系;核心概念;多视角;()中图分类号:TP311.5;G642.0文献;racticeThemultivie
实 验 技 术 与 管 理第2ISSN1002-49567卷 第8期 2010年8月 CN11-2034TExerimentalTechnoloandManaement pgygVol.27 No.8 Au.2010 g
基于核心概念的现代软件工程多视角
教学体系及实践
郭 军,张红霞,王云升,张 斌
()东北大学信息科学与工程学院,辽宁沈阳 110004
摘 要:随着软件产业的不断发展,软件工程的最新理论和最佳实践也在不断更新。在对这些快速更新的知识进行梳理、筛选和提炼后,提出了软件工程的核心概念,并根据计算机专业本科生的特点,描述了基于软件工程核心概念的多视角教学体系。3个标准视角分别是:过程视角、方法视角和工具视角。在教学实践中运能够提高学生的实践能力、创新能力和协作能力。用这个多视角教学体系,
关键词:软件工程;教学体系;核心概念;多视角
()中图分类号:TP311.5;G642.0 文献标志码:A 文章编号:10024956201008-0139-05-
racticeThemultiviewteachinsstemandbasedonthe - pgy concetofmodernsoftwareenineerincentral pgg
,W,GuoJun,ZhanHonxiaanYunshenZhanBin ggggg
(,NColleeofInformationScienceandEnineerinortheastern ggg
,)Shenan110004,ChinaUniversitygy
:W,racticeAbstractiththedevelomentofsoftwareindustrthelatesttheorandthebestofsoftwareeni -ppyyg ,neerinareudatincontinuall.Afteranalzinandsummarizintheknowledethecentralconcetofsoft -gpgyygggp ,rovided.Accordinaerwareenineerinistothecharacteristicsofcomuterunderraduatesthisde -pgppggpg
,scribesthemultiviewteachinsstembasedonthecentralconcetofsoftwareenineerinsuchasrocesses - gypggp ,racticalview,methodsviewandtoolsview.Businthemultiviewteachinsstem,theabilitinnovative - pyggyy abilitandcooerativeabilitofstudentscanbeimroved. ypyp
:;;mKewordssoftwareenineerinteachinsstem;centralconcetultiview -gggypy
我国软件产业发展 在全球信息化大潮的推动下,
正在迈向软件大国。现代软件项目越来越复杂,迅猛,
规模越来越大,参与的人员越来越多,软件危机造成的国内市场的竞争中,软影响也越来越大。在参与国际、
件企业面临软件工程理念薄弱、过程管理粗糙、不善于迫切地需要软件专运用软件工程方法和工具等问题,
业人才能够很好地将软件工程运用到项目中,摆脱或缓解软件危机。计算机专业的本科生作为软件企业未,主力军”能否在本科阶段就掌握好软件工程,打来的“
下坚实的理论基础并具有一定的实践能力,具有十分重要的意义。
经过近半个世纪的发展,从传统软件工程到面向
收稿日期:2009-10-282010-06-10 修改日期:
,作者简介:郭军(男,辽宁省沈阳市人,博士,讲师,软件复用和1974—)
测试方向.
:E-mailuoun@mail.edu.edu.cngj
对象的软件工程,从一般的软件工程到净室软件工程,从软件工程到软件再工程,从人工软件工程到工具化软件工程,整个软件工程学正在日趋成熟。在学术界,人们还在不断地研究和改进软件工程的理论;在软件业,软件工程已建立起了一系列有效指导开发的最佳实践。知识的不断更新要求教师必须对最新理论和最筛选和提炼,使这些知识能够适合于佳实践进行梳理、
没有实际工作经验的本科生掌握,并能够提高他们的实践能力、创新能力和协作能力。
1 软件工程核心概念
北大西洋公约组织(的计算机专1967年,NATO)家们针对软件在开发中出现的严峻形势,首次使用了,术语“软件工程”并于第2年在原联邦德国召开的国际会议上,正式提出把在其他工程领域中行之有效的一些工程学知识运用到软件开发过程中来,从管理和
技术2个方面研究如何更好地开发和维护计算机软件、的设想。软件工程学从此诞生。FritzBauerIan 软件Sommerviller和Lethbride等专家分别提出了“g
]12-
。随着软件工业的不断发展,的核心概念[软工程”
件工程也在不断完善。根据当前软件工程的发展特点,我们认为软件工程是以质量为核心,在成本、时间、人力和技术等条件约束下,为了经济地开发满足客户需求的软件而研究、建立和应用的系统化的、有规则的、可度量的和可控制的工程原则、方法,涉及到软件过程、开发方法、开发工具,甚至企业文化等各个
3]
。方面[
和开发工具等各个相关方面的知识被有机地组织在一起。软件工程以此为基础,指导项目团队按照一定的步骤、策略,在受控的状态中循序渐进地开发软件。()有规则。软件开发不是程序员的信手涂鸦。7
软件工程已经建立了相应的标准和规范,指导开发团队按照一定的规则开发软件。为了区分软件开发组织的能力,软件过程技术研究领域主要分为3个流派://CMU.SEI的CMMPSPTSP、ISO9000质量标准体
[4]
/(。为了统一企业内部开系、ISOIEC15504SPICE) 发标准或满足软件外包要求,一些企业建立了自己的软件开发规范。
()可度量。T8om Demarco早在1982年就提出:
“”。测Youcannotcontrolwhatoucannotmeasure y
量是工程领域中不可或缺的要素之一。正如在物理学中的时间、温度和速度等可被测量一样,软件工程中也有很多需要被度量的要素,如软件的规模、复杂性、可使用性、可靠性、生产率、成本等。软件度量为开发团队提供了资源配置和过程控制的决策依据,并可以使我们评价软件的规模和质量等信息,是降低软件风险的重要手段。
()可控制。软件开发由一系列的活动组成,这9
需求获取、系统分析、系统设计、系统实些活动包括:
现、系统测试和部署等。这些活动应处于受控的状态中,一旦失控,将导致风险增大,甚至开发失败。)开发过程。软件开发过程是一个将用户需(10
求转化为软件系统的多个活动的集合。这个过程不应该只是一个简单的顺序过程。我们需要知道软件开发者如何组织软件开发流程,如何将需求分析、软件设代码编写、软件测试、软件部署以及维护等开发“活计、
动”有机地组织在一起,以便能够在目标成本内高质量地完成软件开发任务。软件工程学界已经提出了多种过程模型,如瀑布模型、螺旋模型、RUP模型等。项目过程管理的水平直接关系到项目的成败。软件项目过涉及到人力资源管理、项目计程管理的内容非常复杂,
划、风险管理、项目跟踪、质量保证、配置管理等。()开发方法。为了构建软件,开发方法提供了11
。在软件工程的发展史中,在技术上去“如何做”出现如以结构化方法为代表的传统软件了多种开发方法,
工程方法和以面向对象技术为核心的面向对象的软件工程方法。近年来,又出现了基于组件的软件开发(,、面comonentbasedsoftwaredevelomentCBSD)- pp
向方面的软件开发和基于产品线的软件开发等新的方法。
()开发工具。自软件工程发展以来,人们就一12
直在研究自动化的或半自动化的工具来辅助进行需求分析、优化软件设计手段、加快代码实现速度、提高软
()以质量为中心。软件工程的核心目标是保证1
和提高软件质量。Ralston等人在《Enccloediaof yp》“中说:软件质量保证应贯穿于整ScienceComuter p
。所有在开发中涉及到的软件过程、个开发过程”开发方法、开发工具等问题都以此为中心。
()约束条件。软件项目的开发会受到成本、时2
间、人力和技术等条件限制。不计成本的开发、没有最后期限约束的开发是不现实的。对同一个项目而言,不同的资金投入、不同的时间周期、不同的人力资源状会使项目有不同的解决策略。态和不同的技术水平,
)经济性。经济性是指在软件开发中生产出按(3
期交付的软件的同时,开发工作必须是在资源允许的情况下保证利益大于成本。大量事实表明,软件开发中常常出现超支、延期等问题。软件工程应通过预估成本、制定计划、管理风险、控制变更、掌握需求、优化设计等策略来保证项目按期完成。
()满足客户需求。软件满足客户需求的程度是4
衡量软件质量的最重要的因素。WattsHumhre py在《“中说:软件产DiscilineforSoftwareEnineerin pgg》
品必须提供用户所需的功能。如果做不到这一点,什”么产品都没有意义。
()研究、建立和应用。软件工程自15968年被提就一直处在不断发展中。一部分研究成果,出以来后,
如面向对象的软件工程(obectorientedsoftwareen- -j,OO、SE)Rational统一软件过程(rationalineeringg
,和设计模式等已经被很好地应unifiedRUP)rocess p许多公认的方法已经被I用到生产实践中,EEE、ISO以及一些国家的相关组织列为标准;而另一些研究,如基于组件的软件工程(comonentbasedsoftwareen- -p,、模型驱动的构架(ineerinCBSE)modeldrivenar -gg
,MD等还处于建立或完善当中。软件工chitectureA)程学是一门年轻的学科,它不断地提出新的理论和标也在实践当中不断地检验和完善自己。准,
()系统化。软件工程不是一个零散的相关知识6
点的集合。软件过程、项目管理、开发方法、软件度量
件测试水平等。著名的工具有Rational公司的Re-q、,这些工uisiteProRoseBorland公司的Toether等,g
具为提高软件质量起到了重要作用。
()企业文化。企业文化包括了一组共同的信13仰、目标和原则,它们指导着具有共同目标的企业成员的行为、活动、优先级和决策。随着软件企业所面临的挑战越来越复杂、企业的队伍越来越庞大,企业文化会逐渐潜移默化地融入到项目团队里,成为促进或迟滞软件开发效率和质量的一个重要因素。
另一方面,我们也不能使用过多的视角,否则在有限的我们针对本科教学学时里会给学生造成混乱。因此,
的特点,需要架设几个标准视角,来相对完整地理解复杂的软件工程。在Pressman的软件工程层次化表达
5]
,方式的基础上[我们紧紧围绕软件工程的核心概念,
选取了3个标准视角:过程视角、开发方法视角和工具视角,如图1所示。其中,软件过程是软件工程项目管理控制的基础,它形成了一个环境以便于技术方法的采用、工作产品(模型、文档、数据、报告、表格等)的产生、里程碑的建立、质量的保证和正常变更的正确管理等;软件工程方法为建造软件提供技术上的解决方法(“),如何做”涉及到需求分析、设计建模、编程、测试等软件工程工具为过程和方法提供自动化或半自方面;动化的支持
。
2 多视角教学体系
软件工程涉及的内容十分庞杂,我们难以用一个统一的视角让学生去理解和应用软件工程。这就如同我们在观察教室里的讲桌一样,必须通过前方、后方、上方以及内部等多个视角,才能完整地看清这个讲桌。
图1 软件工程的过程、方法和工具视角对核心概念的关注点简图
2.1 过程视角
我们在开发当中存在一系列的活动,这些活动可(基本活动,如问题定义活动、可分为BasicActivities 行性研究活动、需求分析活动、设计活动、实施活动、测试活动、部署活动等)和Um保护性brellaActivities(
活动,如风险管理活动、计划活动、项目跟踪活动、质量。后者也常常被统保证活动和软件配置管理活动等)
称为项目管理活动。这些活动是软件开发过程的要素。也就是说,软件过程由开发或维护软件及其相关产品的一系列活动构成,这些活动从不同的方面定义了软件开发中的步骤、交付物、涉众及其职责等流程要素。如图2所示:客户需求是软件开发过程的输入,它
启动了整个软件的开发;人力和工具作为资源进入到过程里,为开发过程提供人力、物力保障;预算、计划和进度和质量;最标准用来控制软件开发过程的费用、
后,代码和相关文档(如用户需求规约文档、系统设计文档、测试报告和用户使用说明书等)作为整个开发过程的输出。其中的过程以基本活动为中心,以保护性。之所以被描述为“,活动为保障,像一个“黑箱”黑箱”是因为我们的软件开发过程不像硬件制造过程那样直观、明确。我们可以迅速地掌握汽车生产车间的日产量和质量情况,可以“可视”地观测汽车的生产环节。机械化的生产线使得管理者不必过多关注“人”的因素,生产线上的汽车很少在生产过程中发生需求变更,
新的需求会在新的品牌或型号中体现。然而在软件开由于存在着团队协作、需求变更、设计缺陷发过程中,
和代码B我们很难掌握软件的实际开发效ug等问题,产品”是由一系列的文档和代码组成,这率和质量。“
些介质很难直接观察。软件是一个依靠人来开发的高技术含量的产品,而“人”的复杂性特点常常给项目带来不易预知的问题。另外,客户的需求变更在软件开,发过程中几乎是“常态”这些变更常常给软件开发过程造成混乱,甚至失控
。
言的不断发展,开发人员不再像使用机器语言那样深、如F陷于硬件的细节当中。一些开发语言,ortranPascal和C语言等鼓励开发人员从过程或函数的角
自顶向下设计和逐步求精度考虑问题。结构化编程、
等方法将POP推向顶峰。为了开发一个计算机软件系统,开发人员首先考虑什么功能应该被实现。这种方法的常见的缺点是所开发出的系统往往可复用性、可扩展性和可维护性较差。
()面向对象的编程(2obectorientedroram-- jpg
,。随着软件开发所涉及问题的复杂性不minOOP)g断增强,规模不断扩大,很多问题难以规范解决,继而人们开始以全新的在上世纪60年代产生了软件危机,面向对象技术应运思维方式重新审视软件开发方法,
6]
。面向对象的编程范型鼓励程序员按照数据类而生[
型考虑问题。程序按照数据类型及其层次构造。在基本的程序构造块是类和对象。一个对象是OOP中,
存储在计算机内存中的一个信息包。每个对象都和一个数据类型关联,这个数据类型决定了这个数据对象能够做什么。所有的编程语言都有自己内嵌的数据类型。通常,程序员会定义自己的(复杂的)数据类型及以描述应用系统中的特定实体。典型的其层次结构,
、面向对象的语言有JavaC#、C++和Delhi等。作p为当前软件工业界主流的开发方法,OOP并非万能,特别是在多语言开发环境、复杂系统解耦、开发版本控
图2 软件开发过程的“黑箱”图解
制、需求变更控制和“黑盒”复用等方面,还存在着诸多难以克服的问题。
)面向方面的编程((3asectorientedroram- -ppg
,)。面向方面的编程是一种较新的开发范minAOPg
提出了一种分离软件开发关注点的新技术。它型,
使系统中的交叉层面模块化。像对象一样,方面可能出现在软件开发生命周期的任何阶段。交叉层次的通常例子是设计或架构约束、系统属性或行为(例,如记录日志和错误恢复)以及特征。AOP同时支持包括程序块结构、对象结构、模不同的模块化方式,
块继承等。简单的层次结构不能满足AOP捕捉复杂的结构,因此AO使得从P试图探索不同的机制,不同的视图去观察和实现一个系统成为可能。为了人们从J达到这个目标,ava语言扩展出了一种新的。语言:AsectJp
(4)面向组件的编程(comonentorientedro- -pp
,。面向组件的编程使程序能够利用ramminCOP)gg
预先建立的、可复用的、自包含的软件组件来构建。这些组件必须满足某些预先定义的标准,如接口、连接方版本和部署要求等。组件可以是各种形式和尺寸,式、
如只展示单一功能的小粒度的树型控件,或包含很多功能的大粒度组件等。原则上,每个组件都独立于上
软件企业中,个体和团队的开发过程是不同的。个体软件过程关注于项目单个成员的开发流程、任务、交付物和度量标准,而团队软件过程则关注于团队整体的目标、流程、职责和度量标准。此外,不同软件企业对开发过程的组织能力是不同的,这种能力已经成为影响软件质量的关键。国际上已经建立了一个软件,过程能力成熟度模型(以评价软件企业的过程CMM)能力。
另一个需要在教学中重点讲述的内容,是针对不同项目的特点以及软件企业的自身情况,如何将诸多活动”有机地组织在一起,以便能够在目标软件开发“
成本内高质量地完成软件开发任务。这是一个重要的问题。2.2 方法视角
根据软件开发所采用的主要技术、概念或思想,可以对软件工程方法进行分类和描述。如果某个特殊的被用来进行软件开发,我们称这软件工程方法称为X,
。几种主要的方法有:是X-OrientedProrammin gg
(1)面向过程的编程(rocedureorientedro- -pp,。随着软件操作系统和软件开发语ramminPOP)gg
下文,都是可复用的。COP通过组装组件来开发系客户统。COP是一种基于接口的编程。在COP中,(组件使用者)不需要关于组件如何实现其接口的任何客户就不会受到接口实现知识。只要接口保持不变,
、变更的影响。许多组件技术诸如JavaBeansCOR-BA、.NET和EJB等为程序员提供了实现COP应用
程序的手段。组件被认为是解决软件危机的最重要的技术之一,甚至一些专家认为,随着基于组件的软件工程的发展,软件工业将发生彻底的革命。
考虑到OO我们在P是软件工业界主流的方法,本科教学当中以面向对象的软件工程方法为主,以面向过程和面向组件的方法为辅。2.3 工具视角
软件工程工具为过程和方法提供自动化或半自动化的支持。我们强调软件工程工具的原因是:()软件工程工具对于软件企业实施软件工程1
非常重要。想象一下人类对汽车和飞机的依赖,就
知道工具的重要性了。随着软件工业的快速发展,软件企业越来越重视和依赖软件工程的工具,以此来提高软件的开发效率和开发质量,并降低开发成本。
()软件工程工具可以辅助学习者对软件工程理2
论的学习。软件工程理论往往较为抽象和复杂。通过对工具的使用,学习者可以直观和深入地理解这些理论。在本课程的实验部分,我们特地安排了工具内容。这些软件工程工具对于培养学生的需求分析归纳能力、软件设计能力、项目实施能力、测试能力、团队协作能力和创造性思维能力,具有重要的作用。
由于软件工程涉及的内容较多、范围较广,并且目前还缺乏所谓软件企业对工具的需求差异较大,
的“万能”解决工具。很多软件工程工具的开发商各自提出了一系列的只解决部分问题的工具,其中一些典型的软件工程工具及建议的实验学时如图3所示,其中
:
图3 工具和实验的结合进程示意图
软件工程》实验分为5个环节,前4环1)整个《 (
节分别侧重于某些特定的工具,而最后一个环节则是工具及其综合运用。
()需求管理工具,。该工具通过如R2euestProq
分析和管理应用需求和使用案例来跟踪项目,创建、
把熟悉、易用的MicrosoftWord文档与数据库功能 结合起来,具备有效的需求分析和查询能力。Reui-q让小组知道做出修改后stPro可以使通信更加方便,
的影响,确保组内的每个人都能及时得到需求信息以确保一致性,并为分布式的小组提供基于Web的需求管理能力,改善团队合作并减少项目的风险。(3)过程工具,如RationalUnifiedProcess (。这是一个灵活的软件开发过程平台,借助它RUP)
可配置的构架,RUP使项目管理者能够只选择和部署项目的每个阶段需要的流程构件。RUP平台以业界公认的软件工程最佳经验为核心,包含配置RUP以
满足项目特定需求的工具。
()系统建模型工具,,如R4oseRationalSoftware
,,RationalSoftwareArchitect等。Modeler (5)变更管理和版本控制工具,如Rational。ClearCase()测试工具,如自动化的W6eb和桌面应用程序
,,测试工具R系统ationalFunctionalTesterRational ,性能测试工具P系统运行状况分erformanceTester 析工具RationalPurifPlus等。 y
3 实践效果
从2软件工程”课程教学改革以001年开始实施“来,课程组不断更新和改进教学内容,研究软件工程的核心概念,完善基于3个标准视角的教学体系,并将研究成果应用于实际教学。同时,我们积极和企业合作,
(下转第150页)
下载地址:34基于核心概念的现代软件工程多视角教学体系及实践.Doc
【】最新搜索
基于核心概念的现代软件工程多视角教学体系及实践
8队淘汰赛_对阵表
关于在非药品柜销售滋补保健类中药材有关法律适用问题请示的答复
深圳牛津版英语七年级下期中测试练习
56管廊 工程监理规划
15几何概型是高中概率部分的一个难点,高考中
建设监理案例分析37
清肠排毒的食物08
烟台市市管企业投资管理暂行办法57
体外反搏治疗流程
本文关键词:基于核心概念的现代软件工程多视角教学体系及实践,由笔耕文化传播整理发布。
本文编号:200883
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/200883.html