第一章 软件工程概论

一、什么是软件

1. 软件

一组对象或项目所形成的一个“配置”,由程序、文档和数据等部分构成。

  • 程序(program):可被计算机硬件理解并执行的一组指令,提供期望的功能和性能;

  • 数据(data structure):程序能正常操纵信息的数据结构;

  • 文档(document):与程序开发、维护和使用有关的图文材料

2. 软件的四大特征

复杂性、不可见性、一致性

  • 复杂性(complexity): 软件无法以“制造”的方式被生产,只能采用手工开发方式,这是一种人为、抽象化的智能活动(智力密集型)

  • 不可见性(invisibility):尚未完成的软件是看不见的,无法像产品一样充分呈现其结构,使得人们在沟通上面临极大的困难,难以精确的刻画和度量。

  • 易变性(changeability):软件所应用的环境由人群、法规、硬件设备、应用领域等因素汇集而成,而这些因素皆会频繁快速的变化。

  • 一致性(conformity):各子系统的接口必须协同一致,而随着时间和环境的演变,要维持这样的 一致性通常十分困难。

3. 软件的分类

系统软件:OS、编译器、DBMS、IDE

应用软件:商业软件、个人软件

二、软件的发展

  • 第一阶段(1950-1960):主要用于数值计算的需求,导致“软件危机 ”的出现

  • 第二阶段(1970):出现了数据库、结构化编程等技术,软件不仅是程序,还包括开发、使用、维护等文 档,“软件生命周期”的概念开始形成

  • 第三阶段(1980):开始关注对软件开发过程的管理及工程性的开发,出现了CASE工具,面向对象思想OO开始出现

  • 第四阶段(1990):Internet和Web导致出现分布式、异构环境下的软件,软件生命周期的每一个阶段都发展出详细的方法论

  • 第五阶段(2000至今):云计算、敏捷开发,面向服务的体系架构SOA方法

三、软件危机

计算机软件的开发和维护过程所遇到的 一系列严重问题

1. 软件危机的表现

– 对软件开发成本和进度的估算很不准确

– 无法满足用户需求

– 质量很不可靠

– 难以更改、调试和增强

– 没有适当的文档

– 软件成本比重上升

– 软件开发效率跟不上计算机应用普及速度

2.软件危机产生原因

  • 对软件这样一类复杂和特殊系统的认识不清

  • 没有找到支持软件系统开发的有效方法

  • 缺乏成功软件开发实践以及相应的开发经验

四、软件工程

(IEEE) 将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即将工程化应用到软件上;

(国务院)按预算和进度实现满 足用户要求的软件产品的定义、开发、发布和维护的工程

 

五、软件工程的本质

不同抽象层次之间的映射与转换

用严格的规范和管理手段来缩小偏差,通过牺牲“时间”来提高“质量”

 

1.两个映射

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

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

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

1.功能性需求(Functional Requirements)

软件所实现的功能达到它的设计规范和满足用户需求的程度

– 完备性:软件能够支持用户所需求的全部功能的能力;

– 正确性:软件按照需求正确执行任务的能力;

– 健壮性:在异常情况下,软件能够正常运行的能力

– 可靠性:在给定的时间和条件下,软件能够正常维持其工作而不发生故障的能力。

2.非功能性需求(NFR)

系统能够完成 所期望的工作的性能与质量

– 效率:软件实现其功能所需要的计算机资源的大小,“时间-空间”;

– 可用性:用户使用软件的容易程度,用户容易使用和学习;

– 可维护性:软件适应“变化”的能力,系统很容易被修改从而适应新的需求 或采用新的算法、数据结构的能力;

– 可移植性:软件不经修改或稍加修改就可以运行于不同软硬件环境(CPU、 OS和编译器)的能力;

– 清晰性:易读、易理解,可以提高团队开发效率,降低维护代价;

– 安全性:在对合法用户提供服务的同时,阻止未授权用户的使用;

– 兼容性:不同产品相互交换信息的能力;

– 经济性:开发成本、开发时间和对市场的适应能力。

– 商业质量:上市时间、成本/受益、目标市场、与老系统的集成、生命周期 长短等。

七、软件工程中的最佳实践

1.软件工程的七条原理(B.W. Boehm, 1983)

– 用分阶段的生命周期计划严格管理

– 坚持进行阶段评审

– 实行严格的产品控制

– 采用现代程序设计技术

– 结果应能清楚地审查

– 开发小组的人员应少而精

– 不断改进开发过程

2.与顾客沟通的最佳实践原则:

– 原则1:倾听;

– 原则2:有准备的沟通;

– 原则3:需要有人推动;

– 原则4:最好当面沟通;

– 原则5:记录所有决定;

– 原则6:保持通力协作;

– 原则7:聚焦并协调话题;

– 原则8:采用图形表示;

– 原则9:继续前进原则;

– 原则10:双赢

3.IBM RUP最佳实践原则:

– 迭代化开发

– 需求管理

– 使用基于构件的体系结构

– 可视化软件建模

– 持续质量验证

– 控制软件变更

  • 25
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值