软件工程简介

  • 软件工程(IEEE定义):
    • (1)应用系统的、科学的方法,开发、运行和维护软件,即将工程(Engineering)应用到软件;
    • (2)对(1)中各种方法的研究。
  • 研究开发软件的方法、过程、工具
  • 任何软件,总是处于一定的上下文中,构建软件就是建立一个基于计算机的系统,因此比较复杂;

软件需求简介

一,软件需求(IEEE定义):

  1. 用户为达到某个目标而需要解决某个问题时所必需的一种软件能力
  2. 系统或系统组件为满足某个合约、标准、规格说明或其他正式文档所必需达到和拥有的软件能力
  3. 以上两点的文档表示

二, 软件需求的特点

  • 需求很难描述(自然语言模糊,二义性,语境复杂)

  • 需求不易理解(描述不准确,行业隔阂)

  • 需求是变化的(天然特性,客观存在)

  • 需求是分层次的(不同的系统相关人员,以不同的视角,对软件系统的需求描述不同)

    • 高层需求:系统的目标,期望;

    • 中层需求:系统的特征;

    • 低层需求:系统应该怎么做;

    • 涉众系统开发相关人员,包括客户方管理者、操作人员,也包括供应方所有与项目有关的人。涉众所处不同位置决定其对需求的看法

    • 小结:软件需求分三个层次(需要,特性,软件需求)

      软件需求三个层次

      • 需要购买或引进系统所要解决的业务、人事或运行问题的体现或表述,即高层需求
      • 特性对所需要的系统行为的高级表示称为产品或系统特性。特性描述系统功能而又不陷入细节。特性也可以说是系统为完成涉众的一个或多个需要而提供的一个服务
      • 软件需求特性细化的结果。表明系统要做什么,要受哪些限制
    • 两个概念

      • 问题领域 软件系统工作的环境、目标、对象所构成的空间;(即现实世界
      • 解决问题方案领域 软件系统内部的对象或组成要素所构成的空间。(即软件世界
    • 问题领域软件系统存在的上下文环境;解决方案领域是软件本身。

    • 发现和确定软件需求,总是要从问题领域入手

  • 需求是多样的(多样性):除了涉及软件功能,即软件做什么,还涉及质量、性能、约束条件等

    FURPS+

    • Function:功能。 系统做哪些事情;
    • Usability:可用性。 人为因素(美学、易学性、易用性等)和用户界面、用户文档、培训资料的一致性;
    • Reliability:可靠性。 指失败的频率和严重性以及可恢复性、可预测性和准确性;
    • Performance:性能。 在功能性需求上施加的条件(如速度、有效性、准确性、响应时间、恢复时间、内存使用等);
    • Supportability:可支持性。 指可测性、可维护性和其他在系统发布以后使系统保持最新所需要的质量。
    • +:更多需求 接口或界面要求,实现约束条件,业务规则,法律和许可要求,包装和发布要求等。

    以上除功能需求之外的需求,统称为非功能需求。

软件建模简介

一, 软件建模: 对要开发的软件进行描述的活动。软件建模的结果就是软件模型。

二, 对软件的建模的描述:

  • 自然语言描述,说明软件是怎样的;
  • 抽象图形描述,说明软件如何构造;
  • 数学公式描述,说明软件的准确逻辑;

目前工程实践中主要采用自然语言和图形语言建模