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: 更多关于系统集成项目管理工程师笔记 点击专栏订阅(持续更新~~~)