软件工程(上)

目录

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

瀑布模型

原型模型

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)

倡导以业务为核心

逆向工程

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

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

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

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

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

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

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

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

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

净室软件工程

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

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

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

技术手段主要四个方面

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

缺点:

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

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

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

相关文章

Http Json参数到x-www-form-urlencoded参数的在线转换工具

Json参数到x-www-form-urlencoded参数的在线转换工具

C语言 printf 函数多种输出格式以及占位输出

一、输出格式 在C语言中,printf 函数提供了多种输出格式,用于控制不同类型数据的输出方式。 1.整数输出格式 %d:以十进制形式输出整数。 %o:以八进制形式输出整数(无前导0)。 %x 或 %X:以十六进…

CMD命令详细介绍 | 超详细版本!

文章目录 启动cmd命令用户启动使用管理员的账号启动 文件夹命令网络命令其他常用命令介绍常用快捷方式程序员相关命令 本文参考了博客园一篇帖子,ULR:cmd常用命令介绍(可收藏) - Mrwhite86 - 博客园 (cnblogs.com) CMD是Windows操作系统自带的命令行解释…

嵌入式C语言面试相关知识——内存管理(不定期更新)

嵌入式C语言面试相关知识——内存管理(不定期更新) 一、博客声明二、自问题目1、嵌入式系统的内存布局是怎么样的?2、动态内存分配在嵌入式系统中的使用有什么注意事项?3、什么是内存碎片,如何减少内存碎片&#xff1f…

恢复出厂设置后如何从 iPhone 恢复数据

在 iPhone 恢复出厂设置后,所有数据都会被删除,并且 iPhone 将恢复到原始出厂设置,这意味着您的所有 iPhone 数据,包括照片、视频、联系人和应用程序都将消失。 幸运的是,如果您有备份可以恢复,这并不一定…

Edge浏览器油猴插件的安装与使用

油猴 (又称篡改猴或Tampermonkey) 是最流行的浏览器扩展之一。它允许用户自定义并增强网页的功能。用户脚本是小型 JavaScript 程序,可用于向网页添加新功能或修改现有功能。使用油猴,您可以轻松在任何网站上创建、管理和运行这些用户脚本。 1.插件的安…

pycharm配置conda解释器

假如我新建了一个conda虚拟环境,名为python3.8

【数据结构与算法】快速排序霍尔版

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法》 期待您的关注 ​

鸿蒙NEXT不再支持安卓这条路真的走的通吗?

前言 看到高赞又是一片嘲讽,“apk换种打包方式”等等轻松拿几百赞,我也是无语。 国内多家互联网大厂都已经启动HarmonyOS Next应用开发,预计明年正式上线,如今业内很多人都已经知道了。 网络上相关报道也有很多,新浪…

06.C2W1.Auto-correct

往期文章请点这里 目录 OverviewAutocorrectWhat is autocorrect?How it works Building the modelMinimum edit distanceMinimum edit distance algorithmMinimum edit distance Part 2Minimum edit distance Part 3 往期文章请点 这里 Overview 本周学习目标:…

Vue 使用 @click 绑定点击事件

https://andi.cn/page/621505.html

oracle数据库默认表空间详解

文章目录 oracle数据库默认表空间列表 oracle数据库默认表空间列表 系统表空间(System Tablespace) 系统表空间包含了系统级别的元数据,如数据字典、系统表和存储过程等。例如SYSTEM表空间用于保存数据库的数据字典、PL/SQL程序的源代码和解释…

通信协议_Modbus协议简介

概念介绍 Modbus协议:一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De f…

04.C1W3.Vector Space Models

往期文章请点这里 目录 Vector Space ModelsWord by Word and Word by DocWord by Document DesignWord by Document DesignVector Space Euclidean DistanceEuclidean distance for n-dimensional vectors Euclidean distance in PythonCosine Similarity: IntuitionCosine S…

验证回文串-string题目

用双指针&#xff0c;left right从两头往中间对比&#xff0c;不是字母的都略过&#xff0c;比的时候化成小写字母 125. 验证回文串 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool isPalindrome(string s) {if(s.size() < 1)return true;int left …

vue-org-tree搜索到对应项高亮展开

效果图&#xff1a; 代码&#xff1a; <template><div class"AllTree"><el-form :inline"true" :model"formInline" class"demo-form-inline"><el-form-item><el-input v-model"formInline.user&quo…

Git详细安装和使用教程

文章目录 准备工作-gitee注册认识及安装GitGit配置用户信息本地初始化Git仓库记录每次更新到仓库查看及切换历史版本Git忽略文件和查看文件状态Git分支-查看及切换Git分支-创建分支Git分支-合并及删除分支Git分支-命令补充Git分支-冲突需求: 准备工作-gitee注册 传送门: gite…

zabbix 与 grafana 对接

一.安装 grafana 1.初始化操作 初始化操作 systemctl disable --now firewalld setenforce 0 vim /etc/selinux/config SELINUXdisabled 2.上传数据包并安装 cd /opt grafana-enterprise-9.4.7-1.x86_64.rpm #上传软件包 yum localinstall -y grafana-enterprise-9.4.7-1…

Django QuerySet对象,exclude()方法

模型参考上一章内容&#xff1a; Django QuerySet对象&#xff0c;filter()方法-CSDN博客 exclude()方法&#xff0c;用于排除符合条件的数据。 1&#xff0c;添加视图函数 Test/app11/views.py from django.shortcuts import render from .models import Postdef index(re…

身边的故事(十四):阿文的故事:再买房

短短的一年多时间里&#xff0c;阿文仿佛从人生低谷完全走出来了。各种眼花缭乱的操作和处理事情方式让人觉得不可思议&#xff0c;是不是一个人大手大脚花钱惯了&#xff0c;让他重新回到艰苦朴素的日子是不是比死都难受呢&#xff1f;又或者像我这种靠勤勤恳恳的打工人是无法…