软件工程(最简式总结)

目录

第一章:概述

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.mzph.cn/news/666483.shtml

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

相关文章

flask_django_python五金电商网络营销的可视化分析研究

前面部分完成了系统需求分析&#xff0c;了解到新闻数据业务方面的需求&#xff0c;系统主要分为用户管理、五金信息管理、在线留言、系统管理等功能。销的可视化研究&#xff0c;并对这些数据进行处理&#xff0c; 然后对这些数据进行可视化分析和统计。 Python 爬虫技术目前来…

js数组和字符串之间的转换方式以及数组的一些方法

一、数组和字符串之间的转换方式 1&#xff09;将字符串切割成字符串数组—stringObject.split(separator, howmany) seperator-----字符串、正则表达式&#xff0c;必需 howmany------指定返回的数组的最大长度&#xff0c;可省略&#xff0c;省略后全量返回 源代码 var str&q…

c++阶梯之类与对象(一)

目录 1.面向过程与面向对象 c语言的视角&#xff1a; c的视角 2. 类的引入 3. 类的定义 3.1 类的两种定义方式 3.2 成员变量如何命名 4. 类的访问限定符与封装 4.1 访问限定符 4.2 封装 5. 类的作用域 6. 类的实例化 7. 类对象模型 7.1 怎么计算一个类对象的…

redis布隆过滤器(Bloom)详细使用教程

文章目录 布隆过滤器1. 原理2. 结构和操作3. 特点和应用场景4. 缺点和注意事项 应用-redis插件布隆过滤器使用详细过程安装以及配置springboot项目使用redis布隆过滤器下面是布隆过滤器的一些基础命令 扩展 布隆过滤器 Bloom 过滤器是一种概率型数据结构&#xff0c;用于快速判…

CUDA/TensorRT部署知识点

CUDA相关: 1、CUDA核函数嵌套核函数的用法多吗? 答:这种用法非常少,主要是因为启动一个kernel本身就有一定延迟,会造成执行的不连续性。 2、如下代码里的 grid/block 对应硬件上的 SM 的关系是什么? 答:首先需要理解grid/block是软件层的概念,而SM是硬件层的概念。所…

springboot151基于web的人力资源管理系统的设计与实现

人力资源管理系统的设计与实现 摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;员工信息因为其管理内容繁杂&#xff0c;管理数量繁…

SSH免密切换服务器案例-ssh协议(公钥和私钥)

公钥和私钥理解 公钥提供加密&#xff0c;私钥解密&#xff0c;公钥可以共享&#xff0c;私钥不可以。举例公钥相当于锁头&#xff0c;可以给别人用&#xff0c;钥匙相当于私钥&#xff0c;只能开自己发出去的锁头&#xff0c;也就是私钥和公钥成对&#xff0c;私钥只能解密对…

~小青蛙跳台阶~C语言~刷题

引言 这次&#xff0c;我们要与一只活泼可爱的小青蛙合作&#xff0c;并引导它跳台阶。小青蛙的体力十分充沛&#xff0c;尤其喜欢跳跃&#xff0c;让它作为我们的助手&#xff0c;来看看有几种跳跃指定台阶数的方法。 本文会涉及到函数递归的知识&#xff0c;后续我会更新讲解…

清华系2B模型杀出,性能吊打LLaMA-13B

2 月 1 日&#xff0c;面壁智能与清华大学自然语言处理实验室共同开源了系列端侧语言大模型 MiniCPM&#xff0c;主体语言模型 MiniCPM-2B 仅有 24 亿&#xff08;2.4B&#xff09;的非词嵌入参数量。 在综合性榜单上与 Mistral-7B 相近&#xff0c;在中文、数学、代码能力表现…

基于深度卷积神经网络的图像配准(DeepSlice)

文章目录 一、基于DeepSlice的切片配准1.1、研究现状1.2、网络模型&#xff08;DeepSlice&#xff09;1.3、优化策略1.3.1、开发了一个基准数据集&#xff08;GT&#xff09;1.3.2、构建了阶段二的训练数据集&#xff08;增强训练&#xff09;1.3.3、角度集成 切割索引&#x…

【Linux】统信服务器操作系统V20 1060a-AMD64 Vmware安装

目录 ​编辑 一、概述 1.1 简介 1.2 产品特性 1.3 镜像下载 二、虚拟机安装 一、概述 1.1 简介 官网&#xff1a;统信软件 – 打造操作系统创新生态 统信服务器操作系统V20是统信操作系统&#xff08;UOS&#xff09;产品家族中面向服务器端运行环境的&#xff0c;是一款…

Linux驱动 SPI子系统

1、SPI协议 SPI&#xff08;Serial Peripheral Interface&#xff09;是一种同步串行数据通信协议&#xff0c;通常用于连接微控制器和外部设备&#xff0c;如传感器、存储器、显示器等。SPI协议使用四根线进行通信&#xff0c;包括时钟线&#xff08;SCLK&#xff09;、数据输…

CSS要点总结

一、CSS 快速入门 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>css 快速入门</title><!-- 解读1. 在 head 标签内&#xff0c;出现了 <style type"text/css"></style…

Redis 的持久化机制是什么?各自的优缺点?

Redis 提供两种持久化机制 RDB&#xff08;默认&#xff09; 和 AOF 机制: RDB&#xff1a;是Redis DataBase缩写快照 RDB是Redis默认的持久化方式。按照一定的时间将内存的数据以快照的形式保存到硬盘中&#xff0c;对应产生的数据文件为dump.rdb。通过配置文件中的save参数来…

ChatLaw:基于LLaMA微调的法律大模型

文章目录 动机数据组成模型框架模型评估 北大团队发布首个的中文法律大模型落地产品ChatLaw&#xff0c;为大众提供普惠法律服务。模型支持文件、语音输出&#xff0c;同时支持法律文书写作、法律建议、法律援助推荐。 github地址&#xff1a;https://github.com/PKU-YuanGroup…

备份RK35XX 设备的ubuntu根文件系统的方法

简介 我们使用 RK35XX 提供的SDK包制作了一个完整的 ubuntu 镜像,烧录到设备中,会在设备中安装很多我们需要的软件,运行的一些自己写的脚本和业务程序,当我们有很多台设备时,不可能每台都一个个去安装,此时我们就需要一个工具来备份当前设备的根文件系统,然后再放到 SD…

2023年上-未来几年我要做什么

1月份&#xff0c;离职。 2月份&#xff0c;春节休假回来&#xff0c;中旬去参加了一个月的瑜伽培训&#xff0c;学会了倒立、鹤蝉。。。。 3月份&#xff0c;瑜伽培训结束&#xff0c;开始收拾房子&#xff0c;并调研各类项目。 4月份&#xff0c;参与了朋友的区块链项目 …

Leetcode—203. 移除链表元素【简单】

2024每日刷题&#xff08;一零九&#xff09; Leetcode—203. 移除链表元素 实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(n…

嵌入式linux移植篇之kernel

Linux的启动过程概述 Linux内核的启动过程是一个复杂而又有序的流程&#xff0c;涉及到硬件初始化、引导加载、内核初始化等多个步骤。以下是Linux内核的典型启动流程&#xff1a; BIOS/UEFI阶段&#xff1a; 电源启动&#xff1a;计算机通电后&#xff0c;BIOS&#xff08;…

#从零开始# 在深度学习环境中,如何用 pycharm配置使用 pipenv 虚拟环境

为Python项目创建虚拟环境 在深度学习环境和一般python环境中安装pipenv基本一致&#xff0c;只需要确认好pipenv指定的python版本即可,安装pipenv前&#xff0c;可以通过python --version来确认安装版本 快捷键&#xff1a;crtl alt S 查看interpreter&#xff0c;查看所有…