Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >软件工程概述

软件工程概述

原创
作者头像
一个风轻云淡
修改于 2023-12-16 04:16:56
修改于 2023-12-16 04:16:56
6100
举报
文章被收录于专栏:java学习javajava学习java

知识点概述

软件工程是一门科学,它使用科学知识和系统化的技术原理来定义、开发和维护软件。其目标是成功地建造一个大型软件系统,达到要求的软件功能、性能、易移植性、低维护成本、按时交付和高可靠性。软件工程主要研究软件开发技术和软件开发管理两方面,在技术方面包括软件开发方法、过程、工具和环境,在管理方面包括软件管理学、经济学和心理学等。

软件文档的作用包括提高开发过程的可见度、提高效率、记录开发信息、提供用户资料,软件开发项目的生命周期各阶段应包括可行性研究报告、项目开发计划、需求说明书、测试计划、设计说明书、用户手册、操作手册、测试分析报告等。

软件过程模型有多种,如瀑布模型、快速原型模型、增量模型螺旋模型和喷泉模型,每种模型都有其特点、优缺点和适用场合。

软件生命周期包括问题定义、可行性研究、需求分析、总体设计、详细设计、编码、测试和运行与维护等阶段。

需求分析阶段的基本任务是准确定义新系统的目标,确定系统必须具备的功能,并编写相应的文档。

软件需求工程的基本任务是准确回答“软件系统必须做什么”的问题,使用需求建模技术逐步精细化用户需求。

可行性研究的任务是对项目进行综合分析、研究和评估,探讨项目是否可行、达成目标的可能性和可行性程度,发现问题及解决方案,最终得出可行性结论。

软件是程序和文档的组合,它包括代码和相关的文档,用于描述程序的功能、结构和使用方法。

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

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

所谓成功是要达到以下几个目标: 付出较低的开发成本,达到要求的软件功能; 取得较好的软件性能; 开发的软件易于移植; 需要较低的维护费用; 能按时完成开发任务,及时交付使用; 开发的软件可靠性高。

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

软件文档作用及包含

软件文档的作用是:

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

软件是什么?

软件=程序+文档

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一个完整的软件项目开发流程
软件开发流程步骤:需求分析、概要设计、详细设计、编码、测试、软件交付、验收、维护。 -- 来源于百度百科
浩Coding
2019/07/19
16.4K0
软件工程面试常见问题总结
本文记录了一些软件工程面试常见问题,本意用于考研复试,以下面试题为网上整理的问题以及自己加入的一些问题,答案仅供参考!
EmoryHuang
2022/08/24
1K0
软件工程期末考试题库(超全)[通俗易懂]
A. 过程        B. 软件系统   C. 硬件环境         D. 人员
全栈程序员站长
2022/08/22
3.2K0
软件工程期末考试题库(超全)[通俗易懂]
研发如何才能躺平???
一行代码导致灾难,一个Bug导致发射失败,一个不合格的电容导致产品寿命缩短。这些看似偶然的事件,偏偏又常常真实地发生了。(参考我们之前的文章)
用户2366192
2023/11/14
2690
研发如何才能躺平???
【愚公系列】软考中级-软件设计师 035-软件工程基础(过程模型)
软件工程的过程模型是指开发软件的过程中所采用的一种规范化方法或框架。常见的软件工程过程模型包括瀑布模型、迭代开发模型、喷泉模型、敏捷开发模型等。
愚公搬代码
2024/02/16
4390
软件工程概述-架构师(三)
1、软件定义时期:包括 可行性研究和详细需求分析过程,任务是软件工程必需完成的目标,具有可行问题分析、可行性研究、需求分析等。
用户9919783
2023/09/05
2400
软件工程概述-架构师(三)
吕云翔 软件工程课后题答案
因为软件工程提出是为了解决软件危机所带来的各种弊端。具体的讲,软件工程的目标主要包括以下几点。
风骨散人Chiam
2021/09/06
4.7K0
“项目经理”都会的软件开发七大过程模型
今天来和大家分享一下在进行系统的软件开发的过程中常用的七大软件过程模型,熟悉软件开发常用的几种模型方法。助力每一个程序员小伙伴都可以尽早成为项目经理哟!
灰小猿
2022/05/05
3K0
“项目经理”都会的软件开发七大过程模型
软件设计师——系统基础开发
演化模型:演化模型是迭代的过程模型,使得软件开发人员能够逐步开发出更完整的软件版本。演化模型特别适用于对软件需求缺乏确认识的情况
秋邱
2024/10/10
1631
软件设计师——系统基础开发
详解软件工程之软工文档(总结篇)
说明该软件开发项目目的是在在技术、经济和社会条件方面的可行性;评述为了合理地达到开发目标而可能选择的各种方案等等。 在开始一个项目时,需要完成可行性研究报告,研究此开发项目是否能够完成,解释理由。
程序猿小亮
2021/01/29
8650
软件工程part01-软件工程概述及软件过程
“软件工程”课程是软件工程专业的核心课程,是用工程化方法指导软件开发、维护与管理的一门综合性课程,内容涉及软件分析、设计、实现、维护及项目管理相关的理论、技术、方法和CASE工具。
用户2225445
2023/10/16
8560
软件工程part01-软件工程概述及软件过程
【软件工程】
定义 软件  =  程序  +  数据  +  文档  程序:计算机可以接受的一系列指令,运行时可以提供所要求的功能和性能。    数据:使得程序能够适当地操作信息的数据结构。  文档:描述程序的研制过程、方法和使用的图文资料
devi
2021/08/18
1.1K0
【软件工程导论】从已考完期末的角度记录软导常考内容
二、快速原型模型 1.特点:快速构建可运行的软件模型,以便理解和澄清问题,进一步细化需求,在新获取需求基础上进行系统开发。 2.优点: (1)有助于满足用户的真实需求; (2)原型系统已经通过与用户的交互而得到验证,据此产生的规格说明文档能够正确地描述用户需求; (3)软件产品的开发基本上是按线性顺序进行; (4)因为规格说明文档正确地描述了用户需求,因此,在开发过程的后续阶段不会因为发现规格说明文档的错误而进行较大的返工; (5)开发人员通过建立原型系统已经学到了许多东西,因此,在设计和编码阶段发生错误的可能性也比较小,这自然减少了在后续阶段需要改正前面阶段所犯错误的可能性; (6) 快速原型的突出特点是“快速”。开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。 3.缺点:快速建立的模型加上连续的修改可能造成产品质量低下。 4.适用场合:用户需求模糊不明的情况下。
平凡的人1
2023/10/15
4430
【软件工程导论】从已考完期末的角度记录软导常考内容
【愚公系列】软考高级-架构设计师 071-软件过程模型(1)
软件过程模型是一种规划和组织软件开发过程的方法。你可以把它想象成是一张路线图,它帮助我们在软件开发的整个旅程中找到正确的方向。就像你在旅行前会查看地图一样,我们在开发软件前也会选择一个合适的过程模型,以确保我们按照一定的步骤和顺序来构建软件。
愚公搬代码
2024/07/27
1720
1、软件测试概述
软件生命周期分为多个阶段,每个阶段有明确的任务,通常,可将软件生命周期划分为6个阶段,如下图所示:
魚迹
2023/05/06
2190
1、软件测试概述
软件工程练习题-part01-软件工程概述及软件过程
“软件工程”课程是软件工程专业的核心课程,是用工程化方法指导软件开发、维护与管理的一门综合性课程,内容涉及软件分析、设计、实现、维护及项目管理相关的理论、技术、方法和CASE工具。
用户2225445
2023/10/16
3080
软件工程练习题-part01-软件工程概述及软件过程
软件开发模式有哪些(软件工程开发模式)
  好吧,其实现在许多产品实际都是使用的“边做边改”模型来开发的,特别是很多小公司产品周期压缩的太短。在这种模型中,既没有规格说明,也没有经过设计,软件随着客户的需要一次又一次地不断被修改。
全栈程序员站长
2022/07/29
2.8K0
软件开发模式有哪些(软件工程开发模式)
软件测试复习
软件体系结构是软件系统的结构、行为和属性的高级抽象,给出系统的组织结构和拓扑结构,规定系统需求和构成系统的元素之间的对应关系。
千灵域
2022/06/17
3680
软件测试复习
软件开发模型
典型的开发模型有:1. 边做边改模型(Build-and-Fix Model);2. 瀑布模型(Waterfall Model);3. 快速原型模型(Rapid Prototype Model);4. 增量模型(Incremental Model);5.螺旋模型(Spiral Model);6.演化模型(evolution model);7.喷泉模型(fountain model);8.智能模型(四代技术(4GL));9.混合模型(hybrid model);10.RAD模型;
233333
2018/12/24
1.5K0
软件工程开发方法总结
软件开发方法:软件开发方法包括了传统的 瀑布模型、 敏捷开发、 迭代开发等方法。不同的开发方法适用于不同的项目需求,开发人员需要根据具体情况选择合适的开发方法。
魚迹
2023/05/06
3570
相关推荐
一个完整的软件项目开发流程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档