软件工程导论期末急救包(上)

news2024/11/16 15:39:42

目录

什么是软件工程?它的目标和内容是什么?

软件文档作用及包含

软件过程模型 

瀑布模型

快速原型模型

增量模型

螺旋模型

喷泉模型

软件生存周期 

需求分析阶段的基本任务是什么? 

可行性研究的任务是什么?

软件是什么?


什么是软件工程?它的目标和内容是什么?

软件工程是一种用科学知识和技术原理来定义、开发、维护软件的一门学科。目的是成功的建造一个大型软件系统,

所谓成功是要达到以下几个目标:

付出较低的开发成本,达到要求的软件功能;

取得较好的软件性能;

开发的软件易于移植;

需要较低的维护费用;

能按时完成开发任务,及时交付使用;

开发的软件可靠性高。

软件工程研究的主要内容是软件开发技术和软件开发管理两方面,在软件开发技术中,主要研究软件开发方法、软件开发过程、软件开发工具和环境。在软件开发管理中,主要研究软件管理学、软件经济学、软件心理学等。

 软件文档作用及包含

软件文档的作用是:

  1. 提高软件开发过程的能见度;
  2. 提高开发效率;
  3. 作为开发人员阶段工作成果和结束标志;
  4. 记录开发过程的有关信息便于使用与维护;
  5. 提供软件运行、维护和培训有关资料;
  6. 便于用户了解软件功能、性能。

软件开发项目生存期各阶段应包括得文档以及与各类人员的关系如下:

  1. 可行性研究报告
  2. 项目开发计划
  3. 软件需求说明书
  4. 数据要求说明书
  5. 测试计划
  6. 概要设计说明书
  7. 详细设计说明书
  8. 用户手册
  9. 操作手册
  10. 测试分析报告
  11. 开发进度月报
  12. 项目开发总结
  13. 程序维护手册(维护修改建议)

软件过程模型 

瀑布模型

瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。

1. 特点:

阶段间具有顺序性和依赖性。其中包含两重含义:①必须等前一阶段的工作完成之后,才能开始后一阶段的工作;②前一阶段的输出文档就是后一阶段的输入文档。

2. 优点:

①可强迫开发人员采用规范化的方法。

②严格地规定了每个阶段必须提交的文档。

③要求每个阶段交出的所有产品都必须是经过验证的。

3. 缺点:

①由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。如果需求规格说明与用户需求之间有差异,就会发生这种情况;

②瀑布模型只适用于项目开始时需求已确定的情况。

4. 适用场合:

需求明确且很少变更的项目,如二次开发或升级型项目。

快速原型模型

根据原型的不同作用,有三类原型模型:

⑴探索型原型。这种类型的原型模型是把原型用于开发的需求分析阶段,目的是要弄清用户的需求,确定所期望的特性,并探索各种方案的可行性。它主要针对开发目标模糊,用户与开发着对项目都缺乏经验的情况,通过对原型的开发来明确用户的需求。

⑵实验型原型。这种原型主要用于设计阶段,考核实现方案是否合适,能否实现,对于一个大型系统,若对设计方案心中没有把握时,可通过这种原型来证实设计方案的正确性。

⑶演化型原型。这种原型主要用于及早向用户提交一个原型系统,该原型系统或者包含系统的框或者包含系统的主要功能。在得到用户的认可后,将原型系统不断扩充演变为最终的软件系统,它将原型的思路扩展到软件开发的全过程。

1.特点:

快速构建可运行的软件模型,以便理解和澄清问题,进一步细化需求,在新获取需求基础上进行系统开发。

2.优点:

(1)有助于满足用户的真实需求;

(2)原型系统已经通过与用户的交互而得到验证,据此产生的规格说明文档能够正确地描述用户需求;

(3)软件产品的开发基本上是按线性顺序进行;

(4)因为规格说明文档正确地描述了用户需求,因此,在开发过程的后续阶段不会因为发现规格说明文档的错误而进行较大的返工;

(5)开发人员通过建立原型系统已经学到了许多东西,因此,在设计和编码阶段发生错误的可能性也比较小,这自然减少了在后续阶段需要改正前面阶段所犯错误的可能性;

(6) 快速原型的突出特点是“快速”。开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。

3.缺点:

快速建立的模型加上连续的修改可能造成产品质量低下。

4.适用场合:

用户需求模糊不明的情况下。

 

增量模型

为了克服瀑布模型的局限性,使开发过程具有一定的灵活性和可修改性,于是产生了增量模型。它是在瀑布模型的基础上加以修改而形成的。增量模型和瀑布模型之间的本质区别是:瀑布模型属于整体开发模型,它规定在开始下一个阶段的工作之前,必须完成前一阶段的所有细节。而增量模型属于非整体开发模型,它推迟某些阶段或所有阶段中的细节,从而较早的产生工作软件。增量模型是在项目的开发过程中以一系列的增量方式开发系统。增量方式包括增量开发和增量提交。增量开发是指在项目开发周期内,以一定的时间间隔开发部分工作软件;增量提交是指在项目开发周期内,以一定的时间间隔增量方式向用户提交工作软件及相应文档。增量开发和增量提交可以同时使用,也可以单独使用。

1.特点及内容:

增量模型也称为渐增模型,是Mills等于1980年提出来的。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。

2.优点:

(1)能在较短时间内向用户提交可完成一些有用的工作产品,即从第1个构件交付之日起,用户就能做一些有用的工作。

(2)逐步增加产品的功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给用户组织带来的冲击。

(3)项目失败的风险较低,虽然在某些增量构件中可能遇到一些问题,但其他增量构件将能够成功地交付给客户。

(4)优先级最高的服务首先交付,然后再将其他增量构件逐次集成进来。因此,最重要的系统服务将接受最多的测试。

3.缺点:

(1)由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。

(2)在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。

(3)如果增量包之间存在相交的情况且未很好处理,则必须做全盘系统分析,这种模型将功能细化后分别开发的方法较适应于需求经常改变的软件开发过程。

4.使用场合:

需求经常发生改变的软件开发过程

5.针对的应用:

(1)进行已有产品升级或新版本开发,增量模型是非常适合的;

(2)对完成期限严格要求的产品,可以使用增量模型;

(3)对所开发的领域比较熟悉而且已有原型系统,增量模型也是非常适合的。

螺旋模型

1.特点:

该模型将瀑布模型与快速原型模型结合起来,并且加入两种模型均忽略了的风险分析。螺旋模型的基本思想是,使用原型及其他方法来尽量降低风险。

2.优点:

对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标。减少了过多测试或测试不足所带来的风险。在螺旋模型中维护只是模型的另一个周期,因而在维护和开发之间并没有本质区别。

3.缺点:

螺旋模型是风险驱动的,因此要求软件开发人员必须具有丰富的风险评估经验和这方面的专门知识,否则将出现真正的风险:当项目实际上正在走向灾难时,开发人员可能还以为一切正常。

4.适用场合:

支持需求不明确、特别是大型软件系统的开发,并支持面向规格说明、面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模型。

 

喷泉模型

1.特点:

喷泉模型是典型的面向对象生命周期模型。“喷泉”一词体现了迭代和无间隙特性。

2.优点:

可以提升项目开发效率、缩短开发周期,因为喷泉模型各个阶段之间无间隙,没有顺序要求,开发人员可以同步开发;而且开发人员可以在某个开发阶段中随时补充遗漏的开发需求。

3.缺点:

难以管理,因为喷泉模型的各个阶段的开发是重叠的,所以需要大量的开发人员,所以不利于项目管理。

4.适用场合:

用于采用对象技术的软件开发项目。 

 

软件生存周期 

1) 问题定义: 问题定义阶段必须回答的关键问题是“要解决的问题是什么?”,正确理解用户的真正需求。 

2) 可行性研究:   这个阶段要回答的关键问题是:对于上一个阶段所确定的问题“有行得通的解决办法吗?” ,可行性研究阶段应该导出系统的高层逻辑模型,准确地估计系统的成本和效益。 

3) 需求分析:需求分析阶段的任务,主要是确定目标系统必须具备的功能,得出经用户确认的系统逻辑模型。根据该系统逻辑模型,准确地回答“为了解决这个问题,目标系统必须做什么”

 4) 总体设计:也叫概要设计或初步设计。这个阶段必须回答的是“概括地说,应该如何解决这个问题”。总体设计的目标是将需求分析阶段定义的系统模型转换成相应的软件结构,以规定软件的形态及各成分间的层次关系、界面及接口要求。 

5) 详细设计:详细设计阶段的任务是把解法具体化,也就是回答“应该怎样具体地实现这个系统”。详细设计亦即模块设计。它是在算法设计和结构设计的基础上,针对每个模块的功能、接口和算法定义,设计模块内部的算法过程及程序的逻辑结构,并编写模块设计说明。

 6) 编码:这个阶段的任务,是根据详细设计的结果,选择一种适合的程序设计语言,把详细设计的结果翻译成程序的源代码。

7) 测试:以便尽早发现程序中的错误和缺陷而进行的一个过程,有单元测试、集成测试、确认测试和系统测试4种。

8) 运行与维护:通过各种必要的维护措施支持软件系统能持久地满足用户的需要。维护阶段是软件生存周期中花费精力和费用最多的阶段

 

需求分析阶段的基本任务是什么? 

需求分析阶段的基本任务是要准确的定义新系统的目标,为了满足用户需要,回答系统必须“做什么”的问题。

本阶段要进行以下几方面的工作:

㈠问题识别。双方确定对问题的综合需求,这些需求包括:功能需求、性能需求、环境需求、用户界面需求,另外还有可靠性、安全性、保密性、可移植性、可维护性等方面的需求。

㈡分析与综合,导出软件的逻辑模型。分析人员对获取的需求,进行一致性的分析检查,在分析、综合中逐步细化软件功能,划分成各个子功能。这里也包括对数据域进行分解,并分配到各个子功能上,以确定系统的构成及主要成份,并用图文结合的形式,建立起新系统的逻辑模型。

㈢编写文档。编写“需求规格说明书”、编写初步用户使用手册、编写确认测试计划、修改完善软件开发计划

软件需求工程的基本任务是准确地回答“软件系统必须做什么?”这个问题。它在系统工程和软件设计之间起到桥梁的作用。用户对软件需求的描述不精确,导致软件危机。为了使用户需求逐步精细化,使用需求工程中需求建模技术。需求规格说明书在软件开发中具有重要的作用,它也可以作为软件可行性分析的依据。

需求建模的定义:用户需求逐步精细化、完全化、一致化,需求规格说明是软件工程测试的依据

可行性研究的任务是什么?

可行性研究是指在项目规划的初期,通过对项目进行综合分析、研究和评估,探讨项目是否可行、达成目标的可能性和可行性的程度,发现项目存在的问题及其解决方案,最终得出项目可行性的结论,并为项目实施提供决策参考。

具体步骤:首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,把他们清楚地列举出来。然后,分析员进行简要的需求分析,抽象出该项目的逻辑结构,建立逻辑模型。从逻辑模型出发,经过压缩的设计,探索出若干种可供选择的主要解决方法,对每种解决方法都要研究它的可行性。

可从以下三个方面分析研究每种解决方法的可行性。

  1. ㈠技术可行性:对要开发项目的功能、性能、限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目是否能实现。
  2. ㈡经济可行性:进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发。
  3. ㈢社会可行性:要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。

软件是什么?

软件=程序+文档

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

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

相关文章

MySQL——MySQL的图形化界面工具安装与使用

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 写在前面: 一.DataGrip安装使用 1). 找到下载准备好的安装包&am…

2023 最新 1200 道 JAVA 面试题,囊括面试所有硬核技能

Java 面试八股文有必要背吗? 我的回答是:很有必要。你可以讨厌这种模式,但你一定要去背,因为不背你就进不了大厂。现如今,Java 面试的本质就是八股文,把八股文面试题背好,面试才有可能表现好。…

power gating/power switch/level shift/IR-drop

目录 1.power gating 2.level shift 3.IR-drop 1.power gating power gating 的设计重点如下: 1)Power Switch的设计; 2)Power Gating controller的设计; 3)retention register和isolation cell的选择及插入; 4)Power Gati…

【Pandas】pandas用法解析(一)

目录 一、生成数据表 1.导入pandas库 2.导入CSV或者xlsx文件 3.用pandas创建数据表 二、数据表信息查看 1.维度查看 2.数据表基本信息(维度、列名称、数据格式、所占空间等) 3.每一列数据的格式 4.某一列格式 5.空值判断 6.查看某一列空值 7…

使用torch的自动微分实现自定义函数优化

前言 目的是利用torch已经有的自动微分机制,进行参数迭代更新,就不用自己写代码算了。 文章目录 前言1. 待优化函数1.1 解释 2. 代码3. 结果 1. 待优化函数 y 10 ( x 1 x 2 − 5 ) 2 ( x 1 − x 2 ) 2 y10\times(x_1x_2-5)^2(x_1-x_2)^2 y10(x1​x…

oracle中如何修改日期类型的字段值

系列文章目录 文章目录 系列文章目录前言一、数据库表方式进行修改二、sql方式步骤总结 前言 Oracle是一家全球领先的数据库管理系统(DBMS)和企业软件公司。Oracle Corporation成立于1977年,总部位于美国加利福尼亚州的红木城(Re…

SpringBoot整合篇

SpringBoot整合第三方技术 1、整合缓存 何为缓存? 缓存是一种介于数据永久存储介质与数据应用之间的数据临时存储介质使用缓存可以有效的减少低速数据读取过程的次数(例如磁盘IO),提高系统性能缓存不仅可以用于提高永久性存储介…

腾讯云最新社招面经出炉(面试原题+答案解析)

前言 大家好,今天给大家分享一篇腾讯云的面经,以下是面试题和答案。加油,一起卷。 聊聊项目,好的设计,好的代码 谈谈什么是零拷贝? 一共有几种 IO 模型?NIO 和多路复用的区别? F…

Get请求参数过多导致请求失败

1. 问题 系统正常使用没有问题,但是有极个别的用户出现系统异常,通过日志发现某个get请求,传入的城市list太多,就会抛出异常 java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Map。 2. 排查过程 …

Elasticsearch 安装(Linux)

ElasticSearch 概念安装安装es 后台启动 & 停止启动nohup 记录pid 停止 其他启动错误max number of threads内存不足 Cannot allocate memoryfailed to obtain node locks 概念 ES是一款分布式全文搜索引擎,基于Lucene,进行了二次封装,更…

ElasticSearch笔记02-ElasticSearch入门

ElasticSearch安装 下载软件 ElasticSearch的官网,视频教程里用的Version是7.8.0,所以,我们也是用7.8.0版本的ElasticSearch。 下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch,然后搜索…

车载诊断协议 —— 诊断服务Service 11

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 在最艰难的时候,自己就别去幻想太远的将来,只要鼓励自己过好今天就行了! 这世间有太多的猝不及防,有些东西根本不配占有自己的情绪,人生就是一场体验,…

一种栅格数据的空间聚类方法(ACA-Cluster)

本文结合实例详细讲解了如何使用Python对栅格数据进行空间聚类,关注公众号GeodataAnalysis,回复20230616获取示例数据和代码,包含整体的写作思路,上手运行一下代码更容易弄懂。 带有非空间属性的空间数据聚类分析是空间聚类研究的…

English Learning - L3 作业打卡 Lesson6 Day43 2023.6.16 周五

English Learning - L3 作业打卡 Lesson6 Day43 2023.6.16 周五 引言🍉句1: Thousands of lanterns slowly drift out to sea guiding the dead on their return journey to the other world.成分划分弱读连读爆破语调 🍉句2: This is a moving spectacl…

炎炎夏日!东南亚LazadaShopee泳衣品类热销榜单来袭

6月商机无限,趁热打铁!3大节庆即将来袭。小编特为卖家整理了6月最强爆单选品指南,揭秘东南亚泳衣市场。赶紧一睹为快吧! 炎炎夏日,马上即将迎来暑假,海边游玩肯定成了小朋友即家长们的首选之地&#xff0c…

js将json字符串转换为json对象的方法解析

将json字符串转换为json对象的方法。在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。 例如: JSON字符串: var str1 ‘{ “n…

MIT 6.S081 Lab Three

MIT 6.S081 Lab Three 引言page tablesPrint a page table (easy)代码解析 A kernel page table per process (hard)代码解析 Simplify copyin/copyinstr(hard)代码解析 可选的挑战练习 引言 本文为 MIT 6.S081 2020 操作系统 实验三解析。 MIT 6.S081…

shardingsphere第一课-前置课程-Mysql的集群搭建以及多数据源管理

一.Mysql的集群搭建(使用docker搭建省事) 1、关闭防火墙,重启docker** #关闭docker systemctl stop docker #关闭防火墙 systemctl stop firewalld #启动docker systemctl start docker2.1、准备主服务器 解释: 端口号是3306, 指定宿主机配…

FPGA基础知识-时序和延迟

目录 学习目标: 学习内容: 1.延迟模型的类型 2.路径延迟建模 3.时序检查 4.延迟反标注 学习时间: 学习总结 学习目标: 提示:这里可以添加学习目标 鉴别Verilog 仿真中用到的延迟模型的类型,分布延…

YOLOv5改进系列(10)——替换主干网络之GhostNet

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制