软件工程三要素的分析与探讨

2015-05-30 10:48姚红岩
软件工程 2015年9期
关键词:软件工程工具过程

摘 要:软件工程是高校软件专业的核心课程,课程性质偏于设计且实践性较强;在实际教学中,学生常感课程乏味,难于掌握;本文深入分析探讨软件工程的三要素:过程、方法和工具,一方面总结指出课程乏味的根源,另一方面给出提高学生兴趣的授课策略,以期学生能更快更好地掌握软件工程本质,为以后的工程实践打下良好基础。

关键词:软件工程;过程;工具;方法;三层结构

中图分类号:TP393 文献标识码:A

1 引言(Introduction)

软件工程是软件专业的核心课程。它从设计的角度涵盖、运用以前学习的各门专业基础课如数据结构、算法、程序语言、数据库、网络、开发工具,以及操作系统,通过设计分布式系统,学生一方面能够加深对以往知识的理解,另一方面能从关注模块转变到理解系统架构。但要想深刻理解软件工程并掌握软件设计,就一定要深入领会软件的三要素:过程、方法和工具,因为这三要素将帮助我们整体、可视化地管理软件系统的各个方面,包括抽象到具体的需求分析,概要到详细的软件设计,黑/白盒测试,以及源码和项目管理等。考虑到课程的学时,要求学生短期内全面深入地掌握软件工程的诸多方面是不现实的。这就要求在授课期间,对三要素所涉及的理论部分和实践部分做删减,以便在强调软件工程各阶段框架建立的同时能突出理论重点。下面本文将对三要素作深入的分析,以期能够阐明三要素之间的关系,引导学生的学习热情,同时提高授课效率。

2 对软件工程三要素的分析与探讨(Analysis for the

main three factors in software engineering)

2.1 对工程过程的分析探讨

不失本质,过程即指工程阶段,强调的是异步或同步的工程步骤。如众所周知的软件工程的几个工程阶段分别是:需求分析、设计、编码、测试、部署、维护等。而每个阶段具体实施还要分为若干步骤,如需求分析阶段又可细分为获取需求、问题分析、需求评审、变更管理等步骤;设计阶段可细分为架构设计,详细设计等步骤。授课时结合“过程”这个概念,讲的最多的就是软件工程的生命周期模型(如瀑布模型和RUP模型),通过不同模型的讲解,综合地阐述各阶段之间的关联,以及各步骤的时序关系。概括地说,对软件过程的讲解除了要规范软件的开发过程之外,更多的是不同工程周期模型的理论对比。在学生没有掌握具体工程方法和工具的情况下,对比的不论多详细,学生都不会有切身的感受,而如果这部分的理论讲解用时较长,学生感觉课程乏味、不明就里就是自然而然的事情。因此对“过程”的讲解应尽量简短,只要规范化软件过程中涉及的词汇并给出准确释义即可。

2.2 对工程方法的分析探讨

对于“过程”中给出的若干具体词汇,即步骤名称,要想具体展开实施,必然有一定的理论方法。如“需求分析”阶段的“问题分析”步骤,这个词汇在具体展开时涉及的理论方法可以是:绘制系统流程图、业务流程图、活动图等;再比如“设计阶段”的“详细设计”步骤,在展开时对应的理论方法可以是面向对象的分析与设计(OOA/OOD),或者是基于数据流的分析方法等。概括而言,对“方法”的讲解,重点突出的是两方面:一方面要进一步划分词汇的层次结构,使得每个阶段的每个步骤都有具体的实施方法的名称。实施方法的名称一定是词汇层次结构树的叶子节点。另一方面,要对每个叶子节点(即方法名称)做理论说明,交代清楚该节点要产出的模型内容及意义即可。该部分内容在授课上仍是理论为主,强调有关词汇的理解和记忆,课时无需太多。

2.3 对工程工具的分析探讨

对于工程方法中给出的每种理论方法都有相应的工具予以支持。我们说软件工程实践性较强,一部分原因就是指对有关建模工具的运用和掌握。假设我们对“设计—详细设计—OOA/OOD”中的叶子词汇“OOA/OOD”,遵照其方法上的理论说明,应用工具进行实施展开的话,意味着要选用一个支持UML建模语言的工具软件进行实施建模。对UML提供支持的工具有Microsoft Visio和IBM Rational Rose,任选一种即可。在具体软件操作上即是要生成用例图、类图、时序图、构件图和部署图。尽管理论上学生知道应用工具要生成哪些视图,但对于图形间的逻辑关系,每个图形携带的细节信息,未必能够准确理解。因此,应用工具软件进行实际的建模操作要多分配学时,通过较长时间实践才能逐渐地将理论方法和实际工具操作结合到一起。另外,随着工具软件使用上逐渐成熟,软件建模的高级话题,如正逆向工程,通过与开发工具的结合(如Visio与.NET的结合)[1],才能使学生真正感受到设计的乐趣。

3 建议的授课策略(A proposed schema for improving

the teaching effect)

软件工程总体来看就是要把握过程、方法和工具的学习时间。为了既能突出理论重点,又能保障有足够的实践和思考,本文建议在理论讲解上除了释义阐述词汇层次结构树,还要渗透如图1所示的软件设计思想。

design process

该图体现了以数据处理为中心的软件的三个概念层次。三个层次在图中分别由三个对象予以表示:分别是边界层(boundary)对象,逻辑层(logical)对象和数据层(dbaccess)对象。其中boundary对象主要负责接收用户在界面输入的数据;logical对象负责接收和处理来自于boundary和dbaccess的数据;而dbaccess则负责存取存储介质上的数据。图1的整体语义是:用户第1步输入数据集合DC1给boundary对象;boundary对象对DC1做处理之后,数据集合变为DC2,然后boundary对象通过第3步将DC3(DC3≤DC2)传递给logical对象;logical对象收到DC3并结合经由dbaccess对象发送过来的DC4,在计算处理后持有的数据集合变为DC5;接下来,logical对象一方面通过第7步发送DC6给boundary对象,一方面调用dbaccess对象进行数据DC7的存储,其中DC6≤DC5,DC7≤DC5;经由boundary对象对DC6进行处理变成DC8后,对数据的处理至此结束。boundary最终通过第10步将数据DC9(DC9≤DC8)显示给用户。

通过对该图的理论阐述,重点强调数据的流动以及各层次对象对数据的处理结果,这将有效促进学生对人机交互类软件运行机理的理解,同时也能印证设计阶段的各种方法理论的潜在机理。

至于在软件工程的实践环节,笔者建议除了常规的基于UML为软件建模之外,可重点练习分布式软件设计,以加深理解设计模式在构件设计上的应用[2];另外,对于常规的测试工具如黑盒测试分类中的功能测试工具WinRunner和负载测试工具LoadRunner[3],可适当予以实际演示,帮助学生理解通过录制脚本,可完全模拟多个客户使用软件的情况,既能实际检测待测软件的功能接口是否正常工作,还能使学生对测试有直觉上的认识,有利于扩充学生的视野。

4 结论(Conclusion)

对软件工程三要素:过程、方法和工具的理解和掌握是软件工程课程的授课重点,也是量化教学中理论部分和实践部分学时的主要依据。本文通过对三要素的分析和探讨,指出“过程”和“方法”的讲解是理论部分,主要讲解工程词汇的层级结构树及词汇的准确释义。除此之外,本文特别提出软件设计的三层结构应贯穿于理论授课的全过程,因为“三层结构”能与三要素在理解上相互促进;对“工具”的掌握则主要来源于实践,既然“方法”部分已对必要的理论进行了释义,那么“工具”部分的练习,一方面用于印证“方法”的理论说明,另一方面用于开阔学生的视野,使学生直觉上能感知软件工程的各阶段都有“工具”予以支撑,软件工程不再只是枯燥的理论,而是“触手可及”的实用方法。

参考文献(References)

[1] Andrew Filev,et al.Professional UML with Visual Studio.NET—

UnmaskingVisio for Enterprise Architects[M].Wrox Press Ltd.?,

Reprinted March 2003 in the United States of America.

[2] 窦万峰.软件工程实验教程[M].北京:机械工业出版社,2009.

[3] 姚红岩,马云吉.“软件工程”教学策略探讨[J].软件工程师,

2014,17(8):10-11.

作者简介:

姚红岩(1979-),男,博士,讲师.研究领域:软件工程.

猜你喜欢
软件工程工具过程
波比的工具
波比的工具
描写具体 再现过程
临终是个怎样的过程
“巧用”工具
依托工作室的软件工程实践教学研究
基于工程教育认证的《软件工程》课程教学质量建设研究 
关于如何创新和完善计算机软件工程管理的探讨
在这个学习的过程中收获最大的是哪些,为什么?
圆满的过程