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

embedded/2024/10/18 12:32:29/

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


http://www.ppmy.cn/embedded/127293.html

相关文章

【C】C语言常见概念~

C语言常见概念 转义字符 转义字符&#xff0c;顾名思义&#xff0c;转变原来意思的字符 比如 #include <stdio.h> int main() {printf("abcndef");return 0; }输出的结果为&#xff1a; 将代码修改一下&#xff1a; #include <stdio.h> int main(…

[加班技巧]windows如何定时自动启动远程控制软件 向日葵 todesk

出发点 有时希望晚上能够远程访问办公的计算机&#xff0c;但是可能又会忘记了打开远程控制软件。 因此&#xff0c;可以考虑使用任务计划程序创建定时任务&#xff0c;让办公的计算机在下班时自动打开远程控制软件&#xff0c;如向日葵、todesk。 方法描述 打开任务计划程序…

方正畅享全媒体新闻采编系统 addOrUpdateOrg XXE漏洞复现

0x01 产品简介 方正畅享全媒体新闻生产系统是以内容资产为核心的智能化融合媒体业务平台,融合了报、网、端、微、自媒体分发平台等全渠道内容。该平台由协调指挥调度、数据资源聚合、融合生产、全渠道发布、智能传播分析、融合考核等多个平台组成,贯穿新闻生产策、采、编、发…

Ascend C算子性能优化实用技巧04——Tiling优化

简介 Ascend C是CANN针对算子开发场景推出的编程语言&#xff0c;原生支持C和C标准规范&#xff0c;兼具开发效率和运行性能。使用Ascend C&#xff0c;开发者可以基于昇腾AI硬件&#xff0c;高效的实现自定义的创新算法。 目前已经有越来越多的开发者使用Ascend C&#xff0c;…

yolov8(Ultralytics)可视化界面ui设计,基于pyqt5,单py文件即插即用

本次yolov8可视化界面Ui相较之前文章中的界面进行了部分改动&#xff0c;比较明显的改动为本文使用的yolov8版本为8.2.0&#xff0c;有了较新的范围内统计目标数量的功能&#xff08;目前还没整合进来&#xff0c;后续更新&#xff09;&#xff0c;且分为左右两个区域分别显示原…

LangChain中使用Prompt01

1.引入提示模板 from langchain.prompts import (SystemMessagePromptTemplate,AIMessagePromptTemplate,HumanMessagePromptTemplate, )2.设置系统提示 system_template_text"你是一位专业的翻译&#xff0c;能够将{input_language}翻译成{output_language}&#xff0c…

观察者模式和发布-订阅模式的区别

观察者模式是&#xff0c;当被观察者的数据发生变化时&#xff0c;调用被观察者的 notify 方法&#xff0c;去通知所有观察者执行 update 方法进行更新&#xff1b; 对于发布-订阅模式&#xff0c;首先发布者与订阅者互相并不知道彼此的存在&#xff0c;他们是通过事件中心来进…

智能手机、平板和笔记本电脑出口俄罗斯认证解析

智能手机、笔记本电脑和平板电脑&#xff0c;它们的监管范围相似&#xff0c;需要获得EAC 合格证、FAC电信认证和FSS加密认证&#xff0c;才能进口、清关并在俄罗斯市场上销售。 一、海关联盟EAC 认证 是根据 EAC 要求强制批准的证书&#xff0c;并且受到所有国家海关和市场的…