软件工程(一)——软件开发模型和方法

news2024/11/18 1:40:27

目录

         (一)软件开发方法

(二)瀑布模型

(三)原型模型

(四)螺旋模型与增量模型

(五)V模型、喷泉模型、RAD模型

  (六)  统一过程(RUP) 

(七)敏捷方法

(八)逆向工程

(九)净室软件工程


    (一)软件开发方法

        当想要完成一个需求时,必须要遵循某些原则,如果随意开发,可能会产生许多问题,因此软件开发方法就是为了减少软件开发过程中问题的产生

  • 结构化方法:需要遵循用户至上;严格区分工作阶段,每阶段有任务与成果;强调系统开发过程的整体性和全局性;系统开发过程工程化,文档资料标准化;自顶向下,逐步分解的原则。缺点就是需求应变能力差,将流程固化了,需要明确输入和输出。
  • 面向对象方法:关键在于建立一个全面、合理、统一的模型,有更好的复用性,有分析、设计、实现三个阶段,界限不明确
  • 原型法方法:例如demo。适用于需求不明确的开发,包括抛弃型原型和演化型原型
  • 面向服务的方法: SO方法有三个抽象级别(操作、服务、业务流程);SOAD分为三个层次:基础设计层(底层服务构建)、应用结构层(服务之间的接口和服务级协定)和业务组织层(业务流程建模和服务流程编排);服务建模,分为服务发现、服务规约、服务实现三个阶段

 (二)瀑布模型

        分为计划、需求分析、软件设计、编码、测试、运行维护;每一个阶段做完才进行下一个阶段;如果之前的环节出错,那么就回退到出错的环节。因此,瀑布模型适用于需求明确的项目。

(三)原型模型

         原型模型包括抛弃型原型和演化型原型。抛弃型原型又称为快速原型模型,这种方法目的就是为了快速获取需求,写出来的原型demo就是为了给用户看,明确需求后的原型就不具备价值了,可以将原型抛弃。而演化型原型就是在原型的基础上不断地与用户反复完善需求最终成为产品。此模型适用于需求不明确的项目。

 

 (四)螺旋模型与增量模型

        螺旋模型在原型模型的基础上叠加了瀑布模型的特点,在原型的基础上每一次完善需求都走一遍瀑布模型。除此之外,还在每次迭代中增加风险分析环节。看重每次迭代的风险。适用于大型项目。

        而增量模型,是将系统功能进行拆分。每个模块之间可相互独立运行,先上线核心模块,之后在后续的版本添加其他模块,最后完成一个系统。

 (五)V模型、喷泉模型、RAD模型

        V模型在瀑布模型上做了些改动,它看重测试,在需求分析阶段提前制定好验收测试、系统测试计划。 在概要设计阶段提前制定好集成测试计划,在详细设计阶段提前制定好单元测试计划。测试贯穿整个流程,提倡测试尽早做。

        喷泉模型是面向对象模型,拥有迭代,无间隙的特点。软件的某个部分常常被重复工作多次,相关对象在每次迭代中随之加入渐进的软件成分。无间隙指在各项活动之间无明显边界,如分析和设计活动之间没有明显的界限,由于对象概念的引入,表达分析、设计、实现等活动只用对象类和关系,从而可以较为容易地实现活动的迭代和无间隙,使其开发自然地包括复用。

       快速应用开发(RAD)是瀑布模型(SDLC) 和基于构建开发(CBSD)的结合。RAD顾名思义就是快,主要原因是有一个功能稳定的构件库,可以快速复用,节约成本。大多情况只需要将构件组装就可以完成新的功能。

    (六) 统一过程(RUP) 

        基于构建开发的基础上发展而来。有三个特点:在整个软件开发过程中把用例当作推动整个流程的关键因素;看重架构,率先搭建框架,再稳定的架构上进行开发;用迭代和增量进行开发,而不是一次性开发好。

        RUP 有4个阶段:初始、细化、构建、交付阶段。在初始阶段要界定项目该做什么,不该做什么。要识别系统关键的、常用的功能,保障关键用例,那么系统80%的时间使用起来是正常的以"生命周期目标"为里程碑;在细化阶段最主要的任务是完成架构设计,分析系统问题领域,建立软件架构基础、淘汰高风险元素等,以"生命周期架构"为里程碑;构建阶段指构建拼装起来的阶段,对于可复用的功能直接使用构建进行测试以"初始运作功能"为里程碑,对于不可复用的,那么要开发;交付阶段主要是测试和发布版本以及产品培训相关,以"产品发布"为里程碑

   (七)敏捷方法

适合小型项目的开发,所谓敏捷,就是为了快,砍掉一些文档,根据情况调整计划等。文档在大型项目中充当沟通工具。砍掉了文档,那么就要加强其他沟通手段。不过度设计,把功能进行简单的设计,先能跑起来,再优化。及时与客户相关问题。要有应对变更的勇气,变更回避不了,越拖后期修改的代价越高。

  • 极限编程XP,XP是轻量级、高效、低风险、柔性、可预测的、科学的软件开发方式。不断的沟通,反馈,改进完成。4个价值观(沟通、简单性、反馈、勇气),5个原则(快速反馈、简单性假设、逐步修改、提倡更改和优质工作),12个最佳实践:计划游戏、小型发布、隐喻、简单设计、测试先行、重构、结对编程、集体代码所有制、持续集成、每周工作40小时、现场客户和编码标准。可以对费用控制严格的公司的使用。
  • 水晶法(Cockburn):认为每一个不同的项目都需要一套不同的策略、约定、和方法论。认为人员素质对软件质量有重要影响。用最少的纪律约束而仍能成功的方法
  • 并列争球法(SCRUM):在每一次冲刺(2到4周为一个周期 ,长度由开发团队决定),开发团队创建可用的(可以随时推出)软件的一个增量版本。每一个冲刺所要实现的特性来自产品订单(product backlog), 产品订单(产品目标)是指按照优先级排列的需要完成的工作的概要的需求(目标)。哪些订单项(目标项目)会被加入一次冲刺版本,由冲刺计划会议决定。 在会议中,产品负责人告诉开发团队他需要完成产品订单中的哪些订单项(需求)。开发团队决定在下一次冲刺中他们能够承诺完成多少订单项。 在冲刺的过程中,没有人能够变更冲刺订单(sprint backlog),这意味着在一个冲刺中需求是被冻结的。明确定义了可重复的方法过程
  • 自适应软件开发:原则6个:有一个使命作为指导;特征被视为客户价值的关键点;过程中的等待是很重要的,“重做”与“做”同样关键;把变化视为软件开发实际情况的调整;确定的交付时间迫使开发人员认真考虑每一个生产版本的关键需求;风险也包含其中。
  • *敏捷统一过程(AUP):采用UP经典活动(初始,精化,构建,转化)。提供一些列活动,使团队为软件项目构想出一个全面的过程流。每一个活动使用敏捷,并将有意义的增量尽快交给用户
     

(八)逆向工程

        通俗的来讲,逆向工程就是山寨别人现有工程的过程。将一个成熟的现有工程进行拆解,阅读别人的代码,了解它的功能,再了解它的架构、框架、流程。了解通了之后,再这基础上再进行搬运,添加新的需求,成为一个新的系统。

 (九)净室软件工程

        软件开发一开始进行建模,然后转成代码。用数学的方法验证方法、规范的正确性.思想是人工干预容易出错,整个过程最好像机器一样去执行。

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

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

相关文章

idea 中 connot run program “svn“ 系统找不到文件

idea 中 connot run program “svn“ 系统找不到文件1. idea中svn的问题1.1 idea connot run program "svn"1.1.1 解决办法-重装svn1.2 idea中check out灰色不可用1.2.1 解决办法—装插件1. idea中svn的问题 1.1 idea connot run program “svn” 如图:…

2023年机床工具行业研究报告

第一章 行业概况 生产和销售机床工具的行业。机床是指制造机器的机器,亦称工作母机或工具机,习惯上简称机床。一般分为金属切削机床、锻压机床和木工机床等。现代机械制造中加工机械零件的方法很多:除切削加工外,还有铸造、锻造、…

【ES实战】索引生命周期管理(一)

索引生命周期管理ILM(index lifecycle management) 文章目录索引生命周期管理ILM(index lifecycle management)概述版本矩阵主要概念索引生命周期阶段的过渡阶段的执行生命周期中的操作生命周期策略索引翻滚…

AzureRT:一款能够实现各种Azure红队技战术的PowerShell模块

关于AzureRT AzureRT是一款能够实现各种Azure红队技战术的PowerShell模块,在AzureRT的帮助下,广大研究人员可以从攻击者的角度来与Azure和Azure AD进行交互,以此来测试目标环境的安全性。 AzureRT可以帮助广大研究人员测试和处理基于访问令…

【工具】操作PDF推荐的java依赖

Apache PDFBox |一个 Java PDF 库 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox-app</artifactId><version>2.0.27</version></dependency> Apache PDFBox - A Java PDF Library Apache PDFBox 库…

超详解线段树(浅显易懂)

一&#xff0c;什么是线段树&#xff1f;线段树是怎样的树形结构?线段树是一种二叉搜索树&#xff0c;而二叉搜索树&#xff0c;首先满足二叉树&#xff0c;即每个结点最多有两颗子树&#xff0c;并且是一颗搜索树&#xff0c;我们要知道&#xff0c;线段树的每个结点都存储了…

用于在过程工业中参数化配置现场设备的移动式解决方案

EndressHauser提供了一个组合套件&#xff08;包含Field Xpert和Softing的mobiLink通信工具&#xff09;&#xff0c;可用于参数化配置和现场调试。 &#xff08;将Softing的mobiLink通信工具与EndressHauser的Field Xpert SMT70或SMT77平板电脑相结合使用&#xff0c;可为用户…

再见 Matplotlib 和 Seaborn ,Python 画图建议用这个

本文主要介绍 Python 中用来替代 Matplotlib 和 Seaborn 的可视化工具 plotly&#xff0c;并结合实例讲解了 plotly 的优点和用法&#xff0c;满足了可视化绘图的交互需求。 数据可视化是人脑有效理解各种信息的最舒适、最直观的方式。对于需要处理数据的人来说&#xff0c;能…

谈思生物直播课|辛格迪副总裁“细胞治疗数字化解决方案”

近年来&#xff0c;细胞基因治疗在全球范围内得到了快速的发展。因为细胞基因治疗药物的特殊性&#xff08;从人体中采得活细胞&#xff0c;经过特别的处理技术后再输入人体&#xff09;&#xff0c;其安全性也被监管机构和药企高度关注&#xff1b;同时&#xff0c;也由于其制…

Laravel笔记-使用composer搭建Laravel环境(开发工具phpStorm)

以前写过一个&#xff0c;但没这个composer直接搭建的方便。在此记录下。 使用国内的 Composer 加速镜像 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 新建一个名为MyRestfulTest的项目&#xff1a; composer create-project larave…

测试go test

目录go test工具单元测试测试代码go test -run跳过某些测试用例子测试表格驱动测试并行测试报告方法测试覆盖率基准测试demo性能比较函数计时方法并行测试TestMainSetup与Teardownhttptest简单的 Web 应用测试Go 语言从开发初期就注意了测试用例的编写。特别是静态语言&#xf…

【java入门系列六】java基础-面向对象进阶**

学习记录&#x1f914;IDE快捷键包访问修饰符封装结合构造器进行封装继承-代码的复用性继承的构造器继承的本质super关键字方法的重写override多态**难点多态trickinstanceof动态绑定**多态数组多态参数object类trickObject类创建对象流程讨论总结谢谢点赞交流&#xff01;(❁◡…

MDK的格式化代码工具及添加快捷方式

文章目录Astyle介绍插件安装参数设置格式化整个工程参数说明快捷键设置参考Astyle介绍 Astyle 即Artistic Style&#xff0c;是一个可用于C, C, C/CLI, Objective‑C, C# 和Java编程语言格式化开源工具。 官网&#xff1a;Artistic Style - Index 插件安装 不用安装&#xf…

年前花2个月面过阿里测开岗,拿个27K也不过分吧?

背景介绍 美本计算机专业&#xff0c;代码能力一般&#xff0c;之前有过两段实习以及一个学校项目经历。第一份实习是大二暑期在深圳的一家互联网公司做前端开发&#xff0c;第二份实习由于大三暑假回国的时间比较短&#xff08;小于两个月&#xff09;&#xff0c;于是找的实…

23.1.29 make menuconfig执行过程

1、将uboot源码拷贝ubuntu中 1.在家目录创建一 -个demo文件夹 2.将en. SOURCES - stm32mp1- openstlinux-5.10- dunfell- mp1-21- 11-17_ tar_ v3.1.0. xz文件夹拷贝到~/ demo文件夹下面 3.进入~/demo目录下&#xff0c;对en . SOURCES- stm32mp1 - openstlinux-5. 10- dunfell…

第02天-Java数据结构和算法

目录 021_单链表新浪面试题 单链表面试题&#xff08;新浪、百度、腾讯&#xff09; 代码实现 022_单链表腾讯面试题 图解 代码实现 023_单链表百度面试题 图解 代码实现 024_双向链表增删改查分析图解 双向链表应用实例 图解 代码实现 026_双向链表功能测试和小结 …

10个方法教你解决虚幻4运行崩溃问题

“多年来我一直在我的电脑上使用不同版本的虚幻引擎 4&#xff0c;但最近它突然在启动时崩溃。我最初认为这是一个项目相关的问题&#xff0c;但后来注意到即使是从桌面图标或 Epic Games Launcher执行Unreal Engine 4&#xff0c;也是闪了几秒就直接闪退了。这个问题真是让我很…

Nginx从入门到精通(从安装到实践,持续更新中)

一&#xff0c;安装从官网下载相应的tar包http://nginx.org/通过命令tar zxvf tar包名 -c 解压路径 解压到指定的目录下在解压的nginx包下有一个confuture文件&#xff0c;可通过./confuture判断是否符合安装条件&#xff08;./configure --prefix/usr/local/nginx即可指定一会…

H3CMSR 系列路由器限速配置

1 配置需求或说明 1.1 适用产品系列 本手册适用于如下产品&#xff1a;MSR 全系列路由器 1.2 配置需求及实现的效果 MSR路由器G0/0接口连接公网&#xff0c;G0/1接口连接内网&#xff0c;内网网关地址为MSR路由器VLAN1虚接口地址192.168.1.1/24&#xff0c;需要实现对内网I…

1605_Git版本管理概念图解_git_for_computer_scientists阅读

全部学习汇总&#xff1a; GitHub - GreyZhang/g_unix: some basic learning about unix operating system. 目前没有很好的笔记分类放置这一份学习笔记&#xff0c;因为我的工具箱分类并不适合它。我之前的工具箱笔记主要还是简洁扼要来列出工具使用的参考&#xff0c;而这个其…