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

目录

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

软件文档作用及包含

软件过程模型 

瀑布模型

快速原型模型

增量模型

螺旋模型

喷泉模型

软件生存周期 

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

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

软件是什么?


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

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

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

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

取得较好的软件性能;

开发的软件易于移植;

需要较低的维护费用;

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

开发的软件可靠性高。

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

 软件文档作用及包含

软件文档的作用是:

  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. ㈢社会可行性:要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。

软件是什么?

软件=程序+文档

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

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

相关文章

vue+el-select下拉实现:全选、反选、清空功能

问题描述: el-select下拉框要求实现全选功能。具体功能包括: 当选择【全选】时,所有选项全部被勾选;当选择【反选】时,已选择选项变为未选择选项,未选项变为已选项当选择【清空】时,所有选项变…

带你用Python制作7个程序,让你感受到端午节的快乐

名字:阿玥的小东东 学习:Python、C/C 主页链接:阿玥的小东东的博客_CSDN博客-python&&c高级知识,过年必备,C/C知识讲解领域博主 目录 前言 程序1:制作粽子 程序2:龙舟比赛 程序3:艾草挂 程序4…

【人脸检测0】视频分解图片与图片合成视频

一,引言 目标:这小节主要通过两个demo熟悉视频分解图片与图片合成视频的OpenCV的应用 环境:python3.6+OpenCV3.3.1 二,示例 Demo1:视频分解图片 目标: 1.指定文件夹中读取视频文件 2.将视频文件分解为图片 3.将图片保存在指定文件夹中 # -*-coding:utf-8-*- #auth…

澳洲学生用ChatGPT代写?澳洲多所高校使用全新反击工具检测

朋友们听句劝 ChatGPT可太危险了 ChatGPT有多火?据2月1日瑞银发布的一项研究报告显示,仅仅发布两个月,ChatGPT月活跃用户已达1亿,这是历史上增长速度最快的应用。要知道达成1亿用户的时间,Instagram用了2.5年&#xf…

合宙Air724UG Cat.1模块硬件设计指南--SDIO接口

SDIO接口 简介 SDIO(Secure Digital Input and Output)全称为安全数字输入输出接口,在协议上和SPI类似是一种串行的硬件接口,通信的双方一个作为HOST,另一端是Device,所有的通信都是由HOST端发送命令开始的,Device端只…

Stable Diffusion实操示例

一、负向提示词 解决问题:生成的图片存在瑕疵,比如多只眼睛、多只手指等情况。通过embeddings可以避免一些常用的不好结果。 方法:从https://civitai.com/?utm_sourcenettsz.com 中下载负向提示词的embeddings模型, EasyNegat…

广角积分球均匀光源

现阶段,摄影测量技术已涉及多行多业,其在交通、考古以及景物三维重建中的应用尤为显著,但是普通相机取景范围有限,不能全面捕获整个空间信息,因此一种新型相机--全景相机逐步被应用到实际当中。80年代初,国…

R语言 tidyverse系列学习笔记(系列5)dplyr 数据分析之across

成绩单 score install.packages("dplyr") library(dplyr)install.packages("tibble") library(tibble)install.packages("stringr") library(stringr)score tibble(IDc("1222-1","2001-0","3321-1","4898-…

MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

STM32-I2C通信在AT24C02的应用

AT24C02是一种失去电源供给后依旧能保持数据的储存器,常用来储存一些配置信息,在系统重新上电之后也可以加载。它的容量是2k bit的EEPROM存储器,采用I2C通信方式。 AT24C02支持两种写操作:字节写操作和页写操作。本实验中我们采用…

数据结构算法 -分而治之算法

引言 坤坤是一个养鸡场的员工,他非常热爱他的工作,并且总是努力提高他的专业技能。有一天,养鸡场接到了一项任务:在短时间内处理一批大量的鸡。 这批鸡数量非常大,比普通的数量要多得多,坤坤意识到他们需…

C++核心编程——详解函数模板

纵有疾风起,人生不言弃。本文篇幅较长,如有错误请不吝赐教,感谢支持。 💬文章目录 一.模板的基础知识①为什么有模板?②初识模板 二.函数模板①函数模板的定义②函数模板的使用③函数模板实例化1️⃣隐式实例化2️⃣显…

泰坦陨落2找不到msvcr120.dll的解决方法

msvcr120.dll是的动态链接库文件之一。它在Windows操作系统中发挥着重要的作用,它提供了应用程序所需的各种功能和方法。 该文件返回编译后的代码所需的支持库。msvcr120.dll包含用于C / C编译器生成的应用程序所需的重要功能,包括数学函数,…

C++学习 数据类型

数据类型存在的意义: 给变量分配合适的内存空间,避免资源浪费。 整型: 整型变量表示的是整数类型的数据 long类型 在 windows 中4字节 linux 中 32位4字节 64位8字节,占用空间的不同,可以表示的取值范围就越广&…

python:基础知识—流程控制—函数与模块—数据结构—类与GUI和Turtle—异常处理与文件,概括全书(上万字最详细版)

这里是一张夜景,给大家放松一下。 !!无锡南长街 文章目录 模块一:基础知识1、python语言2、常见数字类型3、字符串4、数字类型转换5、标识符命名6、常见关键字7、运算符与表达式(1)算术运算符(2&#xff09…

ZooKeeper的集群部署和启动与关闭

ZooKeeper是一个分布式应用程序协调服务。一个ZooKeeper集群可以存在多个Follower和Observer服务器,但只允许存在一台Leader服务器。如果Leader服务器宕机,那么ZooKeeper集群的其它服务器会投票选举出一个新的Leader服务器,为防止投票数不过半…

Elasticsearch:部署 ELSER - Elastic Learned Sparse EncoderR

警告:此功能处于技术预览阶段,可能会在未来的版本中更改或删除。 Elastic 将尽最大努力修复任何问题,但技术预览中的功能不受官方 GA 功能的支持 SLA 约束。 Elastic Learned Sparse EncodeR - 或 ELSER - 是由 Elastic 训练的检索模型&#…

浅谈中移链中插件的功能及使用

中移链是在满足我国信息化监管需求、合规可控的前提下,打造的中国移动区块链服务平台。它允许使用插件来扩展其功能,以适应各种不同的使用场景。 什么是中移链插件呢?如果把中移链比作一个操作系统,那么插件就类比于操作系统上的…

工作流引擎Flowable

这里写目录标题 1.Flowable基础1.1 入门学习 2.流程图设计器2.1 FlowableUI2.1.1 绘制流程图 1.Flowable基础 官方手册 1.1 入门学习 一、依赖 <dependencies><dependency><groupId>org.flowable</groupId><artifactId>flowable-engine</…

Android系统安全 — 6.2 Ethernet安卓架构

1. Android Ethernet架构介绍 整个Ethernet系统架构如下图所示&#xff1a; 以太网服务&#xff08;EthernetService&#xff09;的启动与注册流程&#xff1b;应用层调用使能ethernet功能的方法流程来分析&#xff0c;从应用层如何将指令一步一步传到底层kernel&#xff1b;…