首页 > 其他分享 >软件工程基础知识

软件工程基础知识

时间:2024-11-07 13:20:35浏览次数:1  
标签:需求 模型 系统 基础知识 软件工程 开发 软件 过程

三要素:

方法、工具、过程

研究内容:

开发技术(开发方法学、开发过程模型、开发工具和环境);工程管理(软件管理学、软件工程经济学、软件心理学)

过程:

PDCA

plan:软件规格说明,规定软件的功能及其使用的限制

do:软件开发,产生满足规格说明的软件

check:软件确认,通过有效性验证保证软件满足客户的需求

action:软件演进,满足客户的变更要求,在使用过程中不断地改进

生命周期的基本活动PDDDCA

P 指定计划:确定要开发软件的总目标,给出他的功能、性能、可靠性和接口等方面的要求;研究可行性,探讨解决问题的可能性;指定开发计划和可行性研究报告

D 需求分析:需求说明书和用户手册

D 涉及:核心技术,对每个模块要完成的工具进行具体的描述,编写设计说明书

D 程序编写:把软件设计转换成计算机的程序代码

C 测试:测试软件的各个组成部分

A 运行维护:开发的软件投入使用,在使用过程总进行适当的维护

软件生命周期模型
瀑布模型

image-20240523225031709

优点:

  1. 降低开发复杂度,提高软件开发透明性,提高软件开发过程的可管理性
  2. 软件实现前必须分析和设计
  3. 保证各个阶段之间的正确衔接,可以及时发现开发过程中存在的缺陷

缺点:

  1. 缺乏灵活性,只适合性需求明确的软件项目
  2. 时间长,风险和错误只有在测试阶段才可以发现
  3. 文档多,增加工作了
V模型和W模型

image-20240523225341475

测试还是独立的阶段,没有提高模型抗风险的能力

image-20240523225412666

测试和开发同步进行

原型方法

image-20240523231412667

最开始:完整准确的需求规格说明很难得到

用户先使用原型系统,提出需求,开发者根据需求对原型进行修改,获得新的版本,一直重复,知道产品满足用户需求。

种类:探索型(弄清对目标系统的要求)实验型(系统实现前考察系统的可行性)进化型(将原型扩展到开发过程,通过原型开发逐步实现所有系统功能)

优点:增长开发者和用户对系统需求的理解;易确定系统的系统、服务的可能性、设计的可行性和产品的结果;原型可作为最终产品的一部分

缺点:文档易忽略;项目难以规划和管理

演化模型

image-20240523225802355

针对需求不是很明确的项目

缺点:开发过程不透明;属于探索式,会导致系统结构比较差;开发过程会用到一些不符合主流、要求和不成熟的工具和技术

增量模型

image-20240523225959497

优点:

  1. 客户可以逐步提出需求,且需求的增量不影响系统体系结构
  2. 项目总体失败的风险较低
  3. 增量从高到低的优先级保证了系统重要功能部分的可靠性
  4. 系统稳定和维护

缺点:粒度选择???确定所有的业务比较难

螺旋模型

大型项目(事先不能清晰定义需求,存在很多的风险因素)

image-20240523230536486

比较难:因为风险分析需要丰富的评估经验

喷泉模式

特征:迭代(多次重复、演进)无间隙(各阶段没有明显的界限,分析和设计结果的自然复用)

image-20240523230714169

构建组装模型

开发过程式迭代的,侧重以软件组件的复用和组装,不是从0开始编写代码

image-20240523231450392

快速应用开发(RAD)模型

构件组装的方法进行开发

image-20240523231649879

  1. 以什么信息驱动业务过程运作? 要生成什么信息? 谁生成它? 信息流的去向? 由谁处理? 数据流图
  2. 建立数据对象集合,定义数据对象属性,与其它数据对象的关系构成数据模型 E-R图
  3. 如何使数据对象在信息流中完成各业务功能。描述数据对象的增加、修改、删除、查找。细化数据流图中的处理框
  4. 利用环境提供的工具,自动生成,整个应用系统
  5. 由于大量使用,一般是整体测试,但新的构建需要测试。一轮需求完成后迭代下一轮需求的开发

标签:需求,模型,系统,基础知识,软件工程,开发,软件,过程
From: https://www.cnblogs.com/cimengmenga/p/18531953

相关文章

  • RabbitMQ基础知识
    消息队列,原则FIFO,队列中存档的内容是message用途:订阅发布,不同进程/线程之间通信消息队列的产生:1.不同进程传递消息,两个进程耦合程度过高,影响另一个进程,为了隔离两个进程,抽出一个一层,所有两个进程之间传递的消息,都必须通过消息队列来传递,单独修改某个进行,不会影响另一个;2.某个......
  • 用例图基础知识
    什么是用例图用例图描述了一组用例、参与者以及它们之间的关系使用阶段:软件需求分析使用者:软件分析人员、软件开发人员用例模型:把系统看成黑盒子,外部,不考虑功能怎么实现,只考虑有什么功能用例图:用来描述用户的需求,从用户的角度描述系统的功能,并指出各功能的执行者,强调谁在使用......
  • Python基础知识
    在用Python写代码的之前,对Python的基础知识是必须要会的,不然你可能会寸步难行。基础知识包括输入输出、变量、数据类型、表达式、运算符这5个方面。输入输出Python有很多函数,后面我们会细讲,但这里先将两个最基本的函数:输入和输出。输出函数print(),在前面我们已经用过了,语法......
  • SQL语法基础知识总结
    SQL(StructuredQueryLanguage)即结构化查询语言,是用于管理关系型数据库的标准语言。掌握SQL语法是操作数据库的关键,以下是SQL语法基础知识的详细总结。一、数据定义语言(DDL-DataDefinitionLanguage)1.创建数据库(CREATEDATABASE)用于创建一个新的数据库。例如,创建一......
  • Linux 基础知识总结
    简介Linux是一个开源的类Unix操作系统内核,由LinusTorvalds在1991年首次发布。如今,Linux已经发展成为一个庞大的操作系统家族,广泛应用于服务器、桌面、移动设备和嵌入式系统等多个领域。本文将为你提供一个关于Linux的基础知识总结,帮助你快速了解和掌握Linux的核心......
  • 数据库基础知识总结
    一、数据库简介数据库是按照数据结构来组织、存储和管理数据的仓库。它就像是一个精心设计的文件柜,用于存放海量的数据信息,并且能够方便地对这些数据进行操作和检索。在当今数字化的时代,数据库在各个领域都有着至关重要的作用,无论是企业的资源管理、互联网应用的数据存储,还是......
  • hive基础知识分享(一)
    写在前面今天来学习hive部分的知识。Hive相关概念Hive是什么?ApacheHive是一个基于Hadoop的数据仓库工具,旨在通过SQL类似的查询语言(称为HiveQL)来实现对存储在HDFS(HadoopDistributedFileSystem)中的大规模数据的查询、分析和管理。它为数据分析提供了一种高层次的抽......
  • 国内首位聋人 Android 软件工程师体验通义灵码,“这真是太棒了”
    Hi大家好!我就是人见人爱、Bug闪开的通义灵码!上个月,我上线了一项新能力:体验通义灵码@workspace:轻松分析项目结构,结合代码仓库理解工程、查询问答等补充说明:当你需要快速了解一个工程、查找工程内的实现逻辑,或有新的诉求需要进行代码变更时,可以在智能问答窗口中通过 @ 可......
  • 计算机组成原理基础知识(二)
    来源:https://blog.csdn.net/weixin_47180815/article/details/125496560?fromshare=blogdetail&sharetype=blogdetail&sharerId=125496560&sharerefer=PC&sharesource=rxzyyyyyy&sharefrom=from_linkn位定点小数、整数的取值范围溢出判断1、采用一位符号位2、采用双符......
  • 新能源行业必会基础知识-----电力现货市场理论篇-----电力市场概述-----电力现货市场
    新能源行业必会基础知识-----电力现货市场理论篇-----主目录-----持续更新https://blog.csdn.net/grd_java/article/details/143364261这本书是2023年出版的,是当下了解国内电力市场最好的途径了。还是推荐大家买来这本书进行阅读观看,最好作为随身携带的查阅工具书。内......