基于软件框架的软件设计实践教学方法研究
2014-05-04叶鹏倪友聪
叶鹏 倪友聪
摘要:软件设计是本科阶段软件工程课程教学的重难点内容,目前在教学实践中,因缺乏软件设计相关教学资源的支持,学生难以在有限教学课时内理解抽象的理论并将其运用到软件设计实践中。文章提出一种软件框架AF4JAVA,在此基础上定义软件设计实践教学过程,形成一种软件设计实践教学方法。
关键词:软件工程;软件设计;软件框架;实践教学
0、引言
软件设计是软件需求分析与实现之间的沟通桥梁,是软件质量形成的重要阶段,在软件开发中具有重要作用。因此,在本科阶段软件工程课程教学中,软件设计被作为重点内容进行讲授。然而,软件设计既需要理解模块化、信息隐蔽和功能独立等抽象概念,又要把握高内聚、低耦合等设计原则,同时还要了解已有的软件体系结构风格、设计模式和软件框架等与工程实践密切相关的设计知识。因而,软件设计一直被认为是软件工程课程教学难点中的难点。由于缺乏与软件设计相关的教学资源,学生往往难以在有限教学课时内理解这些抽象的概念、原则和方法并将其应用于实践,影响了软件工程课程的教学效果。
近几年在软件工程教学研究工作中,国内外高校主要通过引入CDIOm思想改进传统的软件工程课程教学,特别强调以项目驱动的方式培养和提高学生的软件开发的实践能力。这些研究都针对软件工程教学改革进行了有益的探索,但仍然缺乏有效的教学资源来帮助学生理解抽象的软件设计理论知识,并切实培养和提高他们软件设计的实践能力。
1、软件框架AF4JAVA简介
软件框架AF4JAVA是重要的教学资源,它帮助学生理解抽象的软件设计理论知识,同时也为他们运用这些知识进行软件设计实践起到指导作用。通过对Struts、Spring和Hibernate等JAVA开源框架进行集成、封装和抽象,构建出AF4JAVA框架。AF4JAVA该框架中设计并实现了一组实现数据访问、抽象的领域实体对象等功能软件构件,对学生隐蔽了使用JAVA开源框架的繁琐细节。AF4JAVA框架本身不仅可以帮助学生更好地理解软件体系结构风格、设计模型和软件框架等知识,而且还能使学生利用它提供的可重用构件,高效地进行JAVA Web应用软件的设计。
AF4JAVA框架被分为用户界面层(UIlayer),领域层(Domain layer)和数据访问层(Data Access layer)三层,如图1所示。用户界面层用于实现图形用户接口GUI,提供用户与应用程序之间的交互。领域层封装了业务逻辑和业务实体,并向uI层提供业务功能接口。数据访问层则封装了对数据库的访问功能,为领域层提供数据访问接口。
2.1 数据访问层
数据访问层由IDataContext、DataConteXt、Configure和Mappingfile 4个构件组成。图2所示为软件框架AF4JAVA中数据访问层的示意图。其中IDataContext接口定义了对象的增删改查、事务管理等操作。DataContext类通过使用Hibernate框架中的构件,实现IDataContext接口。Configure中包含数据库连接的配置文件。Mappingfile是用于定义对象一关系映射的文件。DataContext的实例根据数据库连接配置和对象一关系映射关系,完成对数据库的访问操作。
2.2 领域层
领域层中有IService、Service和Entity 3个构件,如图3所示。其中IService中定义了一组接口ISubsystem_1,ISubsytem 2,……,ISubsystem_N,用于封装子系统功能,并为用户界面层提供业务服务。Service中包含了一组业务类Subsystem 1,Subsystem 2,……,Subsystem_N,用于描述IService中定义的子系统功能接口,这些业务类可以通过访问层中的IDataContext接口数据实现对数据的访问。Entity中定义了实体对象及其之间的关系。Entity又由Entityobject、ErrInf0和业务实体类构成,如图4所示。其中EntiyObject抽象类声明了用于数据校验的抽象方法valid,Errlnfo类封装了错误字段和错误信息,BusinessEntity 1,BusinessEntity 2,……,BusinessEntity N是一组业务实体类,用于封装业务服务过程中需要处理的数据,通过继承EntityOb~iect类实现数据校验的抽象方法。
2.3 用户界面层
UI层包括View、ViewModel和ViewController构件,如图5所示。其中View构件用于定义一组JSP页面WebPage 1,WebPage2,……,WebPage N。ViewModel为渲染JSP页面提供数据或者保存从JSP页面获取的数据。ViewControUer中定义了一组JSP页面请求处理的动作Action 1,Action 2,……,Action N等。这些动作通过调用领域层中的业务服务接口完成具体的业务处理过程。
3、基于AF4JAVA框架的软件设计实践教学过程
基于AF4JAVA框架开展软件工程实践教学的总体目标是:首先通过对AF4JAVA框架的讲解,使学生能理解抽象的软件设计理论知识,了解如何使用该框架进行设计工作。然后让学生通过模拟真实开发场景,在AF4JAVA框架和与之相关的软件设计相关文档模板等教学资源的支持下,完成对给定的实践项目的软件设计方案,以达到培养和提高学生软件设计的实践能力。
基于AF4JAVA框架的软件工程实践教学过程可分为初始阶段、计划阶段、实施阶段和评审阶段4个阶段。
1)初始阶段。
该阶段主要让学生学习AF4JAVA框架,并明确软件设计相关文档的书写要求。首先,教师在课堂教学中通过“用户在线注册”的简单例子剖析基于AF4JAVA框架的软件设计过程,使学生了解该框架的特点、内容和用法。然后,将学生分成人数为4~5人的小组,并在组内讨论构建AF4JAVA框架中使用的软件体系结构风格、设计模式,以及遵循的设计原则等软件设计理论知识。进一步,讲解基于AF4JAVA框架的UML设计模型、设计计划书和设计规则约说明书等软件设计相关文档模板。最后,选定一个规模合适的实践项目,给出其需求规格说明书,并要求学生分组讨论该项目需求。endprint
2)计划阶段。
该阶段主要是各个小组按照基于AF4JAVA框架的项目设计的工作计划书模板,制订实践项目的设计计划书。制订计划书过程主要步骤为:①按照项目需求规格说明书,将待开发软件系统划分成若干子系统,确定这些子系统中用例的优先级,并进行排序。②将每个子系统的设计任务进行分割,并将这些分割后的任务分配给小组成员,设定完成期限,估算完成每个子系统设计任务需要迭代的次数,据此估算完成每个子系统设计需要的时间。③制订小组讨论会的计划,要求在每次迭代完成时进行必要的组内评审和回顾,保证设计的质量。
3)实施阶段。
该阶段中项目小组按照项目设计计划书开展工作,建议采用迭代增量式的软件设计过程,如图6所示。下面对该过程中的每个步骤进行介绍。
步骤1(静态结构的设计):按照计划书中任务分割和分配情况,利用基于AF4JAVA框架的UML设计模型中预定义的类和接口,小组成员使用UML类图说明某一子系统的用户界面层、领域层设计和数据层中包含的类,以及3个层次间的接口设计。
步骤2(动态行为的设计):小组成员使用UML活动图、顺序图说明该子系统各层次内部、层次之间的交互以及外部与子系统之间的交互。
步骤3(设计规约的书写):根据步骤l和步骤2得到的设计模型,按照AF4JAVA框架的设计规约说明书模板,书写该待建子系统的设计规约说明。
步骤4(组内评审):小组成员通过讨论会评审该次迭代的设计结果。评审的结果决定小组是否调整后续的迭代过程。同时在讨论会上也要回顾此次迭代过程中好的和不好的做法,帮助提高后续设计工作的效率。
重复步骤1~步骤4,直至完成整个项目的设计方案。
4)评审阶段。
最后,以项目答辩的形式,各组汇报自己的设计工作完成情况。答辩时,必须提交项目设计的工作计划书、设计说明文档和答辩演示文稿。根据各组完成设计工作的表现,教师进行讲评和最后总结。
4、结语
软件框架AF4JAVA为学生提供了一种直观的、有效的软件设计的教学资源。实践证明,基于AF4JAVA框架的软件设计实践教学过程,帮助了学生理解软件设计的抽象概念,同时也使学生能更好地进行软件设计实践,进而改善软件工程实践教学的效果。下一步,我们将继续完善该框架的内容,优化基于该框架的软件设计实践教学过程。endprint