软件制造工程第三章
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.2.2 系统分析和系统设计的 成果文档与编程的关系
结构化分析、设计的成果文档 程序名称一览表 公共子程序设计说明书 图程序功能结构图 程序设计说明书 程序处理追加功能说明书 模块功能的定义说明书 输入数据检查说明书
系统功能概要说明书 业务处理概要图(ER图) 显示屏幕关连 屏幕设计式样书 数据库设计说明书 代码设计说明书 输入/输出文件设计说明书
3.3.1 什么是面向对象
自80年代末期到90年代,面向对象的方 法与技术向着软件生命周期的前期阶段 发展,即:人们对面向对象方法的研究 与运用,不再局限于编程阶段,而是从 系统分析和系统设计阶段就开始采用面 向对象方法。这标志着面向对象方法已 经发展成一种完整的方法论和系统化的 技术体系
3.3.1 什么是面向对象
3.3.2 面向对象的软件工程方法
面向对象的软件工程方法是面向对象方 法在软件工程领域的全面运用。它包括 面向对象的分析、面向对象的设计、面 向对象的编程、面向对象的测试和面向 对象的软件维护(OOSM)等主要内容。
3.3.2 面向对象的软件工程方法
软件开发是对问题求解的过程。按照软 件工程学对软件生命周期的划分,软件 开发过程包括分析、设计、编程、测试 和维护等主要阶段。从认识论的角度看, 整个软件开发过程又可归结为两项主要 活动,即:人们对所要解决的问题及其 相关事物的认识和基于这种认识所进行 地描述。
3.2.3 结构化编码
④ 读入输入文件的下一条记录,把关键字 项目的值存入变化后的工作变量中。 ⑤ 继续进行上述②至④的处理,直至文件 读入结束。
3.2.3 结构化编码
前提条件是: 在进行BREAK处理之前,输入文件必须 是已经按照关键字项目值进行排序(升 序或者降序)处理好的。
3.2.3 结构化编码
3.3.1 什么是面向对象
概括地说,面向对象方法的基本思想是,从现实世界 中客观存在的事物(即对象)出发来构造软件系统, 并在系统构造中尽可能运用人类的自然思维方式。 开发一个软件是为了解决某些问题,这些问题所涉及 的业务范围称作该软件的问题域。面向对象方法强调 直接以问题域(现实世界)中的事物为中心来思考问 题、认识问题,并根据这些事物的本质特征,把它们 抽象地表示为系统中的对象,作为系统的基本构成单 位(而不是用一些与现实世界中的事物相差较远,并 且没有对应关系的其它概念来构造系统)。这可以使 系统直接地映射问题域,保持问题域中事物及其相互 关系的本来面貌。
3.2.3 结构化编码
在结构化程序的实现方法中,有两种常 用的基本方法,第一是BREAK处理(见 图3.3),第二是MATCHING处理(见图 3.5)
3.2.3 结构化编码
BREAK方法的处理概要如下,处理流程见图3.4: ① 按关键字项目值的升序读入输入文件的记录, 把关键字项目的值存入工作变量中。 ② 关键字项目的值相同时,进行统计处理(或者 其他处理)。 ③ 关键字项目的值发生了变化(BREAK)的时候, 把变化前(BREAK BEFOR)的关键字项目值和 统计结果输出到文件中(或者其他处理),用 变化后(BREAK AFTER)的关键字项目值替换 变化前的关键字项目值。
3.2.1 结构化开发过程
在软件系统开发的初期阶段,首先要对 用户的现行业务运行系统进行调查和现 状分析,把握用户对新的开发系统的要 求和希望,从用户提供的基本信息中, 整理出开发系统目的和可能实现的功能 范围,设计出新系统的数据流程图 (DFD:Data Flow Diagram),显示屏 幕关连图和功能概要说明书。
3.2.3 结构化编码
程序代码的质量与软件系统外部设计和 内部设计的质量直接相关,同时,程序 设计语言的特性和程序员的编码水平, 程序代码的可读性,可维护性,可靠性, 可测试性都是直接影响程序质量的因素。
3.2.2 系统分析和系统设计的 成果文档与编程的关系
在进行组合测试之前,需要获取系统功 能概要说明书、数据流程图、编码测试 基准和共通处理说明书,把握各个子系 统的处理流程和各个程序单元之间的接 口,确保实现整个系统的设计功能
3.2.2 系统分析和系统设计的 成果文档与编程的关系
在编写程序代码之前,还需要获得编码 测试基准、共通处理说明书和代码设计 说明书、获取相应的例子程序,在正确 理解编码测试基准的基础上,进行程序 编码和编码完成后的单元测试,一定不 要在程序编码测试完成以后,再回过头 来对照编程基准和共通处理说明书,检 查修改与基准不一致的地方,那样既增 加了作业时间又不能保证程序质量。
面向对象的方法与技术发展到软件生命周期的 前期阶段有着更为深刻的意义。因为面向对象 方法的本质,就是主张从客观世界固有的事物 出发来构造系统,提倡用人类在现实生活中常 用的思维方法来认识、理解和描述客观事物, 强调最终建立的系统能够映射问题域,即:系 统中的对象以及对象之间的关系能够如实地反 映问题域中固有事物及其关系。这恰恰是从分 析和设计阶段入手才能根本解决的问题。
3.2.3 结构化编码
结构化编码采用自顶向下,逐步细化的 方法,先全局,后局部,先整体,后细 节,先抽象,后具体,逐步求精,编制 出来的程序具有清晰的逻辑层次结构, 容易阅读、理解、修改和维护,可以提 高软件质量,提高软件开发的成功率和 生产性。结构化编码过程中,要遵循以 下几个主要的原则:
3.2.3 结构化编码
1:1的匹配处理的情况下,上述处理③读入事务文件的同 时,还要读入基础文件
3.2.3 结构化编码
前提条件是: 在进行MATCHING处理之前,输入文件 必须是已经按照关键字项目的值进行排 序(升序或者降序)处理好的。
3.3.1 什么是面向对象
面向对象(object-oriented或objectorientation)不仅是一些具体的软件开发 技术与策略,而且是一整套关于如何看 待软件系统与现实世界的关系,以什么 观点来研究问题并进行求解,以及如何 进行系统构造的软件方法学。
⑴ 尽可能使用语言提供的基本控制结构,顺序结构、选 择结构和重复结构。 ⑵ 选用的控制结构只准许有一个入口和一个出口。 ⑶ 利用程序内部函数,把程序组织成容易识别的内部函 数模块,每个模块只有一个入口或一个出口,一般不 超过200行。 ⑷ 复杂结构应该用基本控制结构组合或嵌套来实现。 ⑸ 尽可能减少GOTO语句的使用,一般限制用到以下两 种情况: • 把控制转移到出错处理。 • 把控制转移到函数模块结束
3.2.3 结构化编码
大量采用GOTO语句实现控制路径,会使 程序路径变得复杂而且混乱,但有时完 全不用GOTO语句,可能会增加程序实现 的复杂度。例如,在查找结束时、文件 访问结束时或出现错误情况要从循环中 转出时,使用GOTO语句会使程序更加清 晰易懂。所以,应该加以限制地使用 GOTO语句。
MATCHING方法处理概要说明如下,处理流程如 图3.6所示。 ① 按关键字项目值的升序读入基础文件的记录, 把关键字项目的值存入基础KEY工作变量中。 ② 按关键字项目值的升序读入事务文件的记录, 把关键字项目的值存入事务KEY工作变量中。 ③ 基础KEY的值与事务KEY值相等时,把事务文 件的数据编辑输出到文件中。读入事务文件的 下一条记录,把关键字值存入事务KEY。
3.2.2 系统分析和系统设计的 成果文档与编程的关系
在正确理解程序设计说明书的基础上, 构思出结构化程序的框架,必要时作出 程序处理流程图。使用C语言或者其它语 言编写程序代码时,还要获取相关文件 和DB的格式定义代码(*.h)或COPY句, 确认各个数据项目的变量名称。需要调 用公共子程序时,要获得公共子程序的 代码或者可执行文件,做好输入输出参 数的设置和返回值的判断处理。
程序编码的主要依据是程序设计说明书,在编 写程序代码之前,程序员首先要确认自己所要 编制的程序名称,获取该程序的程序设计说明 书,理解该程序的程序功能概要和各个模块的 详细处理说明,确定该程序所要使用的屏幕和 报表的名称,数据库表和输入输出文件的名称, 以及调用公共子程序的名称,找出所有相关的 设计资料,充分理解程序设计说明书的内容, 若有疑问或不明白的地方,要提出问题,与系 统设计人员进行交流确认。
3.2.2 系统分析和系统设计的 成果文档与编程的关系
在进行程序编码工作的初期,程序员首 先要获取系统功能概要说明书、业务处 理概要图(DFD图或者ER图)、显示屏 幕关连图和程序名称一览表,理解开发 系统的目的、整体要素和各个子系统的 处理要求。
3.2.2 系统分析和系统设计的 成果文档与编程的关系
3.2 结构化编程
结构化开发--结构化分析、结构化设计和 结构化编程三个阶段
3.2.1 结构化开发过程
需求分析/ 验收测
系统测试
结构化设计
内部设计/ 组合测试计划
组合测试
结构化编程
程序制造 (编码&单元测试)
3.2.1 结构化开发过程
1、结构化分析 结构化分析方法的核心是沿数据流程图自顶向 下、逐步求精,是最经典的面向数据流的需求 分析方法。结构化分析方法使用系统流程图、 数据流程图、数据字典、ER图、处理说明等工 具来描述系统的功能需求、数据需求、运行需 求和系统扩充需求。该方法广泛应用于银行, 证券,商务处理,生产管理等大中型信息管理 系统的需求分析过程。
3.1.1 编程工程的定义
编程工程的作业流程
见P12 图2.3
3.1.2 易读易懂的程序
结构化编程以前,以个人为中心的编程作业 程序的规模逐渐扩大 ,产生了组织行为的软件 开发,而且产生了对过去开发的程序进行修改 后再利用的需求 Goto语句的使用 能够把猛一看很大的很复杂的程序用单纯的方 法分解,分解后的一块一块的程序也都很单纯, 这就是“易读易懂的程序”。
3.2.3 结构化编码
④ 基础KEY的值大于事务KEY值的时候,把事务KEY的值 写到错误信息文件中。读入事务文件的下一条记录, 把关键字值存入事务KEY。 ⑤ 基础KEY的值小于事务KEY值的时候,读入基础文件的 下一条记录,把关键字值存入基础KEY。 ⑥ 继续进行上述③至④的处理,直至文件读入结束。
3.2.1 结构化开发过程
2、结构化设计 结构化设计方法通常也叫做面向数据流的设计、 面向行为的设计。结构化设计方法是以需求分 析阶段获得的新系统的数据流程图(DFD)和显 示屏幕关连图为基础,通过一系列映射,自顶 向下,逐步细化,把它们变换为具体的程序概 要结构图和屏幕设计式样,把一个个复杂的问 题分解细化为由多个功能模块组成的具有层次 结构的软件系统。
软件制造工程
第三章 编程工程
3.1.1 编程工程的定义
编程工程就是用程序设计语言把程序设 计的结果和过程翻译为在计算机相应环 境下可运行的软件产品,把系统工程师 按照用户需求设计出来的系统构架变为 真正可运行的软件系统的工程。
3.1.1 编程工程的定义
编程工程的作业内容详细地划分为制定 工作标准,制定编码基准,理解设计书, 程序编码,自查,送上级系统工程师审 查,修改以及进行单元测试等若干步骤,
3.2.3 结构化编码
例如,使用C语言编写下面的一个小程序, 目的是打印出A,B,C三个数据中的最小 数,如图3.2给出了程序流程图。 程序段1、程序段2 比较
3.2.3 结构化编码
结构化程序编码就是按照结构化程序设 计说明书,从程序的控制结构入手,自 顶向下,逐步细化,把一个个模块的功 能逐步分解,细化为一系列具体的步骤。
3.2.1 结构化开发过程
3、结构化程序制造 结构化程序制造由结构化程序设计和结构化程 序编码组成,它以外部设计和内部设计过程中 获得的软件结构图及其相关设计资料为基础, 采用自顶向下,逐步细化的方法,把一个个模 块的功能逐步分解,细化为一系列具体的步骤, 作出结构化程序设计说明书,程序员再按照程 序设计说明书和系统设计的相关资料,把一步 步的处理说明翻译成一系列用某种程序设计语 言编写的程序代码。