第一章软件开发方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本教科书给出的定义
运用系统的、规范的和可定量的方法来开发、运行和维 护软件。
38/143
关于软件工程学
软件工程是一门交叉学科,涉及到计算机科学、 管理科学、工程学和数学。
软件工程的理论、方法、技术都是建立在计算机科学 的基础上; 它是用管理学的原理、方法进行软件生产管理; 用工程学的观点进行费用估算、制定进度和实施方案; 用数学方法建立软件可靠性模型以及分析各种算法。
7/143
第1章
软件开发方法
讲课9学时
第1章教学内容
1.理解软件及其软件工程的概念 2.了解软件危机与软件的生命周期概念 3.理解典型软件开发过程 4.了解OO(面向对象)软件开发技术 5.了解C/S和B/S软件系统的结构
9/143
问题的提出
什么是软件 ? 软件有哪些特征? 软件工程的含义是什么? 什么是软件危机? 什么是软件生命周期? 软件开发技术究竟有哪些? B/S和C/S结构是什么? ……
70年代出现的软件危机归结为软件开 发技术落后,人们追求高效的软件 开发技术来解决软件危机,软件工 程应运而生:
• 克服、解决“软件危机” • 改进“软件生产”方法、工
具 • 提高软件的生产率
32/143
软件生命周期
软件生存周期是指一个软件从提出开发 要求直到该软件报废为止的整个时期。 针对不同的开发模型、不同的开发对象 以及不同的开发方法,软件生命周期可 以有不同的划分。 如果不考虑上述不同的因素以及应用领 域、项目规模和复杂性,软件生命周期 可以划分为: 软件定义、软件开发、软件维护
24/143
阶段划分
半个多世纪以来,软件及软件开发技术在 理论、观念、目标及技术方法等方面都发 生了很大变化。
以10年左右为间隔,划分为五个阶段。详 见表1-1。 表中概述了每个时期软件开发技术的特点, 包括软件开发技术处理的对象、用途、目 的、开发方法、开发工具、发展状况、技 术突破、理论成就及目标等。
22/143
按规模划分软件分类
类别 微型 小型 参加人 员数 1 1 研制期限 1~4周 1~6月 产品规模 (语句行数) 0.5k 1k~2k 实 例 选择排序程序 数值计算程序
中型
较大型 大型 极大型
2~5
5~20 100~1000 2000~5000
1~2年
2~3年 4~5年 5~10年
5k~10k
16/143
软件产品以定制生产为主
硬件产品的生产技术和工艺已经成熟,可 以做到标准化、系列化成批生产,不论哪 个厂家生产的产品,用户买来都可以集成、 组装和替换使用。 尽管软件产品复用是软件界孜孜不倦追求 的目标,在某些局部范围内几家领军软件 企业也建立了一些软件组件复用的技术标 准,例如,OMG的CORBA、Microsoft的COM 和DCOM、SUN的EJB和J2EE,但是目前还做 不到大范围使用软件替代品。大多数软件 仍然是为特定任务或用户定制的。
应用软件基础
杨怀洲 hzyang@xsyu.edu.cn
1
课程简介
课 程 意 义
课 程 内 容
课 程 特 点 教 学 计 划 教 学 用 书 交 互 方 式 若 干 要 求
2/143
课程意义
计算机和外语是现代大学生必须掌握的知识 仅仅有程序语言和OFFICE技术是远远不够的
必须掌握计算机学科本质的、基础的知识
总体设计
系统设计 详细设计 软件开发 软件编码 软件测试 软件维护 软件维护 系统编码 系统测试 系统维护
37/143
软件工程的定义
著名软件工程专家Boehm定义
运用现代科学技术知识来设计并且构造计算机程序以及 为开发、运行和维护这些程序所必需的相关文件资料。
著名IEEE刊物给出的定义
以优质、高效、低成本为目标,研究开发、运行和维护 软件以及使之退役的系统方法。
11/143
软件的特征
软件是逻辑产品 软件产品质量的体现方式不同 软件产品的生命周期和失败曲线不同 软件产品的成本构成不同 大多数软件仍然是定制生产的 软件产品的不同属性
12/143
软件是逻辑产品
软件产品:
具有产值、价格、质量和功能的特性 看不见,是逻辑的、无形的 是脑力劳动的结晶
13/143
29/143
软件开发维护技术方法的因素
开发人员和用户之间的矛盾
许多软件系统开发失败的主要原因是开发人员在没有准确、完整地了解了 用户的需求后就急于编程;用户对需求也往往不能准确、完整地提出。
软件开发各阶段任务不明确,方法不科学
软件产品有其生命周期。在周期的各个阶段有其具体的任务,如何完成任 务,各个阶段有不同的技术方法和操作步骤。只有科学的按生命周期各阶 段的任务去组织实施,才能保证质量,降低成本;急于求成,不按科学规 律、方法实施,只能“事倍功半”,事与愿违。
①操作系统(Operating System)
②网络系统(Network System)
③语言编译系统( Language Compiler) ④通信软件(Communications Software) ⑤工具软件(Tools Software)
21Leabharlann Baidu143
应用软件
应用软件是为满足用户不同领域、不同问题的 应用需求而提供的那部分软件。 它可以拓宽计算机系统的应用领域,放大硬件 的功能。 应用软件具有无限丰富和美好的开发前景。 ① 事务处理软件 ② 实时软件 ③ 科学计算和数据处理软件 ④ 嵌入式软件 ⑤ 人工智能软件
适应不断更新换代升级的计算机技术
硬件更新?PC AT→PI→PIV OS更新?WIN95→98→XP→VISTA 程序语言更新?C→C++→VC++
3/143
课程内容
软件开发方法 数据结构 操作系统 数据库管理 网络编程 多媒体编程 software engineering data structure operating system data base management network programming multimedia programming
软件产品质量体现方式不同
质量体现方式不同:
实用、可靠、可操作性;
可维护性强
方便用户
不会折旧、损坏、零部件老化
14/143
软件产品的成本构成不同
一般产品的成本构成: 材料、设计、生产制造、售后服务、税费、…… 软件产品的成本构成: 设计、售后服务、税费、……
15/143
软、硬件失败曲线不同
相当于社会计算机等级考试的三级偏软
4/143
课程特点
内容浓缩
营养丰富
基础速成
5/143
教学计划
教学内容 授课学时
软件与软件工程 数据结构及其应用 操作系统及其编程
数据库及其编程 网络软件开发技术
9 9 6
6 6
多媒体编程技术
4
6/143
教学用书
《软件应用技术基础 》徐士良、朱明方编 清华大学出版社出版
50k~100k 1M 1M~10M
汇编程序
数据库系统 操作系统 空中交通管制系 统
23/143
软件开发技术发展史
社会应用需求的驱动是推进软件发展进程的主线: 从软件发展早期的按个人意愿编写代码,到按 软件工程的理论生产大型应用系统; 从手工作坊式的封闭性制作到按标准制式、大 工业生产的开放系统; 从注重个人精雕细琢地编写代码的技巧到注重 工程项目的管理和开发团队的协作; 从为特定应用定制设计到以复用为目标的组件 式开发; 从由少数软件天才的编程艺术到由广大用户直 接参与的应用开发。
26/143
软件危机的具体表现
⑴软件开发进度难以预测 ⑵软件开发成本难以控制 ⑶用户对软件功能难以满足 ⑷软件产品质量无法保证 ⑸软件产品难以维护 ⑹软件通常缺少适当的文档资料 ⑺生产率提高的速度不能满足社会需要
27/143
软件危机产生的原因
产生软件危机有两个方面的原因:
与软件本身的特点有关;是内在因素、
维护时期不再进一步划分阶段,但是每 一次维护活动本质上都是一次压缩和简 化了的定义和开发过程。例如,如果提 出的变更要求是更加新的功能,那就要 涉及从新一轮的软件开发过程:需求分 析、系统设计、编码及测试。
36/143
软件生命周期的图示
问题定义
软件定义
可行性研究
需求分析
系统分析
软 件 生 命 周 期
10/143
软件的基本概念
计算机系统由计算机硬件和软件构成 计算机能完成各种神奇的功能是因为存在各种软件 什么是软件? 软件=程序+数据+文档(+服务) 什么是程序?
程序是为实现特定目标或解决特 定问题而用计算机语言编写的命 令序列的集合
IEEE的软件定义:指计算机程序、方法和规则、相关的文 档资料以及在计算机上运行它所必需的数据
重编程,轻分析;重开发,轻维护;重程序,轻文档
软件产品的使用寿命很长。在这期间要对软件进行必要的修改。据统计数 据表明,软件维护的费用占总费用的55%-70%。软件工程的一个重要目标就 是提高软件的可维护性,减少软件维护的代价。
30/143
解决软件危机的途径
采用现代化、社会化的组织管理方式 使用成功技术和方法(面向过程、面向对象等) 使用更好的软件开发工具(汇编、C、VC、JAVA等)
软件按不同方式划分为不同的类型:
按功能划分 按规模划分
19/143
按功能划分软件分类
操作系统 网络系统 语言编译器 数据库软件 管理软件 实时软件 科学计算、数据处理 嵌入式软件 人工智能软件 专用领域软件
20/143
系统软件 软件 应用软件
系统软件
是支持计算机系统正常运行并实现用 户操作的那部分软件。 一般是在计算机系统购买时随机携带 的,也可以根据需要另行安装。
客观的存在,只能因势利导加以解决。
与软件开发和维护的技术方法有关;是 外在因素,可以完善、提高。
28/143
软件特点的因素(内因)
软件是逻辑产品,是代码化了的人的思维活 动。在总体构思时,别人无法管理和干预。 在写出程序、并在机器上运行之前,进展情 况难以掌握,开发质量也无法评估。这些都 给管理和控制带来不便。 软件是特定问题在计算机上的运行描述。实 际问题的复杂性决定了一个实用软件系统规 模往往十分庞大。大有大的难处。程序规模 越大,控制、管理难度也就越大。
17/143
软件产品的不同属性
为便于软件产品的研制、生产、维护 和使用,软件还必须具有: 可维护性(Maintainability)
独立性(Dependability)
效率性(Efficiency)
可用性(Usability)-(学习能力、效率、用户保持 时间、错误率和满意度)
18/143
软件分类
为了解决软件危机就要从技术措施和组织管理两个方面 去研究,不断总结经验教训,提高软件生产效率,降低 软件开发和维护的成本。 开发软件选用最好的开发工具是至关重要的,即选择、设 臵良好的软件工程支撑环境。工具选用的好,它可以 “放大”人的智力,大大加快软件开发速度,提高软件 质量。
31/143
软件工程的诞生
25/143
软件危机
从20世纪60年代开始,软件业出现,研制软件系 统需要投入大量的人力、物力和资金,但是系统 的质量却无法保证。开发软件所需的高成本与软 件产品的低质量之间存在尖锐的矛盾。软件生产 周期漫长,不能满足市场需求,软件开发陷入不 可自拔的恶性循环之中。这种现象被称为“软件 危机”(Software Crisis)。 以IBM公司的OS/360操作系统为例。它共有4000多 个模块、100万行指令,共投入5000人年,耗资5 亿美元,但在交付使用的系统中仍找出2000个以 上的错误。
33/143
软件定义
软件定义时期的核心任务是: “做什么”。即要确定软件开发工程的总目 标;确定工程的可行性;提出实现工程目标应 该采用的策略及系统应实现的功能;估计完成 该项工程需要的资源和成本,并且制定工程进 度表。 这个时期的工作通常又称为系统分析,由系统 分析员和用户共同负责完成。 软件定义时期通常进一步划分成3个阶段: 问题定义、可行性研究和需求分析
34/143
软件开发
软件开发时期的核心任务是:“怎么 做”。即要具体设计和实现在软件定义 时期定义的软件系统。 它又包括4个阶段: 总体设计,详细设计,编码和测试。 其中前两个阶段又称为系统设计,后两 个阶段又称为系统实现。
35/143
软件维护
维护时期的核心任务是:“改变”。即 要保证软件持久地满足用户各个方面改 变的需要。
39/143
软件工程的目标