一 软件工程的本质
- 本质:
- 不同抽象层次之间的
映射
过程。任何软件系统开发的共同本质在于:从现实空间的需求到计算机空间的软件代码之间的映射与转换。
- 不同抽象层次之间的
- 映射方法:
单步映射与多步映射
:在软件开发过程中,从需求过程映射到代码空间采取的方式。顾名思义,单步映射一次性完成,而多步映射需要分成多布进行。多步映射可以通过牺牲“时间”来提高“质量”
;概念映射与逻辑映射
:概念映射是问题空间的概念与解空间的模型化概念之间的的映射;逻辑映射是问题空间的处理逻辑与解空间处理逻辑之间的映射。前者对应与数据结构,后者对应算法。
- 映射过程:
- 包括4个部分——需求分析、软件设计、实现、验证/确定。
二 软件工程所关注的目标
- 关注对象:
- 产品:各个抽象层次的产出物;
- 过程:在各个抽象层次之间进行映射和转换。
- 特点:
- 具有“
产品与过程二相性
”的特点,即把二者结合起来去考虑,不能忽略其中任何一方。
- 具有“
- 关注目标:
- 功能性需求(FR):软件所实现的功能达到它的设计规范和满足用户需求的程度;例如:完备性、正确性、健壮性、可靠性...
- 非功能性需求(NFR):系统能够完成所期望的工作的性能与质量;例如:效率、可用性、可维护性、可移植性、清晰性、安全性、兼容性、经济性、商业质量...
三 软件开发的多角色
- 顾客企业:
- 决策者;
- 终端用户;
- 系统管管理员。
- 软件开发公司:
- 决策者;
- 软件销售与市场人员;
- 咨询师、需求分析师;
- 软件构架师、软件设计师;
- 开发人员:开发经理/项目经理、程序员;
- 维护人员。
四 软件工程=最佳实践
-
原因:
- 软件系统的
复杂性、动态性
使得高深的软件理论在软件开发中变得无用武之地;即使应用理论方法来解决,得到的结果也往往难以与现实保持一致;因此软件工程被看成一种时实践的艺术: - 做过越多的软件项目,犯的错误就越少,积累的经验越多,随后做项目的成功率就越高;
- 对新手来说,要通过多实践、多犯错来积累经验,也要多吸收他人的失败与教训和成功的经验。
当你把所有的错误都犯过之后,你就是正确的了。
- 软件系统的
-
最佳实践的例子:
- 软件工程的七条原理;
- 与顾客沟通的最佳实践原则;
- IBM RUP最佳实践原则...
五 软件工程的四个核心理论概念
- 复用:
- 在一个新系统中,大部分的内容是成熟的,只有小部分内容是全新的;
- 构造新的软件系统可以不必每次从零开始;
- 直接使用已经有的软构体,即可组装成新的系统;
- 复用已有的功能模块,既可以提高开发效率,也可以改善新开发过程中带来的质量问题。
- 分治
- 将复杂问题分解为若干可独立解决的简单子问题,并分别独立求解,以降低复杂性;以降低复杂性;
- 然后再将各子问题的解综合起来,形成最初复杂问题的解。然后再将各子问题的解综合起来,形成最初复杂问题的解。
- 折中
- 不同的需求之间往往存在矛盾与冲突,需要通过折中来作出的合理的取舍,找到使双方均满意的点。
- 演化:
- 软件系统在其生命周期中面临各种变化;
- 核心问题:在设计软件的初期,就要充分考虑到未来可能的变化,并采用恰当的设计决策,使软件具有适应变化的能力;
- 即:
可修改性
、可维护性
、可扩展性
。