第六章软件工程

合集下载

软件工程讲义第六章

软件工程讲义第六章
hour:=hour+1;
ENDWHILE; 2.1、2.2、2.4已能用程序语言表达,只需对2.3进一步精细化。 为了处理60个数据,又需一循环结构。
引入分钟值变量:minutes,每分钟要做的工作是: 累计:求每小时的平均值 检查违章情况 为了累计,引入变量sum: 在每小时处理前设初值为0。 每小时处理后求平均值。
3、自顶向下的程序验证。
2019年11月26日星期二
西南交通大学信息科学与技术学院
结构化程序设计的核心内容
二、使用三种基本控制结构来构造程序 1、任何程序都由顺序、选择和重复三种基本控制结构构造。 顺序实现了任何算法规约中的核心处理步骤; 条件允许根据逻辑情况选择处理方式; 重复提供了循环。 这些逻辑元素是结构化程序设计的基础。
BEGIN
1. 设置初值;
2. 处理24小时数据;
END
求精步骤1:设置初值。开始时一般不明确为哪些变量赋初值。
求精步骤2:计算结果是以小时为统计单位输出,它是重复执行24次的
循环结构。
局部数据结构设计:数据输入的方案选择:
1、处理前读入所有24小时数据,共1440个,需要大一个大的数组。
2、每次计算输入一个数据,这要保证对先前输入的数据不再使用。
ENDWHILE;
Mean:=sum/60.0; 一次违章出现是指连续5次污染值超过10.00。如果违章分布在两个相间的时 间段上,则把这次违章算在下一小时上。 首先测试当前值是否超过10.00,若是,还将进一步检查是否连续出现5次。 为了实现第二个测试,需要两个计数器: Voilation:计数本小时出现的违章次数。 Infraction:计数连续出现超过正常值的次数。 每次超正常值出现时,Infraction增1。为了保证Infraction表示连续出现超正 常值,必须保证在第一次出现超正常值时其初值为0。为了保证相继两个小时的 Infraction的值能连续被使用,在每小时处理前不能为Infraction置0值,只能在 第一小时处理前置0。另外,在发现一次未超正常值时,也应置它为0,即连续 出现超正常值中断。

软件工程第六章面向对象方法概述

软件工程第六章面向对象方法概述


人科
车辆
非机动车 机动车
哺乳动物
翼手目
食肉目
猴科
犬科
自行车 人力车 客车 卡车 拖拉机
鲸目
猫科

猩猩
狗 狼 狐猫 虎 豹
继承性(续)
▪ 不要滥用继承
➢ 如果类A和类B毫不相关,不可以为了使B的功 能更多些而让B继承A的功能。 人想拥有狗鼻 子的灵敏问题。
➢ 若在逻辑上A是B的“一部分”(a part of), 则不允许B继承A的功能,而是要用A和其它东 西组合出B。 头与眼睛、鼻子、耳朵、嘴巴的 关系。
其中,ID MS DS MI是对象受理的消息名集合(即对外接口)
➢ 对象(Object)是类(Class)的一个实例(Instance)。
面向对象的基本概念(续)
▪ 类的定义
➢ 对具有相同数据和相同操作的一组相似对象的定 义。
➢ 类是对象的程序描述,对象是该程序运行时所创 建的实例。
➢ 对象比作房子,那么类就是房子的设计图纸 。 ➢ 对象比作一个个活人,则人类则是对人这类动物
▪ 对象A向对象B发送消息f就是对象A调用对象B的 方法f
面向对象的特征
▪ 以数据为中心,抑或以行为为中心
➢ 分别用上述两种方式来描述人
▪ 封装性 ▪ 继承性 ▪ 多态性
封装性
▪ 封装性是把对象的属性和方法结合成一个独立的 单元,并尽可能荫蔽对象的内部细节。
➢ Public,private,protected ➢ 避免访问内部数据 ➢ 尽量通过方法访问
归纳关系(续)
组合关系
▪ 组合关系就是“整 体—部分”关系,它 反映了对象之间的构 成关系。组合关系也 称为聚集关系。
▪ 组合关系具有的最重 要的性质是传递性。 也就是说,如果A是B 的一部分,B是C的一 部分,则A也是C的一 部分

软件工程第六章 详细设计

软件工程第六章 详细设计

软件工程第六章详细设计软件工程第六章详细设计6.1 概述本章节旨在对软件系统的详细设计进行介绍。

详细设计将在系统的高层设计基础上,进一步细化系统结构、模块划分以及相互关系,并定义系统中各个组件的详细功能和接口。

6.2 系统结构设计系统结构设计主要包括以下内容:- 系统总体架构:描述系统整体的结构和组成部分,包括各个模块和它们的关系。

- 模块划分:根据系统需求,将系统划分为若干个模块,并定义各个模块的职责和功能。

- 模块关系:描述各个模块之间的依赖关系和通信方式,包括模块之间的接口和数据流。

6.3 模块设计模块设计是详细设计的核心内容,主要包括以下内容:- 模块接口:定义模块的输入和输出接口,包括参数和数据格式。

- 模块内部实现:描述模块内部的算法、数据结构以及运行流程。

- 模块测试方法和策略:定义对模块进行单元测试的方法和策略。

6.3.1 模块A设计本节详细介绍模块A的设计。

- 模块接口:模块A接收来自模块B的数据输入,处理后输出结果给模块C。

- 模块内部实现:模块A内部使用算法X对输入数据进行处理,然后将结果输出给模块C。

- 模块测试方法和策略:对模块A进行单元测试时,使用测试用例集合Y进行测试。

6.3.2 模块B设计本节详细介绍模块B的设计。

- 模块接口:模块B接收来自模块D的数据输入,处理后输出结果给模块A。

- 模块内部实现:模块B内部使用算法Z对输入数据进行处理,然后将结果输出给模块A。

- 模块测试方法和策略:对模块B进行单元测试时,使用测试用例集合Z进行测试。

6.3.3 模块C设计本节详细介绍模块C的设计。

- 模块接口:模块C接收来自模块A的数据输入。

- 模块内部实现:模块C内部对输入数据进行处理,并输出结果。

6.4 数据库设计如果系统涉及数据库,本节详细介绍数据库的设计。

- 数据库结构:描述数据库的表、字段以及它们之间的关系。

- 数据库访问接口:定义系统访问数据库的接口和方法。

6.5 接口设计本节详细介绍系统与外部系统或用户的接口设计。

软件工程第6章 软件编码设计

软件工程第6章  软件编码设计

10
(1)理论标准 1)理想的模块化机制、易于阅读和使用的控制结 构及数据结构 模块化、良好的控制结构和数据结构可以降低编码 工作的难度,增强程序的可理解性,提高程序的可测试 性和可维护性,从而减少软件生存周期中的总成本,并 缩短软件开发所需的时间。 2)完善、独立的编译机制
11
(2)实用标准 1)系统用户的要求 由于用户是软件的使用者,因此软件开发者应充分 考虑用户对开发工具的要求。特别是当用户要负责软件 的维护工作时,用户理所应当地会要求采用他们熟悉的 语言进行编程。 2)工程的规模 3)软件的运行环境 4)可以得到的软件开发工具
16
(3)语句的构造及书写 语句是构成程序的基本单位,语句的构造方式和书 写格式对程序的可读性具有非常重要的决定作用。 在一行内只写一条语句,并且采取适当的移行格式, 使程序的逻辑和功能变得更加明确。 程序编写首先应当考虑清晰性,不要刻意追求技巧 性,使程序编写得过于紧凑。
17
(4)输入/输出 由于输入和输出是用户与程序之间传递信息的渠道, 因此输入、输出的方式往往是用户衡量程序好坏的重要 指标。为了使程序的输入、输出能便于用户的使用,在 编写程序时应对输入和输出的设计格外注意。 1)输入 2)输出
23
良好的编码风格,应该以结构程序设计的原则为指 导,使用单输入口和单输出口的控制结构。倡导源程序 代码的文档化,程序内部良好的文档资料,有规律的数 据说明格式,简单清晰的语句构造和输入输出格式等, 都对程序的可读性有很大作用,也在相当大的程度上改 进了程序的可维护性。程序的输入输出应该充分考虑运 行工程学的要求,在满足数据可靠性的前提下,尽量做 到对用户友善。
19
(1)用于提高运行速度的指导原则 ①编写程序之前,先对需要使用的算术表达式和逻 辑表达式进行化简。 ②尽可能多地采用执行时间短的算术运算。 ③尽量避免使用多维数组、指针和其他复杂的数据 类型。 ④尽量采用整型算术表达式和布尔表达式。 ⑤尽可能减少循环体,特别是内循环中语句的个数。 ⑥尽量使同一表达式中的数据类型保持统一。 ⑦应当对所有的输入和输出安排适当的缓冲区,以 减少频繁通信所带来的额外开销。

软件工程 第6章

软件工程 第6章

N-S图的基本符号
N-S图的嵌套定义形式
练 习
请利用N-S描述下列问题的程序结构
某汽车修配厂,有一个存有汽车零件的 仓库,其中存有若干种零件,请编写一个查 询程序,用于查询该库中某零件的库存量为 多少。
设该模块为查询模块。请设计该模块的 程序结构。具体要求:
1、应具有重复查询功能; 2、应具有数据检测功能; 3、请利用N-S图描述该模块的算法。
伪代码----文字形式的表达工具,不能在计算机上执行, 但形式上与代码相似。用它来描述程序的结构,工作量 要比画图小,又比较容易转换真正的代码。
PDL-----关键词+自然语言
结构化语言的结构分为外层和内层:
外层: 具有严格的关键字外语法,用于定义控制
结构和数据结构。包括有简单陈述句、判定和 重复结构等三种。
A=B
A<B
A:B
A>B
X=? =1 =2 =3 =4 =5
X=?
x=1 x=2 x=3 x=4
练 习
请利用程序流程图描述下列问题的程序结构
某汽车修配厂,有一个存有汽车零件的 仓库,其中存有若干种零件,请编写一个查 询程序,用于查询该库中某零件的库存量为 多少。
设该模块为查询模块。请设计该模块的 程序结构。具体要求:
输入错误!
继续查询?
Y
N
跳出循环
6.3.3 PAD图
问题分析图(Problem Analysis Diagram) 采用二维树形结构图表示程序的控制流。
A B (a)顺序结构
A
P
B
(b)选择结构
PAD图的基本符号
WHILE P
S
(c) WHILE型循环结构

软件工程导论第6章

软件工程导论第6章

70年代初N.Wirth在Pascal语言中设置支持“顺序 结构”、“IF-THEN-ELSE选择结构”、“DO-WHILE 重复结构”或“DO-UNTIL重复结构”三种基本控制 结构语句。
25
3种基本控制结构
(1) 顺序型
A B
(2) 选择型
F P A B T
(2) 多情况选择型(case)
T T
P=1 F P=2 F P=n F

A1 A2
T
An
(3) 先判定型循环
后判定型循环
(do-while)
F
(do-until)
P T S
S P F
T
例1、某模块有两个输入a和b,一 个输出c,当满足条件(a>0)and(b<2) 时,c=a+b,否则c=a-b。画出该模 块的程序流程图。
a b
第6章 详细设计
6.1 结构程序设计 6.2 人机界面设计 6.3 过程设计的工具 6.4 面向数据结构的设计方法 6.5 程序复杂程度的定量度量 6.6 小结 习题
1
详细设计阶段的根本目标:确定应该怎样具体地 实现所要求的系统。 为软件结构图中的每一个模块确定使用的算法和 块内数据结构,并用某种选定的表达工具给出清晰 的描述。
100 110
120
130 140
Eq:等于 ne:不等于 gt:大于 lt:小于 ge:大于等于 le:小于等于
例:打印A、B、C三数中最小者的程序 if (A.LT.B .AND. A.LT.C)then write(6,*) A else if (A.GE.B .AND. B.LT.C) then write(6,*) B else write(6,*) C endif endif

(完整版)软件工程第六章答案

(完整版)软件工程第六章答案

作业4参考答案1.假设只有SEQUENCE和DO_WHILE两种控制结构,怎样利用它们完成IF_THEN_ELSE操作?答:转化如下:K = 1DO WHILE (条件.AND. K.EQ.1)程序块1K=K+1END DODO WHILE ((.NOT. 条件) .AND. K.EQ.1)程序块2K=K+1END DO2.假设允许使用SEQUENCE和IF_THEN_ELSE两种控制结构,怎样利用它们完成DO_WHILE操作?答:转化如下;label: IF (条件) THEN程序块GOTO labelELSE程序块END IF3.画出下列伪码程序的程序流程图和盒图:STARTIF p THENWHILE q DOfEND DOELSEBLOCKgnEND BLOCKEND IFSTOP答:(1)流程图如图4-1所示:图4-1 从伪码变成的程序流程图(2)该程序的盒图如图4-2所示:图4-2 从伪码变成的程序盒图4.下图给出的程序流程图代表一个非结构化的程序,请问:(1)为什么说它是非结构化的?(2)设计一个等价的结构化程序。

(3)在(2)题的设计中你使用附加的标志变量flag吗?若没用,请再设计一个使用flag 的程序;若用了,再设计一个不用flag的程序。

答:(1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。

图示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。

(2)使用附加的标志变量flag,至少有两种方法可以把该程序改造为等价的结构化程序,图4-3描绘了等价的结构化程序的盒图。

(a)解法1(b)解法2图4-3 与该图等价的结构化程序(用flag)(3)不使用flag把该程序改造为等价的结构化程序的方法如图4-4所示。

图4-4 与该图等价的结构化程序(不用flag)5.研究下面的伪代码程序:LOOP: Set I to (START+FINISH)/2If TABLE(I)=ITEM goto FOUNDIf TABLE(I)<ITEM Set START to (I+1)If TABLE(I)>ITEM Set FINISH to (I-1)If (FINISH-START )>1 goto LOOPIf TABLE(START)=ITEM goto FOUNDIf TABLE(FINISH)=ITEM goto FOUNDSet FLAG to 0Goto DONEFOUND: Set FLAG to 1DONE:Exit(1)画出程序流程图。

软件工程导论第6章(第4版)

软件工程导论第6章(第4版)

二. 人机界面设计
人机界面设计是接口设计的一个重要的组成部 分。对于交互式系统来说,人机界面设计和数据设 计、体系结构设计及过程设计一样重要。
1.指导规则
T.Mandel在《用户界面设计要素》中,提出了3 条指导规则: 让用户驾驭软件,不是软件驾驭用户 减少用户的记忆 保持界面的一致性
2. 应该考虑的设计问题
4. 人机界面设计指南
(3) 数据输入指南 尽量减少用户的输入动作。 保持信息显示和数据输入之间的一致性。 允许用户自定义输入。 交互应该是灵活的,可调整成用户喜欢的输入方式。 使在当前动作语境中不适用的命令不起作用。 让用户控制交互流。 对所有输入动作都提供帮助。 消除冗余的输入。
三. 过程设计
1.过程设计的目的与任务 目的 确定模块采用的算法和块内数据结构,用某种 选定的表达工具给出清晰的描述。 任务:编写软件的“过程设计说明书” 为每个模块确定采用的算法 (模块的详细过程性 描述) 确定每一模块使用的数据结构 确定模块接口的细节 (包括对系统外部的接口和 用户界面,对系统内部其他模块的接口,以及关 于模块输入数据、输出数据及局部数据的全部细 节)
三. 过程设计
2.过程设计的原则与方法
清晰第一的设计风格 结构化的控制结构 结构程序设计的经典定义为: “如果一个程序的代码块仅仅通过顺序、选择和循环这3 种基本控制结构进行连接,并且每个代码块只有一个入口和 一个出口,则称这个程序是结构化的。” 结构程序设计技术是一种实现在逻辑上正确描述每个模 块的功能,并且使设计出的处理过程尽可能简明易懂的关键 技术,是过程设计的逻辑基础。 逐步细化的实现方法 例:在一组数中找出其中的最大数
(4) 命令交互 命令行现在仍然是许多高级用户偏爱的交互方式。在 多数情况下,用户既可以从菜单中选择软件功能,也可以 通过键盘命令序列调用软件功能。 在提供命令交互方式时,必须考虑下列设计问题: 是否每个菜单选项都有对应的命令? 采用何种命令形式?有3种选择:控制序列(例如Ctrl+P), 功能键和键入命令。 学习和记忆命令的难度有多大?忘记了命令怎么办? 用户是否可以定制或缩写命令? 在理想的情况下,所有应用软件都有一致的命令使用 方法。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1)科学工程计算。 需要大量的标准库函数,以便处理复杂的数值计算,可供选用的语言有: FORTRAN 语言、C 语言等。
(2)数据处理与数据库应用 SQL 为 IBM 公司开发的数据库查询语言 4GL 称为第 4 代语言 (3)实时处理 实时处理软件一般对性能的要求很高,可选用的语言有: 汇编语言、Ada 语言等。 (4)系统软件。 如果编写操作系统、编译系统等系统软件时,可选用汇编语言、C 语言、Pascal 语言和 Ada 语言。 (5)人工智能。 如果要完成知识库系统、专家系统、决策支持系统、推理工程、语言识别、模式识别等人 工智能领域内的系统,应选择 Prolog、Lisp 语言。 2. 软件开发的方法(详见第 9 章) 有时编程语言的选择依赖于开发的方法,如果要用快速原型模型来开发,要求能快速实现 原型,因此宜采用 4GL。如果是面向对象方法,宜采用面向对象的语言编程。 3. 软件执行的环境 良好的编程环境不但有效提高软件生产率,同时能减少错误,有效提高软件质量。 4. 算法和数据结构的复杂性 科学计算、实时处理和人工智能领域中的问题算法较复杂,而数据处理、数据库应用、系 统软件领域内的问题,数据结构比较复杂,因此选择语言时可考虑是否有完成复杂复杂算法 的能力,或者有构造复杂数据结构的能力。 5. 软件开发人员的知识 编写语言的选择与软件开发人员的知识水平及心理因素有关,开发人员应仔细地分析软件
项目的类型,敢于学习新知识,掌握新技术。 6.2 程序设计风格
随着计算机技术的发展,软件的规模增大了,软件的复杂性也增强了。为了提高程序的可 阅读性,要建立良好的编程风格。
1.源程序文档化 (1)标识符应按意取名。 (2)程序应加注释。注释是程序员与日后读者之间通信的重要工具,用自然语言或伪码描 述。它说明了程序的功能,特别在维护阶段,对理解程序提供了明确指导。注释分序言性注 释和功能性注释。 序言性注释应置于每个模块的起始部分,主要内容有: ①说明每个模块的用途、功能。 ②说明模块的接口:调用形式、参数描述及从属模块的清单。 ③数据描述:重要数据的名称、用途、限制、约束及其他信息。 ④开发历史:设计者、审阅者姓名及日期,修改说明及日期。 功能性注释嵌入在源程序内部,说明程序段或语句的功能以及数据的状态。注意以下几点: ①注释用来说明程序段,而不是每一行程序都要加注释。 ②使用空行或缩格或括号,以便很容易区分注释和程序。 ③修改程序也应修改注释。 2.数据说明 为了使数据定义更易于理解和维护,有以下指导原则: (1)数据说明顺序应规范,使数据的属性更易于查找,从而有利于测试、纠错与维护。例 如按以下顺序:常量寿命、类型说明、全程量说明、局部量说明。 (2)一个语句说明多个变量时,各变量名按字典序排列。 (3)对于复杂的数据结构,要加注释,说明在程序实现时的特点。 3.语句构造 语句构造的原则是:简单直接,不能为了追求效率而使代码复杂化。为了便于阅读和理解, 不要一行多个语句。不同层次的语句采用缩进形式,使程序的逻辑结构和功能特征更加清晰。 要避免复杂的判定条件,避免多重的循环嵌套。表达式中使用括号以提高运算次序的清晰度 等等。 4.输入和输出 在编写输入和输出程序时考虑以下原则: (1)输入操作步骤和输入格式尽量简单。 (2)应检查输入数据的合法性、有效性,报告必要的输入状态信息及错误信息。 (3)输入一批数据时,使用数据或文件结束标志,而不要用计数来控制。 (4)交互式输入时,提供可用的选择和边界值。 (5)当程序设计语言有严格的格式要求时,应保持输入格式的一致性。 (6)输出数据表格化、图形化。 输入、输出风格还受其他因素的影响,如输入、输出设备,用户经验及通信环境等。 5.效率 效率指处理机时间和存储空间的使用,对效率的追求明确以下几点: (1)效率是一个性能要求,目标在需求分析给出。 (2)追求效率建立在不损害程序可读性或可靠性基础上,要先使程序正确,再提高程序效 率,先使程序清晰,再提高程序效率。 (3)提高程序效率的根本途径在于选择良好的设计方法、良好的数据结构算法,而不是靠
4.科学工程计算、数据处理与数据库应用、实时处理、系统软件、人工智能
5.源程序文档化
三、选择题
1.D. 2.B. 3.C. 4.A. 5.D.
3.程序设计语言的心理特性在语言中表现不应包括( )。
A.歧义性 B.简洁性 C.保密性 D.传统性
4.程序设计语言的工程特性其中之一表现在( )。
A.软件的可重用性
B.数据结构的描述性
C.抽象类型的描述性 D.数据库的易操作性
5.程序设计语言的技术特性不应包括( )。
A.数据结构的描述性 B.抽象类型的描述性
编程时对程序语句做调整。
一、名词解释
1.编码
2.程序设计风格
二、填空题
1.程序设计语言的特性主要有_______三方面。
2.程序设计语言的心理特性在语言中的表现形式为_______。
3.程序设计语言的工程特性主要表现为_____。
4.项目的应用领域一般有_____几种类型。
5.与编码风格有关的因素有数据说明、语句构造、输入输出、效率等,其中还有一个重要的
因素是_______。
三、选择题
1.项目的应用领域是选择编程语言关键的因素之一,不适合作为项目应用领域的类型是( )。
A.系统软件
B.数据处理与数据库应用
C.实时处理
D.UNIX 操作系统
2.为了提高易读性,源程序内部应加功能性注释,用于说明( )。
A.模块总的功能
B.程序段或语句的功能
C.模块参数的用途 D.数据的用途
C.数据库的易操作性 D.软件的可移植性
四、简答题
1.在项目开发时,选择程序设计语言通常考虑哪些因素?
2.什么是程序设计风格?应在哪些方面注意培养良好的设计风格?
参考答案
二、填空题
1.心理特性、工性和传统性
3.可移植性、开发工具的可利用性、软件的可重用性、可维护性
6.1 程序设计语言的特性及选择 程序设计语言是人机通信的工具之一,使用这类语言“指挥”计算机干什么,是人类特定的
活动。我们从以下三个方面介绍语言的特性。 6.1.1 程序设计语言特性
1. 心理特性 (1)歧义性。 (2)简洁性。 (3)局部性和顺序性。 (4)传统性。 2. 工程特性 (1)可移植性。 (2)开发工具的可利用性。 (3)软件的可重用性。 (4)可维护性。 3. 技术特性 支持结构化构造的语言有利于减少程序环路的复杂性,使程序易测试、易维护。 6.1.2 程序设计语言的选择 1. 项目的应用领域
相关文档
最新文档