软件工程核心思想-Chapter1_PartII

一 软件工程的本质

  • 本质

    • 不同抽象层次之间的映射与转换。任何软件系统开发的共同本质在于:从现实空间的需求到计算空间的软件代码之间的映射与转换。用严格的规范和管理手段来缩小偏差,通过牺牲「时间」来提高「质量」。
  • 映射与转换

    • 单步映射与多步映射
软件工程核心思想-Chapter1_PartII_第1张图片
单步映射与多步映射
  • 软件工程的两个映射:「概念映射」是问题空间的概念与解空间的模型化概念之间的映射;「业务逻辑映射」是问题空间的处理逻辑与解空间处理逻辑之间的映射。

  • 映射过程
    映射过程包含需求分析、软件设计、实现、验证/确认

二 软件工程所关注的目标

  • 软件工程所关注的对象
    • 产品:各个抽象层次的产出物;
    • 过程 : 在各个抽象层次之间进行映射与转换;
    • 软件工程具有「产品与过程二相性」的特点,必须把二者结合起来去考虑,而不能忽略其中任何一方。
软件工程核心思想-Chapter1_PartII_第2张图片
产品与过程二相性
  • 功能性需求(FR):软件所实现的功能达到它的设计规范和满足用户需求的程度。考虑软件的完备性、正确性、健壮性、可靠性。
  • 非功能性需求(NFR): 系统能够完成所期望的工作的性能与质量。考虑软件的效率、可用性、可维护性、可移植性、清晰性、安全性、兼容性、经济性、商业质量。

三 软件开发中的多角色

  • 在软件开发过程中同样需要多种角色之间紧密协作,才能提高质量、高效率的完成任务
  • 顾客企业(Client 甲方)
    • 决策者(CxO)、终端用户(End User)、系统管理员
  • 软件开发公司(Supplier,乙方)
    • 决策者(CxO);
    • 软件销售与市场人员;
    • 咨询师、需求分析师;
    • 软件架构师、软件设计师;
    • 开发人员:开发经理/项目经理、程序员;
    • 维护人员

四 软件工程=最佳实践

  • 软件系统的复杂性、动态性:
    高深的软件理论在软件开发中变得无用武之地
  • 软件工程被看做一种实践的艺术

五 软件工程的核心概念

  • 复用

  • 在一个新系统中,大部分的内容是成熟的,只有小部分内容是全新的

  • 构造新的软件系统可以不必每次从零做起;

  • 直接使用已有的软构件,即可组装成新的系统;

  • 复用已有的功能模块,既可以提高开发效率,也可以改善新开发过程
    中带来的质量问题。

  • 分治

  • 将复杂问题分解为若干可独立解决的简单子问题,并分别独立求解,
    以降低复杂性;

  • 然后再将各子问题的解综合起来,形成最初复杂问题的解。

  • 核心问题:如何的分解策略可以使得软件更容易理解、开发和维护?

  • 折中

  • 不同的需求之间往往存在矛盾与冲突,需要通过折中来作出的合理的
    取舍,找到使双方均满意的点。

  • 核心问题:如何调和矛盾(需求之间、人与人之间、供需双方之间,等等)

  • 演化

    • 软件系统在其生命周期中面临各种变化
    • 核心问题:在设计软件的初期,就要充分考虑到未来可能的变化,并
      采用恰当的设计决策,使软件具有适应变化的能力。

六 总结

由于规模、复杂度、变化、接口的增多,时间、成本的逐渐上升,软件的质量不断下降引发了软件危机。因而出现了「软件工程」。有这样一个公式:SE = 过程+方法+工具 这样的一个公式保证了软件的质量。我们需要把握住的一个中心就是软件工程的本质:不同抽象层次之间的映射与转换。其中有单步映射和多步映射,单步映射一步到位,而多步映射则要分几步完成,通过牺牲「时间」提高了「质量」。
  而软件工程所要达到的质量目标主要有两种:功能需求(FR)和非功能需求(NFR)。并且软件工程等同于最佳的实践,任何理论的方法都需经过实践的检验方能证明为有效的方法。此外还有软件工程的核心概念:复用、分治、折中、演化等等。

你可能感兴趣的:(软件工程核心思想-Chapter1_PartII)