软件工程核心思想总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013679573/article/details/78795910

一、软件工程的本质

从现实空间到计算机空间的软件代码之间的映射与转换。

单步映射需求与软件实现的偏差要大于多步映射。

概念映射:问题空间的概念与解空间的模型化概念之间的映射。

业务逻辑映射:问题空间的处理逻辑与解空间处理逻辑之间的映射。

不同抽象层次之间的映射过程:

$pic1


需求分析:在一个抽象层上建立需求模型的活动,产生需求规约,作为开发人员和客户之间合作的基础,并作为以后开发阶段的输入。

软件设计:定义了实现需求规约所需的系统内部结构与行为,包括软件体系结构、数据结构、详细的处理算法、用户界面等,即所谓的设计规约,给出了实现软件需求的软件解决方案。

实现:由设计规约到代码的转换,以某种特定的编程语言,对设计规约中的每一个软件功能进行编码。

验证/确认:一种评估性活动,确定一个阶段的产品是否达到前阶段确立的需求,或者确认开发的软件与需求是否一致。

二、软件工程所关注的目标

1. 软件工程所关注的对象

产品:各个抽象层次的产出物;

过程:在各个抽象层次之间进行映射与转换;

软件工程具有产品与过程二相性的特点,即必须将二者结合起来考虑,不能忽视其中的任一方。

功能性需求:软件所实现的功能达到它的设计规范和满足用户需求的程度(完备性、正确性、健壮性、可靠性)。

非功能性需求:系统能够完成所期望的工作的性能与质量(效率、可用性、可维护性、可修改性、可移植性、清晰性、安全性、兼容性、经济性、商业质量)。

不同目标之间的关系:折中(tradeoff)。

三、软件开发中的多角色

软件开发中同样需要多种角色之间紧密协作,才能高质量、高效率地完成任务。

四、软件工程=最佳实践

软件工程是一门实践的艺术:做的越多,经验积累的越多。

五、软件工程的核心概念

概念和形式模型、抽象层次、大问题的复杂性:分治、复用、折中、一致性和完备性、效率、演化。

1. 复用

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

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

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

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

2. 分而治之

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

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

3. 折中

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

4. 演化

软件系统在其生命周期中面临的各种变化。


阅读更多

没有更多推荐了,返回首页