第1章 软件工程概述
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.1 软件
• 软件的演变
– 即从传统软件开发到现代软件开发
程序 软件 软件产品 传统软件开发 现代软件开发
营业额 增长曲线
240
80
0.00016
1975 1989 2000
1.2 软件危机
• 定义:
– 是指软件开发和维护过程中所遇到的一系列严重问题。
• 表现:
– – – – 成本超很多 质量难以保证(常出错、总出错) 开发进度难以控制 维护困难(很难发动,重复开发浪费大)
微软凌小宁博士
我最大的心得是,一个产品一定要找到能 够真正适用的场合,不能只是为了技术而从事 技术为了研究而进行研究,却不管用户对你所 研究的技术和产品有没有需求。否则,无论你 的技术是多么优秀,多么先进,恐怕你的产品 在市场上都无法获得成功。
微软张益肇博士
课程的性质、目的与任务
软件工程是计算机科学与技术专业的一门 专业必修课程。通过本课程的学习,使学生掌 握系统的软件开发理论、技术和方法,使用正 确的工程方法开发出成本低、可靠性好并在机 器上能高效运行的软件,为今后从事软件开发 和维护打下坚实的基础。
1.1 软件
• 软件的分类:
– 按功能进行分类:系统软件、应用软件、支撑软件 – 按规模进行划分(即按开发软件所需的人力、时间以 及完成的源代码行数划分):
类别 微型 小型 中型 大型 甚大型 极大型 参加人数 1 1 2-5 5-20 100-1000 2000-5000 研制期限 1-4周 1-6周 1-2年 2-3年 4-5年 5-10年 产品规模(源代码行数) 约500行 约2000行 5000-50000行 5万-10万行 100万行 1000万行
– 是指导计算机软件开发和维护的工程学科。 – ①把系统化的、规范的、可度量的途径应用于软件 开发、运和行和维护的过程,也就是把工程化应用 于软件中;②研究①中提到的途径。
是把软件当作一种工业产品,要求 “采用工程化的
原理与方法对软件进行计划、开发和维护 ”。
• 目标:
– 以较短的周期、较低的成本生产出高质量的软件产 品,并最终实现软件的工业化生产。 – 功能性、可靠性、易用性、效率、可维护性和可移 植性
学习本课程的基本要求
本课程是继程序设计课程之后,对提高学 生软件开发能力有重要作用的一门课程。要求 学生在学习本课程前应掌握信息管理系统、数 据结构、结构化程序设计、面向对象程序设计 以及程序设计方法论。 通过本课程的学习,为学生后期的毕业设 计环节奠定了良好的基础。
课程简介
• • • • 性质:专业必修课 学时数:54 + 10 考核方式:考试(笔试80 + 实践20) 教学目标:程序系统 程序员系统工程师、系统分析师 • 参考资料:
在一些人眼里,今天的软件开发似乎已 成为简单的事情,已有了不少很好的开发工 具和软件库,软件开发人员训练有素,都强 烈渴望去编写很酷的软件,可以在几天的时 间里编写出一个相当复杂的软件。但为什么 有一些软件能够得到用户的喜欢,而另一些 则不能?为什么有些软件能够在市场上成功 ,而有些则受到冷落?由此可见,开发软件 并不一定难,难就难在如何开发有用的软件。
1.2 软件危机
• 突出事例:
– 1993年,伦敦附近核电站的反应堆内,由于计算 机温度控制失灵,导致这个欧洲人口最为密集的地 区遭受巨大灾难。后经查明,在反应堆的主要保护 系统中,一段10万行代码的控制程序几乎有一半未 能通过测试。 – 1997年香港回归,香港新机场同时投入运营,然 后因软件问题使新机场不能按要求运转,导致客货 滞留,而因老机场已同时关闭也不能救援,造成相 当大的损失。
1.3 软件工程
• 基本原理:
– – – – – – – 用分阶段的生命周期计划严格管理 坚持进行阶段评审 实行严格的产品控制 采用现代程序设计技术 结果应能清楚地审查 开发小组的人员应该少而精 承认不断改进软件工程实践的必要性
1.3 软件工程
• 软件工程学 一门交叉学科
软件开发技术
软件开发方法 软件开发过程 软件工具 软件工程环境 软件工程管理学
硬件失效率与软件失效率
修改点 失 效 率 实际曲线
理想曲线 失 效 率 磨合 调整
磨损 用坏
时间
软件失效率曲线
时间
硬件失效率曲线
软件技术的发展与软件成本的变化
成 本 % 硬件 软件 软 件 复 杂 性 软件需求
差距 软件技术
时间
1950
1970
1985
1995
年份
硬、软件成本比例的变化
软件技术的发展落后于需求
1.2 软件危机
• 突出事例——千年虫(Y2K)
– 在上个世纪70年代,程序员为了节约非常宝贵的内存 资源和硬盘空间,在存储日期时,只保留年份的后两 位,如“1980”被存为“80”。 – 当2000年到来的时候,问题就会出现,比如银行存款 程序在计算利息时,应该用现在的日期“2000年1月 1日”减去当时存款的日期,比如“1989年1月1日”, 结果应该是11年,如果利息是3%,银行要付给顾客 每100元,大约86元利息。如果程序没有纠正年份只 存储两位的问题,其存款年数就变为-89年,变成顾 客反要付银行1288元的巨额利息。 – 就是为了这样一个简单的设计缺陷,全世界付出几十 亿美元。
1.1 软件
• 软件(software):
– 是计算机系统中与硬件相互依存的另一部分。它包括 程序、数据及其相关文档的完整集合。
• 软件特点:
– 软件是一种逻辑实体,而不是具体的物理实体。 – 软件的生产与硬件不同。 – 在软件的运行和使用期间,没有硬件那样的机械磨损, 老化问题。 – 软件的成本相当昂贵。
软件工程学
软件工程管理
软件经济学 软件心理学
---- 软件工程学的范畴
1.3 软件工程
• 软件工程包含的领域
– – – – – – – – – – 软件需求 软件设计 软件构建 软件测试 软件维护 软件配置管理 软件工程管理 软件工程过程 软件工程工具和方法 软件质量
– 软件工程概论,郑人杰,机械工业出版社 – 软件工程——方法与实践,许家怡,电子工业出版社 – 软件工程课程设计,李龙澍,机械工业出版社
第一章 软件工程概述
传统工程 新兴工程
水利工程 建筑工程 机械工程 … … 气象工程 生物工程 软件工程
本章将对软件的地位和作用、软件的特 点、软件的发展、软件的危机以及软件工程 学科的形成、基本原理等方面的问题和基本 概念。
课程的主要内容
本课程比较全面、系统地介绍软件工程的概 念、技术与方法,主要内容包括:软件工程概述 、软件过程、软件需求分析、软件设计方法、软 件测试技术等。 通过本课程的学习,使学生能真正地从中了 解软件开发的整个过程。为了让学生真正得以实 践,结合实际软件开发项目,让学生从问题定义 开始,经过可行性研究、需求分析、概要设计、 详细设计、编码直到最后要对自己开发的软件进 行测试,这样一个软件开发过程,从而使学生掌 握软件开发的基本技能。
1.1 软件
• 软件的应用领域
– 系统软件、应用软件、工程/科学软件、嵌入式软件、 产品线软件、Web应用软件、人工智能软件 – 新挑战:开放计算、网络资源、开源软件 – 遵循“意外效应法则”
• 软件技术面临的问题:
– 规模、复杂、生产率
“软件是播撒梦想和收获噩梦的地方。” ——Brad D.Cox
1.2 软件危机
• 产生原因:
– 与软件本身特点有关 – 与软件的开发和维护的不正确方法有关
• 解决办法:
– 彻底清除“软件就是程序”的错误观念 – 先进的技术措施(方法和工具)和科学的组织管理措 施两方面
wk.baidu.com
1.3 软件工程
• 定义:Software Engineering
于1968年 NATO 组织在 德国召开的一次会议上提出