软件工程(上)

目录

软件过程模型(软件开发模型)

瀑布模型

原型模型

V模型

构件组装模型

螺旋模型(原型+瀑布)

基于构件的软件工程(CBSE)

快速应用开发模型(RAD)

统一过程(UP)/统一开发方法

敏捷开发方法

敏捷方法-xp

敏捷方法-SCRUM

极限编程 -xp

水晶方法

SCRUM

特征驱动开发方法(FDD)

开放式源码

ASD方法

动态系统开发方法(DSDM)

逆向工程

净室软件工程


软件过程模型(软件开发模型)

        软件过程模型也叫软件开发模型,是我们进行软件开发的时候需要遵循的一些思想和规范

瀑布模型

特点:严格区分阶段,每个阶段因果关系紧密相连,但是只适合需求明确的项目

缺点:

软件需求完整性、正确性很难确定

严格串行化、很长时间才能看到结果

瀑布模型要求每个阶段一次性完全解决该阶段的工作,这不现实。

原型模型

原型的思想就是构造一个简易系统,由他来获取需求。原型模式我们一般用在需求分析阶段

V模型

这个模式是强调测试贯穿始终的开发模型。

构件组装模型

优点:

容易扩展、重用、降低成本、安排任务更灵活

缺点:这个要求经验丰富的架构师、设计不好的构件难以重用、强调重用可能牺牲其他的指标(比如性能)、第三方构件质量难控制。

螺旋模型(原型+瀑布)

以快速原型为基础+瀑布模型,这个模型考虑了风险问题。

四个关键字:目标设定、风险分析、评审、开发和有效性验证

基于构件的软件工程(CBSE)

它该具备的特征:

可组装性:所有外部交互必须通过公开定义的接口进行

可部署性:构件总是二进制形式的,能作为一个独立实体在平台上运行

文档化:用户根据文档来判断构件是否满足需求

独立性:可以在没有其他特殊构件的情况下进行组装和部署

标准化:符合某种标准化的构件模型

构件的组装:

顺序组装:按照顺序调用已经存在的构件、可用两个已经有的构件来创造一个新的构件

层次组装:被调用构件的接口和调用构件的请求接口必须兼容

叠加组装:多个构件合并形成新构件、新构件整合原构件的功能、对外提供新的接口

快速应用开发模型(RAD)

多个模型拼装成的新的模型,瀑布模型有标准的开发流程、CBSD有构件的支撑。

统一过程(UP)/统一开发方法

主要用在大型软件开发应用里面

核心特点:用例驱动、以架构为中心、迭代和增量

四大阶段

初始:定义产品的业务模型、确定系统的范围

细化:设计及确定系统架构、制定工作计划以及资源要求

构造:开发剩余构件和应用程序功能、把这些构件集成为产品、并进行详细测试

移交:确保软件对最终客户是可用的,进行测试、制作产品的发布版本.

九大核心工作流

  • 业务建模
  • 需求
  • 分析和设计
  • 编码实现
  • 测试
  • 部署
  • 配置和变更管理
  • 项目管理
  • 环境

敏捷开发方法

是通过迭代而来的

最开始是没有开发方法的,没有顺序、不可空

到了一定的时间出现了传统软件开发方法:预设姓的、以开发过程为本、整体分阶段

最后才出现了敏捷方法:适应性的,以人为本、增量迭代、小不快跑、适合小型项目

敏捷宣言

  • 个体和交互胜过过程和工具,强调了人的重要性
  • 可工作的软件胜过大量的文档
  • 客户合作胜过合同谈判
  • 响应变化胜过遵循计划
敏捷方法-xp

四大价值观:沟通、简单、反馈、勇气

12条过程实践规则

敏捷方法-SCRUM

极限编程 -xp

价值观【交流、朴素、反馈、勇气】、近螺旋式的开发方法

水晶方法

提倡机动性的方法,拥有对不同类型项目非常有效的敏捷过程

SCRUM

侧重于项目管理

特征驱动开发方法(FDD)

这个方法认为有效的软件开发需要3要素【人、过程、技术】定义了6种关键的项目角色:项目经理、首席架构设计师、开发经理、主程序员、程序员和领域专家

开放式源码

程序开发人员在地域上分部很广

ASD方法

核心就是三个非线性的、重叠的开发阶段:猜测、合作和学习

动态系统开发方法(DSDM)

倡导以业务为核心

逆向工程

实现级:包括程序的抽象语法树、符号表、过程的设计表示,这个是最接近代码层面的

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

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

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

与逆向工程相关的概念是:重构、设计恢复、再工程、正向工程

重构:在同一抽象级别上转换系统描述形式

设计恢复:借助工具从已有程序中抽象出有关数据设计、总计结构设计和过程设计等方面的信息

再工程:对现有系统的重新开发、包括逆向工程、新需求的考虑过程和正向过程的三个步骤

正向工程:不仅从现有的系统中恢复设计信息、而且使用该信息去改变或重构现有系统、以改善他的整体质量。

净室软件工程

净室:无尘室、洁净室、也就是一个受控污染级别的环境

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

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

技术手段主要四个方面

  • 统计过程控制下的增量式开发:控制迭代
  • 基于函数的规范和设计:盒子结构:定义三种抽象层次:行为视图(黑盒)——>有限状态机视图(状态盒)——>过程视图(明盒
  • 正确性验证:净室工程的核心
  • 统计测试和软件认证使用统计学原理、总体太大时必须采用抽样方法

缺点:

  • 太理论化,正确性验证的步骤比较困难和耗时间
  • 开发小组不进行传统的模块测试。这是不现实的
  • 脱胎于传统软件工程、不可避免带有传统软件工程的一些弊端

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

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

相关文章

Linux学习看这一篇就够了,超超超牛的Linux基础入门

引言 小伙伴们,不管是学习c还是学习其他语言在我们学的路上都绕不过操作系统,而且,老生常谈的Linux更是每个计算机人的必修,那么我们对Linux的了解可能只是从别人那听到的简单的这个系统很牛,巴拉巴拉的,但…

小米rdemi红米ax3000t刷机 20240707最新配套完整程序整理合集

小米rdemi红米ax3000t刷机程序地址: https://www.123pan.com/s/LA1bVv-EOzVv.html 小米路由器SSH密码计算器 https://www.1234f.com/fuwu/ax3000t/ 最新更新地址:https://www.1234f.com/fuwu/openwrt/ 依次输入如下命令: curl -X POST h…

Leetcode 295.数据流的中位数

295.数据流的中位数 问题描述 中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。 例如 arr [2,3,4] 的中位数是 3 。例如 arr [2,3] 的中位数是 (2 3) / 2 2.5 。 实现 MedianFinder 类: Media…

算法013:水果成篮

水果成篮. - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/fruit-into-baskets/ 这道题题目很长,仔细阅读过后,我们其实可以简化成&#xff…

聚焦数字创新,定义影像未来

国际数字影像产业园在明确产业定位与发展方向时,应聚焦于数字影像、文创、媒体等新兴产业领域,以技术创新为核心动力、产业升级为保障、市场拓展为途径、国际化发展为方向,推动园区的持续健康发展。 作为园区的核心产业,数字影像产…

第二证券股市知识:股票填权是怎么回事?利好还是利空?

1、股票填权的含义 股票填权是指在除权除息之后的一段时刻内,假设多数投资者看好该个股,股票的价格超过除权除息的基准价就叫做填权。上市公司假设能持续分红,就会向市场传递积极信号,招引更多投资者买入,越来越多的投…

使用Livox-Mid360激光雷达,复现FAST_LIO(保姆级教程)

前面我已经完成了mid360激光雷达的驱动安装,octomap的复现,昨天我去把这俩在正式环境中实测了一下,效果不好,走廊转角没建出来,我查了一下,应该是TF的原因,但这部分我还不太懂,看到有…

云计算【第一阶段(28)】DNS域名解析服务

一、DNS解析的定义与作用 1.1、DNS解析的定义 DNS解析(Domain Name System Resolution)是互联网服务中的一个核心环节,它负责将用户容易记住的域名转换成网络设备能够识别和使用的IP地址。一般来讲域名比 IP 地址更加的有含义、也更容易记住…

2024世界人工智能大会:deepin引领AI与操作系统融合新时代

内容来源:deepin(深度)社区 7月4日,WAIC 2024在上海拉开帷幕。大会围绕核心技术、智能终端、应用赋能三大板块,聚焦大模型、算力、机器人、自动驾驶等重点领域,集中展示一批“人工智能”创新应用最新成果。…

【web前端HTML+CSS+JS】--- JS学习笔记03

一、JS介绍 可以在前端页面上进行逻辑处理,来解决表单的验证等问题,提升效率,直接在前端提示问题,减少服务器压力 应用1:可以做静态验证和动态验证(进行异步请求) 应用2:可以解析后…

学习数据库2

在数据库中创建一个表student,用于存储学生信息 查看建表结果 向student表中添加一条新记录 记录中id字段的值为1,name字段的值为"monkey",grade字段的值为98.5 并查看结果 向student表中添加多条新记录 2,"bob"…

鸿蒙开发小案例(名片管理))

鸿蒙开发小案例(名片管理) 1、页面效果1.1 初始页面1.2 点击名片展开1.3 点击收藏1.4 点击编辑按钮 2、实现代码2.1 DataModel.ets2.2 RandomUtil.ets2.3 ContactList.ets 1、页面效果 1.1 初始页面 1.2 点击名片展开 1.3 点击收藏 1.4 点击编辑按钮 2、…

百度、谷歌、必应收录个人博客网站

主要是给各个搜索引擎提交你的sitemap文件,让别人能搜到你博客的内容。 主题使用的Butterfly。 生成sitemap 安装自动生成sitemap插件。 npm install hexo-generator-sitemap --save npm install hexo-generator-baidu-sitemap --save在站点配置文件_config.yml…

【手撕数据结构】卸甲时/空间复杂度

目录 前言时间复杂度概念⼤O的渐进表⽰法小试牛刀 空间复杂度 前言 要想知道什么是空/时间复杂度,就得知道什么是数据结构。 这得分两层来理解。我们生活中处处存在数据,什么抖音热点上的国际大事,什么懂的都懂的雍正卸甲等等一系列我们用户看得到的&a…

鸿蒙语言基础类库:【@ohos.url (URL字符串解析)】

URL字符串解析 说明: 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 导入…

【K8s】专题六(5):Kubernetes 稳定性之重启策略、滚动更新策略

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号! 目录 一、重启策略 1、基本介绍 2、资源清单(示例) 二、滚动更新策略 …

Vue框架引入

vue简介 1.1.vue是什么?Vue官网 英文官网: https://vuejs.org/中文官网: https://cn.vuejs.org/ vue是一套构建用户界面的渐进式javascript框架 构建用户界面:将我们手里拿到的数据通过某种办法变成用户可以看见的界面前端工程师的职责:就是在合适的时候发出合适的请求,然后…

Splunk Enterprise 任意文件读取漏洞(CVE-2024-36991)

文章目录 前言漏洞描述影响版本漏洞复现POC批量检测-nuclei脚本 修复建议 前言 Splunk Enterprise 是一款强大的机器数据管理和分析平台,能够实时收集、索引、搜索、分析和可视化来自各种数据源的日志和数据,帮助企业提升运营效率、增强安全性和优化业务…

【MYSQL】如何解决 bin log 与 redo log 的一致性问题

该问题问的其实就是redo log 的两阶段提交 为什么说redo log 具有崩溃恢复的能力 MySQL Server 层拥有的 bin log 只能用于归档,不足以实现崩溃恢复(crash-safe),需要借助 InnoDB 引擎的 redo log 才能拥有崩溃恢复的能力。所谓崩…

二刷力扣——单调栈

739. 每日温度 单调栈应该从栈底到栈顶 是递减的。 找下一个更大的 ,用递减单调栈,就可以确定在栈里面的每个比当前元素i小的元素,下一个更大的就是这个i,然后弹出并记录;然后当前元素i入栈,仍然满足递减…