基于计算思维的软件分析与建模课程教学改革探索

2018-02-08 12:17张国有白尚旺郭银章党伟超
计算机教育 2018年2期
关键词:数据模型建模软件

张国有,白尚旺,郭银章,党伟超,武 妍

(1.太原科技大学 计算机科学与技术学院,山西 太原 003024;2.太原科技大学 经济与管理学院,山西 太原 003024)

1 背 景

随着2016年5月《国家创新驱动发展战略纲要》的出台和推进,以物联网、云计算、大数据为代表的信息技术面临着前所未有的发展机遇和挑战。可以预见,未来社会对高级信息人才的需求将越来越大,这对高等院校软件工程专业的人才培养带来新的挑战和机遇。如何培养适应时代发展的具有大型复杂软件系统开发和设计能力的高级信息人才,是高等教育软件工程专业亟待解决的一个重要问题。软件分析与建模课程作为软件工程专业的一门重要专业课,在学生分析和设计大型软件和解决实际工程问题的培养方面具有十分重要的作用。该课程也是高等院校软件工程专业一门技术性、实践性很强的重要课程。如何提高软件分析与建模课程的教学水平,实现软件分析与建模能力培养的目标,便成为教学改革的关键问题之一。

软件分析与建模课程的基本任务是培养学生构建复杂软件系统的能力,但在实际教学过程中,存在对课程教学目标认识不清、教学内容繁杂、教学方法和手段单一等问题。学生在学习过程中虽然掌握了大量的软件分析与建模的概念和知识,但缺乏求解工程实际问题的科学思维能力和分析设计能力。当前存在的问题主要有以下几方面。

1)注重理论讲授,对能力培养认识不足

在传统的软件分析与建模课程教学过程中,教学内容的选取沿用学科体系的教学模式,重视理论体系的完整性,学生的软件分析和建模能力没有得到较好的培养,缺乏相应的培养过程指导和评价指标,无法适应新形势下的高级信息人才需求。

2)教学内容繁杂零散,知识体系有待优化和调整。

在实际教学中,授课教师往往按照教材的章节进行讲授,只重视课程的概念和知识细节,容易使学生误解软件分析和建模的作用,学生无法建立软件分析与建模的整体概念,因此需要对软件分析与建模的知识体系进行优化和调整。

3)考核方式单一,重考试轻过程。

当前对软件分析与建模课程学习的评价主要是期末考试、上课出勤、作业实验3部分。从考核形式上看,这是可行的,但在实际操作过程中,教师更加依赖期末考试,而对于作业实验等实践训练环节,缺少科学的过程评价,没有合理的评价指标和质量监控体系,仅仅从是否完成的角度来进行评价。

近年来,“计算思维”概念的提出,引发了广大科研人员和教育工作者的热切关注,如何培养学生的计算思维能力成为一个日益关注的重要课题。为此,在软件分析和建模课程的本科教学过程中,根据计算思维的主要思想和方法,探索以计算思维能力为核心的新教学模式,从而培养软件工程专业的高级信息人才,具有十分重要的意义。

2 计算思维和软件分析与建模

2006年,周以真(Jeannette M. Wing)教授提出,计算思维是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等的一系列思维活动[1]。计算思维在复杂软件系统的分析建模中,主要体现为如何选择合适的方式陈述软件系统需求,或对系统的某一侧面进行建模使其易于处理的思维方法。同时,考虑如何采用抽象和分解的方法来控制庞杂的任务,其实质是一种基于关注点分离的方法。

计算思维的本质在于抽象,即如何将实际问题清晰、抽象地描述出来,并将问题的解决方案表示成一个信息处理的流程[2]。软件分析与建模,从思维的角度来讲,包含软件对抽象泛化、求精细化和分析验证等方面的思维活动。软件的分析与建模从软件需求描述开始,经过需求分析和软件建模得到软件开发所需要的资料和数据,需求分析需要应用抽象和泛化等思维工具,提取软件的主要功能和业务流程,并在建模过程中应用求精和细化等思维工具形成图形文档,以便直观地表达软件系统的设计。建模完成后,还需对建立的模型和需求陈述进行一致性的分析和验证。为此,在软件分析与建模的教学过程中应当注重以下几个方面。

2.1 软件分析与建模的能力培养侧重于系统能力的培养

针对复杂软件系统的分析与建模,计算思维的培养主要体现在对系统的总体掌控能力,即系统能力。系统能力要求研发人员能够在构建系统时,系统考虑问题的求解,把“设计”作为问题求解的基础,首先考虑问题的数据表示和基本处理过程,而不是考虑具体的编程实现。

系统能力可以细化为认知、设计、开发和应用等方面的能力,软件的分析与建模能力侧重于认知能力和设计能力。系统认知能力主要体现在软件的需求分析环节,包括软件的系统构成、运行环境、系统性能、建立需求模型等。系统的设计能力主要体现在软件建模环节,包括数据建模和应用程序建模。

2.2 软件分析与建模的过程是一个递进迭代的过程

软件分析与建模的过程需采用分层次组织和递进迭代的方法,并贯穿于软件开发整个过程。面对功能繁多的复杂系统,学生往往对诸多的细节深感无序和困惑,这就需要引导学生采用抽象、约简、嵌入和转化等方法,从诸多的需求陈述中提取系统基本功能或者核心功能的特征,逐步求精细化,完善系统的建模,即掌握将一个复杂问题阐述为一个可求解问题的思维方法。在教学要求和目标的定位中,以计算思维的主要思想和方法为基础,对软件分析与建模的教学内容进行优化和调整。

3 教学要求、目标和内容

在《高等学校软件工程本科专业规范(2010.1)》的“软件工程教育知识单元”中对该课程所涉及的内容(软件建模与分析MAA)做出规定,主要有建模基础(MAA.md)、模型分类(MAA.tm)、分析基础(MAA.af)、需求基础(MAA.rfd)、需求获取(MAA.er)、需求规约与文档(MAA.rsd)、需求确认(MAA.rv)等7个部分。同时规定,根据该课程内容的要求,选择一种先进的软件分析建模平台(如SAP Sybase Power Designer、Microsoft Office Visio、CA Erwin、IBM Rational等)开展教学工作。结合计算思维的特点和学校的实际情况,该课程的教学要求、教学目标和教学内容修订如下。

3.1 教学要求

要求学生掌握软件分析与建模的基本理论,能够正确建立软件系统的需求模型、数据模型和应用程序模型。掌握软件分析建模的工作过程,采用抽象、约简、嵌入和转化等方法逐步细化完善软件分析与建模,同时采用目前流行的软件分析与建模工具完成软件系统的需求建模、业务流程建模,并绘制概念数据模型、物理数据模型和应用程序模型(UML模型)。

3.2 教学目标

软件分析与建模课程主要培养学生的软件需求分析、系统结构设计、软件模型抽象等能力,使学生能够根据计算思维的主要原则和方法,针对用户需求建立相应的模型,设计出软件的逻辑结构,采用专业的需求分析和描述工具完成软件设计的工作,进而培养求解复杂科学问题的计算思维能力和解决工程实际问题的软件分析与建模能力。

3.3 教学内容

在软件工程专业开设软件分析与建模,主要讲述构造软件系统数据结构以及程序结构的重要理论和方法,是重点培养学生应用可视化方法建立软件系统模型的课程,也是从事软件设计、开发的工程技术人员必须掌握的一门专业课程。课程选择Sybase PowerDesigner为实践平台,主要开展的教学内容包括需求建模、业务建模、数据建模和应用程序建模。业务建模以业务流程语言为基础,数据建模以实体联系模型理论为基础,应用程序建模以UML语言为基础。业务建模包括需求模型、业务流程模型和信息流模型;数据建模包括概念数据模型、物理数据模型、维模型、XML模型;应用程序建模包括用例图、对象图、类图、组件图、组合结构图、部署图、时序图、通信图、活动图、状态图、包图等12种图形。

4 面向计算思维的软件分析与建模课堂教学

软件分析与建模的教学以计算思维能力培养为中心点着手教学改革,在课程教学中高度融合计算思维的思想和方法,使学习者掌握计算机方法论,提升计算思维能力,运用计算机的相关原理、方法和技术去求解问题,设计系统和理解人类的行为。

4.1 抽象和自动化

抽象是精确表达问题和建模的方法,也是计算思维的本质特征之一。软件分析与建模的很多概念和方法都体现了抽象的思想,例如数据模型中的概念数据模型和物理数据模型,以需求规格说明为依据,从信息的角度抽象表达了现实世界,形成现实世界与信息世界的映射。在具体知识的讲授教学过程中,将计算思维的思想和方法融入具体知识的讲授中,引导学生发现问题的本质和蕴含的规律,是切实可行的,并能有效促进学生计算思维能力的提升。如在案例教学中,学生熟知的教务管理系统,在建立数据模型时,应从系统提取基本实体(学生、教师和课程)理解课程编排、学生成绩与这几个实体之间的依赖关系。在建立初步的模型之后,逐步审查需求中具体功能要求和处理流程,逐步完善系统的数据模型。采用这种递进迭代的分析方法,使学生能够尽快熟悉软件分析与建模的一般原理和方法。

软件分析与建模的结果通常是以图形的方式表示,软件建模的工具(如PowerDesigner)等不仅能图形化地表示模型,而且能够建立多种模型之间的联系,实现模型的自动转化,并进行一致性检查,这本身体现了计算思维的自动化本质。例如,在讲述概念数据模型和物理数据模型等相关概念时,以现实世界的需求描述出发,采用关系数据库的原理和知识,结合分层次的抽象方法和自动化工具,从而形成多种数据模型,既清楚说明数据模型的相关概念,又逐步引导学生理解、掌握抽象和自动化的计算思维本质。

4.2 关注点分离

关注点分离作为计算思维的核心思想,是控制和解决复杂问题的一种思维方法,其实质是采用抽象和分离的方法分析复杂问题[3]。关注点分离原则在软件开发的多个方面都有所体现[4]:将问题领域和实现领域的关注点分离;对软件开发时间关注点的分离;通过系统组件的分离;通过对软件功能特性与软件质量特性的分离与综合等。Jacobson提出的基于用例的面向方面软件开发方法(AOSD, Aspect-Oriented Software Development)[5],就是一种关注点分离的方法。

在软件分析与建模过程中,采用的就是分而治之的思想,体现为过程分离、相互衔接。在分析过程中,采用软件工程的思想,将软件功能分解为相对独立的子任务,对子任务进行业务流程建模和UML建模,设计数据结构,这些子任务相对独立而又相互联系。在进行课堂教学时,将这些思想和方法贯穿于分析与建模的知识讲授中,使学生逐步理解关注点分离的思想和方法,从而掌握从不同视图进行分析与建模并综合反映全貌的方法。

4.3 通过教学案例,提高学生计算思维的能力

在课堂讲授中,结合学生所熟知的案例说明相关的教学内容,可以使学生更容易理解和体会所学内容,为此,选择学生上机系统和图书借阅管理系统进行案例说明。在上述案例的分析与建模过程中,结合计算思维的抽象、自动化、关注点分离等思想和方法,先总后分的将任务划分为相对独立的子任务,从不同的侧面和角度完成系统的分析和建模,最后建立完整的模型。在概念数据模型中,关注于系统的数据建模,可从需求中提取所需的实体及其联系,包含“用户”“存款”“操作员”“上下机”“参数表”和“上机标准”等6个实体,这些实体中存储的信息之间存在一定的联系,概念数据模型如图1所示。根据该系统的概念数据模型生成的MS SQL Server 2000的物理数据模型如图2所示。

在业务流程分析阶段,关注于业务流程的处理过程,如在该系统中,卡注册是学生上机管理系统的业务之一,它的业务流程如图3所示。

通过这些教学案例,使学生切实体验到软件分析与建模在软件开发中的作用,提高了软件分析与建模的实际应用能力,加深了对计算思维的理解。

4.4 形成思维模式,掌握建模的具体方法和步骤

通过对软件分析与建模知识的学习和对实际应用系统开发的理解,使学生逐步掌握和理解分析建模的具体方法和步骤,做到心中有数、有条不紊。总体来讲,主要有以下方面:从需求出发,总体上把握系统的功能,提取所需要管理(处理)的数据;建立数据模型,提取实体,明确属性、实体之间的联系,逐步细化添加相关的约束条件;建立应用程序模型。划分系统的组成、明确处理流程,采用UML建立相应的模型;深入理解系统的需求,所设计的方案是否符合要求,是否有更好的设计方案,方案的优点和缺点。

图 1 学生上机管理系统的概念数据模型

图 2 学生上机管理系统的物理数据模型

图 3 学生上机管理系统的卡注册业务流程

通过上述建模过程的讲解和实践。使学生做到从整体到局部,递进迭代、有序进行软件的分析建模,从多个维度分析软件需求,并建立相应的模型。

5 面向计算思维的软件分析与建模课程实践教学

计算思维的能力培养,需要针对以上的内容进行有针对性的强化和训练,从传统的知识传授转向面向具体问题,运用所学知识解决实际问题,使学生掌握解决问题的方法和步骤。

实践教学环节包括课后练习、分组讨论和上机实验等多种形式,使学生在学习相关知识之后不断地思考和练习。在课堂讲授相关的知识点和计算思维方法后,布置难度适当的习题和思考题,学生独立运用计算思维的思想和方法完成;同时适当布置较为复杂的思考题,供学生讨论协作,分小组讨论共同完成;随后教师进行总结和归纳,促进学生加深理解。

在上机实验的设计中,我们的目标不仅仅局限于分析与建模平台的操作使用,更侧重于分析与建模能力的培养,让学生正确认识软件分析与建模在开发中的指导作用。使学生从代码的实现细节中解脱出来,关注于软件的模型和体系结构。这一目标的实现需要学生理解并认识计算思维的主要原理和方法,使学生在独立面对一个现实具体的应用案例时,能够用抽象、约简、转化等软件分析与建模的思想和方法去建立问题的模型,并从不同的侧面建立软件的模型。教师还要引导学生从软件的可扩充性、移植性、可维护性等方面来衡量软件建模的优劣。

上机实验内容的设计采用以软件项目为驱动,通过案例分析加强对分析与建模内容的理解,然后以小组分工完成类型和规模相似的项目,并说明相应的考核要求。将学生所学的专业知识与具体实践技能有机结合,从而锻炼学生对计算思维方法的运用,探索解决实际问题的过程,有效避免了重考试轻过程的弊端。

6 结 语

经过多年的教学探索和实践,太原科技大学的软件分析与建模课程教学取得了一系列的成果:编写了《软件分析建模与PowerDesigner实现》等教材,建设精品网站并荣获山西省精品课程的称号等。2014年在教学方法上引入计算思维导向的教学方法研究,开展了基于案例教学的教学改革,对软件分析课程体系进行改革探索,并取得较好的成效。学生在需求分析和软件建模能力、数据建模能力、综合分析问题和解决问题的能力以及团队协作意识方面都得到了很大的提高。蓝桥杯竞赛获奖的同学在课程体会中的感言或许是有力的例证:“软件分析与建模不仅仅是一门课程,更重要的是它是一种解决问题、分析问题的重要方法。采用所学的方法,能够使我们在面对复杂的系统时把握问题的关键和要点,不再是一种茫然无头绪的状态,让我们获益匪浅”。笔者接下来将进一步探索软件分析与建模中对计算思维的培养;结合实际,逐步完善实训选题;在课堂教学中引入当前软件分析与建模的发展趋势等。

[1]Wing J M. Computational Thinking[J]. Communications of ACM, 2006, 49(3): 33-35.

[2]陈国良, 董荣胜. 计算思维与大学计算机基础教育[J]. 中国大学教学, 2011(1): 7-12.

[3]朱亚宗. 论计算思维: 计算思维的科学定位、基本原理及创新路径[J]. 计算机科学, 2009, 36(4): 53-55.

[4]何明昕. 关注点分离在计算思维和软件工程中的方法论意义[J]. 计算机科学, 2009, 36(4): 60-63.

[5]Jacobson I, Ng P W. Aspect-oriented software development with use cases[M]. BeiJing: China Machine Press, 2006.

猜你喜欢
数据模型建模软件
基于FLUENT的下击暴流三维风场建模
禅宗软件
基于区块链的微网绿电交易数据模型研究
联想等效,拓展建模——以“带电小球在等效场中做圆周运动”为例
基于Pro/E 的发射装置设计数据快速转化方法
求距求值方程建模
软件对对碰
基于PSS/E的风电场建模与动态分析
经济全球化对我国劳动收入份额影响机制研究——基于面板数据模型
即时通讯软件WhatsApp