软件工程(最简式总结)

目录

第一章:概述

1.软件危机的表现原因

2.常见的软件开发方法包括:

3.软件工程基本原则

4.软件工程三要素

5.设计模式的分类

6.针对变换型数据流设计步骤

7.针对事务型数据流设计步骤

第二章:软件过程

1.软件生命周期

2.软件过程模型

(1)瀑布模型(特点:带反馈)

(2)快速原型模型

(3)增量模型(判断标准:系统是否被模块化)

(4)螺旋模型

(5)喷泉模型

第三章:可行性研究及需求分析

1.需求分析常用方法

2.需求分析步骤

3.可行性研究步骤

4.需求分析的任务

第四章:结构化分析

1.数据流图(简称DFD图)

2.环境图(顶层数据流图)

3.数据流图的分解

第5章:软件设计

1.软件设计的原则

2.软件设计包括

3.UML具有以下几个特点:

第6章:结构化设计

1.表示软件结构的图:

(1)层次图

(2)结构图

2.体系结构设计

第7章:面向对象方法与UML

1.面向对象方法

2.统一建模语言UML

3.动态建模机制

第8章:面向对象分析

1.面向对象分析原则:

2.面向对象建模:

3.例题:

(1)编写脚本

(2)画UML顺序图

(3)画状态图

(4)总行状态图

(5)分行状态图

第10章 面向对象设计

1.设计原则

2.面向对象结构设计步骤

3.系统设计

第12章 :软件测试概述

1.软件测试的原则

2.分类

第13章 :软件测试方法与过程

1.黑盒测试

2.白盒测试

3.集成测试


第一章:概述

1.软件危机的表现原因

表现:软件危机是指人们在开发软件和维护软件过程中所遇到的一系列的问题。

        软件开发的过程中,不能按时完成任务、产品质量得不到保证、工作效率低下和开发经费严重超支等现象。

原因:(软件本身的特点及开发方法)

(1)忽视软件开发前期的调研和需求分析工作

(2)缺乏软件开发的经验和有关软件开发数据的积累,使得开发计划很难制定

(3)开发过程缺乏统一的、规范化的方法论指导

(4)忽视与用户、开发组成员间的及时有效的沟通

(5)文档资料不规范或不准确。导致开发者失去工作的基础,管理者失去管理的依据

(6)没有完善的质量保证体系

(7)忽略测试的重要性和不重视维护

目标:在给定成本、进程的前提下、开发具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性、可互操作性并满足用户需要的软件产品。

2.常见的软件开发方法包括:

(1)结构化方法

(2)面向数据结构方法

(3)面向对象方法

(4)形式化方法

3.软件工程基本原则

(1)模块化(2)抽象(3)逐步求精(4)信息隐藏(5)复用性设计(6)灵活性设计

4.软件工程三要素

   方法、工具、过程

5.设计模式的分类

(1)创建型模式

(2)结构型模式

(3)行为型模式

6.针对变换型数据流设计步骤

   输入数据、变换中心、输出数据

7.针对事务型数据流设计步骤

   找出事务中心、接收数据、处理路径

第二章:软件过程

1.软件生命周期

从设计该产品,到软件需求的确定、软件设计、软件实现、产品测试与验收、投入使用及版本更新,到该产品被市场淘汰。

2.软件过程模型

  瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、基于组建的开发模式、统一软件开发过程模型以及敏捷模型与极限编程。

(1)瀑布模型(特点:带反馈)

具有不可回溯性,可以一次性获取到全部需求,软件项目风险较低。

(2)快速原型模型

快速搭建,再根据用户需求进行修改

(3)增量模型(判断标准:系统是否被模块化)

开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交

将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。

(4)螺旋模型

风险较大地大型软件项目开发地过程模型,将风险扩展到各个阶段。

将瀑布模型与快速原型模型结合起来,并且加入了这两种模型忽略了地风险分析。

开发过程:制定计划、风险分析、实施工程和客户评估。

适用于:
– 支持需求不明确、特别是大型软件系统的开发,
– 支持面向过程、面向对象等多种软件开发方法

(5)喷泉模型

喷泉模型主要适用于面向对象的软件项目的开发。

各阶段之间没有明显的界限,而且常常重复、迭代地进行。

第三章:可行性研究及需求分析

可行性研究:不是解决问题,而是确定问题是否值得去解决

可行性研究内容:战略可行性、操作可行性、计划可行性、技术可行性、社会可行性、市场可行性、经济可行性、风险可行性。

1.需求分析常用方法

(1)功能分解方法:将一个系统看成是由若干功能模块组成。

(2)结构化分析方法:由数据流图和数据词典构成并表示。它是一种面 向数据流的需求分析方法。

(3)信息建模方法:使用E-R图,其基本要素由实体、属性和关系构成。

(4)面向对象的分析方法:

•描述系统静态结构的对象模型

•描述系统控制结构的动态模型

•描述系统计算结构的功能模型

2.需求分析步骤

四个步骤:需求获取、需求建模、需求描述(即编写 SRS)和需求验证

3.可行性研究步骤

(1)明确系统目标

(2)分析研究现行系统

(3)设计新系统高层逻辑模型

(4)获取可行方案

(5)撰写可行性研究报告

4.需求分析的任务

(1)确定系统的运行环境要求

(2)功能性、非功能性需求

第四章:结构化分析

功能建模:按照软件内部数据传递和变换的关系,自顶向下逐层分解。

1.数据流图(简称DFD图)

数据流图中的表示符号

2.环境图(顶层数据流图)

环境图地作用是确定系统在其环境中地位置

3.数据流图的分解

实例:

假设一家工厂的采购部里的采购员每天需要订货系统产生一张订货报表。报表按照零件编号排序,表中列出了所有需要再次订货的零件。对于每个需要再次订货的零件应该列出下述信息:零件编号、零件名称、价格、主要供应商、次要供应商。2、零件入库或出库称作事务,仓库管理员通过仓库的终端把事务报告给订货系统。当某种零件的库存少于库存量临界值时就应该再次订货了。

数据建模:用实体-关系图来描述(E-R图)

数据模型E-R图——仓库管理系统实例

•请为某仓库的管理系统设计一个ER模型。该仓库管理系统主要管理零件的订购和供应等事项。仓库管理系统向工程项目供应零件,并且根据需要向供应商订购零件。

•实体类型“零件”的主要属性是:零件编号,零件名称,颜色,重量。实体类型“工程项目”的属性主要是:项目编号,项目名称,开工日期。实体类型“供应商”的属性主要有:供应商编号,供应商名称,地址。

行为建模:它描述系统状态和事件,适合用来描述实时系统。

行为模型状态转换图——图书馆系统实例

图书馆系统里的图书主要有这几种状态:新上、可借阅、已借出、已丢弃这四种状态,触发这些状态进行转换的事件有分类、借阅、归还、续借、破损、遗失等。

数据字典:以一种系统化的方式定义在分析模型中出现的数据对象及控制信息的特性

数据字典——实例

航空公司名称=2{字母}8
航班号=3{十进制数字}3
字母="a"…“z”
十进制数字="0"…“9”
起点=终点=1{汉字}5
起飞时间=降落时间=时+分

第5章:软件设计

1.软件设计的原则

(1)模块化(2)抽象(3)逐步求精(4)信息隐藏(5)复用性设计(6)灵活性设计

模块化:就是把系统或程序划分为独立命名并且可以独立访问的模块,每个模块完成一个特定的子功能。

模块化注意:规模适中、提高独立性低耦合、高内聚、加强保护性。

模块的三个基本属性:功能、逻辑、状态。

耦合:模块之间相互连接的紧密程度的度量。

内聚:一个模块内各个元素彼此结合的紧密程度用内聚来度量。

2.软件设计包括

(1)软件设计

(2)数据库结构设计

(3)用户界面设计

3.UML具有以下几个特点:

(1)统一标准

(2)面向对象

(3)可视化,表达能力强大

(4)独立于过程

(5)容易掌握使用

第6章:结构化设计

面向对象分析原则:
(1)定义有实际意义的对象
(2)模型描述要规范、准确
(3)共享性
(4)封装性

1.表示软件结构的图:

(1)层次图

(2)结构图

2.体系结构设计

Jackson图

3种基本类型:
顺序型结构、选择型结构(" 。“表示选一个)、循环型结构(” * "表示重复)。

例子:将高考后考生的基本情况文件和考生高考成绩文件合并
成一个新文件。
从已知条件可以得出如下的三个基本文件结构图:

step1:画出输入,输出结构的Jackson图。
step2:从输入输出的数据结构中找出有对应关系的数据单元。

step3:导出程序结构的Jackson图。

接口设计

过程设计

图形设计符号:流程图、N-S图、PAD图等

流程图:
分类:顺序型、选择性、先判定型循环、后判定型循环

N-S图
又称盒图

PAD图
又称分析图,自顶向下,逐步求精

实例:计算n阶乘的程序流程图

实例:计算n阶乘的N-S图。

实例:计算n阶乘的PAD图

第7章:面向对象方法与UML

1.面向对象方法

对象、类、消息、类的特性(抽象、继承、封装、多态、重载)、包。

注:类是对象的抽象,对象是类的实例。

面向对象的实施步骤

(1)面向对象分析

(2)面向对象设计

(3)面向对象实现

(4)面向对象测试

2.统一建模语言UML

概念:UML是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示。

应用范围:需求分析阶段到系统完成后的测试阶段都能起到重要作用

用例图

用例、参与者、之间的关系

参与者之间可以存在泛化关系,类似的参与者可以组成一个层级结构

参与者与用例之间的关系——关联

用例之间的关系有3种

(1)包含:带箭头的虚线,虚线上有《include》
(2)扩展:带箭头的虚线,虚线上有《extend》
(3)泛化:带三角形实线,泛化描述一般与特殊(父用例子用例)

包含关系:

扩展关系:

泛化关系:

例:建立一航空公司的机票预定系统,让客户通过电话或网络买票、改变订票、取消订票、预定旅馆、租车等等。

类图

类与类之间的关系:
关联(相互连接)、依赖(一个类依赖于或使用另一个类)、泛化(一个类是另一个类的特殊情况)、实现。

关联

依赖

实现

是指一个类描述了另一个类保证实现的合约。子类与父类关系是泛化,类与接口关系是实现。

3.动态建模机制

顺序图

状态图

活动图

带泳道地活动图

第8章:面向对象分析

面向对象分析的三种模型:
对象模型、动态模型、功能模型

1.面向对象分析原则:

(1)定义有实际意义的对象
(2)模型的描述要规范、准确
(3)共享性
(4)封装性

2.面向对象建模:

对象模型(核心)、动态模型、功能模型

3.例题

(1)编写脚本

(2)画UML顺序图

(3)画状态图

(4)总行状态图

(5)分行状态图

第10章 面向对象设计

1.设计原则

(1) 模块化
(2) 抽象化
(3) 信息隐藏
(4) 低耦合
(5) 高内聚
(6) 复用性

2.面向对象结构设计步骤

(1)建立软件体系结构图
(2)软件体系结构设计
(3)对各个子系统进行设计
(4)对象设计及优化

3.系统设计

第12章 :软件测试概述

1.软件测试的原则

软件测试是为了发现错误而执行程序的过程,它并不可能找出所有的
错误,但是却可以减少潜在的错误或缺陷

2.分类

第13章 :软件测试方法与过程

大的功能模块采用黑盒测试,小的构件采用白盒测试

1.黑盒测试

把被测试的软件系统看成是一个黑盒子,并不需要关心盒子的内部结构和内部特性,而只关注软件产品的输入数据和输出结果。

黑盒着重测:软件功能

方法:

(1)等价类划分法

(2)边界值分析法(常用)

(3)错误推测法

(4)因果图法

2.白盒测试

关注软件产品的内部细节和逻辑结构,即把被测的程序看成是一个透明的盒子。

白盒测试,有时也称为玻璃盒测试,它关注软件产品的内部细节和逻辑结构

方法:

(1)逻辑覆盖测试方法

        语句覆盖

        分支覆盖

        条件覆盖

        分支-条件覆盖

        条件组合覆盖

        路径覆盖

        有效等价类:对程序规格有意义、合理的输出的集合

        无效等价类:对程序规格无意义、不合理的输出的集合

(2)基本路径测试

(测试用例尽可能多的覆盖有效等价类,无效等价类输入刚好超过的数值)

计算流图的环形复杂度
V(G)=E-N+2
N:边数
G:结点

独立路径:
至少包含一条在定义该路径之前不曾用过的边

例:
假设输入的取值范围是1000 < year < 2001,请使用基本路径测试法为变量year 设计测试用例,使其满足基本路径覆盖的要求。

(1)画出流图

(2)计算环形复杂度

        V(G)=4

(3)确定独立路径

(4)设计测试用例执行基本集合中地路径

路径1:1-2-4-6-8 输入:1600输出:1
路径2:1-2-4-7-8输入:1800输出:0
路径3:1-2-5-8 输入:1996输出:1
路径4:1-3-8输入:1999输出:0

案例:黑盒白盒测试

3.集成测试

自顶向下的集成方式的主要优点:

(1)可以及早地发现和修复模块结构图中主要控制点存在的问题
(2)能较早地验证功能的可行性
(3)最多只需要一个驱动模块,减少驱动模块的开发成本
(4)支持故障隔离

自顶向下的集成方式的主要缺点

是需要开发和维护大量的桩模

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/249857.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ElementUI 组件:Container 布局容器

ElementUI安装与使用指南 Container 布局容器 点击下载learnelementuispringboot项目源码 效果图 el-container.vue&#xff08;Container 布局容器&#xff09;页面效果图 项目里el-container.vue代码 <script> import PagePath from "/components/PagePat…

【动态规划】【C++算法】1340. 跳跃游戏 V

作者推荐 【动态规划】【字符串】【表达式】2019. 解出数学表达式的学生分数 本文涉及知识点 动态规划汇总 LeetCode1340跳跃游戏 V 给你一个整数数组 arr 和一个整数 d 。每一步你可以从下标 i 跳到&#xff1a; i x &#xff0c;其中 i x < arr.length 且 0 < x…

git修改密码后mac使用sourceTree出现Authentication failed错误

1、退出sourceTree 2、在钥匙串中删除git对应站点Access Key 3、执行命令&#xff1a;git config --system --unset credential.helper 4、重新启动sourceTree&#xff0c;这时会弹出输入密码框&#xff0c;重新输入密码即可

数据库管理-第141期 DG PDB - Oracle DB 23c(20240129)

数据库管理141期 2024-01-29 第141期 DG PDB - Oracle DB 23c&#xff08;20240129&#xff09;1 概念2 环境说明3 操作3.1 数据库配置3.2 配置tnsname3.3 配置强制日志3.4 DG配置3.5 DG配置建立联系3.6 启用所有DG配置3.7 启用DG PDB3.8 创建源PDB的DG配置3.9 拷贝pdbprod1文件…

CSS实现文字大小自适应

遇到的问题&#xff1a; 在写页面的时候&#xff0c;兼容手机和PC页面&#xff0c;这样字体大小就需要根据页面的大小进行动态变化。 解决方法&#xff1a; clamp()函数 clamp() 函数的作用是把一个值限制在一个上限和下限区间&#xff0c;当这个值超过区间范围时&#xff0c;…

(学习日记)2024.02.01:引用变量 / 默认实参 / 一元作用域运算符 / 函数重载

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

RabbitMQ面试

1. 什么是消息中间件 消息中间件是在分布式系统中传递消息的软件服务。它允许不同的系统组件之间通过消息进行通信&#xff0c;而无需直接连接到彼此。消息中间件通常用于解耦系统的各个部分&#xff0c;提高系统的可扩展性、灵活性和可维护性。 2. 消息中间件解决了什么问题…

TCP/IP网络模型

大家好我是苏麟 , 今天聊聊TCP/IP四层网络模型 . 资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) 应用层 最上层的&#xff0c;也是我们能直接接触到的就是应用层&#xff08;Application Layer&#xff09;&#xff0c;我们电脑或手机使用的应用软件都…

初始MySQL

一 SQL的基本概述 基本概述 ▶SQL全称: Structured Query Language&#xff0c;是结构化查询语言&#xff0c;用于访问和处理数据库的标准的计算机语言。SQL语言1974年由Boyce和Chamberlin提出&#xff0c;并首先在IBM公司研制的关系数据库系统SystemR上实现。 ▶美国国家标…

JMeter 下载、安装、启动

JMeter安装部署依赖Java环境&#xff0c;所以首先得安装JDK。 JDK下载JDK环境变量配置 ① 新建系统环境变量JAVA_HOME ② 编辑系统变量Path ③ 新建系统变量CLASSPATH变量 JMeter下载安装 Apache JMeter - Apache JMeter™ JMeter安装部署依赖Java环境&#xff0c;所以首…

降维(Dimensionality Reduction)

一、动机一&#xff1a;数据压缩 这节我将开始谈论第二种类型的无监督学习问题&#xff0c;称为降维。有几个原因使我们可能想要做降维&#xff0c;其一是数据压缩&#xff0c;它不仅允许我们压缩数据使用较少的计算机内存或磁盘空间&#xff0c;而且它可以加快我们的学习算法。…

【2024美赛E题】985博士解题思路分析(持续更新中)!

【2024美赛E题】985博士解题思路分析&#xff01; 加群可以享受定制等更多服务&#xff0c;或者搜索B站&#xff1a;数模洛凌寺 联络组织企鹅&#xff1a;936670395 以下是E题老师的解题思路&#xff08;企鹅内还会随时更新文档&#xff09;&#xff1a; 2024美赛E题思路详解…

蓝桥杯2024/1/31----第十届省赛题笔记

题目要求&#xff1a; 1、 基本要求 1.1 使用大赛组委会提供的国信长天单片机竞赛实训平台&#xff0c;完成本试题的程序设计 与调试。 1.2 选手在程序设计与调试过程中&#xff0c;可参考组委会提供的“资源数据包”。 1.3 请注意&#xff1a; 程序编写、调试完成后选手…

没有外网Nginx如何配置如何开启https

判断是否支持open-ssl 在服务器执行如下命令 openssl version没有则安装open-ssl&#xff0c;由于服务器没有外网&#xff0c;可以离线安装openssl-3.0.1.tar.gz&#xff0c;我是在有网的服务器直接下载的&#xff0c;然后再上传到这台无网的服务器上 wget https://www.open…

React实现组件扩展机制

在java中&#xff0c;SPI机制是Java中提供的一种服务发现机制。同样&#xff0c;前端也很需要这种机制&#xff0c;这样可以做到组件可插拔&#xff0c;可替换&#xff0c;减少相互冗余。 快速使用 1.扩展点使用 通过使用Extension组件定义扩展点&#xff0c;通过name标记扩展…

Facebook的创新征程:社交媒体的演进之路

在当今数字化时代&#xff0c;社交媒体已经成为人们生活中不可或缺的一部分&#xff0c;而Facebook作为社交媒体领域的巨头&#xff0c;一直在不断创新和演进。本文将深入探讨Facebook的创新征程&#xff0c;追溯其社交媒体的发展历程&#xff0c;探讨其对用户、社会和数字时代…

巨人踏步,港口自动驾驶提速向前打开行业新空间

按照吞吐量排名&#xff0c;全世界最大的50个港口&#xff0c;中国占了29个。在中国的港口和码头上&#xff0c;一场进化正在发生&#xff1a;人在这个生态中占的比重越来越少&#xff0c;技术接管的要素正在越来越多。像是最具代表性的全球综合自动化程度最高的码头——上海洋…

12nm工艺,2.5GHz频率,低功耗Cortex-A72处理器培训

“ 12nm工艺&#xff0c;2.5GHz频率&#xff0c;低功耗Cortex-A72处理器培训” 本项目是真实项目实战培训&#xff0c;低功耗UPF设计&#xff0c;后端参数如下&#xff1a; 工艺&#xff1a;12nm 频率&#xff1a;2.5GHz 资源&#xff1a;2000_0000 instances 为了满足更多…

k8s二进制及负载均衡集群部署详解

目录 常见部署方式 二进制部署流程 环境准备 操作系统初始化配置 关闭防火墙 配置SELinux 关闭SWAP 根据规划设置主机名 在master添加hosts&#xff0c;便于主机名解析 调整内核参数 配置时间同步 部署docker引擎 在所有node节点部署docker引擎 部署etcd集群 签发…

Sentinel 知识总结

Sentinel 知识总结 Sentinel 是阿里巴巴开源的一个轻量级流量控制框架&#xff0c;主要用于保护系统稳定性和流畅性。它提供了多种流量控制策略&#xff0c;包括QPS限流、并发数限流、线程池限流等&#xff0c;并且支持集群限流。此外&#xff0c;Sentinel还提供了熔断降级、系…