软件工程PPT 笔记摘录(2)

分析软件需求

UML 提供了用例图来分析和描述用例视角的软件需求模型

UML 提供了交互图和状态图来描述行为视角的软件需求模型

UML 提供了类图来描述和分析业务领域的概念模型

顺序图:强调消息传递的时间序

通信图:突出对象间的合作

类图,描述系统的类构成,刻画系统的静态组成结构

用单数名词来描述类名,少用缩写

对象图是一种静态瞬时快照,归于静态视图范畴

一般而言,控制类并不负责处理具体的任务细节,而是负责分解任务,并通过消息传递,将任务分派给其他对象类来完成,协调这些对象之间的信息交互

如果系列规模较大,分析类的数量多,关系复杂,难以用一张类图来完整和清晰地表示,那么可以分多个子系统来绘制分析类图

评审软件需求:内容的完整性,正确性,准确性,一致性,多余性,可追踪性,文档规范性,表述可读性,图表一致性(我想知道简答题到底是怎么考察,考这些知识确实是写不出来)

软件设计基础

功利一点,现在是期末考试复习,考试会挖什么空,接下来的内容尽量选这方面的

类的地位:类既是最基本的设计单元,也是最基本的模块单元(有点像初中政治,就怕是无用功)

软件设计的基本原则之一:模块化、高内聚度和低耦(ǒu)合度原则(感觉可能可以用上)

简答题会不会就是每一个ppt的小结部分的内容
软件设计是要给出软件需求的实现解决方案
设计既要满足需求,也要关注质量;设计用于指导实现和编码
软件设计有其过程,要循序渐进地开展设计
从体系结构设计、用户界面设计、详细设计
软件设计要遵循一系列的基本原则
模块化、信息隐藏、逐步求精、多视点等
面向对象软件设计的特点
基于面向对象的概念和抽象,系统性的设计支持,具有多种优点
对软件设计结果进行文档化和评审
撰写软件设计文档,发现和纠正软件设计中存在的缺陷

软件体系结构设计

包间关系:构成关系,依赖关系

在这里插入图片描述
之前一直弄不清楚的图之间的关系的汇总

包在模型管理过程中是配置管理的基本单元,同时也为访问控制提供基本手段
(像是要考察的句子)

软件系统的输入由数据源(data source)提供

管道与过滤器模式的特点
自然地解决具有数据流特征的软件需求
可独立地更新、升级过滤器来实现软件系统的扩展和进化

子系统是服务提供方,边界类是服务请求方

//怎么感觉没有什么内容,根本记不下来

软件体系结构的输出:软件模型和软件文档

软件体系结构设计的特殊性
具有宏观、全局、层次、战略、多视点、关键性等特点
逻辑视点、物理视点等,可用包图、部署图来表示
软件体系结构设计的重要性
针对软件系统全局性、基础性技术问题给出技术解决方案
软件体系结构的风格
管道、层次、MVC、黑板等等,针对不同软件需求及特点
软件体系结构设计的过程、策略和成果
考虑软件关键需求、利用已有软件资产、关注软件质量
软件体系结构的设计模型和文档

用户界面设计

用户界面元素:静态元素,动态元素,输入元素,命令元素

用户界面初步设计不关注美观和布局,关注界面元素及其内容

交互图
表示特定场景下的跳转及跳转发生时的消息传递

类图
表示界面间所有可能发生的跳转及跳转的原因

用户界面设计
以用户为中心
遵循理解性、易操作性、一致性、容错性和人性化等原则

用户界面设计的过程
以软件需求为依据
概念设计、跳转关系设计、界面精化、设计评审

用户界面设计的结果
用户界面原型
UML类图、交互图等模型

(ppt是不是把所有小结整合即可)

软件详细设计

所有设计元素最终通过代码加以实现

如果A与B有消息,那么它们间有关系:关联、聚合和组合(这句话看见很多次了)

有些数据需要持久保存的,存放在永久存储介质中
开展数据设计,以支持信息的抽象、组织、存储和读取

子系统设计的结果
包图、构件图、顺序图、活动图、类图

构件是可独立部署和运行的设计元素

在子系统中设置哪些设计元素
构件、设计类或子系统

下面这个非常重要
如果一个对象a向对象b发消息,那么对应的类A与类B之间存在关联或者依赖关系
如果子系统外的设计元素通过子系统的接口与子系统进行交互,那么这些设计元素与子系统之间存在依赖关系
如果多个设计类之间具有一般和特殊的关系,那么它们之间存在继承关系

软件实现基础

软件测试包括集成测试,确认测试,系统测试

c语言是结构化的程序设计语言

编写必要的异常定义和处理代码,使得程序能够对异常情况进行必要的处理,防止由于异常而导致的程序终止或崩溃

软件实现的输出
源程序代码
部署在不同计算节点上的可执行程序代码
软件测试报告等

编写代码

软件缺陷是指软件制品中存在不正确的软件描述和实现

每个软件缺陷都被给予一个唯一的标识符

借助于技术问答社区来解决编码和和调试中遇到的问题(以后自己有代码方面的问题,可以多借助互联网平台来进行提问)

软件测试

软件缺陷不可避免

软件测试的目的是为了发现软件中的缺陷。它只负责发现缺陷,不负责修复和纠正缺陷(只专注于完成一件事情)

软件测试的前提和关键是要设计出有效的测试用例

集成测试是黑盒测试

单元测试是白盒测试

α测试(内测与外侧,游戏有这个说法,接触过,所以觉得比较贴近生活)
软件开发公司组织内部人员模拟各类用户行为对即将面市的软件产品(称为α版本、内部测试版)进行测试,发现错误并修正
尽可能逼真地模拟实际运行环境和用户对软件产品的操作,并尽最大努力涵盖所有可能的用户操作方式
经α测试并进行修改后的软件产品称为β版本(也称外部测试版)
β测试
软件开发公司组织各方面的典型用户在日常工作中实际使用β版本,或为对外进行宣传而将β版本免费赠送给典型用户(很多情况下,β版本可以通过Internet免费下载,也可以向软件公司索取),并要求用户报告异常情况、提出批评意见
β测试是在与开发者无法控制的环境下进行的软件现场应用

回归测试最好能够自动化
单元测试是回归测试的基础

穷举测试是不可能的(这个就像我们刷题,题是穷举不完的,我们只可以尽可能多做不同类型的题目举一反三,积累经验)

黑盒测试用例的开发可以与软件实现并行进行,能够缩短软件开发周期
(按照我的理解,就是在不知情的情况下直接测试)

软件部署

软件部署是指将目标软件系统进行收集、打包、安装、配置和发布到运行环境的过程
单机部署和分布式部署

软件维护与演化

何为改善性维护?
对软件进行改造以增加新的功能、修改已有的功能
所以改善性维护改变了软件的功能(有一个选择题考察了这个知识)

软件演化:主动面对变更,功能增强粒度大

负面变更会破坏软件的结构和质量,进而增加维护的成本和难度(改变其实不一定是好的)

软件逻辑老化
解决软件逻辑老化的有效方法之一就是对软件进行重构
(确实啊,缝缝补补不如一切重头再来,但是我们谁可以直接remake呢)

软件项目管理

软件项目管理要管好三类对象:过程、人员和产品

定义和明确过程是软件开发的前提

支持敏捷方法过程:迭代模型

基于甘特图表示的软件项目计划

软件项目规模的估算结果过于乐观(很多时候我们都是对结果过于乐观,其实盲目的乐观还是不行的)

软件质量的保证内容
掌握软件产品质量
软件测试
提交软件质量报告
软件测试报告,说明质量问题
汇报项目组和管理层
例行的质量回报,便于改进管理和技术手段

基线:已经通过正式复审和批准的软件产品、标准或规约

重要内容
迭代性的开发 – 分阶段持续提交可演示产品
以代码为中心 – 开源软件
以敏捷为手段 – 敏捷方法
必须系统模型 – UML模型
适当软件文档 – 文档规范

程序及其质量保证方法

程序质量的保证方法:

遵循编码风格
采用程序设计方法
开展代码重用
进行结对编程

分析、发现和审查代码
人工审查、静态分析、程序测试

软件及其特点

要编写出高质量的程序需要循序渐进地开展工作(做大部分事情感觉都是这个步骤)

支撑软件
辅助软件开发和运维,帮助开发人员完成软件开发和维护工作的一类软件
示例:SonarQube、Visual Studio、Eclipse等
常见的一些软件,第一个软件我没有怎么接触过

结语

简答题出自于ppt和教材,感觉还是不怎么能找到终点,简答题占比30分,把ppt全部看了一遍,感觉也差不多了

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vscode调试 反汇编c/c++ 查看汇编代码gdb/lldb

先看下流程! 先看下流程! 有问题请留言! 文章目录 必备F5开启调试左侧侧边栏->确保打开回调栈右键函数栈->查看反汇编 方法二:手动输入命令查看 必备 使用c/c 插件,这应该是必备的。 F5开启调试 左侧侧边栏-&…

【Leetcode】1154. 一年中的第几天

文章目录 题目思路代码 题目 1154. 一年中的第几天链接 思路 题目要求是给定一个字符串 date,它代表一个日期,采用标准的 YYYY-MM-DD 格式。需要计算这个日期是当年的第几天。 首先,我们可以通过字符串的索引来提取年、月和日的数值&…

C语言实验5:结构体

目录 一、实验要求 二、实验原理 1. 普通结构体 1.1 显示声明结构体变量 1.2 直接声明结构体变量 ​编辑 1.3 typedef在结构体中的作用 2. 结构体的嵌套 3. 结构体数组 4. 指向结构体的指针 4.1 静态分配 4.2 动态分配 三、实验内容 1. 学生数据库 代码 截图 …

穿越时光的镜头:2023回顾与2024展望

前言 2023 年就像一本充满着惊喜和挑战的书籍,它的每一页都留下了我生活中不同的痕迹。回顾过去,我发现了许多意想不到的成长和启示,也体验了生活的起起伏伏。 这篇文章是对 2023 年的一个小小总结,也是对未来的一点期许。在这里…

PAT 乙级 1046 划拳

划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为:每人口中喊出一个数字,同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和,谁就赢了,输家罚一杯酒。两人同赢或两人同输则继续下一轮&…

Unity中URP下精度修饰符real

文章目录 前言一、real是什么?1、我们在项目的Packages下找到如下文件:2、HAS_HALF(1代表有half精度,0代表没有half精度)3、PREFER_HALF4、REAL_IS_HALF5、如果 real is half6、否则为float 二、总结 前言 在使用雾效时,ComputeFo…

Git使用教程 gittutorial

该教程对该文章的翻译:https://git-scm.com/docs/gittutorial 本文介绍怎用使用 Git 导入新的工程、修改文件及如何其他人同步开发。 首先, 可以使用以下指令获取文档帮助 git help log笔者注:不建议看这个文档,标准的语法介绍…

Lesson 06 vector类(上)

C:渴望力量吗,少年? 文章目录 一、vector是什么?二、vector的使用1. 构造函数2. vector iterator3. vector 空间增长问题4. vector增删查改 三、vector实际使用 一、vector是什么? vector是表示可变大小数组的序列容器…

条款13:以对象管理资源

文章目录 没有管理的情况解决办法之unique_ptr智能指针解决办法之shared_ptr智能指针总结 没有管理的情况 资源是指一旦你使用完它,就需要返回系统的东西。 class Investment { ... }; // 投资类型层次结构的基类 Investment* createInvestment(); // 工厂函数&…

Vue学习计划-Vue3--初识Vue3,vite创建Vue3项目

1. Vue3简介 性能的提升 打包大小减少41%初次渲染快55%,更新渲染快133%内存减少54% 源码的升级 使用Proxy代替defineProperty实现响应式重写虚拟DOM的实现和Tree-Shaking 拥抱TypeScript Vue3可以更好的支持TypeScript 新的特性 Composition Api(组合Api) setupref…

基于CMake的大型C++工程组织

此文适合大型C工程,涉及到多个自定义库,多个第三方库,以及还有给第三方用户进行二次开发的需求下,应对这种复杂编译环境下的工程组织方式的一些经验介绍,希望给大型工业软件的开发者一些参考 一个大型工程&#xff0c…

python统计分析——协方差和pearson相关系数

参考资料:用python动手学统计学 使用数据见代码: dic{"x":[18.5,18.7,19.1,19.7,21.5,21.7,21.8,22.0,23.4,23.8],"y":[34,39,41,38,45,41,52,44,44,49] } cov_datapd.DataFrame(dic) 变量x、y的协方差Cov(x,y)的计算公式如下&am…

解决达梦数据库服务启动失败,错误 2: 系统找不到指定的文件

当在我们在Window环境下使用达梦数据库的过程中,可能会遇到这种错误,重启电脑后达梦数据库突然连接不上了,无法访问,但是我们打开任务管理器查看服务时,会发现DmServiceDMSERVER仍然存在,但是已停止的状态。 点击服务启动时,报错: Windows 无法启动 DmserviceDMSERVER…

类的加载顺序问题-demo展示

面试的的时候经常会被问到包含静态代码块、实例代码块和构造器等代码结构的加载顺序问题,下面借用一个面试题,回顾一下类的代码加载顺序。 public class AooTest {public static void main(String[] args) {AooTest.f1();}static AooTest test1 new Ao…

数据库——建立ER模型及关系模型转换

​ 【实验内容及要求】 使用画图工具或MySQL Workbench等建模工具设计出相应的ER图,将局部ER图合并为一个整体ER模型,在ER模型中填加多样性约束,建立显示主键的ER模型,标识实体的属性,确认主键、外键。将上述ER图转化…

深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节 栈基本工作原理

深入浅出图解C#堆与栈 C# HeapingVS Stacking第二节 栈基本工作原理 [深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈](https://mp.csdn.net/mdeditor/101021023)[深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节 栈基本工作原理](https://mp.cs…

brew 安装openapi-generator提示@@HOMEBREW_JAVA@@/bin/java: No such file or directory

brew 安装openapi-generator之后,运行openapi-generator命令,提示HOMEBREW_JAVA/bin/java: No such file or directory 经过一番查阅,应该是Java没有配置到环境变量中 查询电脑已经安装的Java版本 /usr/libexec/java_home 编辑.bash_profile…

Linux环境grep搜索方法记录

1 grep grep 命令,用来搜索字符串所在位置,可以具体到不同文件,不同行; 在Linux 下,查看命令释义如下 zhaocubuntu2004:~$ grep --help Usage: grep [OPTION]... PATTERNS [FILE]... Search for PATTERNS in each FI…

大数据 - 大数据入门第一篇 | 关于大数据你了解多少?

🐶1.1 概述 大数据(BigData):指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 大数据主要解决、海量数据的采…

2023-12-21 LeetCode每日一题(美丽塔 II)

2023-12-21每日一题 一、题目编号 2866. 美丽塔 II二、题目链接 点击跳转到题目位置 三、题目描述 给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。 你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i ,高度为 heights[i] 。 如果以下条件满足&a…