【软件设计师】软件工程基础知识

news/2024/7/20 18:39:37/文章来源:https://blog.csdn.net/m0_62410106/article/details/137294006

1.软件工程概述

1.1 模型

1.1.1 增量模型

        增量模型又称之为渐增模型,也称之为有计划的产品改进模型;可以在增量开发的过程中逐步理解需求。

        它从一组给定的需求开始,通过构造一系列可执行中间版本来实施开发活动,在上一版本基础上纳入一部分需求以完成下一版本,依次类推,直至系统完成(核心产品即优先级高的产品往往首先开发,因此经历最充分的“测试”,第一个可交付版本所需的成本低,时间少,不必等到整个系统开发完成就可以使用),需注意,不是每个增量都必须要进行风险评估

        增量模型是瀑布模型和原型进化模型的综合,对软件设计具有更高的技术要求,特别是对软件体系结构,要求它具有更好的开放性和稳定性,能够顺利地实施构件 的集成(容易理解,管理成本低)

        增量模型是把软件产品作为一系列增量构建来设计,编码,集成和测试,每个构建由多个相互作用的模块组成,并且能够完成特定的功能

        该模型的难点:如何进行模块的划分

        扩展:基于构件的软件开发,强调使用可复用的软件“构件”设计和构建软件系统,对所需的构件进行合格性检验,适应性修改,并把它集成到新系统中。

1.1.2 瀑布模型

        瀑布模型将开发过程描述为从一个阶段瀑布般转换到另一个阶段的过程,将软件生命周期各个活动定为线性顺序连接的若干阶段的模型,规定了由前至后的固定次序

        瀑布模型可以有效地捕获系统需求

1.1.3 原型模型

        开发人员快速地构造整个系统或者系统的一部分以理解或澄清问题。

        原型模型是快速构建软件的原型,从初始的原型逐步演化为最终软件产品,特别适用于对软件需求缺乏准确认识的情况。

 1.1.4 喷泉模型

        开发过程中以用户需求为动力,以对象为驱动,适合于面向对象的开发方法。

        克服了瀑布模型不支持软件重用和多项开发活动集成的局限性

1.1.5 螺旋模型

        是风险驱动的,将开发活动和风险管理结合起来,以减小风险。

        是一种演化软件开发过程模型,它兼顾快速原型的迭代特征以及瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件再无法排除重大风险时有机会停止,以减小损失。

        同时,再每个迭代阶段构建原型是螺旋模型用以减少风险的途径,螺旋模型更适合大型的昂贵的系统级别=的软件应用

1.1.6 演化模型

        在获取一组基本的需求后,通过快速分析构造出该软件的一个初始可运行版本,然后逐步演化成为最终软件产品

1.1.7 模型适用:

        瀑布模型不能适应变化的需求,原型,增量,喷泉均能适应变化的需求   

        原型模型不适合大规模软件的开发,瀑布,螺旋,喷泉均可以

        增量模型不适合大规模团队开发的项目,是适用于商业产品的创新模型试题

        需求清晰,交付时间有严格限制的,最适合瀑布模型

        技术含量高,与客户相关的风险也很多,最使用螺旋过程模型 

        需求不清晰(经常发生变化)且规模不太大(且不太复杂)时采用原型化方法最适合

        数据处理领域的不太复杂的软件(规模不大),适合结构化方法进行开发

        例题:全面采用新技术开发一个系统,以替换原有的系统,适合选用瀑布模型,开发的系统功能与多个部门业务相关,希望系统尽快投入使用并不断改善,这应该使用 迭代(演化)模型(其实也适合原型模型,但是原型模型更适用于需求不明确时以获取需求

        

1.2 体系结构

1.2.1 三层c/s体系结构

        三层c/s体系结构由逻辑上相互分离的表示层,业务层和数据层

        表示层向客户提供数据,业务层实施业务相数据规则,数据层定义数据访问标准。

        优点:逻辑上相对独立,不同层可以用不同的平台,软件和开发语言,而系统的安装,修改和维护在各层都可能进行。

1.3 软件工程的基本要素

        包括方法,工具和过程

        过程是将技术结合在一起的凝聚力,使得计算机软件能够被合理地和及时地开发,过程定义了一组关键过程区域,构成了软件项目管理控制的基础

        方法提供了构造软件在技术上需要“如何做”,它覆盖了一系列的任务,方法也依赖于一些基本原则,这些原则控制了每一个技术区域,而且包含建模活动和其他描述技术

        工具对过程和方法提供了自动或半自动的支持,如计算机辅助软件工程(CASE)。

1.4 软件设计的任务

        任务:基于需求分析的结果建立各种设计模型,给出问题的解决方案。

        从工程管理的角度,可以将软件设计分为概要设计阶段和详细设计阶段

        概要设计将需求转化为软件的模块划分,确定模块与模块之间的调用关系;详细设计将模块进行细化,得到详细的数据结构化和算法

        概要设计文档包含 系统架构,模块划分 ,系统接口,数据设计  这4个主要方面的内容(包括 体系结构设计,数据库设计,逻辑数据结构设计),特别注意,不包括模块内部的算法

        结构化设计方法中,概要设计阶段进行软件体系结构的设计,数据设计和结构设计;详细设计阶段进行数据结构和算法的设计

        面向对象设计方法中,概要设计阶段进行体系结构设计,初步类设计/数据设计,结构设计;详细设计阶段进行构件设计

        结构化设计和面向对象设计是两种不同的设计方法,结构化设计根据系统的数据流图进行设计,模块体现函数,过程和子程序;面向对象设计基于面向对象的基本概念进行,模块体现为类,对象和构件等

1.5 软件需求

        软件需求是软件系统必须完成的事以及必须具备的品质

        软件需求包括功能需求,非功能需求和设计约束三个方面

        功能需求是所开发的软件必须具备什么样的性能

        非功能需求是指产品必须具备的属性或品质,如可靠性,性能,响应时间和扩展性等到

        设计约束通常对解决方案的一些约束说明        

1.6 软件度量

        软件复杂性度量是软件度量的一个重要分支。

        软件复杂性度量的参数有很多,比如:

        1,规模,即指令数或源程序行数

        2,难度,通常由程序中出现的操作数所决定的量来表示

        3,结构,通常用与程序有关的度量来表示

        4,智能度,即算法的难易程度

1.7 其他知识

        软件的三种基本控制结构:顺序,选择,重复

        I/O软件隐藏I/O操作实现的细节,方便用户使用I/O设备;I/O软件向用户提供的是逻辑接口;I/O软件将硬件与较高层次的软件隔离开来,而最高层软件向应用提供一个友好的,清晰且统一的接口,方便用户使用

        可维护性:在系统分析阶段的复审过程中,应该指出软件的可移植性问题以及可能影响软件维护的系统界面;在系统设计阶段的复审期间,应该从容易修改,模块化和功能独立的目的出发,评价软件的结构和过程;在系统实施阶段的复审期间,代码复审应该强调编码风格和内部说明文档这两个影响可维护的因素。可测试性是可维护性的一个评价指标。

2. 软件工具与开发环境

        逆向工程从源代码得到软件系统的规格说明和设计信息,属于软件维护阶段行为,因此逆向工程工具属于软件维护工具

3.软件开发项目管理

        项目风险:

4 软件质量管理

5.软件过程管理

5.1 原型法

        原型方法(系统原型)适用于用户需求不清,需求经常变化的情况,可以帮助导出系统需求并验证需求的有效性。 原型法能够迅速地开发出一个让用户看得见的系统框架,可以用来支持用户界面设计,原型法不能用来指导代码优化。

        探索性原型的目的是弄清目标的要求,确定所希望的特性,并探讨多种方案的可行性,可以用来探索特殊的软件解决方案

5.2 极限编程

        极限编程是一种轻量级(敏捷)、高效、低风险、柔性、可预测的、科学的软件开发方式

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

        5个原则:快速反馈,简单性假设,逐步修改,体长更改和优质工作

        12个最佳实践:计划游戏(快速指定计划,随着细节的不断变化而完善),小型发布(系统的设计要能够尽可能早地交付),隐喻(找到合适的比喻传达信息),简单设计(只处理当前的需求,使设计保持简单),测试先行(先写测试代码,然后再编写程序),重构(重新审视需求和设计,重新明确地描述他们以复合新的和现有的需求),结对编程(有一个非正式的代码审查过程,可以获得更高的代码质量,但是编码速度与传统的单人编程相当),集体代码所有制(任何开发人员可以对系统的任何部分进行改变),持续集成(可以按日甚至按小时为客户提供可运行的版本),每周工作40小时,现场客户和编码标准,系统最终用户代表应该全程配合Xp团队

5.3  CMM   

        CMM是软件过程能力成熟度模型,该模型按照软件过程的不同程度分为5个等级,1级被认为成熟度最低,5级被认为成熟度最高,一般来说,采用成熟度最高的软件过程模型,往往可以得到更高质量的软件产品

        1997年美国将已有的几个CMM模型结合在一起,构成"集成模型"(CMMi)

5.4 能力成熟度(CMMI)

        CMMI是若干个过程模型的综合和改进,提供了连续式模型和阶段式模型两种方法        

        连续式模型包括6个过程域能力等级

        CL0(未完成的):过程域未执行或未得到CL1种定义的所有目标        

        CL1(已执行的):其共性目标是过程将可标识的输入工作产品转换为可标识的输出工作产品,以是西安支持过程域的特定目标

        CL2(已管理的):其共性目标是集中于已管理的过程的制度化。根据组织级政策规定过程的运作将使用哪个过程,项目遵循已文档化的设计和过程描述,所有正在工作的人都有权使用足够的资源,所有工作任务和工作产品都被监控,控制,和评审

        CL3(已定义级的):其共性目标集中于已定义的过程的制度化。过程是按照组织的裁剪指南从组织的标准过程种裁剪得到的,还必须收集过程资产和过程的度量,并用于将来对过程的改进。

        CL4(定量管理):其共性目标集中于可定了管理的过程的制度化。使用测试和质量保证来控制和改进过程域,建立和使用关于质量和过程执行的质量目标作为管理准则。

        CL5(优化的):使用量化(统计学)手段改变和优化过程域,以满足客户的该表和持续改进计划种的过程域的功效。

  5.5 敏捷过程

        在敏捷开发过程中,并列争球法使用了迭代的方法,其中,把每段时间(30天)一次迭代称为一个“冲刺”,并按需求的优先级别来实现产品,多个自组织和自治的小组并行的递增实现产品。

        极限编程XP是激发开发人员创造性,使得管理负担最小的一组技术;

        水晶法Crystal认为每一个不同的项目都需要一套不同的策略、约定和方法论;      

        自适应软件开发(ASD)有6个基本的原则:

        1.在自适应软件开发中,有一个使命作为指导,它设立了项目的目标,但不妙时如何达到这个目标

        2.特征被视为客户键值的关键,因此,项目是围绕着构造的构建来组织并实现特征

        3.过程中的迭代是重要的,因此重做与做同样的重要,变化也包含其中

        4.变化不视为是一种更正,而是软件开发实际情况的调整,

        5.确定的交付时间迫使开发人员认真考虑每一个生产版本的关键需求

        6.风险也包含其中,它迫使开发人员首先跟踪最艰难的问题

5. 统一过程UP

        基本特征:以用例和风险驱动,以架构为中心,受控的迭代式的增量开发。

        

       

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

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

相关文章

完成商品SPU管理页面

文章目录 1.引入前端界面1.将前端界面放到commodity下2.创建菜单3.进入前端项目,使用npm添加依赖1.根目录下输入2.报错 chromedriver2.27.2的问题3.点击链接下载压缩包,然后使用下面的命令安装4.再次安装 pubsub-js 成功5.在main.js中引入这个组件 4.修改…

真实故障分享,H3C ER3208G3-X路由器-双绞线一闪一停

六类非屏蔽双绞线 网线钳 如上图所示,2号线接到h3c路由器出现网线一闪一停,用对线器测试一到8芯能一一对应,无法上网。2号线接到h3c交换机能正常上网,难道是网线对568A 568B有要求? 解决方式:通过两端568…

本地开发正常 线上CI/CD构建项目过程报错文件未能正确引用

问题快照 原因分析: 一般遇到这样的错误就是 文件路径或者文件名称未能正确匹配 或者文件不存在 会报这样的错误 以为很好解决 但这次 都排查 了 就是 没发现原因 不管怎么说还是要感谢 GPT的能力(分析问题的能力) 先上图 当我看到 第四步的时候 我立马 去仓库里查…

大模型预训练结果到底是什么?

近日参加一个线下 AI 交流会议,会上有个非本行业的老师提问:“大家说的训练好的大模型到底是什么?是像 Word 软件一样可以直接使用的程序吗?” 这个问题看似简单,却一下把我问住了。的确,我们这些身处 AI 领…

POLARDB:新零售用户MySQL上云最佳选择

什么是云数据库POLARDB? POLARDB是阿里云自主研发的最新一代RDS关系型数据库,是特别针对互联网场景设计的Cloud-Native 云原生数据库。POLARDB for MySQL版本,在提供100%兼容MySQL5.6/8.0的关系型事务处理ACID特性之上,能够提供完…

算法之背包问题

可分的背包问题是可以用贪心法来解决,而0-1背包问题通常使用动态规划方法来解决。 可分背包问题: 在可分背包问题中,物品可以被分割,您可以取走物品的一部分以适应背包的容量。这里的关键是物品的价值密度,即单…

间接平差——以水准网平差为例 (python详细过程版)

目录 一、原理概述二、案例分析三、代码实现四、结果展示本文由CSDN点云侠原创,间接平差——以水准网平差为例 (python详细过程版),爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT生成的文章。 一、原理概述 间接平差的函数模型和随机模型…

py黑帽子学习笔记_scapy

简介 代码简洁:相比于前两个博客总结,很多socket操作,如果使用scapy仅需几行代码即可实现 获取邮箱身份凭证 编写基础嗅探器,脚本可显示任何收到的一个包的详细情况 直接运行 尝试监听邮件收发,监听指定端口&#x…

解密网络流量监控:优化IT运维的利器

引言: 在当今数字化时代,网络流量监控是维护网络稳定与业务连续性的关键。作为一名资深网络工程师,我将分享一些关于网络流量监控的重要知识,并探讨如何在IT运维中运用这一工具优化网络性能,确保业务的顺畅进行。 1. 网…

Biological Psychiatry:内源性功能连接的特定模式与强迫症的伤害回避有关

摘要 强迫症(OCD)患者通常在没有实际威胁的情况下表现出持续的回避行为。强迫症对生活质量的影响和患者之间的异质性使得寻找新的大脑-行为干预目标十分有必要。基于啮齿类动物和非人灵长类动物持续回避行为的机制和解剖学研究,本研究的目标是测试持续回避行为相关…

用于脑肿瘤分割的跨模态深度特征学习| 文献速递-深度学习肿瘤自动分割

Title 题目 Cross-modality deep feature learning for brain tumor segmentation 用于脑肿瘤分割的跨模态深度特征学习 01 文献速递介绍 作为最致命的流行病,脑肿瘤的研究越来越受到关注。本文研究了一种基于深度学习的自动分割胶质瘤的方法,称为脑…

百度ERNIE系列预训练语言模型浅析(4)-总结篇

总结:ERNIE 3.0与ERNIE 2.0比较 (1)相同点: 采用连续学习 采用了多个语义层级的预训练任务 (2)不同点: ERNIE 3.0 Transformer-XL Encoder(自回归自编码), ERNIE 2.0 Transformer Encode…

Pandas-中axis的用法

在Pandas中,min(axis)方法是计算DataFrame或Series中每行或每列的最小值的函数。该函数可以接受一个参数axis,用于指定计算最小值的方向。当axis0时,表示沿着行的方向计算最小值;当axis1时,表示沿着列的方向计算最小值…

网络原理-------TCP协议

文章目录 TCP协议TCP协议段格式TCP原理确认应答机制 (安全机制)超时重传机制 (安全机制)连接管理机制 (安全机制)滑动窗口 (效率机制)流量控制 (安全机制)拥塞控制 (安全机制)延迟应答 (效率机制)捎带应答 (效率机制) 基于TCP的应用层协议 TCP协议 TCP, 即 Transmission Contr…

c语言 分而治之(施特拉森矩阵乘法)

给定两个大小分别为 nxn 的方阵 A 和 B&#xff0c;求它们的乘法矩阵。 朴素方法&#xff1a;以下是两个矩阵相乘的简单方法。 void multiply(int A[][N], int B[][N], int C[][N]) { for (int i 0; i < N; i) { for (int j 0; j < N; j) { …

Vanna使用ollama分析本地MySQL数据库

上一章节中已经实现了vanna的本地运行&#xff0c;但是大模型和数据库都还是远程的&#xff0c;因为也就没办法去训练&#xff0c;这节一起来实现vanna分析本地mysql数据库&#xff0c;因为要使用本地大模型&#xff0c;所以开始之前需要给本地安装好大模型&#xff0c;我这里用…

Redis面试题深度解析

1、我看你做的项目中&#xff0c;都用到了redis&#xff0c;你在最近的项目中哪些场景使用了redis呢? 2、缓存穿透 布隆过滤器的误判现象 Redisson和Guava都对布隆过滤器进行了实现 3、缓存击穿 互斥锁&#xff0c;就是一个线程来修改&#xff0c;并占据了锁&#xff0c;另外其…

基于 Coze 从 0-1 搭建专属 小白的Bot 机器人

基于 Coze 从 0-1 搭建专属 小白的Bot 机器人 ​ 作为一个GIS从业人员&#xff0c;对于AI的使用是必不可少的&#xff0c;在过去的一两年里各种大模型频出&#xff0c;AI技术已经成为GIS领域的一项重要工具&#xff0c;为我们提供了许多强大的功能和解决方案。看到好文章都在介…

AI视频教程下载:全面掌握ChatGPT和LangChain开发AI应用(附源代码)

这是一门深入的课程&#xff0c;涉及ChatGPT、LangChain和Python。打造专注于现实世界AI集成的AI应用&#xff0c;课件附有每一节涉及到的源代码。 **你将学到什么&#xff1a;** - 将ChatGPT集成到LangChain的生产风格应用中 - 使用LangChain组件构建复杂的文本生成管道 - …

Jeecg | 完成配置后,如何启动整个项目?

前端启动步骤&#xff1a; 1. 以管理员身份打开控制台&#xff0c;切换到前端项目目录。 2. 输入 pnpm install 3. 输入 pnpm dev 4. 等待前端成功运行。 可以看到此时前端已经成功启动。 后端启动步骤&#xff1a; 1. 启动 mysql 服务器。 管理员身份打开控制台&#…