结构化与面向对象(上)

人类认识世界总是循序渐进的过程,软件工程也一样,从最开始的单兵作战,再到软件作坊,直到如今的大规模软件开发,软件工程从业者不断总结实践中存在的问题以及解决途径,逐渐形成了一系列的软件工程方法,而所有这些方法中,最为经典的当属结构化和面向对象的方法。本文将在认识两种方法的基础上探讨如何在软件工程过程中将这两种方法结合起来。

1 结构化方法

1.1 结构化方法的基本思想

面对复杂的问题,我们先要想办法让它变得简单。结构化方法的基本思想就是通过自顶向下、逐步求精、模块化的方法来让让复杂的软件开发过程变得简单。 

  • 自顶向下、逐步求精就是指把一个复杂的问题划分成若干小问题,然后再分别解决,将问题的复杂性降低到人可以掌握的程度。即将复杂的系统分解成若干个人们易于理解和分析的子系统。在分解过程中,被分解的上层就是下层的抽象,下层为上层的具体细节,即最高层的问题最抽象,而底层的则较为具体。
  • 模块化就是把程序划分成若干个模块,每个模块完成一个子功能,将多个模块组织起来实现整个软件系统的功能。模块化设计方法强调清楚地定义每个模块的功能和它们的输入/输出参数,而模块的实现细节隐藏在模块中,与 其他模块之间的关系是调用关系,因此,模块化程序易于调试和修改。
1.2 结构化软件工程过程

将上述思想融入到软件工程的各个过程,便是结构化软件工程过程。包括:

  • 结构化分析:应用结构化方法进行软件需求分析时,是基于数据流的。即通过数据流图的自顶向下逐层分解来建立目标系统的功能模型,通过数据字典E-R图来构建数据模型,通过流程图状态转换图来构建行为模型,最后形成该阶段的里程碑文档:《需求规格说明书》,为下一步的软件设计提供依据。
  • 结构化设计:在结构化分析的基础上,采用面向数据流的设计方法,以数据流图为基础得到软件的模块结构,应用流程图PDL语言判定表或判定树设计代码逻辑,最后形成该阶段的里程碑文档:《软件设计说明书》,文档中还需要对各模块内部及模块间的接口(包括界面设计)做出说明,为软件实现阶段的工作提供依据。
  • 结构化程序设计:就是采用一种面向过程的程序设计语言,实现上述设计的系统。
1.3 结构化软件工程工具

图1 结构化方法建模过程

如图1所示,结构化方法应用一系列工具来对系统进行建模。下面,本文将结合一个案例来说明这些工具的适用场景。

案例描述:某学院拟开发一个教学档案管理系统(以下简称“系统”),具有如下功能。

(1)登录。管理员、普通教师和系主任可以利用系统预设的账号、密码登录系统,完成相应的功能。

(2)部门管理。管理员登录系统后,可维护学院的部门信息,包括部门编号、部门名称、部门类别、办公室地址等。

(3)教师管理。管理员登录系统后,可维护教师信息,包括工号、姓名、性别、所属部门、职务(普通教师或系主任)等。

(4)课程类型管理:管理员登录系统后,可维护课程类型信息,包括类型编号、类型名称(如“理论课”、“实践课”等)等。

(5)档案类型管理。管理员录系统后,可维护档案类型信息,包括档案类型编号、档案类型名称、所属课程类型、档案模板、归档要求等。

(6)授课管理。系主任登录系统后,可为所在部门的教师安排每学期教授的课程信息,包括课程编号、课程名称、课程类型、学期、授课班级、开始时间、结束时间、学时、授课地点等。

(7)档案管理。普通教师登录系统后,可选择上传自己所教授课程的档案, 每门课有多个档案,每个档案的信息包括档案编号、档案文件、档案说明等, 上传后可选择临时保存以便于下次接着上传或修改已上传的档案,如果确认全部上传完成,则选择提交系主任审核;系主任登录系统后,可对教师上传的档案进行审核,如果没有问题,则选择审核通过;否则选择驳回。管理员登录系统后,可按部门或学期查询所有课程的档案上传情况。

1.3.1 数据流图

数据流图(Data Flow Diagram,DFD)用于刻画业务处理过程中需要进行的操作以及外部实体与系统之间、系统内部操作之间的信息传递过程。如图2所示,数据流图包含4种要素,每种要素在Yourdon表示法和Gane表示法中的表示形式略有不同。

图2 数据流图的要素

Yourdon表示法和Gane表示法是两种用于系统分析和设计的图形表示方法。前者由美国计算机顾问、作家和软件工程师Edward Yourdon于1970年代开发,后者由英国工程师J. Gane和C. Sarson于1979年开发。本文主要使用Gane表示法来绘制数据流图。

绘制数据流图的过程就是结构化的系统建模过程,基本步骤包括:

  • 确定外部实体,画出顶层数据流图。
  • 对顶层数据流图的加工进行分解:从数据源点出发,按照系统的逻辑需要,逐步画出一系列逻辑加工,直至数据终点。自顶向下,对每个加工进行内部分解,画出分层数据流图
  • 对数据流图进一步求精。 

(1)顶层数据流图:又称0层数据流图或环境图,其作用是确定系统在其环境中的位置,通过确定系统的输人和输出及其与外部实体的关系来确定系统的边界

图3 教学档案管理系统顶层数据流图

如图3所示,数据流图包含如下几个要素:

  • 外部实体:代表与系统进行交互的人员、组织或其他系统。外部实体用矩形表示。图1中管理员、普通教师、系主任均属外部实体。

注意:需求分析时识别的外部实体,除了管理员之外,其他都是现实世界中实际存在的角色,不要用“用户”这样的名称替代。

  • 数据变换:也称加工,代表系统包含的操作。对于顶层数据流图来说,只有一个加工,那就是我们要开发的系统。加工用圆角矩形来表示。
  • 数据存储:代表系统数据存放的地方。数据存储用带编号的右侧开口矩形表示。
  • 数据流:代表外部实体与加工之间、加工与加工之间、加工与数据存储之间传递的信息。数据流使用带箭头的线表示,箭头表示信息传递的方向。如图1中,管理员操作系统时需要输入账户、密码完成登录,所以管理员和系统之间就有一个名为“账户、密码”的数据流。由于数据流表示的是数据信息,所以其名称应该是一个名词,而非动词。

(2)数据流图的分解

为了更加详细的了解系统的内部流程,需要对数据流图中的加工进行逐层分解,分解时要满足下图所示的一致性原则:

图4 数据流图分解的一致性原则

数据流图在分解过程中,下层对上层的加工进行分解,分解后的输入和输出数据流与上层 保持一致。如图4所示,底层将中间层的加工S1分解为3个子加工S1.1、S1.2、S1.3,分解后作为整体,输入的数据流为1条(图中用红色表示),即从外部实体F1到S1.1,输出的数据流有3条(图中用蓝色表示),即1条输出到外部实体F1,另外2条分别由S1.1到S2.1和由S1.3到S2.2,这与中间层数据流图中S1对应的数据流是一致的。

图5给出了分解后的结果:

图5 分解后的数据流图

注:绘制数据流图的过程是一个逐步求精的过程,除了图4所示的一致性原则外,还要遵守以下原则:

  • 顶层DFD应该将软件描述为一个“泡泡”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值