软件工程(最简式总结)

目录

第一章:概述

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,一经查实,立即删除!

相关文章

视觉惯性SLAM系列——ORB-SLAM3的重定位线程(Relocalization Thread)(九)

ORB-SLAM3的重定位线程&#xff08;Relocalization Thread&#xff09;&#xff08;九&#xff09; 重定位线程&#xff08;Relocalization Thread&#xff09;在ORB-SLAM3系统中扮演着关键的角色&#xff0c;尤其是在跟踪丢失的情况下。这个线程的主要任务是在相机失去当前轨迹…

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

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

Element-plus之el-upload上传图片后回显,以及将回显的图片再次上传

在实际的业务中往往需要把提交但尚未上传的图片显示回前端&#xff0c;等待上传&#xff0c;以下方法是将提交后的图片回显的方法 <template><el-uploadaction"/api/imageContainer/saveOrUpdate"accept"image/bmp,image/jpeg,image/jpg,image/png,ima…

优雅的从HuggingFace下载模型

1. 下载全部文件 以下都以下载bloom模型为例 git lfs install git lfs clone https://huggingface.co/bigscience/bloom-7b1这种方式下载会显示下载的进度及网速&#xff0c;因此一般推荐使用这种方式下载。如果直接使用git clone https://huggingface.co/bigscience/bloom-7…

【云计算】opentack的高级服务部署与调优

opentack的高级服务部署与调优 swift 对象存储 安装 Swift 服务。安装完成后&#xff0c;使用命令创建一个名叫 examcontainer 的容器&#xff0c;将 cirros-0.3.4-x86_64-disk.img 镜像上传到 examcontainer 容器中&#xff0c;并 设置分段存放&#xff0c;每一段大小为 10…

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

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

Linux内核与驱动面试经典“小”问题集锦(1)

笔者混迹职场这么多年来换了不少工作。头些年做的是单片机工程师&#xff0c;后来转入了Linux。转入Linux后&#xff0c;一开始做BSP和驱动工程师&#xff08;当然后来应用工程师的事也没少干&#xff09;&#xff0c;近几年来专做了Linux内核与系统工程师。由打转入Linux后&am…

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;用于快速判…

解决方案必备PPT网站

解决方案工作过程中&#xff0c;必备的技能: 1.word排版&#xff08;投标文件的编写等...&#xff09; 2.PPT汇报&#xff08;如何快速找到你需要的模版&#xff0c;并且输入汇报资料&#xff09; 免费&#xff08;免费使用&#xff0c;同时也不需要注册&#xff09; 1.优…

【ETOJ P1013】小e的书架 题解(二分查找)

题目描述 小e要把 n n n 本规格相同的书放进书架里&#xff0c;对于每一本书&#xff0c;他可以横着放也可以竖着放&#xff08;不能斜着放&#xff09;。 书的宽度为 1 1 1&#xff0c;高度为 h h h&#xff0c;书架的高度为 t t t&#xff0c;意味着如果你横着放&#…

CUDA/TensorRT部署知识点

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

前端学习之路(4) vue2和vue3的区别

一. 根节点不同 vue2中必须要有根标签vue3中可以没有根标签&#xff0c;会默认将多个根标签包裹在一个fragement虚拟标签中&#xff0c;有利于减少内存。 二. 组合式API和选项式API 在vue2中采用选项式API&#xff0c;将数据和函数集中起来处理&#xff0c;将功能点切割了当…

C语言如何控制输出最⼩宽度?

一、问题 数据的美观性问题&#xff0c;不仅需要使⽤标志进⾏占位&#xff0c;还需要对宽度等进⾏控制。那么如何控制宽度呢&#xff1f; 二、解答 控制宽度的问题&#xff0c;处理起来其实很简单。如果输出数据的实际位数⼤于定义的宽度&#xff0c; 则按实际位数输出&#x…

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;是一款…