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

news2025/1/23 15:04:20

分析软件需求

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全部看了一遍,感觉也差不多了

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

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

相关文章

【SAP-FICO】--总账标识配置路径OBXR

FICO业务需求: F-02,财务会计凭证填写09客户A时,带出的总账标识为可编辑。 需求截图: 第一步:了解需求 首先,我们要明白,财务凭证生成,是分多种类型(不同类型的凭证&a…

【深度学习:Few-shot learning】理解深入小样本学习中的孪生网络

【深度学习:Few-shot learning】理解深入小样本学习中的孪生网络 深入理解孪生网络:架构、应用与未来展望小样本学习的诞生元学习小样本学习孪生网络的基本概念孪生网络的细节Triplet Loss架构特点关键组件训练过程主要应用领域未来展望示例图片结论 备注…

[JS设计模式]Prototype Pattern

Prototype pattern Prototype pattern可便于同类型的多个对象共享属性。原型(prototype)是JS原生的对象,其他对象可以通过原型链(prototype chain)来访问原型。单独看这句描述可能还是有点儿抽象,下面通过…

【HarmonyOS】ArkTS语言介绍与组件方式运用

从今天开始,博主将开设一门新的专栏用来讲解市面上比较热门的技术 “鸿蒙开发”,对于刚接触这项技术的小伙伴在学习鸿蒙开发之前,有必要先了解一下鸿蒙,从你的角度来讲,你认为什么是鸿蒙呢?它出现的意义又是…

OSG绘制视锥体

最近要来实现一个相机位姿态可视化的需求&#xff0c;不想使用pangolin&#xff0c;不好集成&#xff0c;想用osg来做可视化。以下是demo效果。 代码实现&#xff1a; // Cone_of_vision.cpp : 定义控制台应用程序的入口点。 //#include "stdafx.h" #include <os…

Angular进阶之六:Progressive rendering

简介 Progressive Rendering 是一种提高 Web 应用性能的方法&#xff0c;允许页面在加载过程中逐步呈现&#xff0c;以提高用户体验。在本文中&#xff0c;我们将探讨如何在 Angular 中通过自定义指令实现 Progressive Rendering&#xff0c;特别是处理从服务器获取大量数据的…

PAT 乙级 1046 划拳

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

数据预处理时,怎样处理类别型特征?

1. 序号编码 序号编码通常用于处理类别间具有大小关系的数据。例如成绩&#xff0c;可以分为低、中、高三档&#xff0c;并且存在“高>中>低”的排序关系。序号编码会按照大小关系对类别型特征赋予一个数值ID&#xff0c;例如高表示为3、中表示为2、低表示为1&#xff0…

【网络安全 | MD5截断比较】PHP、Python脚本利用

前言 在解题中&#xff0c;当遇到类似 substr(md5(a),-6,6) 7788这样的MD5截断比较的题目时&#xff0c;只有求出a的值才能进行接下来的操作。 一个一个去猜是不可能的&#xff0c;通常使用脚本解决&#xff0c;文末给出实战案例。 PHP循环脚本 <?phpfor($i1;$i<9…

机器学习(一) -- 概述

系列文章目录 机器学习&#xff08;一&#xff09; -- 概述 机器学习&#xff08;二&#xff09; -- 数据预处理 未完待续…… 目录 系列文章目录 前言 一、机器学习定义&#xff08;是什么&#xff09; 二、机器学习的应用&#xff08;能做什么&#xff09; 三、***机器…

蒙牛的京东店铺的数字化经营

1、蒙牛的京东店铺的数字化经营框架是怎样的&#xff1f; 2. 蒙牛的京东店铺是如何进行环境分析的&#xff1f; 结合波特五力模型进行分析&#xff1a;客户、供应商、企业自身、潜在竞争对手、同行业竞争对手 3.蒙牛的京东店铺采取了哪些方式进行线上引流&#xff1f; 找智商长…

2023-12-23 LeetCode每日一题(移除石子使总数最小)

2023-12-23每日一题 一、题目编号 1962. 移除石子使总数最小二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数数组 piles &#xff0c;数组 下标从 0 开始 &#xff0c;其中 piles[i] 表示第 i 堆石子中的石子数量。另给你一个整数 k &#xff0c;请你执行下述…

Zookeeper-Zookeeper应用场景实战(二)

1. Zookeeper 分布式锁实战 1.1 什么是分布式锁 在单体的应用开发场景中涉及并发同步的时候&#xff0c;大家往往采用Synchronized&#xff08;同步&#xff09;或者其他同一个 JVM内Lock机制来解决多线程间的同步问题。在分布式集群工作的开发场景中&#xff0c;就需要 一种…

Spring Cloud Gateway + Nacos 实现动态路由

1、maven 依赖 主要依赖 <!-- 网关 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>案件差不多完整主要依赖 <!--Spring boot 依赖(微服务基…

LLM之RAG实战(九)| 高级RAG 03:多文档RAG体系结构

在RAG&#xff08;检索和生成&#xff09;这样的框架内管理和处理多个文档有很大的挑战。关键不仅在于提取相关内容&#xff0c;还在于选择包含用户查询所寻求的信息的适当文档。基于用户查询对齐的多粒度特性&#xff0c;需要动态选择文档&#xff0c;本文将介绍结构化层次检索…

四种常见智能指针的介绍

一、介绍 当类中有指针成员时&#xff0c;一般有两种方式来管理指针成员&#xff1a;一是采用值型的方式管理&#xff0c;每个类对象都保留一份指针指向的对象的拷贝&#xff1b;另一种更优雅的方式是使用智能指针(smart pointer)&#xff0c;从而实现指针指向的对象的共享。 …

UDP协议基本原理

前言 本文主要讲解传输层中的UDP协议&#xff0c;我准备从UDP的特点出发&#xff0c;深入理解UDP协议&#xff0c;从UDP协议的结构推出UDP协议的特点&#xff1b; 一、理解端口号 前面我们总是说用IP加端口号的方式定位全网的唯一进程&#xff0c;通常在TCP/IP中&#xff0c;我…

gitee(码云)仓库内容更新,使用TortoiseGit同步本地仓库和远程仓库

前言&#xff1a; 网上有很多同步仓库教程&#xff0c;但都是git命令行操作。这篇使用TortoiseGit可视化操作同步本地仓库和远程仓库 克隆本地仓库&#xff0c;上传远程仓库&#xff0c;下载TortoiseGit可以看这篇使用gitee&#xff08;码云&#xff09;上传自己的代码&#xf…

电脑忘记开机密码很着急?一招搞定

前言 本教程适合没有登录微软账号的电脑哦&#xff5e; 随着手机越智能&#xff0c;人们花在电脑上的时间越来越少了。你家的电脑多久没开机了&#xff1f; 小伙伴有没有这样的经历&#xff1a;很久没有打开过电脑的你&#xff0c;突然有一天打开了电脑&#xff0c;却想不起…

继续声明 | 连声明都抄,谁抄袭谁,一目了然,现在竟然恬不知耻的反咬一口。

继续声明 | 连声明都抄&#xff0c;谁抄袭谁&#xff0c;一目了然&#xff0c;现在竟然恬不知耻的反咬一口。 一、本账号为《机器学习之心》博主CSDN唯一官方账号&#xff0c;唯一联系方式见文章底部。 二、《机器学习之心》博主未授权任何第三方账号进行模型合作、程序设计、…