第一讲 软件危机与软件工程
Computer became cheaper and more common High level languages were invented User Programmer Computer
easier
软件的发展
Early 1960s:
Very few large software projects were done by some experts
参加人员数 研制期限 1 1 2-5 5-20 100-1000 2000-5000 1-4周 1-6月 1-2年 2-3年 4-5年 5-10年
源代码行数 0.5k 1k-2k 5k-50k 50k-100k 1M 1M-10M
软件的分类
小型软件
15:08:22
用于数值计算或数据处理,通常没有与其它程序的接口。 需求按一定的标准化技术、正规的资料书写以及定期的 系统审查。只是没有像大项目那样严格。
曾在海湾战争期间对抗伊拉克飞毛腿导弹 1991 年2 月,一次对抗失利中就有28 名美国士兵丧生 问题的症结在于导弹软件存在累加计时误差
15:08:22
失效率
15:08:22
软件的特点
软件的开发和运行常受到计算机系统的限制,对 计算机系统有着不同程度的依赖性 软件的开发至今尚未完全摆脱手工艺的开发方式 软件本身是复杂的 实际问题的复杂性 程序逻辑结构的复杂性 软件成本相当昂贵 相当多的软件工作涉及到社会因素
15:08:22
Middle to late 1960s:
Truly large software systems were attempted
After 1968
Software engineering
软件的角色
软件在社会上扮演了双重角色
它本身是一种产品
• 将计算机硬件的计算能力发挥出来
软件产业的网络化趋势 软件产业的服务化趋势 软件产业的全球化趋势
15:08:22
•强调开放性、交互性 •支持主流的开放式标准 •人才的全球化
对中国软件企业有什么启示和挑战?
二、现代软件开发对人才的要求
Talent Beyond Technology _What Kind of Talent We Need for Modern Software Development 扎实的基础 创新、独立的工作能力 主人翁精神和团队精神 沟通与协调能力 成就感强、有激情 自觉地干好工作 锲而不舍,从错误中学习
15:08:22
什么是软件以及软件所具有的特点?
当今社会,计算机软件已经成为一种驱动力,它 是进行商业决策的引擎;它是现代科学研究和工 程问题寻求解答的基础;它也是鉴别现代产品和 服务的关键因素。 它广泛应用于各行各业、各种类型的系统中:交 通、医疗、电信、军事、工业生产过程、娱乐、 办公、……难以穷举。 软件在现代社会中确实是必不可少的。而且我们 进入21世纪,软件将成为从基础教育到基因工程 的所有领域新进展的驱动器。
In the early days:
Software=place a sequence of instructions together to get the computer do something useful User Computer
15:08:22
Later 1950’s:
软件危机
软件危机出现于20 世纪60 年代末 软件危机是指在计算机软件的开发和维护过程中 遇到的一系列严重问题。
软件开发的成本和进度难以准确估计,延迟交付甚至 取消项目的现象屡见不鲜 软件存在着错误多、性能低、不可靠、不安全等质量 问题 软件维护极其困难,而且很难适应不断变化的用户需 求和使用环境
软件产业的网络化趋势 软件产业的服务化趋势 软件产业的全球化趋势
15:08:22
•
相对目前“打包式” 软件,为用户提供智 能化的“服务式”软 件。
一、全球软件产业的现状、趋势与挑战 The Challenges and Opportunities of the Global Software Industry.
按软件工作方式分
实时处理软件 分时软件 交互式软件 批处理软件
15:08:22
按软件服务对象的范围划分
项目软件 产品软件
软件的分类
按使用的频度进行划分
一次使用 频繁使用
15:08:22
按软件失效的影响进行划分
高可靠性软件 一般可靠性软件
软件的发展
新疆大学信息学院
软件工程
第一讲 软件危机与软件工程
主 讲 人:张琳琳 所在单位:新疆大学信息学院
开始之前
学习“软件工程”的目的和意义 本课程学习的主要内容 课程特点与安排 教材及主要参考书
15:08:22
学习“软件工程”的目的和意义
学会如何在现代IT企业的环境中做一个成功者; 学会如何做世界级的、高质量的研究; 学会如何创建大规模的软件产品。
中型软件
需要考虑软件人员之间、与用户之间的联系、协调的配 合关系。 计划、资料书写以及技术审查需要比较严格地进行。 如大多数应用程序和系统程序都属于中型软件 系统的软件工程方法是完全必要的。
软件的分类
大型软件
15:08:22
编译程序、小型分时系统、实时控制系统等 二级管理,若干小组,每组5个以下。人员调整往往不可 避免,新手的培训 采用统一的标准,实行严格的审查是绝对必要的
15:08:22
同时,它也是一种传递产品的工具
软件传递了我们这个时代最重要的产品:
信息
计算机和软件的历史观
70年代和80年代
“新的工业革命” “工业社会将转变为信息社会” …(大批量生产带来的产品过剩)
15:08:22
90年代
“知识的民主化将改变旧的权力结构”
21世纪初
15:08:22
在微软流传着这样一个故事
15:08:22
有一次比尔.盖茨和上帝谈话,上帝对他说:“地球明 天就要毁灭了!由于你是如此的成功,因此我特许你从地 球上带一样东西到天堂!你想带什么?” 比尔.盖茨回答:“请允许我从微软选300个最优秀的 人,我要把他们带到天堂!”
尽管微软的Windows,Exchang,SQL,Office等都非常重要, 但如果没有象他们这些人才,微软也将一无所有。他们对我 们公司和微软来说是处于第一位的。
教材及主要参考书
软件工程导论(第5版)
作者:张海藩 出版社:清华大学出版社
15:08:22
软件工程实践者的研究方法(本科教学版)
作者:Roger S. Pressman著 郑人杰 等译 出版社:机械工业出版社
第一讲 软件危机与软件工程
本讲主要内容
软件的特点 软件的分类 软件的发展 软件危机 软件神话 软件工程(定义、要素、原理等) 我国软件业的现状
15:08:22
什么是软件?
软件是计算机系统中与硬件相互依存的另部分, 它是包括程序、数据及其相关文档的完整集合
程序是按事先设计的功能和性能要求执行的指令序列 数据是使程序能正常操纵信息的数据结构 文档是与程序开发、维护和使用有关的图文材料
15:08:22
软件的特点
软件是一种逻辑实体,而不是具体的物理实体, 因而它具有抽象性 软件的生产与硬件不同,在它的开发过程中没有 明显的制造过程 在软件的运行和使用期间,没有硬件那样的机械 磨损、老化问题
课程特点与安排
1. 课程特点:
概念性、综合性、实践性强,发展迅速
15:08:22
2. 课程安排(建议):
课堂教学(48学时)— 授课、案例分析、讨论 课程设计(课外为主,需求阶段及总体设计阶段 的答辩式评审共8学时) 课程设计以开发小组为单位进行。
3. 关于考试(建议)
15:08:22
支撑软件
• 协助用户开发软件的工具软件,如支持需求分析、设计、 实现、测试和管理的软件(CASE工具)
应用软件
• 如商业数据处理软件、工程与科学计算软件、CAD/CAM 等
软件的分类
按软件规模进行划分 类别 微型 小型 中型 大型 甚大型 极大型
2013/11/20
15:08:22
甚大型
若干个子项目,每一个子项目都是一个大型软件。子项目 之间具有复杂的接口 如远程通信系统、多任务系统、大型操作系统、大型数据 库管理系统、军事指挥系统通常具有这样的规模 显然,这类问题没有软件工程方法的支持,它的开发工作 是不可想象的
极大型
军事指挥、弹道防御系统
软件的分类
软件危机
15:08:22
该项目负责人F.D.Brooks事后总结了他在组 织开发过程中的沉痛教训时说:
“…正像一只逃亡的野兽落到泥潭中做垂死的挣扎 一样,越是挣扎,陷得就越深,最后无法逃脱灭 顶的灾难。…程序设计工作正像这样一个泥潭, …一批批程序员被迫在泥潭中拼命挣扎,…谁也 没有料到问题会陷入这样的困境…IBM 360操作系 统的历史教训应为软件开发项目的工作人员们所 汲取。”
“Y2K定时炸弹” “无处不在的计算” …
软件危机 引例
15:08:22
美国IBM公司在1963年至1966年开发的IBM360 机的操作系统。 该项目的平均工作量是5000人/年,最多时有 10000人投入开发工作,写出了近100万行源程 序… 据统计,这个操作系统每次发行的新版本都是 从前一版本中找出1000个程序错误而修正的结 果
15:08:22
—— 微软全球资深副总裁 原微软亚洲研究院院长 首席科学家 张亚勤
一、全球软件产业的现状、趋势与挑战 The Challenges and Opportunities of the Global Software Industry.