二、软件工程概述

一、软件工程产生背景

1.1 软件危机的产生

  • 案例:IBM360、Ariane 5
  • 1960年代,软件开发和维护遇到一系列问题

二、软件工程基本内涵

2.1 软件工程的诞生

1968年,NATO科技委出资召开会议,提出软件工程概念

2.2 何为软件工程

1)将系统的、规范的、可量化的方法应用于软件的开发运行和维护的过程;以及上述方法的研究

2)软件工程对软件开发的新认识

  • 软件是产品
  • 软件开发是一项工程
  • 要按工程化方法来组织软件生产

3)软件开发方式的改变

个体作坊行为——基于团队的协同开发

2.3 软件工程的三要素

1)过程:从管理的视角,回答软件开发、运行和维护需要开展哪些工作、按照什么样的步骤和次序来开展工作

2)方法学:从技术的视角,回答软件开发、运行和维护如何做的问题

3)工具:从工具辅助的视角,主要回答如何借助工具来辅助软件开发、运行和维护的问题

2.4 软件工程原则

1)抽象和建模

  • 抽象:将要素提取,不关心的要素扔掉,形成软件要素
  • 建模:基于特定的抽象,借助于建模语言,建立起软件模型

2)模块化

  • 将软件系统的功能分解和实现为若干模块,每个模块具有独立的功能,模块之间通过接口进行调用和访问
  • 模块内部高内聚模块间松耦合

3)软件重用

  • 在开发过程中尽量利用已有的软件资源和财产
  • 努力开发出可被再次重用的软件资源

4)信息隐藏

  • 模块内部信息对外不可见或不可访问
  • 模块设计时只对外提供接口

5)关注点分离

  • 将若干性质不同的关注点分离开来,以便在以后的开发活动中进行针对
  • 软件系统具有多面性的特点(如软件要完成的动作,既有高层的需求模型,也有底层的实现模型)
  • 使每一项开发活动聚焦于某个关注点,便于整合观点

6)分而治之

  • 对复杂软件进行分解
  • 整合子系统问题

7)双向追踪

  • 当某个软件制品发生变化时,追踪这种变化对那些软件制品产生影响,进而指导开发和维护,(正向追踪);追踪产生这种变化的来源,明确变化的原因(反向追踪)。

8)工具辅助

  • 利用软件工具来辅助软件开发和维护
  • 借助计算机工具来辅助软件开发和维护

三、软件工程发展历程

(软件工程发展历程图)

1)1950—1960年代:

  • 软件系统简单,计算机软件于硬件结合紧密
  • 程序代码“精雕细琢”
  • 出现黑客文化
  • 出现高级程序语言
  • 软件危机

2)1970年代

  • 主机计算能力得到提升
  • 程序设计语言和程序设计方法学成为研究热点
  • 产生了软件工程新技术

3)1980年代

  • 产生了面向对象程序设计技术
  • 提出了SW-CMM(软件能力成熟度模型)
  • 软件重用被视为是解决软件危机的一条现实可行途径
  • CASE工具和环境的研制和使用成为热点
  • 软件工程标准化工作活跃

4)1990年代

  • OOP技术趋于成熟,面向对象分析和设计方法学的研究非常活跃(制定了UML)
  • 软构件技术快速发展,萌生了软件体系结构和软件设计模式的研究与实践
  • 开源软件以及技术出现

5)2000年代

  • 产生了网构软件技术、自适应软件工程、可信软件技术等
  • 群体化软件开发技术广泛应用
  • 敏捷开发方法在软件开发中的应用
  • 软件可信技术的研究

6)2010年代

  • 信息系统的人机物融合趋势日趋突出
  • 越来越多人参与开源软件实践,形成庞大的开源软件生态
  • DevOps方法广泛应用
  • 智能化软件开发技术活跃

7)发展的技术特点:

  • 软件抽象层次越来越高
  • 软件重用粒度越来越大
  • 软件开发理念不断变化

四、软件工程教育

4.1 软件工程道德规范

八项原则:

  • 公众:公众利益一致
  • 客户和雇主:满足客户最大利益
  • 产品:达到行业高标准
  • 判断:具有独立职业判断
  • 管理:符合道德标准
  • 专业:弘扬职业正义
  • 同行:平等对待同行
  • 自身:终身不断学习

  • 25
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值