《面向对象工程》教学研究

2013-04-29 22:44赵逢禹曹春萍
教育教学论坛 2013年8期
关键词:面向对象课程体系

赵逢禹 曹春萍

摘要:《面向对象工程》是计算机专业的核心课程,旨在培养学生采用面向对象的思想与工程化的建模技术解决复杂软件开发问题的能力。本文针对这一要求,从教学内容的选取、师资队伍要求、教学方法、建模工具与项目实践设计等方面进行了探讨并基于实践效果提出了建议。

关键词:面向对象;课程体系;面向对象建模

中图分类号:G642 文献标志码:A 文章编号:1674-9324(2013)08-0051-03

面向对象工程包括面向对象的需求建模、面向对象的系统分析、面向对象的解决方案建模、软件架构设计和面向对象的实施等内容,旨在培养学生采用工程化的建模与开发方法解决复杂软件开发的能力[1],该课程的教学要求学生已经具有软件结构化分析与设计、面向对象程序设计等课程的基础知识。尽管面向对象的理论方法基本稳定并趋于完善成熟,但随着新技术的不断发展和企业应用的不断更新,课程的教学内容、教学案例、建模工具、实施方法需要适应企业级开发平台及先进的开发工具,如果课程仅仅围绕面向对象的建模或围绕UML工具介绍,会使教学偏离面向对象工程的核心,很难完成培养学生具有很强的知识理论和实践动手能力这一教学目标。在本课程多年的教学实践中,我们对师资培养、教学内容、教学方法、建模工具与项目实践设计等方面做了一些研究和探索,并取得了良好的效果。本文就这些实践探索与结论予以总结。

一、明确课程目的

在软件工程领域,存在两套软件分析与设计的工程化方法:面向功能的软件工程化方法与面向对象的工程化方法。所谓面向功能的软件工程方法即结构化分析与设计方法、它以数据流为主线,分析系统的数据产生、处理逻辑、存储,把整个系统看成是由处理功能组成。每个功能又称为函数,一个函数实现对一个输入数据价格处理并返回函数结果,如果每个功能都能正确实现,整个系统就能完成其设计的功能。而面向对象的工程方法是把整个问题域采用对象的观点进行描述,它认为整个现实世界是由对象组成的,因而问题域也是由对象组成的,对象本身包含数据与对数据的处理方法,对象间可以通过接口进行交互[2]。图1给出了一个简化的样本计算领域问题,该问题可以按照左边箭头示意抽象成函数处理。右边的箭头所示的抽象是按照对象的方法进行的抽象。可以看出,面向函数的抽象与面向对象的抽象是用不同的抽象方法对相同的问题进行建模,进而构造解决方案并求解。这两种方法都有大量的成功案例,各有千秋。尽管如此,面向对象工程方法是目前软件开发的主流方法,它是软件工程人才必须掌握的基础知识和必备的能力。其原因有两个:第一个原因是面向对象的工程方法从问题域描述、抽象,到问题域解决方案构建与实现,均采用对象的观点,整个工程化过程非常流畅[3]。在这点上,面向功能的结构化分析与设计存在不足,例如,当问题域建模完成、需求描述清楚之后,总体的解决方案构建需要设计人员的创造力,同一个问题,不同的设计人员会给出差异很大的解决方案。第二个原因是当前流行的系统实现平台都是基于面向对象的技术,如Java、C#、C++等。

《面向对象工程》致力于培养计算机各专业研究生问题分析能力和工程应用能力。通过学习该课程,学生能够利用UML建模方法进行系统需求分析与设计,掌握企业级开发平台、设计模式、构件技术、项目开发流程及文档书写能力。

二、根据学生水平,优化教学内容

我校开设的面向对象工程课程是面向计算机科学与技术、软件工程、计算机技术三个硕士培养方向的一门核心课程。由于这三个专业的学生的学业背景与专业不同,导致对课程教学的接受与理解存在较大差异。有些学生已经学习过面向对象的分析与设计,有的学生学习过UML建模语言,也有部分学生既没学过软件工程,甚至连面向对象的程序设计也没学习过。由于学生知识层次存在较大的差异,这就给课程的组织提出了动态调整与适应的要求。面向对象工程课程的理论性和实践性要求较高,对授课教师是一个很大的挑战。授课教师一定要对面向对象技术有深刻的理解,还要有较强的实际项目开发经验、工程管理与实施技术背景,这样才能使教学做到理论结合实际,通过指导学生完成实践项目,让学生认识到课程的重要性,从而产生强烈的学习兴趣。面向对象工程本身是一个实践性很强的课程,而部分同学却反映课程的理论性很强,内容抽象。这说明课程的讲授方法存在问题,理论知识传授过程中某些知识点的讲授过细,导致学生只看到细节,无法切实让学生清晰地领会教学内容的脉络。针对这一问题,在实际授课中,设计了具体的软件开发项目,通过项目驱动学习。教师代表项目的甲方,学生是项目的开发者属于乙方。由甲方提出项目目标与基本需求,乙方采用面向对象工程的方法、建模工具建模分析,构造解决方案与软件架构并予以实施[4,5]。由于部分同学没有学习过软件工程、面向对象程序设计,对软件的生命周期、软件的开发过程、软件体系架构与实施基础设施缺乏了解,在面向对象工程的教学中,认为同学们基本掌握了这些内容,而不作为课程的重点进行讲授。为了使这部分同学能够听懂课堂教学,需要教师能够根据课堂反馈,用最少的时间给学生补上这部分知识,使课堂教学能够顺利地进行。

三、加强实践,改革教学结构

1.课程实践体系结构的搭建。本课程教学的关键在于软件项目工程化开发中用到的面向对象的需求分析(OOA)、面向对象的设计、面向对象的实现方法与建模技术应用。在软件项目的工程化方面,培养学生使用面向对象的技术,设计开发实际项目的能力。课程以具体的实践项目需求为导向,把面向对象的技术融入到项目的开发过程中,这是该课程教学的核心。为此我们首先需要搭建能够承载本课程知识点的实践体系。在搭建项目实践体系的过程中,我们详细筛选了一个软件项目规模适中的实际项目,把面向对象的各知识点、分析设计方法、建模工具应用到该实际项目中。在分析与设计的各个阶段,将面向对象设计文档和课程的各个UML图的使用进行对接,把各个知识点通过项目实施串联成线,形成了完备的课程实践体系网,学生在这样的实践体系中能更准确、更清晰地理解实践要点及理论要点,并重现了真实的分析与设计过程,达到了良好的教学效果[6]。为了促进UML建模工具的学习,课程引进了企业级的Enterprise Architecture建模工具,使繁琐的建模过程变得简单,也培养了学生适应企业开发设计环境的能力。

2.课程知识体系结构。面向对象工程涉及知识点较广,存在着学生先期准备知识不完备性以及课程知识点之间的衔接不连续的问题,这些断层导致学生知识的理解模糊以及对知识的掌握找不到切入点。因此有必要对知识体系结构进行改革和完善。面向对象工程要求学生具备良好的抽象能力,要求学生能够利用抽象方法将软件需求转化为分析结果,并用UML建模语言进行描述。在需求分析阶段,还要考虑软件的质量需求,包括软件可靠性、安全性、操作友好性、可扩展性、可维护性、可移植性等。在分析模型的基础上,需要构建软件的解决方案,如软件架构的确定、问题域分析模型向设计模型的转化、数据的存储类设计、用户界面类的设计等[7]。需求分析与基于分析结果给出的最优化设计方案是开发出高量软件系统的关键。当前,学生在设计与优化方面存在明显的知识不足。对此,在课程的整个知识体系中,有必要将软件结构化分析与设计、软件开发过程、软件质量与软件复用等内容根据课程内容的需要,穿插在本课程中。

3.课程核心内容。根据课程实践性强、技术发展迅速的特点,我们对教学内容不断更新,保证教学内容的先进性,反映本学科领域的最新发展成果,利用案例教学,合理安排課程的教学内容。①面向对象方法概论,讲述面向对象方法的基本概念、主要思想、特点、优势,面向对象的语言产生,面向对象分析与设计的演进,面向对象的工程。②面向对象的分析,通过研究问题域和用户需求,发现问题域中与系统责任有关的对象、对象特征和相互关系,建立问题域模型,产生符合用户需求的面向对象分析模型OOA。介绍UML在面向对象分析中的应用。③面向对象的设计,在OOA基础上,运用面向对象的概念与原则,按照具体的实现条件进行系统设计,产生一个可实现的面向对象设计(OOD)模型。在进行设计时,除需要细化OOA模型外,还要给出用户界面类的设计、数据存取设计、网络通信类设计等。④软件体系结构,软件一定运行于某个体系架构下,分析C/S、B/S、SOA等体系结构的适用场景与特点,通过案例给出不同的应用所应采取的架构。

四、基于项目驱动的教学

课程采用理论教学与课外实践项目驱动相结合的方式,将一个实际项目贯穿于课程学习的整个过程,将该课程理论教学与设定的软件开发项目结合起来,使学生边学习边实践。具体要求如下。

1.项目组划分。一个项目组由4~5名学生组成,小组成员承担项目组的不同角色,成员之间有合作和分工,按照企业项目的开发方式进行规划。

2.选择合适的项目。本课程已经开发了适合课程教学的实践项目,项目的需求与目标已经明确提出,需求细节需要学生与教师交流,形成需求分析报告。根据学生掌握理论知识与应用技能的程度不同,适当开放设计文档,以便同学学习。

3.技术要求。要求学生能够按照软件开发过程的原则,制定开发计划,正确使用面向对象的建模工具,进行分析与设计。加深学生对面向对象技术的理解以及系统质量的评价标准[8]。

面向对象工程教学从2004年开始,已经开设了八届。对于本课程教学已经从单纯的理论教学,逐步转向理论与实践项目相结合的方式。提出以面向对象工程技术与软件项目开发实践相结合的方式。把软件工程中过程管理方法与OOA/OOD结合起来,并采用Enterprise Architecture建模工具完成具体的开发项目。

参考文献:

[1]Hafedh Mili,Ali Mili etc.Reuse-Based Software Engineering:Technology,Organization and Controls[M].北京:电子工业出版社,2003.

[2][美]巴拉赫,兰宝.UML面向对象建模与设计(第2版)[M].车皓阳,杨眉,译.北京:人民邮电出版社,2006.

[3][美]沙赫.软件工程:面向对象和传统的方法(原书第8版)[M].邓迎春,等.译.北京:机械工业出版社,2012.

[4]Dale Skrien.面向对象设计原理与模式[M].腾灵灵,仲婷,译.北京:清华大学出版社,2009.4.

[5]Object-Oriented Methods Principles & Practice(3E),Ian Grahan.面向对象的方法与实践[M].袁兆山,等.译.北京:械工业出版社,2003.

[6]邵维忠,杨芙清.面向对象的系统分析[M].北京:清华大学出版社,2006.

[7]刁成嘉.UML系统建模与分析设计[M].北京:机械工业出版社,2007.

[8]赵逢禹,曹春萍,等.软件协同设计[M].北京:清华工业出版社,2011.

猜你喜欢
面向对象课程体系
面向对象的计算机网络设计软件系统的开发
面向对象的数据交换协议研究与应用
以创新课程体系引领学生发展
民法课程体系的改进和完善思路*——以中国政法大学的民法课程体系为例
基于面向对象的Office评测系统的分析
峰丛洼地农作物面向对象信息提取规则集
加强青少年中医传统文化教育的必要性及其课程体系构建
面向对象的SoS体系结构建模方法及应用
论普通高校国防教育课程体系的构建
面向对象信息提取中影像分割参数的选择