信管知识梳理(三)软件工程相关知识腾讯云开发者社区

软件需求是指用户对新系统在功能、行为、性能、设计约束等方面的期望。

软件的需求主要分为三个层次,从低到高依次是系统需求、用户需求和业务需求

系统需求主要是从系统角度来说明软件需求,包括功能需求、非功能需求和设计约束

用户需求指用户要求系统必须能完成的任务或功能

业务需求是客户对相同高层次的目标要求,通过业务需求可以确定项目范围和视图,来自于项目投资人

质量功能部署(QualityFunctionDeployment,QFD)是将用户要求转化成软件需求的技术,目的是最大限度的提升用户的满意度。QFD将软件需求分成三类,分别是常规需求、期望需求和意外需求

类与类之间有不同的关系,主要有这六类:

UML(UnifiedModelingLanguage)是一种定义良好、易于表达、功能强大而且普遍使用的建模语言,它融入软件工程领域的新思想、新方法和新技术,作用域不限于支持面向对象分析(Object-OrientedAnalysis,OOA)和面向对象设计(Object-OrientedDesign,OOD),支持从需求分析开始的软件开发全过程。

UML独立于软件开发过程,它不是程序设计语言,是一种可视化的建模语言。

UML用关系把事物结合在一起,主要有以下四种关系(也就是类与类之间的6种关系):

而视图则是从不同视角为系统构架建模,形成系统的不同视图,主要有这样五类视图:

视图主要有图类组成,下面来看看具体的UML图

UML图总共有14种,如下所示:

软件架构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构件之间的对应关系,提供了一些设计决策的基本原理。

软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式(idiomaticparadigm),核心问题是达到架构级的软件复用。Garlan和Shaw对通用软件架构风格进行了以下分类:

数据流风格顾名思义,所有的数据是按照流的形式在执行过程中前进,不存在结构的反复与重构。主要包括批处理序列和管道-过滤器两种具体的架构风格。

调用返回就是指在系统中采用了调用和返回的机制。包括面向对象风格、主程序/子程序,层次结构三种:

独立构件风格主要强调系统中的每个构件都是相对独立的个体,它们之间不通信,以降低耦合度,提升灵活度。主要包括进程通讯和事件系统子风格

人为构建一个运行环境,在这个环境之上,可以解析与运行自定义的一些语言,这样可以增加架构的灵活性。主要包括解释器和规则为中心的两种架构风格。

仓库风格中有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存储上执行,仓库与外构件间的相互作用在系统中会有大的变化。仓库风格主要包括数据库系统、超文本系统和黑板风格。

软件设计主要解决软件如何做的问题,合理的软件设计方案既可以保证系统的质量,也可以提高开发效率。从方法上来讲,软件设计分为结构化设计与面向对象设计。

结构化设计(StructureDesign)是一种面向数据流的方法,是一个自顶向下、逐步求精和模块化的过程。其基本思想是将软件设计成由相对独立且具有单一功能的模块组成的结构,主要分为概要设计和详细设计两个阶段

遵循原则:高内聚,低耦合

主要任务是对类和对象进行设计,包括类的属性、方法,以及类与类之间的关系。通常遵循这六大原则:

CMMI主要有连续式和阶段式两种表示法结构:

连续式表示法则是相对于单个CMMI过程域,使用能力等级来描述组织过程状态的特征。主要有过程管理、项目管理、工程和支持四个过程组。称为过程能力等级

过程能力

过程域

过程管理

组织级过程焦点、组织级过程定义、组织级培训、组织级过程性能、组织级改革与实施【三个过程改革培训】

项目管理

项目计划、项目监督与控制、供应商合同管理、集成项目管理、风险管理、集成化的团队、定量项目管理【四个项目团队管合同风险】

工程

需求管理、需求开发、技术解决方案、产品继承、验证、确认【两个需求技术,集成认(确认)证(验证)】

支持

配置管理、度量和分析、过程和产品质量保证、决策分析和解决方案、组织级集成环境、因果分析和解决方案【制(配置)度(度量)保证决策,环境决定因果】

阶段式表示法是相对于CMMI模型整体,使用成熟度级别来描述组织过程总体状态的特征。主要有初始级、可管理级、已定义级、量化管理级和优化管理级五个成熟度级别。称为组织成熟度等级

成熟度

可管理级

需求管理、项目计划、配置管理、项目监督与控制、供应商合同管理、度量和分析、过程和产品质量保证

已定义级

需求开发、技术解决方案、产品集成、验证、确认、组织级过程焦点、组织级过程定义、组织级培训、集成项目管理、风险管理、集成化的团队、决策分析和解决方案

量化管理级

组织级过程性能、定量项目管理

优化管理级

组织级改革与实施、因果分析和解决方案

软件测试方法包括静态测试和动态测试。静态测试主要采用人工检测和计算机辅助静态分析的手段对程序进行检测;动态测试是指在计算机上实际运行程序进行软件测试。

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

动态测试主要包括白盒和黑盒测试:

-控制流测试-数据流测试-程序变异测试其中静态测试的方法也可以实现白盒测试,属于白盒测试的范畴

测试可以分为单元测试、集成测试、确认测试、系统测试、配置项测试和回归测试等类别

也叫做模块测试,测试的对象是可独立编译或汇编的程序模块。

目的检查模块之间,以及模块和已集成的软件之间的接口关系,并验证已集成的软件是否符合设计要求。

用于验证软件的功能、性能和其他特性是否与用户需求一致。根据用户的参与程度可以包括:

系统测试的对象是完整的、集成的计算机系统,系统测试的目的是在真实系统工作环境下,验证完整的软件配置项能否和系统正确连接,并满足系统/子系统设计文档和软件开发合同规定的要求。

配置项测试的对象是软件配置项,配置项测试的目的是检验软件配置项与SRS的一致性。软件配置项测试就是开发已经完成,准备提供给客户的产品,可能是执行代码,也可能是产品文档。

回归测试的目的是测试软件变更之后,变更部分的正确性和对变更需求的符合性,以及软件原有的、正确的功能、性能和其他规定的要求的不损害性。

综合来说,测试的顺序应该是单元测试->集成测试->配置项测试->系统测试->确认测试->回归测试

软件测试的标志是发现错误,而软件调试则是根据错误迹象确定错误的原因和位置,并加以改正。

主要介绍软件层次的集成技术—企业应用集成(EnterpriseApplicationIntegration,EAI),企业应用集成技术可以消除信息孤岛,将多个企业信息系统连接起来,形成一个整体。EAI主要包括表示集成、数据集成、控制集成和业务流程集成。

表示集成也叫做界面集成,它是比较原始和最浅层次的继承。该方法把用户界面作为公共的集成点,把原有零散的系统界面集中在一个新的界面中。

同时表示集成也是黑盒集成,无须了解程序与数据库的内部构造。它是集成多个系统到一个集成点中。

数据集成是白盒集成,必须首先对数据进行标识并编成目录,另外还要确定元数据模型,保证数据在数据库系统中分布和共享。如分布式数据库提供连接的数据库访问中间件技术(数据中间件)

也叫做过程集成,这种集成超越了数据和系统,它由一系列基于标准的、统一数据格式的工作流组成。它不仅要提供底层应用支撑系统之间的互联,同时要实现存在于企业内部的应用之间,本企业和其他合作伙伴之间的端到端的业务流程的管理。比如企业-银联-银行资金业务及流程集成。

THE END
1.什么是软件测试?5分钟带你快速了解!以最少的时间和人力,尽可能多的发现程序中的错误和缺陷。测试还要证明,软件的功能和性能与需求说明相符合。 2.软件测试原则 测试既不要不充分,也不要过分。在通常情况下,在分析,设计、实验阶段的复审和测试工作能够发现和避免80%的bug,而系统的软件测试能找到其余bug的80%,最后约4%的bug只有在用户大范围、长时https://blog.csdn.net/wangchen900705/article/details/142527293
2.2022软件测试面试题大全(整理版)1000+面试题附答案详解,最全面软件测试需求分析 面试题 1、需求人员需要何时参加需求分析? 2、如果需求一直在变化怎么办? 测试模型 面试题 1、常见测试模型有哪些? 2、请根据"V”模型分别概述测试人员在软件的需求定义阶段、设计阶段、编码阶段、系统集成阶段的工作任务及其相应生成的文档? https://maimai.cn/article/detail?fid=1700715497&efid=tA7eC1eCPIrzCZI7LISXLQ
3.软件测试{1}你需要了解的软件测试基础知识下面对软件生命周期各个过程进行逐一解析: (1)问题定义:由软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。 (2)需求分析:对软件需求进行更深入的分析,划分出软件需要实现的功能模块,并制作成文档。(需求分析说明书) (3)软件设计:在需求分析结果的基础上,对整个软件系统进行设计,包括系统框架设计、数https://www.jianshu.com/p/c2c5303dd4db
4.软件的生命周期及测试工作流程syhyang软件的生命周期及测试工作流程 一.软件的生命周期 软件开始研制到最终被废弃不用所经历的阶段 二.软件开发的三种模型 瀑布性模型:1970年人们整理的第一个软件周期,包含六个基本活动(如下图),规定从上而下、相互衔接的固定次序,如同瀑布流水逐级下落。有顺序及依赖,每个阶段需要规定的文档并需要评审https://www.cnblogs.com/syh-yang/p/10723668.html
5.软件设计师一篇文章让你读懂什么是软件工程与系统开发软件生存周期(Software Life Cycle),又称为软件生命周期或系统开发生命周期,是软件的产生直到报废的生命周期。它是在一定条件下软件产品从概念形成、需求分析、设计、实现、测试、交付、使用到停止使用的全过程。这个周期包括多个阶段,每个阶段都有其特定的任务和目标。 https://developer.aliyun.com/article/1515202
6.软件工程第678章软件测测试生命周期过程与管理集成6.1.1 软件测试及目标软件测试的定义为: 按照特定规程发现软件错误的过程。其目的是检验它是否满足规定的需求,或清楚了解预期结构与实际结果之间的差异。 6.1.2 软件测试与软件调试的区别软件测试与软件调试相比,在目的、技术和方法等方面都存在很大区别,主要表现在以下几个方面。 https://blog.51cto.com/mlxia/7899584
7.软件的生命周期软件生命周期又称为软件生存周期或系统开发生命周期,是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以https://cooc.cqmu.edu.cn/Course/KnowledgePoint/8397.aspx
8.国家税务总局吉林省税务局社保费征管系统升级改造项目需求公告(1)项目需求理解:投标人对项目定位、建设服务目标精准,对现有系统需求理解分析深入、详细到位,对各项功能流程、数据来源和口径描述准确。 (2)项目设计方案:方案完整响应项目需求,总体、业务架构、应用架构、数据架构、安全架构、技术架构等设计先进合理,涉及系统关键设计、接口设计等定义规范描述精准、成熟稳定,具有独创性http://jilin.chinatax.gov.cn/art/2023/6/20/art_22893_651409.html
9.软件测试工程师职业探索初级软件测试工程师:其工作通常都是按照软件测试方案和流程对产品进行功能测验,检察产品是否有缺陷。 1职业定义 职业定义:测试开发工程师,是指测试开发出来的项目,并且日常会编写测试过程中的工具,减少测试重复性。 职业其他名称:测试开发工程师 点击了解:月薪5千—3万?计算机类专业薪酬跨度竟然这么大 https://xz.chsi.com.cn/occupation/occudetail.action?id=wxp0kxgjvynecims