实用软件工程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件的特点
软件是一种逻辑实体,而不是具体 的物理实体。因而它具有抽象性 软件的生产与硬件不同,在它的开 发过程中没有明显的制造过程 在软件的运行和使用期间,没有硬 件那样的机械磨损,老化问题
软件的开发和运行常受到计算机系 统的限制,对计算机系统有着不同 程度的依赖性
软件的开发至今尚未完全摆脱手工 的开发方式
......
这个项目的负责人F. D. Brooks事后总结了他在组织开发 过程中的沉痛教训时说:“......正像一只逃亡的野兽落到泥 潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭 顶的灾难。......程序设计工作正像这样一个泥潭,......一批 批程序员被迫在泥潭中拼命挣扎,......谁也没有料到问题竟 会陷入这样的困境......”。IBM360操作系统的历史教训成为 软件开发项目的典型事例为人们所记取。
Engineering
Carlo Ghezzi, Mehdi
Jazayeri, Dino Mandrioli Prentice-Hall,
Inc. (1991)
Software Engineering , Theory and Practice Shari Lawrence Pfleeger , Prentice-Hall, Inc.(1998)
软件本身是复杂的
实际问题的复杂性
程序逻辑结构的复杂性
软件成本相当昂贵
相当多的软件工作涉及到社会因素
软件的分类
按软件的功能进行划分: 系统软件 操作系统 数据库管理系统 设备驱动程序 通信处理程序等
支撑软件 文本编辑程序 文件格式化程序 磁盘向磁带向数据传输的程序 程序库系统 支持需求分析、设计、实现、 测试和支持管理的软件
大型 5~20
2~3年 50k~100k
甚大型 100~1000 4~5年 1M(=1000k)
极大型 2000~5000 5~10年 1M~10M
按软件工作方式划分: 实时处理软件 分时软件 交互式软件 批处理软件
按软件服务对象的范围划分: 项目软件 产品软件Biblioteka Baidu
按使用的频度进行划分: 一次使用 频繁使用
▪ 什么是软件 ▪ 软件的分类 ▪ 软件的发展 ▪ 软件危机 ▪ 软件生存期 ▪ 软件工程 ▪ 软件工程的目的和要求
什么是软件?
软件是与计算机系统操作有关的程 序、规程、规则及任何与之相关的 文档及数据。
程序是按事先设计的功能和性能要 求执行的指令序列
数据是使程序能正常操纵信息的数 据及其结构
文档是与程序开发,维护和使用有 关的图文材料
Software Crisis !
问题出在哪里?
⑴ 项目没有被很好地理解;计划不周,最终导致进度拖 延。
例1. In the late 1960s, a bright-eyed young engineer* was
chosen to “write” a computer program for an automated manufacturing application. The reason for his selection was simple. He was the only person in his technical group who had attended a computer programming seminar. He knew the in’s and out’s of assembler language and Fortran, but nothing about software engineering and even less about project scheduling and tracking.
的趋势
原因
---用户需求描述不准确 ---理解问题 ---管理人员缺乏经验 ---开发人员的疏漏 ---缺乏方法学支持 ---软件本身的特殊性和人类的智力障碍
解决软件危机的途径
--- 技术措施(方法和工具) --- 组织管理措施
例: 美国IBM公司在1963年至1966年开发的 IBM360机的操作系统。这一项目花了5000人 一年的工作量,最多时有1000人投入开发工作, 写出了近100万行源程序。......据统计,这个操 作系统每次发行的新版本都是从前一版本中找 出1000个程序错误而修正的结果。
《软件工程》
近二十年来计算机软件已经成为现代科学研 究和解决工程问题的基础,以及管理部门、生 产部门、和服务行业中的关键因素,渗透到了 各个领域,成为当今世界不可缺少的一部分。
展望二十一世纪,软件仍将成为驱动任何事 情从基础教育到遗传工程取得新进展的动力。
学习研究工程化的软件开发方法,使开发过 程更加规范。
参考书目
软件工程
软件工程导论(第三版) 张海藩
清华大学出版社(1997)
参考书目
实用软件工程 (第二版)
郑人杰 殷人昆 陶永雷 清华大 学出版社(1996)
软件工程
软件工程 -实践者的研究方法 (英文版 第四版)
Roger S. Pressman 机械工业出版社
参考书目
Fundamentals of Software
按软件失效的影响进行划分: 高可靠性软件 一般可靠性软件
软件发展阶段
程序设计阶段 — 50至60年代
为具体运用专门编写小规模的程序
程序系统阶段 — 60至70年代
软件作坊的出现-沿用个体软件开发方法使得软件不可维护
出现软件危机
软件工程阶段 — 70年代以后
70年代中期~80年代分布式系统、计算机网络、
嵌入式系统发展
80年代末开始面向对象、专家系统、人工智能的应用
软件危机(Software Crisis)
表现
--- 对软件开发成本和进度的估算很不准确 --- 用户对“已完成”软件系统不满意的现象经常发生
开发人员与用户交流不充分 --- 质量不可靠 缺乏质量保证技术(审查、复审和测试) --- 软件常常是不可维护的 --- 没有适当的文档资料 --- 软件成本比重逐年上升 --- 供不应求:软件开发生产率跟不上计算机应用迅速深入
应用软件
商业数据处理软件 工程与科学计算软件 计算机辅助设计/制造软件 系统仿真软件 智能产品嵌入软件 医疗、制药软件 事务管理、办公自动化软件 计算机辅助教学软件
按软件规模进行划分:
类别 参加人员数 研制期限 源程序行数
微型
1
1~4周 0.5k
小型
1
1~6月 1k~2k
中型 2~5
1~2年 5k~50k