软件工程的本质

一 软件工程的本质

  • 本质:
    • 不同抽象层次之间的映射过程。任何软件系统开发的共同本质在于:从现实空间的需求到计算机空间的软件代码之间的映射与转换。
  • 映射方法:
    • 单步映射与多步映射:在软件开发过程中,从需求过程映射到代码空间采取的方式。顾名思义,单步映射一次性完成,而多步映射需要分成多布进行。多步映射可以通过牺牲“时间”来提高“质量”
    • 概念映射与逻辑映射:概念映射是问题空间的概念与解空间的模型化概念之间的的映射;逻辑映射是问题空间的处理逻辑与解空间处理逻辑之间的映射。前者对应与数据结构,后者对应算法。
  • 映射过程:
    • 包括4个部分——需求分析、软件设计、实现、验证/确定。

二 软件工程所关注的目标

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

三 软件开发的多角色

  • 顾客企业:
    • 决策者;
    • 终端用户;
    • 系统管管理员。
  • 软件开发公司:
    • 决策者;
    • 软件销售与市场人员;
    • 咨询师、需求分析师;
    • 软件构架师、软件设计师;
    • 开发人员:开发经理/项目经理、程序员;
    • 维护人员。

四 软件工程=最佳实践

  • 原因:

    • 软件系统的复杂性、动态性使得高深的软件理论在软件开发中变得无用武之地;即使应用理论方法来解决,得到的结果也往往难以与现实保持一致;因此软件工程被看成一种时实践的艺术:
    • 做过越多的软件项目,犯的错误就越少,积累的经验越多,随后做项目的成功率就越高;
    • 对新手来说,要通过多实践、多犯错来积累经验,也要多吸收他人的失败与教训和成功的经验。

    当你把所有的错误都犯过之后,你就是正确的了。

  • 最佳实践的例子:

    • 软件工程的七条原理;
    • 与顾客沟通的最佳实践原则;
    • IBM RUP最佳实践原则...

五 软件工程的四个核心理论概念

  • 复用:
    • 在一个新系统中,大部分的内容是成熟的,只有小部分内容是全新的;
    • 构造新的软件系统可以不必每次从零开始;
    • 直接使用已经有的软构体,即可组装成新的系统;
    • 复用已有的功能模块,既可以提高开发效率,也可以改善新开发过程中带来的质量问题。
  • 分治
    • 将复杂问题分解为若干可独立解决的简单子问题,并分别独立求解,以降低复杂性;以降低复杂性;
    • 然后再将各子问题的解综合起来,形成最初复杂问题的解。然后再将各子问题的解综合起来,形成最初复杂问题的解。
  • 折中
    • 不同的需求之间往往存在矛盾与冲突,需要通过折中来作出的合理的取舍,找到使双方均满意的点。
  • 演化:
    • 软件系统在其生命周期中面临各种变化;
    • 核心问题:在设计软件的初期,就要充分考虑到未来可能的变化,并采用恰当的设计决策,使软件具有适应变化的能力;
    • 即:可修改性可维护性可扩展性
posted @ 2016-09-15 15:38  va_chester  阅读(1258)  评论(0编辑  收藏  举报