《软件工程》(一)

一、软件

1。软件包括程序、数据、文档

2.软件具有抽象性

3.与硬件不同,软件生产没有明显的制造过程、没有机械磨损、老化问题,但存在退化问题,软件退化缘于修改,软件维护比硬件维护更复杂

4.软件危机,第一:如何开发软件以满足需求,第二,如何维护已有软件

二、软件工程

1.本质特征:关注大型程序的构造、中心课题是控制复杂性、和谐合作是开发软件的关键、效率非常重要、软件经常变化、必须有效支持用户

2.基本原理:

2.1用分阶段的生命周期计划严格管理

2.2坚持进行评审阶段

差错传播模型:分为有无设计复审

总错误x(1-检测出的比例)=传播到下一阶段的差错

2.3实行严格的产品控制

2.4采用现代程序技术设计

2.5结果应能清楚地审查

2.6.开发小组的成员少而精

2.7.承认不断改进软件工程实践的必要性

3.基本内容

软件包括管理和技术两方面

4.软件工程方法学

4.1软件工程方法学三要素:方法、工具和过程

4.2使用最广泛软件工程方法学:传统方法学和面向对象方法学

传统方法学:结构化技术,把软件生命周期全过程分为若干个阶段,前一阶段是基础、前提,后一阶段是细化,每个阶段结束前有严格的技术审查和管理复审。把数据和操作分离了,增加了软件开发和维护的难度。

面向对象方法学:以数据为主线,把数据和操作紧密结合。出发点和基本原则是尽量模拟人类习惯的思维方式,使问题空间和求解空间在结构上尽可能一致。降低了软件产品复杂性、提高软件可理解性、简化开发和维护、促进重用。

4.软件工程人员

三种角色:客户、开发者、用户

5.软件生命周期

三个时期:软件定义、软件开发、运行维护

7.软件开发团队中的角色

需求分析师、设计师、程序员、测试员、培训人员、维护人员(可能包括前面所有角色)、文档库管理员、配置管理小组

三、软件过程

1.瀑布模型

特点

顺序性、依赖性、推迟实现、质量保证,关注文档和工作产品,是一种文档驱动的模型

2.V模型

强调测试活动与分析设计之间的关联,关注软件开发各阶段的活动以及正确性,使以活动驱动的模型

验证与确认的区别:

验证:确定系统各项功能可以正常工作,检查实现质量

确认:确定系统实现了全部需求、确保产品是正确的、用户需要的

3.原型/快速原型模型

原型:(快速建立起来的)可以实际运行的模型、展示目标系统的关键功能(在功能上是最终产品的子集)

优势:

不带反馈环、基本上是线性顺序

有助于需求的定义和确认

可以考虑结合瀑布模型、二者互补性强(用快速原型做需求分析的一种技术)

要注意的问题:原型只是模型,不能当作软件的正式运行版本

4.阶段式开发(演化模型)

分为渐增式开发和迭代式(螺旋式)开发

4.1增量模型

把软件产品作为一系列的增量构件

每个构件由多个模块构成,能完成特定功能

第一个增量构件往往实现软件的基本需求、提供最核心的功能

4.2螺旋模型

重点:控制风险

基本思想:使用原型及其他方法来尽量降低风险(可以看作在每个阶段之前都增加了风险分析过程 的快速原型模型)

软件项目中的风险:人员、硬件设备、项目的生存能力

优点:

螺旋模型是对瀑布模型的发展,并由客户对阶段性产品做出评审

引入了风险分析,测试活动的确定性增强

开发和维护得到同样重视

喷泉模型

体现了面向对象软件开发过程迭代和无缝的特性

应该把一个线性过程作为总目标

面向对象范型本身要求经常对开发活动进行迭代或求精

5.RUP

5.1工作阶段

先启:生命周期目标里程碑

精华:生命周期架构里程碑

构建:初始可操作性里程碑

移交:产品发布里程碑

5.3RUP迭代式开发

每个迭代只考虑一部分系统需求

每个迭代都是风险驱动的

每个迭代可以看作是一个“小型的瀑布模型”

5.4 方法

用例及用例驱动

以架构为中心

采用UML可视化建模

面向对象的设计与构件实现

6.敏捷过程

敏捷过程是一组轻量级开发方法的总称

6.1价值观和原则

个体和交互胜过过程和工具

可以工作的软件胜过面面俱到的文档

客户合作胜过合同谈判

响应变化 胜过遵循计划

极限编程

极限编程是敏捷过程中最富盛名的一个,“极限”指把最好的开发实践运用到极致,广泛应用于需求模糊且经常改变的场合。采用用户素材来了解与需求相关的内容。

总结:

瀑布模型:适用于需求被清晰定义的情况(最初阶段就要完成需求分析)。可以通过反馈环回到前一个阶段,文档驱动,不限制客户方和用户的参与阶段。

V模型:本质是对瀑布模型的需求获取活动进行改造,进一步明确设计环节和测试环节。

原型模型:适用于客户需求难以清楚定义的情况,通过快速的原型迭代有助于需求的定义和确认,有利于确认各项系统服务的可用性。不能直接开发出最终产品。

原型模型+瀑布模型:有利于需求的定义和确认

增量模型:需要完整和明确的需求,一开始就对整体架构进行设计。能够快速构造核心产品,能够快速向用户交付第一个版本的系统,开发初期成本要求更少,整体开发成本和时间不一定少。可以根据实际情况改变开发顺序(是它管理风险的方式)。

螺旋模型:控制风险

喷泉模型:面向对象。以面向对象的软件开发方法为基础,以用户需求为动力,以对象来驱动。

RUP:具有通用性。

敏捷开发:适合小型的、快速变化的软件开发。注重个体和交互、可以工作的软件、客户合作、响应变化。尽早、持续、经常交付,欢迎改变需求,长期恒定的开发速度。

极限编程:应用于需求模糊且经常改变的场合。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值