软件工程(上)

目录

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

瀑布模型

原型模型

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.rhkb.cn/news/371296.html

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

相关文章

论文复现-基于决策树算法构建银行贷款审批预测模型(金融风控场景)

作者Toby,来源公众号:Python风控模型,基于决策树算法构建银行贷款审批预测模型 目录 1.金融风控论文复现 2.项目背景介绍 3.决策树介绍 4.数据集介绍 5.合规风险提醒 6.技术工具 7.实验过程 7.1导入数据 7.2数据预处理 7.3数据可…

SpringBoot3+Vue3开发园区管理系统

介绍 在当今快速发展的城市化进程中,高效、智能的园区管理成为了提升居民生活品质、优化企业运营环境的关键。为此,我们精心打造了全方位、一体化的园区综合管理系统,该系统深度融合了园区管理、楼栋管理、楼层管理、房间管理以及车位管理等…

基于S32K144驱动NSD8381

文章目录 1.前言2.芯片介绍2.1 芯片简介2.2 硬件特性2.3 软件特性 3.测试环境3.1 工具3.2 架构 4.软件驱动4.1 SPI4.2 CTRL引脚4.3 寄存器4.4 双极性步进电机驱动流程 5.测试情况6.参考资料 1.前言 最近有些做电磁阀和调光大灯的客户需要寻找国产的双极性步进电机驱动&#xf…

mysql 命令 —— 查看表信息(show table status)

查询表信息,如整个表的数据量大小、表的索引占用空间大小等 1、查询某个库下面的所有表信息: SHOW TABLE STATUS FROM your_database_name;2、查询指定的表信息: SHOW TABLE STATUS LIKE your_table_name;如:Data_length 显示表…

郭明錤:苹果将为Vision Pro推出红外摄像头款AirPods

在科技界,苹果公司的每一次创新都备受瞩目。近日,著名苹果分析师郭明錤透露了一个令人振奋的消息:苹果计划在2026年推出配备红外摄像头的新款AirPods,这款耳机将特别优化与Apple Vision Pro头显的空间体验。这一消息不仅预示着苹果在音频设备领域的又一次技术飞跃,也进一步…

记录第一次使用air热更新golang项目

下载 go install github.com/cosmtrek/airlatest 下载时提示: module declares its path as: github.com/air-verse/air but was required as: github.com/cosmtrek/air 此时,需要在go.mod中加上这么一句: replace github.com/cosmtrek/air &…

【项目管理】常见的敏捷实践:Scrum框架

【项目管理】常见的敏捷实践:Scrum框架 精益、敏捷与Scrum框架Scrum框架实践Sprint(冲刺)Scrum角色Scrum工件Scrum会议 精益、敏捷与Scrum框架 敏捷与精益思想、看板、Scrum等概念的关系如下图所示: Lean 精益 Kanban 看板 Ag…

QT入门笔记-自定义控件封装 30

具体代码如下: QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c17# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES QT_DISABLE_DEPRECATED_BEFORE0x060000 …

Kyutai 推出了 Moshi Chat,这是一种既可以实时收听又可以说话的 AI

Kyutai 是一家专注于开放式 AI 研究的非营利性实验室,它推出了开源的 Moshi Chat 项目 Kyutai 是一家致力于推进人工智能 (AI) 开放研究的非营利性实验室,其最新创新 Moshi Chat 取得了重大进展。这种尖端的实时原生多模态基础模…

加密(3)非对称加密

一、介绍 1、概念 非对称加密,又称现代加密算法,非对称加密是计算机通信安全的基石,保证了加密数据不会被破解。加密和解密使用的是两个不同的密钥,这种算法叫作非对称加密算法。 2、示例 首先生成密钥对, 公钥为(5,14)&#…

【图解大数据技术】Flume、Kafka、Sqoop

【图解大数据技术】Flume、Kafka、Sqoop FlumeFlume简介Flume的应用场景 KafkaKafka简介Kafka架构Flume与Kafka集成 SqoopSqoop简介Sqoop原理sqoop搭配任务调度器实现定时数据同步 Flume Flume简介 Flume是一个数据采集工具,多用于大数据技术架构下的日志采集。 …

【C++】#1

关键字&#xff1a; 基本框架、多个main执行、快捷键、cout规则 基本框架&#xff1a; #include <iostream> using namespace std;int main() {//具体内容return 0; } 多个main函数可执行&#xff1a; 常用快捷键&#xff1a; cout规则&#xff1a;

使用 Git Hooks 防止敏感信息泄露

欢迎关注公众号&#xff1a;冬瓜白 在日常开发中&#xff0c;我们可能会不小心将敏感信息提交到 Git。为了防止这种情况&#xff0c;可以利用 Git Hooks 编写一个简单的脚本&#xff0c;当发现提交中包含敏感词时&#xff0c;给出提示。 以下是一个基于 pre-commit 钩子的示例…

Stream流真的很好,但答应我别用toMap()

你可能会想&#xff0c;toList 和 toSet 都这么便捷顺手了&#xff0c;当又怎么能少得了 toMap() 呢。 答应我&#xff0c;一定打消你的这个想法&#xff0c;否则这将成为你噩梦的开端。 让我们先准备一个用户实体类。 Data AllArgsConstructor public class User { priv…

算法-常见数据结构设计

文章目录 1. 带有setAll功能的哈希表2. LRU缓存结构3. O(1)时间插入删除随机(去重)4. O(1)时间插入删除随机(不去重)5. 快速获取数据流中的中位数6. 最大频率栈7. 全O(1)结构8. LFU缓存结构 本节的内容比较难, 大多是leetcodeHard难度级别的题目 1. 带有setAll功能的哈希表 哈希…

智能交通(3)——Learning Phase Competition for Traffic Signal Control

论文分享 https://dl.acm.org/doi/pdf/10.1145/3357384.3357900https://dl.acm.org/doi/pdf/10.1145/3357384.3357900 论文代码 https://github.com/gjzheng93/frap-pubhttps://github.com/gjzheng93/frap-pub 摘要 越来越多可用的城市数据和先进的学习技术使人们能够提…

【2024_CUMCM】时间序列算法ARMA

目录 2023-c-问题二 问题分析 介绍 单位根检验 白噪声检验 自相关和偏自相关图 利用信息准则定阶 构建AMIMA模型 D-W检验 预测 代码 2023-c-问题二 问题分析 ARMA适合多个领域的时间序列分析&#xff0c;不同时间的定价策略属于这类问题。 介绍 ARMA模型&…

《python程序语言设计》2018版第5章第52题利用turtle绘制sin函数

这道题是送分题。因为循环方式已经写到很清楚&#xff0c;大家照抄就可以了。 但是如果说光照抄可是会有问题。比如我们来演示一下。 import turtleturtle.penup() turtle.goto(-175, 50 * math.sin((-175 / 100 * 2 * math.pi))) turtle.pendown() for x in range(-175, 176…

芯片封装简介

1、背景 所谓“封装技术”是一种将集成电路用绝缘的塑料或陶瓷材料打包的技术。以CPU为例&#xff0c;实际看到的体积和外观并不是真正的CPU内核的大小和面貌&#xff0c;而是CPU内核等元件经过封装后的产品。封装技术对于芯片来说是必须的&#xff0c;也是至关重要的。因为芯片…

鸿蒙开发管理:【@ohos.account.distributedAccount (分布式帐号管理)】

分布式帐号管理 本模块提供管理分布式帐号的一些基础功能&#xff0c;主要包括查询和更新帐号登录状态。 说明&#xff1a; 本模块首批接口从API version 7开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档&#xff…