一 软件工程的本质
-
本质
- 不同抽象层次之间的映射与转换。任何软件系统开发的共同本质在于:从现实空间的需求到计算空间的软件代码之间的映射与转换。用严格的规范和管理手段来缩小偏差,通过牺牲「时间」来提高「质量」。
-
映射与转换
- 单步映射与多步映射
-
软件工程的两个映射:「概念映射」是问题空间的概念与解空间的模型化概念之间的映射;「业务逻辑映射」是问题空间的处理逻辑与解空间处理逻辑之间的映射。
-
映射过程
映射过程包含需求分析、软件设计、实现、验证/确认
二 软件工程所关注的目标
- 软件工程所关注的对象
- 产品:各个抽象层次的产出物;
- 过程 : 在各个抽象层次之间进行映射与转换;
- 软件工程具有「产品与过程二相性」的特点,必须把二者结合起来去考虑,而不能忽略其中任何一方。
- 功能性需求(FR):软件所实现的功能达到它的设计规范和满足用户需求的程度。考虑软件的完备性、正确性、健壮性、可靠性。
- 非功能性需求(NFR): 系统能够完成所期望的工作的性能与质量。考虑软件的效率、可用性、可维护性、可移植性、清晰性、安全性、兼容性、经济性、商业质量。
三 软件开发中的多角色
- 在软件开发过程中同样需要多种角色之间紧密协作,才能提高质量、高效率的完成任务
-
顾客企业(Client 甲方)
- 决策者(CxO)、终端用户(End User)、系统管理员
-
软件开发公司(Supplier,乙方)
- 决策者(CxO);
- 软件销售与市场人员;
- 咨询师、需求分析师;
- 软件架构师、软件设计师;
- 开发人员:开发经理/项目经理、程序员;
- 维护人员
四 软件工程=最佳实践
- 软件系统的复杂性、动态性:
高深的软件理论在软件开发中变得无用武之地 - 软件工程被看做一种实践的艺术
五 软件工程的核心概念
-
复用
-
在一个新系统中,大部分的内容是成熟的,只有小部分内容是全新的
-
构造新的软件系统可以不必每次从零做起;
-
直接使用已有的软构件,即可组装成新的系统;
-
复用已有的功能模块,既可以提高开发效率,也可以改善新开发过程
中带来的质量问题。 -
分治
-
将复杂问题分解为若干可独立解决的简单子问题,并分别独立求解,
以降低复杂性; -
然后再将各子问题的解综合起来,形成最初复杂问题的解。
-
核心问题:如何的分解策略可以使得软件更容易理解、开发和维护?
-
折中
-
不同的需求之间往往存在矛盾与冲突,需要通过折中来作出的合理的
取舍,找到使双方均满意的点。 -
核心问题:如何调和矛盾(需求之间、人与人之间、供需双方之间,等等)
-
演化
- 软件系统在其生命周期中面临各种变化
- 核心问题:在设计软件的初期,就要充分考虑到未来可能的变化,并
采用恰当的设计决策,使软件具有适应变化的能力。
六 总结
由于规模、复杂度、变化、接口的增多,时间、成本的逐渐上升,软件的质量不断下降引发了软件危机。因而出现了「软件工程」。有这样一个公式:SE = 过程+方法+工具 这样的一个公式保证了软件的质量。我们需要把握住的一个中心就是软件工程的本质:不同抽象层次之间的映射与转换。其中有单步映射和多步映射,单步映射一步到位,而多步映射则要分几步完成,通过牺牲「时间」提高了「质量」。
而软件工程所要达到的质量目标主要有两种:功能需求(FR)和非功能需求(NFR)。并且软件工程等同于最佳的实践,任何理论的方法都需经过实践的检验方能证明为有效的方法。此外还有软件工程的核心概念:复用、分治、折中、演化等等。
网友评论