第一章-软件工程学概述

第一章-软件工程学概述

  • 了解软件的特点、软件的发展和软件危机产生的原因。
  • 熟悉主要的软件开发(过程)模型(瀑布模型、增量模型、螺旋模型、构件组装模型、统一软件过程RUP模型等)和各自的特点。
  • 掌握软件工程定义,软件生存期,瀑布模型、原型开发、增量模型和螺旋模型。

1、什么是软件

软件:计算机系统中与硬件相互依存的另一部分,它是包括程序数据及其相关文档的完整集合。

  • 程序:按事先设计的功能和性能要求执行的指令序列(instructions)。
  • 数据:使程序能正常操纵信息的数据结构(data structures)。
  • 文档:与程序开发,维护和使用有关的图文材料(documents)。

2、软件的分类

  • 系统软件:操作系统、数据库管理系统、设备驱动系统、通信处理系统
  • 支撑软件:文本编辑程序、文件格式化程序、程序库系统
  • 应用软件:商业数据处理软件、系统仿真软件、计算机辅助设计

3、Software Crisis

如何开发软件,以满足软件日益增长的需求?
如何维护数量不断膨胀的已有软件?

表现:

  • 对软件开发成本和进度的估计不准确;
  • 质量不可靠;
  • 不可维护;
  • 没有适当的文档资料;
  • 软件成本在计算机系统总成本中所占的比例逐年上升。

产生原因:
(1)与软件本身的特点有关。
(2)与软件开发和维护的方法不正确有关。主要原因

4、软件的特点

  • 表现形式:软件是一种逻辑实体,具有抽象性。
  • 生产方式:在开发过程中没有明显的制造过程,大多数软件仍是定制的,至今尚未完全摆脱手工艺的开发方式。
  • 维护:没有机械磨损以及老化问题。
  • 要求:软件产品不允许误差!
  • 软件的开发和运行受到计算机系统的限制,对其有不同程度的依赖性。
  • 软件本身是复杂的(实际问题的复杂性、程序逻辑结构的复杂性)。
  • 软件成本昂贵。
  • 相当多的软件工作涉及到社会因素。
  • 软件易于复制,质量要求高。

5、软件工程

定义:
软件工程是一类求解软件的工程,它应用计算机科学、数学(用于构造模型和算法)和管理科学(用于计划、资源、质量和成本等的管理)等原理,借鉴传统工程(用于制定规范、设计范型、评估成本、权衡结果)的原则和方法,创建软件以达到提高质量、降低成本的目的。

软件工程的基本原理:
1、用分阶段的生命周期计划严格管理;
2、坚持进行阶段评审;
3、实行严格的产品控制——基准配置管理(Baseline configuration management);
4、采用现代程序设计技术;
5、结果应能清楚地审查——set standards;
6、开发小组的人员应该少而精;
7、承认不断改进软件工程实践的必要性。

基准配置:又称为基线配置,他们是经过阶段评审后的软件配置成份(各个阶段产生的文档或程序代码)
基准配置管理也称为变动控制:一切有关修改软件的建议,特别是涉及对基准配置的修改建议,都必须按照严格的规程进行评审,获得批准以后才能实施修改。

软件工程方法学:

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

传统方法学(生命周期方法学):
采用 结构化技术 来完成软件开发的各项任务,并使用适当的软件工具来支持结构化技术的应用。
面向对象方法学:

  • 把对象作为融合了数据及在数据上的操作行为的统一的软件构件。用对象分解取代了传统方法的功能分解。
  • 把所有对象都划分成类。每个类都定义了一组数据和一组操作。 数据用于表示对象的静态属性,是对象的状态信息。 操作用于实现对象的动态行为。
  • 按照父类与子类的关系,把若干个相关类组成一个层次结构的系统。
  • 对象彼此间仅能通过发送消息互相联系。对象的所有私有信息都被封装在该对象内,不能从外界直接访问。

6、软件生命周期

软件定义 → 软件开发 → 软件维护

软件定义(系统分析)时期的任务是:

  • 确定软件开发工程必须完成的总目标;
  • 确定工程的可行性;
  • 导出实现工程目标应该采用的策略及系统必须完成的功能;
  • 估计完成该项工程需要的资源和成本,并且指定工程进度表。

问题定义、可行性研究、需求分析

软件开发时期的任务是:

总体设计、详细设计、编码和单元测试、综合测试

维护时期的任务是:

  • 使软件持久地满足用户的需要。

软件维护

7、软件过程

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

软件过程定义了运用方法的顺序、应该交付的文档资料、为保证软件质量和协调变化所需要采取的管理措施,以及标志软件开发各个阶段任务完成的里程碑。

附录

  • 问题定义:
    “要解决的问题是什么?”

  • 可行性研究
    “对于上一个阶段所确定的问题有行得通的解决方法么?”

  • 需求分析
    “为了解决这个问题,目标系统必须做什么?”,主要确定目标系统必须具备哪些功能、性能,编写规格说明书

  • 总体设计
    “概括地说,应该怎样实现目标系统?”

  • 详细设计
    “应该怎样具体地实现这个系统?”,编写程序的详细规格说明

  • 编码和单元测试
    “写出正确的容易理解、容易维护的程序模块。”

  • 综合测试
    “通过各种类型的测试使软件达到预定的要求。”

  • 软件维护
    “通过各种必要的维护活动使系统持久地满足用户的需要。”

瀑布模型

  • 阶段间具有顺序性和依赖性;
    必须等前一阶段的工作完成后才能开始后一阶段的工作;
    前一阶段的输出文档就是后一阶段的输入文档。
  • 推迟实现的观点;
    对于规模较大的软件项目来说,往往编码开始得越早最终完成开发工作所需要的时间反而越长。忽略认真地系统分析与设计,过早地考虑进行程序实现,往往导致大量返工。
  • 质量保证的观点。
    每个阶段都必须完成规定的文档;每个阶段结束前都要对所完成的文档进行评审。

优点:

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

缺点:

  • 由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。
    在这里插入图片描述

快速原型模型
快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。
优点:
不带反馈环,开发基本上是线性顺序进行的。
可以线性进行的主要原因:

  • 原型系统已经通过与用户交互而得到验证,据此产生的规格说明文档正确地描述了用户需求,因此在开发过程的后续阶段不会因为发现了规格说明文档的错误而进行较大的返工。
  • 开发人员通过建立原型系统已经学到了许多东西,因此在设计和编码阶段发生错误的可能性也比较小,这自然减少了在后续阶段需要改正前面阶段所犯错误的可能性。
    在这里插入图片描述

增量模型

  • 增量模型分批地逐步向用户提交产品,整个软件产品被分解成许多个增量构件,开发人员一个构件接一个构件地向用户提交产品。
  • 使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由许多个模块构成,并且能够完成特定的功能。
  • 把软件产品分解成增量构件时,应该使构建的规模适中,规模过大或过小都不好。分解时遵循的约束条件是:当把新构件集成到现有软件中时,所形成的产品必须是可测试的。
    优点:
  • 从第一个构件交付之日起,用户就能做一些有用的工作,能在较短的时间内向用户提交 可完成部分工作的产品。
  • 逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。
    困难:
  • 在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来开发出的产品。
  • 必须把软件的体系结构设计得便于扩充,向现有产品中加入新构件的过程简单、方便。
    在这里插入图片描述

螺旋模型
基本思想:使用原型及其他方法来尽量降低风险
优点:

  • 对可选方案和约束条件的强调有利于已有软件的重用。
  • 减少了过多测试或测试不足所带来的风险。
  • 维护只是模型的另一个周期,在维护和开发之间无本质区别。
    螺旋模型主要适用于内部开发的大规模软件项目。
    只有内部开发的项目,才能在风险过大时方便地中止项目。
    在这里插入图片描述
    在这里插入图片描述

Rational统一过程
Rational Unified Process , RUP
最佳实践:

  • 迭代式开发
  • 管理需求
  • 使用基于构件地体系结构
  • 可视化建模
  • 验证软件质量
  • 控制软件变更

RUP软件开发生命周期:
二维的生命周期模型,划成四个连续的阶段,在每个阶段结束之前都有一个里程碑评估该阶段的工作成果。

  • 初始阶段:建立业务模型,定义最终产品视图,并且确定项目的范围。
  • 精化阶段:设计并确定系统的体系结构,制定项目计划,确定资源需求。
  • 构建阶段:开发出所有构件和应用程序,把它们集成为客户需要的产品,并且详细地测试所有功能。
  • 移交阶段:把开发出的产品提交给用户使用。

RUP强调采用迭代和渐增的方式来开发软件。
RUP重复一系列组成软件生命周期的循环。
每个阶段又进一步细分为一次或多次迭代过程。在不同的迭代过程中是以不同的工作重点和强度对这些核心工作流程进行访问的。

猜你喜欢

转载自blog.csdn.net/m0_47665468/article/details/114227639