软件工程(三)-统一过程与敏捷方法

news2024/11/22 9:20:52

1、统一过程

统一过程也叫UP或者RUP。这种开发方法是在基于构建的方法发展而来,也是基于构建化的思想发展而来。

 

统一过程的三大特点

  • 用例驱动

    • 在进行软件开发过程中,是用什么驱动力去推动整个过程

    • 用例驱动就是一开始会构建用例,然后一步一步将用例实现出来,测试时也依据用例设计一些测试用例。

    • 测试驱动会在开发的一开始,就引入测试相关的东西,整个流程中的每一步衔接都都利用测试去推动流程。

  • 以架构为中心

    • 比如建房子时需要先把框架建立起来,这就是架构的思想。

  • 迭代和增量

    • 整个开发过程不是一次性完成的,而是走多轮迭代,一轮一轮完成的,每次迭代都有新的东西加进来。

统一过程的四个阶段

  • 初始

    • 确定项目的范围和边界:该做什么,不该做什么,要做鉴定

    • 识别系统的关键用例:系统跑起来之后,用例被使用的频率,频率最高的用例就是关键用例,二八原则,百分之二十的用例占用了百分之八十的使用。

    • 展示系统的候选架构

    • 估计项目费用和时间

    • 评估项目风险

  • 细化

    • 分析系统问题领域

    • 建立软件架构基础, 就是完成架构设计

    • 淘汰最高风险元素

  • 构建

    • 开发剩余的构建,能用以前的构建就用以前的,没有就新开发

    • 构建组装与测试,正因为只是构建的组装,所以快

  • 交付

    • 进行β测试

    • 制作发布版本

    • 用户文档定稿

    • 确认新系统

    • 培训、调整产品

2、敏捷方法

相比于以前的的方法而言,敏捷方法是一个相对比较新的方法,在2000年左右才出来的,以前的哪些方法是在七几年,八几年出现的产物,可以说不在同一个时代。在以前的方法很成熟的前提下,来进行的调整。

敏捷方法是一种小步快跑的方式,适合于小型项目开发。

敏捷方法使用了哪些模型

  • 自适应开发

  • 水晶方法

  • 特性驱动开发

  • 极限编程

敏捷方法的基本原则

  • 短平快的回忆

  • 小型版本发布

  • 较少的文档

  • 合作为重

  • 客户直接参与

  • 自动化测试

  • 结对编程

  • 测试驱动开发

  • 持续集成

  • 重构

敏捷方法四大价值观

  • 沟通

    • 敏捷开发砍掉了很多文档,而文档是用来传递信息的,减少了文档,就要强调沟通,比如结对编成,面对面沟通。

  • 简单

    • 简单设计,不过度设计。比如系统考虑长远,要把一些东西做得标准化,但是很多得文档和设计其实没有用上,这就是过度设计。

    • 以简单的思路,让系统下跑起来,后面可以局部重构优化.

  • 反馈

    • 及时跟客户沟通相关的问题

  • 勇气

    • 主要是应对变更的勇气, 因为开发一般排斥变更, 因为一变更就意味着变更, 但是不变更又不可能. 变更在前面爆发出来, 越到后面变更就越小.

敏捷方法就一定正确吗

不一定,因为这些方法都是人提出来的,带有一定的主观性, 所以不一定是最优的一种方法.

敏捷方法五大原则

  • 快速反馈

  • 简单性假设

  • 逐步修改

  • 提倡更改

  • 优质工作

敏捷方法12大最佳实践

  • 计划游戏、结对编成、小型发布、集体代码所有制、隐喻、持续集成

  • 简单设计、每周工作40小时、测试先行、现场客户、重构、编码标准

如果论文考到了敏捷方法的应用,不仅要对价值观进行思想的阐述, 还要讲一讲项目中到底用了一些什么手段,去完成我们的工作.

比如:测试驱动/测试先行等, 比如结对编成(两个程序员结成一对, 一个人写代码, 一个人看着, 隔段时间替换), 国内一般不会这样.

结对编成的好处

  • 两个人会先碰一下思路, 解决方案, , 可以提前发现问题

  • 调试的时候两个人看, 比一个人看更容易发现问题

  • 团队核心人员流动, 新手接替核心业务需要一个过程, 但结对编成可以无缝衔接, 从而减小风险

集体代码所有制度: 所有人都能看到全部代码

持续集成: 一到两周发布一个版本, 持续的集成

每周四十小时: 不加班, 但一般不可能

测试先行: 测试用例的提前设计, 先把测试框架搭建等, 先把测试逻辑写了

敏捷方法特点

  • 极限编程(XP): 费用严格控制

  • 水晶方法(Cockburn): 用最少纪律约束而仍能成功的方法

  • 开放式源码: 程序开发人员在地域上分布很广

  • SCRUM: 明确定义了可重复的方法过程, 是用得最多得方法论

  • FDD(驱动开发方法): 有首席程序员和类程序员得概念

  • ASD方法: 核心是猜测 合作与学习

Scrum开发模型

Scrum是目前相对来水用得最广泛的模型方法, 会强调基本2-4周一个冲刺, 所谓的冲刺,就是发布一个可用的版本. 因为人都是有惰性的, 一个时间比较长的项目, 前面一般都会按照任务慢慢来, 但是后面又发现来不及了.所以为了避免这种情况, 让需求更加可用, 所以提出了敏捷方法.

Scrum会先把药开发的功能放在Product Backlog(备忘录). 会从里面取出一小块来, 按照一个项目, 以2-4周为时间限制, 来进行开发, 这样一轮一轮的完成. 从而让每个过程可控.

 

3、逆向工程

就是从最终的成品一步一步的反推它的设计和分析. 比如山寨手机, 先买一台手机, 拆了之后看它模仿它的零件. 再比如仿制军事设备.

 

  • 实现级: 包括程序的抽象语法树, 符号表, 过程的设计表示. 拿到代码,通过代码构造语法树, 去做一些初步分析.

  • 结构级: 包括反映程序分量之间相互依赖关系的信息, 例如: 调用图, 结构图, 程序和数据结构

  • 功能级: 包括反映程序段功能及程序段之间关系的信息, 例如数据和控制流模型

  • 领域级: 包括反映程序分量或程序诸实体和应用领域概念之间的对应关系的信息, 例如实体关系模型

4、净室软件工程

  • 净室就是无尘室, 洁净室. 也就是一个受控污染级别的环境. 比如芯片制造药串防尘服.

  • 使用盒结构规约(或形式化方法) 进行分析和设计建模, 并且强调将正确性验证, 而不是测试, 作为发现和消除错误的主要机制.

    • 比如使用代码生成器生成代码, 而不用自己写, 从而减小错误产生的概率. 使用类似的约束, 从源头减小出错的概率, 而不是测试出问题, 再去改

  • 使用统计的测试来获取认证被交付的软件的可靠性所必须的出错率信息.

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

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

相关文章

人脸识别2:InsightFace实现人脸识别Face Recognition(含源码)

目录 1. 前言 2. 项目安装 3. 人脸识别系统 (1)人脸检测和关键点检测 (2)人脸校准 (3)人脸特征提取 (4)人脸比对(1:1) (5)人脸搜索(1:N) &#xff08…

【操作系统】文件管理

文章目录 文件管理初识文件的属性文件内部的数据如何组织起来?文件之间应该如何组织起来?操作系统应该向上提供哪些功能?从上往下看,文件应该如何存放在外存?其他需要由操作系统实现的文件管理功能 文件的逻辑结构无结…

【CVPR 2023的AIGC应用汇总(8)】3D相关(编辑/重建/生成) diffusion扩散/GAN生成对抗网络方法...

【CVPR 2023的AIGC应用汇总(7)】face相关(换脸/编辑/恢复) diffusion扩散/GAN生成对抗 【CVPR 2023的AIGC应用汇总(6)】医学图像diffusion扩散/GAN生成对抗网络 【CVPR 2023的AIGC应用汇总(5)】语义布局可控生成,基于diffusion扩散/GAN生成对…

Java数据库项目之满汉楼

文章和代码已经归档至【Github仓库:https://github.com/timerring/java-tutorial 】或者公众号【AIShareLab】回复 java 也可获取。 文章目录 程序框架图代码实现数据库Java多表查询思路 程序框架图 代码实现 数据库 -- 创建满汉楼的数据库 CREATE DATABASE mhl -…

输入输出IO流

文章目录 1.数据源2.流3.IO流的分类4.字节流4.1文件字节输入流1. FileInputStream类概述2. FileInputStream类构造方法3. FileInputStream类常用方法 4.2文件字节输出流1. FileOutputStream类概述2. FileOutputStream类构造方法3. FileOutputStream类常用方法 5字符流5.1. File…

philsolophy of life: blessing in disguise

有个成语叫: "塞翁失马" , 这个讲的是在战国时期,有个叫"塞翁"的老人养了很多马,有一天他丢了一匹马,邻居来劝说他,不要着急,说不定哪天就回来了,"丢了一匹马或许是好事&#xf…

【壁纸小程序】推荐一款壁纸小程序

壁纸很多 直接在手机切换下载即可 感兴趣的朋友可以看看 小程序二维码

第五章 介绍Productions - 业务流程和业务逻辑

文章目录 第五章 介绍Productions - 业务流程和业务逻辑业务流程和业务逻辑介绍业务流程的类型数据转换业务规则 第五章 介绍Productions - 业务流程和业务逻辑 业务流程和业务逻辑 本章描述业务流程中支持的逻辑种类。 介绍 业务流程是production的中间部分。它们接受来自…

Spring【Again】——复杂POJO的绑定

简单介绍: Again系列是将之前的内容我认为做的不好的地方或者是理解不到位的地方再来一次,加深记忆或者改错。我们就在来复习一下之前我们说过的复杂类型的数据绑定。 先来复习一下简单数据绑定: 简单数据绑定就是我们在传递参数的时候&am…

京东jd商品详情API接口(item_get-根据ID取商品详情)代码封装

item_get-根据ID取商品详情接口 通过代码封装该接口可以拿到商品标题,商品价格,商品促销信息,商品优惠价,商品库存,sku属性,商品图片,desc图片,desc描述,sku图片&#xf…

文件上传下载系列——大文件分片上传

文章目录 概述实现步骤:应用场景 代码实操:前端:文件切片:分片上传: 后端:校验和保存:合并文件片段:完成上传: 总结优点:缺点: 升华 概述 文件分片…

spring cache和SpEL表达式

spring cache的 CachePut如果方法体内容变了,缓存还有效吗 当使用CachePut注解时,其目的是更新缓存,即在方法执行完毕后将返回结果加入缓存中。如果方法体内容发生变化,则更新后的结果会被加入缓存中,而缓存中原来的数据会被替换…

ORACLE 新闻速递 ORACLE 23C 免费提供给开发者 为什么???

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

利用AI将脑信号解码为神经义肢控制

机器学习和人工智能的快速发展,它们已经产生了一系列能够学习大量数据之间复杂非线性关系的神经网络模型。深度学习算法在各种应用中取得了巨大的成功,包括计算机视觉、自然语言处理和机器人类等。最近,神经网络的中一项引人注目的应用是通过…

B 站构建实时数据湖的探索和实践

摘要:本文整理自 bilibili 大数据实时团队资深开发工程师周晖栋,在 Flink Forward Asia 2022 实时湖仓专场的分享。本篇内容主要分为四个部分: 1. 背景和痛点 2. 场景探索 3. 基建优化 4. 总结和展望 Tips:点击「阅读原文」查看原…

VMware之esxcli命令

一、esxcli命令简介 esxcli命令是用于管理VMware ESXi主机的命令行实用程序。它允许管理员在主机上执行各种管理任务,如配置网络设置、存储、虚拟机等。实际上我们在控制台的所有操作最终都会转换为命令在后台执行。以下是一些常见的esxcli命令: esxcli…

第三章 存储系统

1. 主存简单模型和寻址概念 存储器芯片的基本结构 寻址 2.存储器RAM 两种RAM的比较 DRAM的刷新 3.ROM(只读存储器) 为什么需要ROM? 因为RAM里面的数据容易丢失。 4.存储器基本概念 存储器的分类 性能指标 数据的宽度:在一个存储周期中存储的位数 层…

感烟探测器漂移补偿

3.8 慢速发展火灾响应性能 3.8.1 探测器的漂移补偿功能不应使探测器对慢速发展火灾的响应性能产生明显影响。 3.8.2 当无法用模拟烟气浓度缓慢增加的方法评估探测器对慢速发展火灾响应性能时,可以通过物理试验和模拟试验对电路和/或软件分析确定。 3.8.3 探测器评估…

丰富多彩 | Android 14 Beta 2 发布

作者 / Dave Burke, VP of Engineering Google I/O 的大幕已经拉开,我们也为大家带来了 Android 14 的第二个 Beta 版。我们在 Google I/O 上为大家准备了许多精彩的演讲,包括对 Android 14 许多新功能的详细介绍。这次发布的 Beta 2 聚焦相机和媒体、隐…

只要学会这些AI工具,一个人就是一家营销咨询公司

本教程收集于:AIGC从入门到精通教程 只要学会这些AI工具,一个人就是一家营销咨询公司 随着AI工具的不断涌现,您只需掌握市面上热门的AI工具,便可独自开展营销咨询公司。通过一系列AI工具,您可以为企业提供全案服务,收获丰厚回报。 例如,在协助一家美妆初创公司出海时,…