第五章:软件工程(5.3软件设计--5.4软件实现)

5.3 软件设计

5.3.1 结构化设计

结构化设计(StructuredDesign,SD)是一种面向数据流的方法,目的 在于确定软件结构。它以SRS和SA阶段所产生的DFD和数据字典等文档为基础
是一个自顶向下、逐层分解、逐步求精和模块化的过程。

从管理角度讲分为:概要设计和详细设计

概要设计: 主要任务是确定软件系统的结构

详细设计: 主要任务是为每个模块设计实现的细节

1.模块结构

1)信息隐藏与抽象

信息隐藏原则要求采用封装技术,``````将程序模块的实现细节(过程或数据等)隐藏起来,对于不需要这些信息的其他模块来说是不能访问的,
使模块接口尽量
简单。 按照信息隐藏的原则,
系统中的模块应设计成“黑盒
模块外部只能
使用模块接口说明中给出的信息,如操作和数据类型等。

2)模块化

在 SD方法中,模块是实现功能的基本单位,它一般具有功能、逻辑和状态3个基本属性。
通常是先确定模块的外部特征,然后再确定它的内部特征

3)耦合

表示模块之间联系的程度

4)内聚

表示模块内部各代码成分之间联系的紧密程度

一个好的内聚模块应当恰好做目标单一的一件事情

一般来说,系统中各模块的内聚越高,则模块间的耦合就越低,但这种关系并不是绝对的。

2.系统结构图

SC又称为模块结构图 它是软件概要设计阶段的工具

详细设计的主要任务是:设计每个模块的实现算法;所需的局部数据结构

详细设计的目标:实现模块功能的算法要逻辑上正确;算法描述要简明易懂

详细设计必须遵循概要设计来进行。详细设计方案的更改,不得影响到概
要设计方案;如果需要更改概要设计,必须经过项目经理的同意。详细设计
应该完成详细设计文档,主要是模块的详细设计方案说明。

详细设计的表示工具有图形工具、表格工具和语言工具

5.3.2 面向对象设计

面向对象设计OOD其基本思想包括抽象、封装、可扩展,其中可扩展性主要是通过继承和多态来实现

常用的OOD原则:

标题
单职原则一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分。
开闭原则对扩展开放,对修改封闭。
李氏替换原则子类可以替换父类,即子类可以扩展父类的功能,但不能改变父类原有的功能。
依赖倒置原则要依赖于抽象,而不是具体实现;要针对接口编程,不要针对实现编程。
接口隔离原则使用多个专门的接口比使用单一的总接口要好。
组合重用原则要尽量使用组合,而不是继承关系达到重用目的。
迪米特原则(最少知识法则)一个对象应当对其他对象有尽可能少的了解。其目的是降低类之间的耦合度,提高模块的相对独立性

5.3.3 统一建模语言

统一建模语言(UML)是一种定义良好,易于表达、功能强大且普遍适
用的建模语言。(不是编程语言)
UML的结构包括构造块、规则和公共机制3个部分。

UML用关系把事物结合在一起,主要有4种关系 :依赖、关联、泛化和实现。

关系名称描述
依赖两个事物之间的语义关系,一个发生变化会影响另一个
关联指一种对象和另一种对象有联系
泛化泛化是一般元素和特殊元素之间的分类关系,描述特殊元素的对象可替换一般元素的对象
实现实现将不同的模型元素(例如,类)连接起来,其中的一个类指定了由另一个类保证执行的契约

5.3.4 设计模式

根据处理范围不同,设计模式可分为类模式和对象模式

根据目的和用途不同,设计模式可分为创建型模式、结构型模式和行为型模式三种。

①创建型模式主要用于创建对象

②结构型模式主要用于处理类或对象的组合

③行为型模式主要用于描述类或对象的交互以及职责的分配

5.4 软件实现

5.4.1 软件配置管理

1)版本控制:版本控制最主要的功能就是追踪文件的变更

2)变更控制:变更控制的目的并不是控制变更的发生,而是对变更进行管理,确保变更有序进行

软件配置管理活动包括软件配置管理计划、软件配置标识、软件配置控制、软件配置状态记录、软件配置审计、软件发布管理与交付等活动。

5.4.2 软件编码

程序的质量取决于软件设计的质量

程序设计语言、程序设计风格、程序复杂性度量、编码效率

5.4.3 软件测试

1.测试方法

软件测试方法分为:静态测试和动态测试

1)静态测试 :静态测试是指测试程序不在机器上运行,采用人工检测和计算机辅助静态分析的手段对程序进行检测。

静态测试包括对文档的静态测试和对代码的静态测试

对文档的静态测试主要是以检查单的形式进行;

而对代码的静态测试一般采用桌前检査、代码走查和代码审査。

2)动态测试

动态测试是指在计算机上实际运行程序进行软件测试。一般采用白盒测试和黑盒测试方法。

1)白盒测试: 白盒测试也称为结构测试主要用于软件单元测试中它的主要思想是
将程序看作成一个透明的白盒,测试人员完全清楚程序的结构和算法白盒测试方法主要有控制流测试、数据流测试和程序变异测试等, 最常用的技术是逻辑覆盖

2)黑盒测试: 黑盒测试也称为功能测试主要用于集成测试、确认测试和系统测试中。黑盒测试将测试看作是一个不透明的黑盒

2.测试类型
测试类型描述
单元测试对该软件的模块进行测试。单元测试的技术依据是软件详细设计说明书。
集成测试组装起来的模块同时进行测试,采用白盒测试和黑盒测试结合的方法进行测试,技术依据是软件概要设计文档
确认测试是否与用户需求一致
系统测试对象是完整的、集成的计算机系统; 目的是在真实系统工作环境下,检测完整的软件配置项能否和系统正确连接;最重要的工作是进行功能测试与性能测试
配置项测试配胃项测试的技术依据是SRS(含接口需求规格说明)
回归测试目的是测试软件变更之后,变更部分的正确性和对变更需求的符合性,以及软件原有的、正确的功能、性能和其他规定的要求的不损害性
3.面向对象的测试

OO系统的测试目标与传统信息系统的测试目标是一致的

OO系统具有3个明显特征,即封装性、继承性与多态性。

4.软件调试

软件调试(排错)与成功的测试形影相随。测试成功的标志是发现了错误,根据错误迹象确定错误的原因和准确位置,并加以改正,主要依靠软件调试技术。

常用的软件调试策略可以分为蛮力法、回溯法和原因排除法

PS: 更多关于系统集成项目管理工程师笔记 点击专栏订阅(持续更新~~~)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HappyAcmen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值