初识软件工程

今天刚学完软件工程的第一章,顺便总结以下第一章的重要内容

1. 软件危机
2. 软件工程
3. 软件与软件过程
4. 软件过程模型
5. 软件开发方法

1.软件危机

软件危机表现在以下四个方面:
①软件产品质量低劣,甚至在开发过程中就夭折。
②软件生产效率低,不能满足需要。
③软件开发成本和进度很难控制。
④维护困难或维护中产生新的问题,缺少文档资料。

2.软件工程

基本思想
强调在软件开发过程中应用软件工程原则的重要性。

定义

1983年,IEEE(国际电气与电子工程师协会)所下的定义是,软件工程是开发、运行、维护和修复软件的系统方法。1990年,IEEE又将定义更改为,对软件开发、运作和维护的系统化、有规范、可订量的方法之应用,即对软件的工程化应用。

软件工程研究的目标
以较少的投资获取高质量的软件。

软件工程4条基本原则

①必须认识软件需求的变动性,以便采取适当措施来保证产品能最好地满足用户需求。
②稳妥得到设计方法将大大方便软件开发,以打到软件工程的目标。
③软件工程项目的质量与经济开销直接取决于对它支撑的环境、工具和开发过程的质量和效用。
④只有在强调对软件过程进行有效管理的情况下,才能实现有效的软件开发。

软件工程的主要研究内容

软件开发技术

1.方法与技术
2.工具及环境

软件管理技术

1.管理技术
2.标准与规范

3.软件与软件过程

定义

老师:软件是由程序、文档、人、数据组成的。
书本:软件是程序以及开发、使用和维护程序所需的所有文档。它是由应用程序、系统程序、面向用户的文档及面向开发者的文档4部分构成的。

特点

①软件是一种逻辑实体,不是具体的物理实体。
②软件产品的生产过程主要是研制。
③软件具有“复杂性”,其开发和运行常受到计算机系统的限制。
④软件成本昂贵,其开发目前尚未完全摆脱手工生产方式。
⑤软件不存在磨损和老化问题,但存在退化问题。

软件生存期

软件定义阶段->软件需求阶段->软件设计阶段->软件构造阶段->软件测试阶段->软件维护阶段

软件工程过程

是指在软件工具的支持下所进行的一系列软件工程的活动。

软件工程具有方法、工具和过程3各要素。软件工程方法是研究软件开发是“如何做”的;软件工具是支撑开发方法的工具;软件过程则是指将软件工程方法与软件工具相结合,实现合理、及时地进行软件开发地目的,为开发高质量软件规定各项任务地工作步骤。

4.软件过程模型

软件过程模型也称为软件生存期模型或软件开发模型,是描述软件过程中各种活动如何执行地模型。

常见地软件过程模型
①瀑布模型

清晰的描述了软件开发和软件生命周期的全过程,在消除非结构化软件、降低软件的复杂性、促进软件开发工程化方面起了很大作用。
  
缺点:由于瀑布模型是一种理想的线性开发模式、它将一个充满回溯的软件开发过程硬性分割为几个阶段,无法解决软件需求不明确或者变动问题。

在这里插入图片描述

②增量模型

是一种非整体性的模型。根据增量方式和形式的不同,分为基于瀑布的渐增模型和基于原型的快速原型模型。该模型具有较大灵活性,适合于软件需求不明确、设计方法方案由一定风险的软件项目。

在这里插入图片描述

增量模型与瀑布模型的本质区别:瀑布模型属于整体开发模型,它规定在开始下一个阶段的工作之前必须完成前一阶段的所有细节;而增量模型属于非整体性模型,即它推迟某些阶段或所有阶段中的细节,让后不断将细节补充进去,每次增量过程都会发布一个可运行的产品,直到产生工作软件。

③原型模型

是一个循环的模型,反映了系统软件的部分重要特性。

建立原型主要目的是使用户及早了解软件系统,尽早获得学习机会,以便
在这里插入图片描述

1.快速分析

快速确定软件系统的基本要求,确定原型所要体现的主要特征(界面、总体结构、功能、性能)。

2.构造原型

在快速分析的基础上,根据系统的基本规格说明,忽略细节,只考虑主要特征,快速构造一个可运行的系统。

3.运行和评价原型

用户使用原型并与开发者频繁交流,发现问题,目的是验证原型的正确性。

4.修改与改进

根据所发现的问题,对原型进行修改、增删和完善。

④螺旋模型

螺旋模型是一种迭代模型,它将瀑布模型和增量模型结合起来 。把整个开发过程分为若干个螺旋周期,并加入了风险分析,每个周期通过风险分析,将产生一个新的原型。

在这里插入图片描述
每个螺旋周期所包括的四个工作步骤

1.指定计划:确定该周期的目标、方案和限制条件。
2.风险分析:评估方案、标识风险和解决风险。
3.实施工程:按照确定的方案开发验证产品。
4.客户评估:由客户运行原型并进行评价后,假话下一周工作。

⑤喷泉模型

以面向对象的软件开发方法为基础,以用户需求作为喷泉模型的源泉。
主要采用面向对象技术的软件开发项目。
支持软件重用和多项开发活动集成,而瀑布模型不支持。
喷泉模型使在开发过程具有迭代性和无间隙性。

在这里插入图片描述
特点

1.喷泉模型规定软件开发过程有4个阶段,分析、系统设计、软件设计和实现。
2.喷泉模型的各阶段相互重叠,反映了软件过程并行性的特点。
3.喷泉模型以分析为基础,资源消耗成塔形,在分析阶段消耗的资源最多。
4.喷泉模型反映了软件过程迭代型的自然特性,从高层返回底层无资源消耗。
5.喷泉模型强调增量开发,它依据分析一点、设计一点的原则,并不要求一个阶段彻底完成,整个过程是一个迭代的逐步提炼的过程。
6.喷泉模型是对象驱动的过程,对象是所有活动作用的实体,也是项目管理的基本内容。
7.由于活动不同,喷泉模型在实现时可分为系统实现和对象实现,值既反映了全系统开发过程,也反映了对象的开发和重用过程。

⑥智能模型

智能模型也称为基于知识的软件开发模型,是知识工程与软件工程在开发模型上结合的产物,是以瀑布模型与专家模型的综合应用为基础建立的模型。

在这里插入图片描述
主要优点:
①通过领域的专家系统,可使需求说明更加完整、准确和无二义性。
②通过软件工程的专家系统,提供一个设计库支持,在开发过程中成为设计者的助手。
③通过对软件工程知识和特定应用领域的知识和规则的应用来提供开发的帮助。

5.软件开发方法

软件开发方法是一种使用早已定义好的技术集及符号表示习惯来组织软件生产过程的方法,该方法一般表述成一系列的步骤,每一步骤都与相对应的技术和符号相关。

目标

在规定的投资和时间内,开发出符合用户需求的、高质量的软件,为此需要有成功的开发方法。

分为面向过程的开发方法和面向对象的开发方法

1.结构化开发方法(面向过程)

是一种面向数据流的开发方法

结构化方法的开发过程是一种建模的活动,主要是根据软件内部的数据传递、变换关系,建立需求、设计等各阶段相应的模型。

基本原则——功能的分解与抽象
指导思想——自顶向下,逐步求精
系统工作模型——瀑布模型
不足之处——不能从本质上反映软件开发过程本身的规律(无法 回溯解决问题)。

由结构化分析(SA)方法、结构化设计(SD)方法、结构化程序设计(SP)方法三部分构成,其中SA和SD是结构化开发方法的核心。

2.原型化开发方法

基本思想——花费少量代价建立一个可运行的系统
又称为速成原型法,最适合于开发探索型、实验型与进化型一类的软件系统,强调的是软件开发人员与用户的不断交互,通过原型的演进不断适应用户任务改变的需求,将维护和修改阶段的工作尽早进行,使用验收提前,从而使软件产品更加适用。

优点

需求表达清楚,利于确认各项系统服务的可用性,降低开发风险和开发成本

缺点

不适用于开发大型的信息系统,系统难以维护,如果用户合作不好,满目纠错会拖延开发进度

①.快速建立需求规格原型(RSP)法

需求说明一旦确定原型即被废弃,后续工作仍然按照其它方法开发,也称为废弃型原型。

②.快速建立渐进原型(RCP)法

采用循环渐进的开发方式,对系统模型做连续精化,将系统需要具有的性质逐步添加上去,直至所有性质全部满足。此时的原型模型也就是最终的产品,也称为追加型。

3.面向对象开发方法(OOSD)

基本思想——对问题领域进行自然的分割,以更接近人类通常思维的方式建立问题领域的模型,以便对客观的信息实体进行结构和行为的模拟,从而使设计的软件更直接地表现问题地求解过程。

面向对象地定义——面向对象=对象+类+继承+消息
面向对象的开发方法以对象作为最基本地元素,对象是分析和解决问题的核心,对象与类是面向方法的最基本、最重要的概念。

面向对象开发方法由面向对象分析、面向对象设计和面向对象程序设计3部分组成

①面向对象分析(OOA)——要解决“做什么”的问题。
②面向对象设计(OOD)——在需求分析的基础上,进一步解决“如何做”的问题。
③面向对象程序设计(OOP)

OOA和OOD是面向对象开发方法的关键。

4.敏捷软件开发方法

又称为敏捷开发,是一种以人为核心、迭代式的开发方法。

核心价值观

1.人和交互胜过过程和工具。
2.可运行的软件胜过面面俱到的文档。
3.与客户协作胜过合同谈判。
4.对变更及时处理胜过遵循计划。

必须遵守的十二条原则

1.最重要的是要尽早和不断提交有价值的软件以满足客户需求。
2.欢迎需求的变化,即使是在开发的后期,敏捷过程也能利用变化来为客户提升竞争优势。
3.经常提交可运行的软件(几周或几个月),时间间隔越短越好。
4.在整个项目过程中,业务人员和开发人员必须每天在一起工作。
5.围绕有工作激情的人建立项目组,给予他们所需的环境和支持,并对他们能够完成任务予以充分信任。
6.项目组内最有效、效率最高的信息传递方式是面对面交流。
7.可运行的软件是度量项目进度的首要标准。
8.敏捷过程提倡可持续开发,项目负责人、开发者和用户应保持长期稳定·的开发速度。
9.不断追求优秀的技术和优良的设计,有助于提高敏捷性。
10.简单化是有效降低工作量的艺术。
11.最好的架构、需求和设计源于自我组织的团队。
12.团队要定期反省如何能够更加有效的工作,并对团队进行相应调整。

XP方法是最具代表性的敏捷开发方法。XP即极限编程,以用户需求作为软件开发的最终目标,是一种以实践为基础的软件工程过程。极限编程强调测试,是一种测试驱动的开发目标,强调代码质量和及早发现问题,以适应环境和需求的变化。

XP开发过程的主要特点是不断迭代开发。
XP方法的核心价值观:沟通、简单、反馈和勇气。

沟通是项目成功的关键,只有开发人员与用户、开发人员之间频繁而有效的面对面进行信息交流,充分理解用户需求,才能够保证软件开发的质量和效率。
简单即为了保证高效率的开发,在满足用户需求的前提下,软件开发全过程及过程中的产品都应简单。
反馈即及时、准确的信息反馈能够使开始人员及时发现工作中的问题和偏差并及时纠正。
勇气指采用敏捷开发这种新的开发方法就是一种挑战,是需要勇气的·。

XP方法的最佳实践

一:规划策略。通过结合使用业务优先级和技术评估快速制定计划,确认下一个版本的范围。
二:小型发布。将一个简单系统迅速投入生产,以很短的周期打不新版本,供用户评估使用。
三:系统隐喻。用合适的比喻传达信息,通过隐喻描述系统如何运作、新的功能以何种方式加入系统,通常包含一些可以参照和比较的类和设计模式。
四:简单设计。任何时候都应当将系统设计为尽可能的简单,不必要的复杂性一旦被发现就马上去掉。
五:测试。程序员不断的进行单元测试,在这些测试能够准确无误的运行的情况下,开发才可以继续。可不编写测试来证明系统各功能都已经完成。
六:重构。程序员重新构造系统以去除重复、改善沟通、简化或提高系统柔性。
七:结对编程。所有的生产代码都是由两个程序员在同一台机器上编写的,这样能够随时交流,及时发现和解决问题。
八:代码集体所有。任何人在人和时候都可以在系统中的任何位置更改任何代码。
九:持续集成。每天多次集成和生成系统,每次都完成一项任务。
十:每周工作40小时。一般情况下,一周工作不超过40小时,不要连续两个星期加班。
十一:现场客户。在团队中加入以为真正的、起作用的用户,他将全职负责回答问题。
十二:编码准则。程序员依照强调通过代码沟通的规则来编写所有代码。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值