嵌入式软考备考_7 系统开发过程和项目管理

news2025/1/16 18:05:43

系统开发过程和项目管理

开发模型

把开发过程分成一些阶段。

image-20230506173235225

瀑布模型:SDLC。缺陷在于最开始需求要明确,但是开发周期很难不变动。

image-20230506173252523

因此改进:

image-20230506173631547

原型:一个demo。

快速原型模型:抛弃模型,一旦获取到了用户需求,就可以抛弃掉原型了。

演化模型:在原型基础上根据用户需求进行改进。但是问题在于如果用户干涉过多,用户主导项目,那么难以控制项目时间。

因此把原型和瀑布模型结合,诞生了螺旋模型和增量模型。

螺旋模型:适合项目大,风险高的项目。从demo做起,可能做到最后才有一个可操作的产品。

image-20230506174212636

增量模型:每次发布的都是可操作的产品。

image-20230506174341042

V模型:加了一些验证和测试。对软件要求质量高,缺点在于测试要在编码之后才能进行。

image-20230506174434781

喷泉模型:面向对象。

图片来源:喷泉模型是什么?_智慧蓉城的博客-CSDN博客

在这里插入图片描述

RAD:基于构件模型和瀑布模型的快速模型,现在常用。

构件组装模型:

image-20230506174811645

构件库大大提高了移植等开发的效率。

敏捷方法模型:符合敏捷宣言就是敏捷方法。

image-20230507002834816

大概原理就是小的版本快速交付。

image-20230507002950267

image-20230507014935345

典型的敏捷方法:

  • 极限编程。

image-20230507003026634

并非必须全部应用,要根据具体项目具体分析。

  • 水晶方法系列:crystal,用较少的纪律约束仍然能成功。

  • 开放式源码 openUp:开发者地域上分布很广,差错排障高度并行。任何人把补丁发给维护者,维护者把补丁并入源码库。

  • scrum 并列争球法:不断迭代。把一段时间比如30天的迭代称为一个冲刺,多次按优先级进行的迭代实现需求。

  • FDD 功用驱动开发方法,短时迭代阶段,编程任意一般分为首席程序员(项目协调)和类程序员(源码编写)。

  • asd 自适应软件开发方法,分为猜测、合作、学习三个阶段。

  • dsdm 动态系统开发方法,业务中心框架开发方法,以业务为核心。

项目管理

image-20230507015050583

专家判断法:专家利用经验判断。

三点估算法:最好情况需要多少人员?最坏情况呢?一般情况呢?根据权重计算。

功能点估算:根据项目的几个功能点估算。

时间管理

PERT图

image-20230507151157031

虚线是不需要时间的活动。

最早开始时间从头开始正推。如E活动。最早要等到到达3结点后开始,也就是第四天开始(AB最大值),最早第七天结束。

image-20230507153236729

25最早完成。

最迟工作时间从该节点开始反推。

image-20230507162615404

A:总时差0

B:2

C:2

……

关键路径:总时差=0的一条路径。1-2-3-4-6-7-9,这条关键路径上的事件不能延误,延误会影响整体项目流程。

PERT图关系表示的很明白。

甘特图

image-20230507170144256

甘特图时间流程,资源规划方便。但是表示关系表示的不好。

例题:

image-20230507170401075

最少时间是最长路径 ABCEFJ 18天。

BC BD同一个人开发,要么先BC后BD,BD晚3天;要么先BD后BC,BC晚2天,总时长+2.

image-20230507171603409

本来是02578最久,55天。

改变后相当于0268是8+23+25=56天。

image-20230507172253197

最短时间:ABDIJL 20天。

经过GH的路径:17天,所以GH松弛时间20-17.

软件配置管理

image-20230507173833758

image-20230507173850277

开发库测试后可以进入受控库,可以修改,修改后再测试放回。

检查点:规定的时间间隔内对项目检查, 看看实际与计划之间的差异并修改。

里程碑:阶段性工作的标志。

基线:经过正式的评审,重要的里程碑。不能轻易改变。

  • 功能基线:系统设计规格说明书。
  • 分配基线 srs:需求规格说明书。
  • 产品基线:软件产品的全部配置项的规格说明(综合)。

image-20230507174911621

提交评审通过后再申请变更,把代码拉下来检出到工作状态开始变更。

风险分类

image-20230508055744648

CMM认证

一种认证,通过的项目可能更受青睐。软件研制和软件测试中的实践。

image-20230508060315024

18个关键域:

image-20230508060824539

考试会问哪个评审是哪个级别的。

需求工程

需求分析很重要,有时候做不好整个项目都会崩。

需求开发:需求获取,需求分析,需求定义(srs规格说明书),需求验证。

需求管理:上面的部分确定后,通过需求基线申请改动实际的需求。包括变更控制,版本控制,需求跟踪,需求状态跟踪。

需求分为:软件需求,用户对系统在功能、控制、行为、性能、设计约束等方面的期望(系统要解决的问题是什么)。

  • 用户需求:用户视角。
  • 业务需求:整体全局。
  • 系统需求:计算机化。包括功能需求(要实现的功能),非功能需求(性能等),设计约束(比如数据库,用户要求用mysql,或者os,用户要求linux)。

从上到下从抽象的全局到具体的细节。

image-20230508062924549

三最抽象,二功能上最具体。

image-20230508063050071

A。

结构化分析

image-20230508063113613

数据字典:对数据的描述,便于用户或开发者理解。比如数据库里的dbname项存储数据库名称,encoding存储其编码方式……或者购票平台上规范用户输入,目的地只能选择如北京、河北、广州……

数据流图:

image-20230508063753029

顶层表示系统与外部实体的关系。下图是顶层图的具体。

圆圈是数据的加工,箭头是有流向的数据,两根线是数据的存储,外部实体是方形的实体,是外部数据的来源。

状态行为图:

image-20230508064224774

起点,终点(带圈),框是状态,线是事件。

相对于数据流图,是一种动态的行为,数据流图是静态的。

ER图,mysql的老熟人:

image-20230508064405217

实体和属性通过连线连接。

强实体和弱实体的概念:

培训公司数据库设计
业务需求是这样的:

每位学生每期只能参加一门课程。

言外之意,公司有很多课程。我们只分析“每位学生每期只能参加一门课程”这一需求,发现涉及到两个实体:学生、课程。所以我们或许会想当然地这样去设计数据库:

在这里插入图片描述

一个课程可以由多个学生选择,一个学生只可以选择一门课程。发现问题了吗?业务需求里不是说一个学生只能参加一门课程,而是说一个学生在一期只能参加一门课程!这么设计数据库是在断人家财路。因此,我们必须考虑“每期课程”这个概念:

在这里插入图片描述

看样子似乎是没问题了,但是数据库设计是不可能这么容易就没问题的。我们把每期课程都作为一个记录,那么对于课程的信息,比方说课程名称、价格、介绍,每开一期课就要向数据库中存一行记录,因此我们的数据库会出现大量冗余(也就是说不满足数据库第二范式)。因此,我们应该这样去设计数据库:

在这里插入图片描述

看到了吗?这里的“Record”是一个弱实体,它的主键是“学期主键+学生主键”,代表学生参加课程这一行为,抽象成为了弱实体。为什么要用学期表的主键和学生表的主键呢?因为一个学生、一个学期,那么就只能参加一门课程了,所以根据主键唯一标识每行记录的原则,应该这样去选取。课程表的主键成为了Record表的外键,课程表与Record表之间存在一对多关系。

在这个例子中,学生、课程是业务需求描述中显而易见的实体,“期”也可以认为是比较明显的实体,但“参加”这个动词在我们的数据库中便成为了“参加记录” ,也就是Record实体。
————————————————
版权声明:本文为CSDN博主「乔卿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41112170/article/details/103328927

面向对象需求分析:考的较少。

image-20230508070246687

聚合:比如汽车轮胎坏了,汽车没事。

UML图:

image-20230508070452296

结构化设计

在结构化分析基础之上。

image-20230508071504145

信息隐蔽:封装。

模块独立:每个模块尽可能只做一件事情。

调用深度:嵌套层次。

扇入扇出:其他模块调用该模块调用得多,该模块调用其他模块少。

image-20230508071946074

模块结构设计

要把系统分成有互相之间接口的模块。

模块是系统的基本组成单位,包括:IO,处理功能,内部数据,程序代码。

OO设计

image-20230508082209144

软硬件协同设计

image-20230508082849248

image-20230508083304236

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

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

相关文章

unity 基本寻径

一、实现效果:敌人追逐玩家,自动躲避障碍物 二、游戏框架 Plane:平面,是玩家和敌人可以行走的区域 Player:玩家,可以在平面上移动,绕开障碍物 Enemy:敌人,可以追逐玩家…

红外遥控且自动避障的嵌入式智能小车系统

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 本次实验使用树莓派作为开发平台,AlphaBot 作为开发载体,Python 作为开发语言,开发一种基于红外线遥控控制的、可自动避障的嵌入式智能小车系统。 智能系统中的嵌入式应用 实验目的 嵌入式…

MySQL双写缓冲区(Doublewrite Buffer)

本文已收录至Github,推荐阅读 👉 Java随想录 文章目录 摘要为什么需要Doublewrite BufferDoublewrite Buffer原理Doublewrite Buffer相关参数总结 摘要 InnoDB是MySQL中一种常用的事务性存储引擎,它具有很多优秀的特性。其中,Dou…

pip的常用操作命令

1. 忽略已安装的库(以llvmlite为例) pip install xxx --ignore-installed llvmlite 2. 错误 - AttributeError: int object has no attribute endswith 解决方案: 常见原因因为使用的pip为pip2,可以使用 pip -V 查看pip版本&a…

springboot+vue校园博客系统(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的校园博客系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风歌&a…

AD 域环镜 本地管理员密码解决方案(LAPS)部署

前言: 我们知道window10装好后,默认本地管理员账号Administrator是关闭的,通过组策略启用本地管理员账号没有问题,具体方法在下面,但是由于微软《MS14-025:组策略首选项中的漏洞可能允许特权提升&#xff…

06-引入SpringSecurity 尚筹网

SpringSecurity 框架用法简介 用户登录系统时我们协助 SpringSecurity 把用户对应的角色、权限组装好,同时把各个资源所要求的权限信息设定好,剩下的“登录验证”、“权限验证”等等工作都交给SpringSecurity。 权限管理过程中的相关概念 主体 英文单…

【源码解析】Spring Cloud Gateway使用RedisRateLimiter实现限流

实现方案 在gateway项目中引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId> </dependency><dependency><groupId>org.springframework.boot</g…

3BHB003154R0101确定每个控制器将如何知道设备地址、识别发给它的消息

3BHB003154R0101确定每个控制器将如何知道设备地址、识别发给它的消息 DNP3 协议用于各种 SCADA 系统组件之间的通信。这些系统组件包括 SCADA 主站或HMI、远程终端单元和智能电子设备。SCADA 系统的操作员可以在其操作中监控 DNP3 协议&#xff0c;以提高系统可靠性。这将通过…

java版深圳 工程管理系统软件 自主研发,工程行业适用 软件源码

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示…

Redis 常见缓存问题与解决方案

文章目录 1. 缓存穿透解决方法 2. 缓存击穿解决方法 3. 缓存雪崩解决方法 在 redis 的应用场景中&#xff0c;需要考虑缓存在某些场景下可能出现的问题&#xff1a; 缓存穿透 缓存击穿 缓存雪崩 以下缓存问题的讨论都是基于以下应用架构讨论的&#xff1a; 1. 缓存穿透 对应…

Python 中的字典顺序

文章目录 Python 中的字典顺序在 Python 中将数字列表按词典顺序排序 我们将介绍 Python 中的字典顺序。 我们还将通过示例讨论实现词典顺序的不同方法。 Python 中的字典顺序 在数学中&#xff0c;词典顺序或词典顺序是对按字母顺序排列的元素列表或元素数组进行排序的过程。…

Java学习之Swing图形界面

Java提供的Swing组件众多&#xff0c;下面列举其中的几种&#xff0c;本章主要讲解顶层容器&#xff0c;其余容器在下面几章会做讲解。 1、顶层容器 1&#xff09;顶层容器就是不包含在其他容器中的容器&#xff0c;Swing中常见的顶层容器有JFrame&#xff0c;JFrame被称为窗口…

分享78个C 源码,总有一款适合您

C 源码 分享78个C 源码&#xff0c;总有一款适合您 源码下载链接&#xff1a;https://pan.baidu.com/s/1_vslGj8XQUGbUhQFnKZg4g?pwdoe87 提取码&#xff1a;oe87 OpenCV计算机视觉库 v4.7.0 OpenCV计算机视觉库 v3.4.19 Photoflare图像编辑器v1.6.12 开源向量数据库mil…

Lecture 13(Extra Material):PPO

On-policy v.s.Off-policy On-policy: The agent learned and the agent interacting with the environment is the same.Off-policy: The agent learned and the agent interacting with the environment is different. Issue of Importance Sampling: 尽管q可以是任意的&am…

day43—编程题

文章目录 1.第一题1.1题目1.2思路1.3解题 2.第二题2.1题目2.2思路2.3解题 1.第一题 1.1题目 描述&#xff1a; 输入两个整数 n 和 m&#xff0c;从数列1&#xff0c;2&#xff0c;3…n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来 输入描述: 每个测试输入包…

Java 基础进阶篇(十二)—— Stream 流常用方法总结

文章目录 一、Stream流概述二、获取Stream流2.1 集合获取 Stream 流2.2 数组获取 Stream 流 三、中间方法四、终结方法五、Stream流的综合应用六、收集Stream流 一、Stream流概述 Stream 流是在 Java8 中&#xff0c;得益于 Lambda 所带来的函数式编程&#xff0c; 引入了一个…

前端技术——css

1.CSS的引入 【1】为什么要学习CSS? 如果只用HEML画页面的话--->这个页面就是页面上需要的元素罗列起来&#xff0c;但是页面效果很差&#xff0c;不好看&#xff0c;为了让页面好看&#xff0c;为了修饰页面。所以我们需要用到CSS。 CSS的作用&#xff1a;修饰HTML页面…

总结844

学习目标&#xff1a; 月目标&#xff1a;5月&#xff08;张宇强化前10讲&#xff0c;背诵15篇短文&#xff0c;熟词僻义300词基础词&#xff09; 周目标&#xff1a;张宇强化前3讲并完成相应的习题并记录&#xff0c;英语背3篇文章并回诵 每日必复习&#xff08;5分钟&#…

密码学:流密码.(对称密码)

密码学&#xff1a;流密码. 流密码(Stream Cipher)属于对称密码算法中的一种&#xff0c;其基本特征是加解密双方使用一串与明文长度相同的密钥流&#xff0c;与明文流组合来进行加解密密钥流通常是由某一确定状态的伪随机数发生器所产生的比特流&#xff0c;双方将伪随机数生…