软件工程复习(一):软件工程学概述

软件危机

软件与程序(二者的区别:程序是软件的一部分

软件是与计算机系统操作有关的程序、规程、规则及任何与之有关的 文档数据

包括两部分:
可执行程序及相关数据,数据是使程序能正常操纵信息的数据结构
不可执行,但与软件开发、运行、维护使用和培训有关的文档;

注意:文档本身也是一种数据。
程序是用程序设计语言描述的、适合于计算机处理的语句序列。

软件发展过程(四个阶段)

在这里插入图片描述

软件的特征

软件是逻辑部件
软件不会被“用坏”,如果发现了错误,很可能是开发时期引入。
软件规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。
在这里插入图片描述

软件危机

定义

是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
实际上,几乎所有软件都不同程度地存在这些问题。

两方面的问题:
如何开发软件,满足日益增长的需求;
如何维护数量不断膨胀的已有软件。

原因

两个主要原因
与软件本身的特点有关;
与软件开发与维护的方法不正确有关:忽视需求分析软件维护;认为软件开发就是写程序并设法使之运行。

消除途径

技术措施与管理措施并举

软件工程

两个定义(重点)

NATO 会议: 软件工程是为了经济地获得可靠的且能在实际机器上高效运行的软件而建立和使用的完善的工程原理
IEEE : 软件工程是
1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中;
2)研究1)中提到的途径。

本质特性

中心思想: 把软件当作一种工业产品,要求采用工程化的原理与方法对软件进行计划、开发和维护。
目的: 实现按预期的进度和经费完成软件生产计划,提高软件的生产率和可靠性。
关注点: 大型程序的构造。
中心课题:控制复杂性
其他:软件经常变化;开发软件的关键是和谐地协作;开发软件的效率也很重要;软件必须有效地支持它的用户。

基本原理

分阶段的生命周期计划严格管理;严格进行阶段评审。
实行严格产品控制,不能随意改变需求
采用现代程序设计技术。
结果应能清楚地审查。
开发小组的人员少而精
不断改进软件工程实践的必要性。

软件工程方法学(软工技术方面)

软件工程包括技术管理两方面。

管理 --> 资源
技术 --> 软件生命周期技术方法的集合,称为方法学,又称为范型,包含结构化设计面向对象设计两种 。

软工方法学三要素(重要):方法;工具;过程。

软件生命周期(重要)

在这里插入图片描述

基本流程

软件定义

目的:确定软件工程的工程需求。

阶段一: 可行性研究,研究问题是否值得一解)。
阶段二: 需求分析,分析产品的功能需求、性能需求等,是软件开发的关键和难点,是反复迭代的过程。

软件开发

目的:按照需求规格说明的要求,由抽象到具体,逐步形成软件的过程。

阶段一:概要设计,如何做(确定总体结构、模块关系等宏观问题)。
阶段二:详细设计,具体怎么做(确定细节问题)
阶段三:编码,实现。
阶段四:测试,保证软件质量

软件维护

包括使用、维护和退役。

软件过程模型

软件过程: 是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

五大基本模型(重点)

瀑布模型

在这里插入图片描述

特点
阶段间具有顺序性依赖性
推迟实现:编码开始越早,完成开发所需时间越长。
质量保证:文档驱动,利用文档进行评审。

优点
可强迫开发人员采用规范的方法;
严格地规定了每个阶段必须提交的文档;
要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。

缺点
只能通过文档了解产品。
难以快速响应用户需求变化

快速原型模型

在这里插入图片描述

特点
不带反馈环,开发基本线性顺序进行。
本质是快速,尽快完成原型系统,原型系统为最终产品的子集。

优点
快速开发出原型系统系统,方便与客户沟通;
迭代技术,弄清需求。

缺点
系统结构较差,没有考软件整体性和可维护性。
用户可能会混淆原型和最终产品。

增量模型

把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。
在这里插入图片描述
优点
人员分配灵活。
不能在设定的期限内完成产品时,先推出核心产品。
逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品。

缺点
软件体系结构必须是开放的。
不同构件冒无法集成到一起的风险。

注意:原型模型和增量模型的区别
从目的上看,原型模型是为了不断深入了解用户需求;增量模型是为了软件生产本身高效。
从过程上看,原型模型每次推出的产品是在功能上进行完善(加深),增量模型是添加功能构件(加宽)。

螺旋模型

使用原型及其他方法来尽量降低风险。把它看作在每个阶段之前都增加了风险分析过程的快速原型模型。
在这里插入图片描述
优点
适用于庞大复杂并具有高风险的系统。
适用于内部开发的大规模软件项目。

缺点
在风险较大的项目开发中,如果未能够及时标识风险,造成重大损失。
过多的迭代次数会增加开发成本,延迟提交时间。

喷泉模型

典型的面向对象生命周期模型。
“喷泉”这个词体现了面向对象软件开发过程迭代无缝 的特性。为避免使用喷泉模型开发软件时开发过程过分无序,应该把一个线性过程作为总目标。在这里插入图片描述
优点
各个阶段没有明显的界限,开发人员可以同步进行开发。
反复地增加或明确目标系统,降低错误的可能性

缺点
开发阶段重叠,需要大量开发人员
需要严格管理文档。

三种过程

Rational统一过程(RUP)

RUP 是一种迭代的以架构为中心的用例驱动 的软件开发方法,具有明确的定义与结构。
在这里插入图片描述

适用于:大规模(50人以上)、长时间(一年以上)项目。
特点:以文档为中心,重点在于过程管理与提升。

敏捷过程与极限编程

在这里插入图片描述

微软过程

每一个生命周期发布一个递进的版本,各生命
周期持续快速地迭代循环。
优点:综合 了Rational 统一过程和敏捷过程的优点。
缺点:对方法、工具和产品等方面不够全面。

软件神话

管理神话:人海战术
客户神话:变更需求
实践者神话:只需添加程序,文档是不必要的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值