系统架构设计师-软件工程(1)

news2024/11/25 2:54:12

一、软件过程模型      

        (1)瀑布模型、(2)V模型【瀑布变种】、(3)原型模型

        (4)螺旋模型【原型+瀑布】、(5)构件组装模型/基于构件的开发方法、

        (6)快速应用开发RAD【瀑布+构件组装】、(7)统一过程/统一开发方法

        (8)敏捷开发方法

        1、瀑布模型

                

                【特点】:

                        (1)严格区分阶段,每个阶段因果关系紧密相连

                        (2)只适合需求明确的项目

                【缺点】:

                        (1)软件需求完整性、正确性难确定

                        (2)严格串行化,很长时间才能看到结果

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

        2、V模型【瀑布变种】

                瀑布的改进,测试贯穿于始终,测试分阶段,测试计划提前。

                

        3、原型模型

                设计一个简易系统,了解用户的需求,客户可以看到他们想要改变的,有利于提高用户界面的接受程度,适合需求不明确的项目,原型主要用在需求阶段。

                原型模型两个阶段:

                (1)原型开发阶段:通过做一个简易原型,向客户了解具体需求。
                (2)目标软件开发阶段:通过获取到的具体需求,完成目标软件的开发。

                原型相关模型:

                

                (1)螺旋模型

                (2)抛弃型原型(也叫快速原型模型):用户需求确定之后即不再继续开发此原型。

                (3)演化型原型:逐步改进和细化原型,将原型进化为最终系统。

                (4)增量模型:在建立软件总体设计基础上,采用增量开发方法,使原型成为最终系统。

                        迭代与增量模型区别:

                 

                                 

        4、螺旋模型【原型+瀑布】

                兼顾了快速原型迭代的特征以及瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型更适合大型的昂贵的系统级的软件应用。

                

                

(1)制定计划:确定目标,选定实施方案,弄清项目开发的限制条件;

(2)风险分析:分析评估所选方案,考虑如何识别和消除风险;

(3)实施工程:实施软件开发和验证;

(4)客户评估:评价开发工作,提出修正建议,制定下一步计划。

        5、构件组装模型/基于构件的开发方法

                【优点】易扩展、易重用、降低成本、安排任务更灵活。

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

                【示例】方舱医院、乐高积木

                构件 --> 服务 --> 微服务(一种标准化程度很高的构件)

                

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

                        CBSE体现了【购买而不是重新构造】的哲学。

                        【CBSE构件应该具备的特征】:

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

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

                        (3)文档化:用户根据文档来判断构件是否满足要求。

                        (4)独立性:可以在无其他特殊构件的情况下进行组装和部署。

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

                        【构件的组装】:

                        (1)顺序组装:按顺序调用已经存在的构件,可以用两个已经存在的构件来创造一个新的构件。

                        (2)层次组装:被调用构件的 ”提供“ 接口必须和调用构件的 ”请求“ 接口兼容

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

        6、快速应用开发RAD【瀑布+构件组装】                

     

        7、统一过程/统一开发方法

                

                初始:(1)定义最终产品视图和业务模型(2)确定系统范围

                细化:(1)设计及确定系统架构(2)制定工作计划及资源要求

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

                移交:(1)确保软件对最终用户是可用的,进行β3测试,制作产品发布版本

 

        8、敏捷开发方法

                1、极限编程(XP):价值观【交流、朴素、反馈、勇气】、近螺旋式的开发方法。

                2、水晶方法提倡 “机动性” 的方法,拥有对不用类型项目非常有效的敏捷过程。

                3、迭代式增量软件开发过程(SCRUM):侧重于项目管理。

                4、特征驱动开发方法(FDD):认为有效的软件开发需要3要素【人、过程、技术】。定义了6种关键的项目角色:项目经理、首席架构师、开发经理、主程序员、程序员和领域专家

                5、开放式源码:程序开发人员在地域上分布很广【其他方法强调集中办公】。

                6、自适应软件开发(ASD):其核心是三个非线性的、重叠的开发阶段:猜测、合作与学习。

                7、动态系统开发方法(DSDM):倡导以业务为核心。

                敏捷宣言:

                        (1)个体和交互胜过过程和工具(2)可工作的软件胜过大量的文档

                        (3)客户合作胜过合同谈判(4)响应变化胜过遵循计划

                敏捷方法 - XP (极限编程):

                        4大价值观:

                                (1)沟通【加强面对面沟通】(2)简单【不过度设计】

                                (3)反馈【及时反馈】(4)勇气【接受变更的勇气】

                        12条过程实践规则:

                                (1)简单设计(2)测试驱动(3)代码重构(4)结对编程

                                (5)持续集成(6)现场客户(7)发行版本小型化(8)系统隐喻

                                (9)代码集体所有制(10)规划策略(11)规划代码(12)40小时工作制

                敏捷方法 - SCRUM(迭代式增量软件开发过程):

                Scrum的工作流程包括以下几个步骤:            
                        1、产品负责人确定产品需求和优先级,将它们整理成一个产品待办列表。
                        2、Scrum Master和开发团队一起参加迭代计划会议,确定下一个迭代的目标和计划。
                        3、在迭代周期内,开发团队每日进行短暂的站立会议,交流进展和遇到的问题。
                        4、在迭代开发结束时,开发团队进行回顾会议,评估完成的工作和改进方法。
                        5、根据产品待办列表,确定下一个迭代的目标和计划,开始新的迭代周期。

                Scrum的优势,
                        1、更快的交付:通过迭代和增量的方法,团队可以更快地交付高质量的成果。
                        2、更好的合作:Scrum鼓励团队成员之间的互动和交流,促进了更好的合作和协作。
                        3、更好的控制:Scrum的固定时间和可视化进度可以帮助团队更好地控制项目进度。
                        4、更好的风险管理:Scrum的迭代式方法可以帮助团队更好地管理风险和问题。 

二、逆向工程       

         与逆向工程相关的概念有重构、设计恢复、再工程和正向工程。

        (1)重构/重组(Restructuring):重构是指在【同一抽象级别】上【转换系统描述形式】。是对源代码、数据进行修改,使其易于修改和维护,以适应将来的变更。

        (2)设计恢复(Design Recovery):设计恢复是指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计等方面信息。

        (3)逆向工程(Reverse Engineering):逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序的表示过程,逆向工程是设计的恢复过程

        (4)正向工程(Forward Engineering):正向工程是指不仅从现有系统中恢复设计信息,而且使用该信息去改变或重构现有系统,以改善其整体质量

        (5)再工程/重构工程(Re-engineering):再工程是对现有系统的重新开发过程,包括逆向工程、新需求的考虑过程和正向工程三个步骤。

三、净室软件工程

        属于形式化方法,数学理论为基础,以验证为导向,而不是测试。

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

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

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

      【技术手段】

                1、统计过程控制下的增量开发控制迭代

                2、基于函数的规范和设计盒子结构

                        定义三种抽象层次:行为视图(黑盒)-> 有限状态机视图(状态盒) -> 过程视图(明盒

                3、正确性验证:净室工程核心。

                4、统计测试和软件认证:使用统计学原理,总体太大时必须采用抽样方法

         【缺点】

                1、太理论化,正确性验证的步骤比较困难且耗时

                2、开发小组不进行传统的模块测试,这是不现实的

                3、脱胎于传统软件工程。不可避免带有传统软件工程的一些弊端

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

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

相关文章

学习Kotlin~类

类 类的field 类定义的每一个属性,kotlin都会产生一个filed,一个setter(),一个getter()field用来存储属性数据,不能直接定义,kotlin会封装,保护它里面数据,只暴露给getter和setter使用只有可变属性才有setter方法需要…

UNITY3D弹幕游戏,万人同屏解决方案_类萌宠宠之战

先上效果 (类萌宠宠之战)弹幕游戏,万人同屏解决方案演示 UNITY默认的人物动画显示方案是 SkinnedMeshRenderer 该动画的计算是由CPU计算(计算骨骼位置所影响的顶点位置) 所以是CPU计算,物体大于2000个时…

Python3,掌握这几种并行处理,轻轻松松提升for循环速度。

并行处理几种方法 1、引言2、并行处理2.1 定义2.2 并行处理优缺点2.3 并行处理的常用库2.4 代码示例2.4.1 multiprocessing2.4.2 concurrent.futures2.4.3 joblib2.4.4 threading 3、总结 1、引言 小屌丝:鱼哥,你给我讲一讲并行处理呗。 小鱼&#xff1…

Android:datePicker对话框的使用

一、前言&#xff1a;这篇文章是关于DatePickerDialog&#xff0c;点击按钮出现一个日期选择器对话框&#xff0c;通过点击确认把选则的日期显示到文本控件上。 二、上代码 页面布局xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout…

正则表达式回溯引发的生产惨案

文章目录 背景问题原因分析如何解决&#xff1f;chatgpt 3.5GP4的表现未完待续 背景 业务上的一个字段在解析时为了避免脏数据导致后续ETL的异常&#xff0c;决定从源头将该字段严格按照设计的规则去匹配。该字段的上传是设备端传上来的文件中的一个字段。 正向&#xff1f;反…

「C/C++」C++类与类的关系(UML类图+代码说明)

✨博客主页&#xff1a;何曾参静谧的博客 &#x1f4cc;文章专栏&#xff1a;「C/C」C/C学习 相关术语 &#x1f3af;依赖关系&#xff08;Dependency&#xff09;&#xff1a;表示一个类的实现需要另一个类的协助&#xff0c;虚线箭头&#xff0c;箭头指向被依赖的类。 &#…

基于当量因子法、InVEST、SolVES模型等多技术融合在生态系统服务功能社会价值评估中的应用及论文写作、拓展分析

生态系统服务是人类从自然界中获得的直接或间接惠益&#xff0c;可分为供给服务、文化服务、调节服务和支持服务4类&#xff0c;对提升人类福祉具有重大意义&#xff0c;且被视为连接社会与生态系统的桥梁。自从启动千年生态系统评估项目&#xff08;Millennium Ecosystem Asse…

2023软科中国大学智能建造专业排名结果出炉(共54所高校)

智能建造专业&#xff08;Intelligent Construction&#xff09;是一个新兴的跨学科领域&#xff0c;它涉及到建筑、土木工程、计算机科学、数据科学等多个学科的知识。智能建造专业专注于研究如何利用先进的计算机技术、人工智能&#xff08;AI&#xff09;、物联网&#xff0…

进销存软件市场成熟,为什么还要用低代码构建?

关键词&#xff1a;进销存软件、群晖NAS、低代码平台 编者按&#xff1a; 进销存管理软件产业已经逐步走向成熟&#xff0c;产品种类也越来越丰富&#xff0c;也正因如此&#xff0c;企业在选择购买进销存软件的时候&#xff0c;往往不知该如何选择。不少的企业会直接选择平台型…

[golang 微服务] 8.go-micro的负载均衡操作,go Web框(Gin,Beego)调用go-micro微服务

一.先创建go-micro服务端 启动consul 需要先启动consul, consol相关内容见 [golang 微服务] 5. 微服务服务发现介绍,安装以及consul的使用,Consul集群 [golang 微服务] 6. GRPC微服务集群Consul集群grpc-consul-resolver案例演示 启动consul命令,这里,使用dev模式: consul agen…

手机上怎么压缩视频?教你几招手机压缩视频小技巧

压缩视频是一种有益的技术&#xff0c;可以帮助人们在存储、传输和观看视频时更有效率和便捷。尤其是在现今数字化信息时代&#xff0c;视频已经成为人们日常生活中不可或缺的一部分&#xff0c;因此更需要使用视频压缩技术来更好地管理和使用这些视频文件。下面给大家分享几种…

Yolov8优化: 多分支卷积模块RFB,扩大感受野提升小目标检测精度

1.RFB-Net介绍 论文&#xff1a;https://arxiv.org/pdf/1711.07767.pdf 代码&#xff1a;GitHub - GOATmessi7/RFBNet: Receptive Field Block Net for Accurate and Fast Object Detection, ECCV 2018 受启发于人类视觉的Receptive Fields结构&#xff0c;本文提出RFB&#xf…

3.1 C++纯虚函数

C 纯虚函数 C的纯虚函数是一种特殊的虚函数&#xff0c;没有函数体&#xff0c;只有函数原型。 纯虚函数语法格式为&#xff1a; 等号后面的 0 表示该函数为纯虚函数。 纯虚函数在抽象类中定义&#xff0c;抽象类是指包含至少一个纯虚函数的类&#xff0c;不能被实例化。 …

bim在建筑工程中的应用有哪些?

BIM以其在协同设计、冲突检测、可视化沟通、项目控制和可持续性设计等方面的应用&#xff0c;提高了建筑工程的效率、质量和可持续性&#xff0c;为各利益相关者带来了诸多益处。它已逐渐成为现代建筑工程不可或缺的重要工具和方法。BIM在建筑工程的作用越来越明显。 ​  BIM…

HOT29-删除链表的倒数第 N 个结点

leetcode原题链接&#xff1a;删除链表的倒数第 N 个结点 题目描述 删除链表的倒数第 N 个结点。 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,…

伦敦金k线图基础知识有多重要?

正所谓万丈高楼平地起&#xff0c;不积跬步无以至千里&#xff0c;在投资市场上也才如此&#xff0c;从来没有投资者能够在伦敦金市场上一蹴而就地取得成功&#xff0c;很多成功的交易者都是一步一个脚印&#xff0c;从最基础知识开始学起&#xff0c;逐渐成为专业的投资者。 看…

新星计划2023【Java基础及数据库Mysql】学习方向报名入口!

新星计划2023【Java基础及数据库Mysql】学习方向报名入口&#xff01; 一、关于本学习方向导师二、关于本学习方向官方微信群三、关于活动时间&奖品&要求四、学习计划五、TOP5评选规则六、活动要求七、注意事项 本赛道是针对那些希望从事Java开发并且想要学习如何与数据…

NVIDIA-Linux-x86_64-535.54.03.run cuda_12.2.0_535.54.03_linux.run下载地址

Official Drivers | NVIDIA Linux x64 (AMD64/EM64T) Display Driver | 535.54.03 | Linux 64-bit | NVIDIA 下载连接 Download NVIDIA, GeForce, Quadro, and Tesla DriversDownload drivers for NVIDIA graphics cards, video cards, GPU accelerators, and for other GeFor…

CAD转换PDF怎么转换?教你几种简单转换方法

CAD&#xff08;计算机辅助设计&#xff09;是一种广泛应用于工程设计和制造领域的软件。虽然CAD可以生成高质量的设计图纸&#xff0c;但是在与其他人共享这些图纸时可能会出现问题。因此&#xff0c;将CAD文件转换成PDF可以在各种设备上打开和查看。此外PDF还可以在不改变文件…

Postman设置断言

目录 前言&#xff1a; 一、断言的定义 二、Postman断言的语法 三、Postman中chai.js断言常用语法 前言&#xff1a; 在进行API测试时&#xff0c;断言是一项重要的功能。它能帮助我们验证接口的响应是否符合预期结果&#xff0c;从而确保API的正确性和可靠性。在Postman中…