软件工程_张海蕃_第五版PPT
软件工程导论(全)张海藩PPT课件
与方法。
张
主要内容包括:软件工程概述、软件生存周期及软件
海 藩
需求分析、软件设计方法、软件测试技术等。 通过本课程的学习,使学生能真正的从中了解软件开
发的整个过程。为了让学生真正得以实践,结合实际软件
开发项目,让学生从问题定义开始,经过可行性研究、需
求分析、概要设计、详细设计、编码直到最后要对自己开
软制品
张
(软体)
海
藩
软件是计算机系统中与硬件相互依存的另一部分。 它包括程序、数据及其相关文档的完整集合。
2020/8/1
软
件 工
2、软件特点
程
导
. 软件是一种逻辑实体,而不是具体的物理实体
. 软件的生产与硬件不同
. 在软件的运行和使用期间,没有硬件那样的机械
张
磨损,老化问题
海
藩
失
磨合
修改点 失
实际曲线
张 海 藩
具和软件库,软件开发人员训练有素,都强 烈渴望去编写很酷的软件,可以在几天的时 间里编写出一个相当复杂的软件。但为什么 有一些软件能够得到用户的喜欢,而另一些
则不能?为什么有些软件能够在市场上成功
,而有些则受到冷落?由此可见,开发软件
并不一定难,难就难在如何开发有用的软件。
微软凌小宁博士
2020/8/1
支持管理: 标准检验程序 库管理程序
2020/8/1
软
件 工
2、按软件的规模进行划分
程 导
按开发软件所需的 人力、时间以及完成的
源代码行数。
张 海
类别
参加人数
研制期限 产品规模(源代码行数)
藩
微型
1
1-4周
约500行
软件工程导论第五版全套课件
第1章软件工程学概述1.1软件危机1.1.1软件危机的介绍1.1.2产生软件危机的原因图1.1引入同一变动付出的代价随时间变化的趋势1.1.3消除软件危机的途径1.2软件工程1.2.1软件工程的介绍1. 软件工程关注于大型程序的构造2. 软件工程的中心课题是控制复杂性3. 软件经常变化4. 开发软件的效率非常重要5. 和谐地合作是开发软件的关键6. 软件必须有效地支持它的用户7. 在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品2软件工程导论(第五版) 1.2.2软件工程的基本原理1. 用分阶段的生命周期计划严格管理2. 坚持进行阶段评审3. 实行严格的产品控制4. 采用现代程序设计技术5. 结果应能清楚地审查6. 开发小组的人员应该少而精7. 承认不断改进软件工程实践的必要性1.2.3软件工程方法学1. 传统方法学2. 面向对象方法学1.3软件生命周期1. 问题定义2. 可行性研究3. 需求分析4. 总体设计5. 详细设计6. 编码和单元测试7. 综合测试8. 软件维护软件工程导论(第五版) 3 1.4软件过程1.4.1瀑布模型图1.2传统的瀑布模型1. 阶段间具有顺序性和依赖性2. 推迟实现的观点3. 质量保证的观点4软件工程导论(第五版)图1.3实际的瀑布模型1.4.2快速原型模型图1.4快速原型模型软件工程导论(第五版) 5 1.4.3增量模型图1.5增量模型图1.6风险更大的增量模型6软件工程导论(第五版) 1.4.4螺旋模型图1.7简化的螺旋模型软件工程导论(第五版) 7图1.8完整的螺旋模型8软件工程导论(第五版) 1.4.5喷泉模型图1.9喷泉模型1.4.6 Rational统一过程1. 最佳实践2. RUP软件开发生命周期软件工程导论(第五版) 9图1.10 RUP软件开发生命周期1.4.7敏捷过程与极限编程1. 敏捷过程2. 极限编程图1.11 XP项目的整体开发过程10软件工程导论(第五版)图1.12 XP迭代开发过程1.4.8微软过程1. 微软过程准则2. 微软软件生命周期图1.13微软软件生命周期阶段划分和主要里程碑3. 微软过程模型图1.14微软过程的生命周期模型1.5小结习题11. 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?2. 假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及早发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清除它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?3. 什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机?4. 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。
软件工程导论课件之第11章面向对象设计(第五版)(张海藩编著).pptx
3. 典型的可重用软件成分 项目计划 成本估计 体系结构 需求模型和规格说明 设计 源代码 用户文档和技术文档 用户界面 数据 测试用例
11.3.2 类构件
面向对象技术中的“类”,是比较理想的可重 用软构件,称之为类构件。
1. 可重用软构件应具备的特点
模块独立性强 具有高度可塑性 接口清晰、简明、可靠
件开发规范的重用)。 软件成分的重用。
2. 软件成分的重用级别
代码重用:通常把它理解为调用库中的模块。 代码重用的几种形式:
源代码剪贴
源代码包含
继承
设计结果重用:重用某个软件系统的设计模型 (即求解域模型)。这个级别的重用有助于把一 个应用系统移植到完全不同的软硬件平台上。
分析结果重用:重用某个系统的分析模型。这 种重用特别适用于用户需求未改变,但系统体 系结构发生了根本变化的场合。
在一个中等规模(大约包含100个类)的系统中, 类等级层次数应保持为7±2。
3. 设计简单的类 应该尽量设计小而简单的类,以便于开发和管
理。
为使类保持简单,应该注意以下几点:
避免包含过多的属性。 有明确的定义。 尽量简化对象之间的合作关系。 不要提供太多服务。 在开发大型软件系统时,设计出大量较小的类,需
多态重用
利用多态性不仅可以使对象的对外接口更加一般化, 从而降低了消息连接的复杂程度,而且还提供了一 种简便可靠的软构件组合机制。
11.3.3 软件重用的效益
1. 质量 随着每一次重用,都会有一些错误被发现并被清除,
构件的质量也会随之改善。
2. 生产率 当把可重用的软件成分应用于软件开发的全过程时,
第11章 面向对象设计
11.1 面向对象设计的准则 11.2 启发规则 11.3 软件重用 11.4 系统分解 11.5 设计问题域子系统 11.6 设计人机交互子系统 11.7 设计任务管理子系统 11.8 设计数据管理子系统 11.9Байду номын сангаас设计类中的服务 11.10 设计关联 11.11 设计优化
软件工程之第2章-可行性研究(第五版)(张海潘编著)课件
2.1 可行性研究的任务 2.2 可行性研究过程 2.3 系统流程图 2.4 数据流图 2.5 数据字典 2.6 成本/效益分析
软件工程之第2章-可行性研究(第五版)(张海潘编著)
软件生命周期
三个时期: 八个阶段:
软件定义
问题定义 可行性研究 需求分析
软件开发
概要设计 详细设计
系统设计
编码和单元测试 综合测试
系统实现
软件维护 运行维护
软件工程之第2章-可行性研究(第五版)(张海潘编著)
问题的定义与可性行研 究
开始
有用的软件
问题定义
Who 为谁设计,用户是谁?
可性行研究
What 要解决哪些问题?
3W
可行否?
Y
项目实施计划
Why
N
终止项目的建议
为什么要解决这些问题
结束
软件工程之第2章-可行性研究(第五版)(张海潘编著)
软件工程之第2章-可行性研究(第五版)(张海潘编著)
5. 导出和评价供选择的解法 • 首先从技术角度出发排除不可行方案; • 其次考虑操作可行性,去掉用户不能接受的方案; • 接下来考虑经济可行性,估计余下的每个可能的
系统的开发成本和运行费用,进行成本/效益分析; • 最后为每个在各方面都可行的系统制定实现进度
项目实施计划 1. 系统概述
包括项目目标,主要功能,系统特点,以及关于开发 工作的安排 2. 系统资源
包括开发和运行该系统所需要的各种资源 如硬件、软件、人员和组织机构等 3. 费用预算:分阶段的人员费用、机时费用及其他费用 4. 进度安排:各阶段起始时间、完成文档及验证方式 5. 要交付的产品清单
表。
软件工程之第2章-可行性研究(第五版)(张海潘编著)
《软件工程导论》张海潘_第五版_清华_课后答案PPT课件
护士 护士
社会、政策允许的可行性
2-2 为方便储户,某银行拟开发计算机储蓄系统。储户填写的存款单或取款单由业务员键入系统,如果是存款,系
统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并印出存款单给储户;如果是取款,系统计算利息
an.c 利息
2.3
打印利息
值
d清a单 ai
w. 某航空公司拟开发一个机票预定系统。旅行社把预订机票的旅客信息(姓名、性别…等)输入进该系统,系统 ww 为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统核对无误即印 网 出机票给旅客。
源
旅客
取票通知 账单/票款
网 检验信 源息
检验信 息过程
重试信息
资
SC 图
件 用户执行模块 课
案
答 读用户命令
命令处理
题
习
案系统设置
现用/非现用
密码处理
答 控制器
系统
控制器
爱
读系统 数据
建立配 置文件
读 密码
用文件 比较密码
密码输出 控制器
机票预订系统(参见习题 2 第 3 题)
显示信息 与状态
产生 无效信息
6
更新日志
日志
日志
7 产生病情 要求
报告
课件 事样务
数据 数据
案
D1 患者日志
答
6.数据定义 1、顺序 + 2、选择〔 | 〕3、重复
题 – 定货系统 P39 习 – 习题 2 第 5 题 P44 案 2-1 应该从哪些方面研究目标系统的可行性?
(完整版)《软件工程导论》第五版张海藩编著总结
总结重点:❖∙Unit1❖∙软件危机包含两方面的问题:一是如何开发软件,怎样满足人们对软件日益增长的需求?二是如何维护软件,使它们持久地满足人们的要求。
❖∙软件工程学定义:把软件当作一种工业产品,采用工程学的原理来管理和组织软件的开发和维护,称为软件工程。
❖∙软件是指程序、数据和文档三者共同构成的配置。
❖∙包含与数据处理系统操作有关的程序、规程、规则以及相关文档的智力创作称为软件。
文档是描述程序开发过程的,是智力创作的真实记录,是创作活动的历史档案和结晶。
❖∙软件的描述性定义:软件由计算机程序,数据结构和文档组成。
❖∙软件质量定义为“与软件产品满足规定的和隐含的需求能力有关的特征和特性的全体”具体来说: 1)软件产品中能满足给定需求的性质和特性的总体;2)软件具有所期望的各种属性的组合程度。
❖∙将软件质量属性划分为六个特性(功能性、可靠性、易用性、效率、维护性和可移植性),这六个属性是面向用户的观点——面向管理的观点,且是定性描述的。
❖∙软件质量度量体系:内部度量可用于开发阶段的非执行软件产品,外部度量只能在生存周期过程中的测试阶段和任何运行阶段使用。
❖∙软件工程项目的基本目标:(1)低成本;(2)满足功能要求;(3)高性能;(4)易移植;(5)易维护。
❖∙软件工程方法学就是要从技术和管理上提供如何去设计和维护软件。
❖∙软件开发方法:面向数据流(约旦)方法、面向数据结构方法、面向对象方法。
❖∙结构程序设计是进行以模块功能和处理过程设计为主的详细设计的基本原则。
它的主要观点是采用自顶向下、逐步求精的程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环三种基本控制结构构造。
❖∙用来辅助软件开发、运行、维护、管理、支持等过程中活动的软件称为软件工具(CASE)。
❖∙软件生存周期定义:软件产品从形成概念开始,经过开发、使用和维护,直到最后不再使用的整个过程。
各阶段的任务彼此间尽可能的相对独立,同一阶段内各项任务的性质尽可能的相同。
软件工程导论张海藩PPT课件
A[I]=A[I]+A[T]; A[T]=A[I]-A[T]; A[I]=A[I]-A[T];
WORK=A[T]; A[T]=A[I]; A[I]=WORK;
第22页/共125页
例7:简单直接
for (i=1; i<=n; i++) for (j=1; j<=n; j++) V[i][j]=(i/j)*(j/i)
与机器码一样长
特殊情
C、C++等
数据库查询语言 4GL 程序生成器
图形语言
利用类英语的语句和命令 一条语句相当于5-10条机器码
要规定详细的算法过程
与自然语言接近 一条语句相当于30-50条机器码
非过程化问题定义 运行开销大,效率低
高级
第4页/共125页
选择语言的理想标准: • 为了使程序容易测试和维护以减少软件的总成本,所选用的高级语言应该有理想
的模块化机制,以及可读性好的控制结构和数据结构; • 为了便于调试和提高软件可靠性,语言特点应该使编译程序能够尽可能多地发现
程序中的错误; • 为了降低软件开发和维护的成本,选用的高级语言应该有良好的独立编译机制。
第5页/共125页
主要的实用标准: • 系统用户的要求 • 可以使用的编译程序 • 可以得到的软件工具 • 工程规模 • 程序员的知识 • 软件可移植性要求 • 软件的应用领域
例5:一行一条语句
FOR I:=1 TO N-1 DO BEGIN T:=I; FOR J:=I+1 TO N DO IF A[J]<A[T] THEN T:=J; IF T<>I THEN BEGIN WORK:=A[T]; A[T]:=A[I]; A[I]:=WORK; END END;
软件工程导论第3章需求分析(第五版)(张海藩编著)a.pptx
软件需求分析的基本任务是准确地回答“系统必须 做什么?”
3.1 需求分析的任务
3.1.1 确定对系统的综合要求
1.功能需求
这方面的需求指定系统必须提供的服务。通过需求分析应该划 分出系统必须完成的所有功能。
2.性能需求
性能需求指定系统必须满足的定时约束或容量约束,通常包括 速度(响应时间)、信息量速率、主存容量、磁盘容量、等方面 的需求。
软件不应该有的功能及性能。
9. 将来可能提出的要求
3.1.2 分析系统的数据要求
这是软件需求分析的一个重要任务。通常采用建立数据流 图、数据字典、数据模型的方法。
常用的图形工具有层次方框图HIPO和Warnier图,在本章 第3.7节中将简要地介绍这两种图形工具。
软件系统经常使用各种长期保存的信息,为减少数据冗余, 避免出现插入异常或删除异常,简化修改数据的过程,通 常需要把数据结构规范化(见3.5节)。
原则 3:考虑用户、分析员和实现者的交流
---对形式化和自然语言之间作出恰当的选择 --- 明确的理解最重要,不存在十全十美的软件规 格说明书
5. 接口需求
接口需求描述应用系统与它的环境通信的格式。常见 的接口需求有:用户接口需求;硬件接口需求;软件接 口需求;通信接口需求。
6. 约束
常见的约束有:精度;工具和语言约束;设计约束; 应该使用的标准;应该使用的硬件平台。
7、用户界面需求,系统环境
软件界面,多少台机器、机型等接口。
8、逆向需求
3.3.1 根据需求分析结果建立模型 模型:用于描述客观事物的图形。 根据需求分析过程中获取的用户需求,建立三种模型: 数据模型:E-R图,层次图,Warnier图 功能模型:数据流图 行为模型:状态转换图
软件工程导论第一章.ppt
- 软件工程导论(第5版)张海藩 清华大学出版社 - 软件工程(第二版)齐治昌、谭庆平、宁洪 编著,高等教育出版社 - Shari Lawrence P fleeger 软件工程——理论与实践(第2版)(高教出版社 影印版),2003
考核方式:闭卷考试 70% 平时成绩(考勤+作业) 30%
(2) 需求分析
本阶段要回答的关键问题是“目标系统应当做什么?”
(3) 软件设计
设计是软件工程的技术核心。本阶段要回答的关键问题是“如何实现目 标系统?”
1.3 软件生命周期(6)
各个阶段所要完成的基本任务 (4) 程序编码和单元测试
1963年美国飞往火星的火箭爆炸,造成1000万美元的损失 。原因是FORTRAN程序:
DO 5 I=1,3 误写为:DO 5 I=1.3
1967年苏联“联盟一号”载人宇宙飞船在返航时, 由于软件忽略一个小数点,在进入大气层时因打不开降 落伞而烧毁。
1.1 软件与软件危机(5)
产生软件危机的原因
- 在软件开发和维护的过程中存在这么多严重问题,一方面与 软件本身的特点有关,另一方面也和软件开发与维护的方法 不正确有关。 ➢客观:软件本身特点 - 逻辑部件 - 规模庞大 ➢主观:不正确的开发方法 - 忽视需求分析 - 错误认为:软件开发=程序编写 - 轻视软件维护 - …….
1.2 软件工程及其基本原理(2)
软件工程的目标
- 软件工程的目标是运用先进的软件开发的周期、较低的成本
生产出高质量 的软件产品,并最终实现软件的工业化生产。
- 软件的质量特性:功能性、可靠性、可使用性、效率、可维 护性和可移植性。
1.2 软件工程及其基本原理(3)
软件开发时期
软件工程导论课件全张海藩
利用大数据技术分析和监控软件系统的运行状态,发现性能瓶颈并 进行优化,提高软件系统的稳定性和效率。
软件故障预测与预防
通过分析历史故障数据和系统日志,预测可能出现的故障并提前采取 预防措施,降低软件维护成本。
云计算在软件工程中的应用
云计算平台开发
基于云计算平台开发软件应用,实现资源的动态分配、弹性扩展和按需付费,降低软件开发和运 维成本。
和输出。
在瀑布模型中,软件开发过程被划分为需求分析、设 计、编码、测试和维护等阶段,每个阶段都必须在前
一个阶段完成后才能开始。
瀑布模型的优点是易于理解和管理,适用于需求稳定、 变更较少的情况。但是,它缺乏灵活性,难以应对需 求变更和快速变化的市场环境。
螺旋模型
螺旋模型是一种迭代式的软件开发过程 模型,它将开发过程划分为多个循环, 每个循环包括需求分析、设计、编码和 测试等阶段。
在敏捷开发模型中,开发团队会按照短周期(通常是一到四周)进行迭代开发,每个周期都会交付可用 的软件产品。
敏捷开发模型的优点是能够快速响应变化、降低开发风险、提高软件质量。但是,它需要更多的沟通和 协作能力,同时也需要更加灵活的管理方式。
其他过程模型
除了上述三种常见的软件开发过程模 型外,还有其他一些过程模型,如原 型模型、增量模型等。
缺陷分析
对缺陷进行分析,找出根本原因,避免类似缺陷再次出现。
质量评估指标
缺陷密度
衡量软件质量的重要指标,表示每千行代码 中的缺陷数。
回归测试通过率
评估软件修复缺陷后,原有功能是否正常的 重要指标。
测试覆盖率
评估测试用例对软件产品功能的覆盖程度。
用户满意度
反映用户对软件产品质量和服务的满意程度。
软件工程第1章课件
软件工程的目标与原则
软件工程需要解决的问题: 软件成本、软件可靠性、软件维护、软件生产率和 软件复用。
软件工程需要达到的基本目标: 付出较低的开发成本 达到要求的软件功能 取得较好的软件性能 开发的软件易于移植 需要较低的维护费用 能按时完成开发、及时交付使用
软件工程原则
在软件开发过程中必须遵循的软件工程原则有:
把软件生命周期划分成若干个阶段,每个阶段的任 务相对独立,而且比较简单,便于不同人员分工协 作,从而降低了整个软件开发工程的困难程度; 在软件生命周期的每个阶段都采用科学的管理技术 和良好的技术方法,这就使软件开发工程的全过程 以一种有条不紊的方式进行,保证了软件的质量, 特别是提高了软件的可维护性。
1983年IEEE为软件下的定义是:计算机程序、方 法、规则、相关的文档资料以及在计算机上运行程 序时所必需的数据。
必须充分认识到软件开发不是某种个体劳动的神秘 技巧,而应该是一种组织良好、管理严密、各类人 员协同配合、共同完成的工程项目。
应该推广使用在实践中总结出来的开发软件的成功 的技术和方法。
所谓管理就是通过计划、组织和控制等一系列活动, 合理地配置和使用各种资源,以达到既定目标的过 程。
通常把在软件生命周期全过程中使用的一整套技术 方法的集合称为方法学(methodology),也称为范 型(paradigm)。在软件工程领域中,这两个术语的 含义基本相同。
软件工程方法学包含3个要素: 方法、工具和过程 其中,方法是完成软件开发的各项任务的技术方法, 回答“怎样做”的问题;工具是为运用方法而提供 的自动的或半自动的软件工程支撑环境;过程是为 了获得高质量的软件所需要完成的一系列任务的框 架,它规定了完成各项任务的工作步骤。
(1) 把对象(object)作为融合了数据及在数据上的操 作行为的统一的软件构件。
软件工程_张海蕃_第五版PPT
Software Engineering
课程介绍及要求
用工程化的方法来开发软件
教学目标
为什么要学习这门课程
有助于正确理解和认识“软件”的概念及其特点 理解软件开发面临的问题和挑战
课程介绍和要求
掌握软件工程的原则、方法和思想来系统地开发软 件,尤其是复杂、庞大的软件的开发
了解和接触软件开发所需的各种技术手段
教学与考核
必修考查课,共48学时,其中理论38学 时,实验10学时 平时(作业、考勤)20%,实验20%, 试卷60%
典型案例1 例: 美国IBM公司在1963年至1966年开发的
IBM360机的操作系统。这一项目花了5000人一
年的工作量,最多时有1000人投入开发工作,
写出了近100万行源程序。......据统计,这个
2、解决危机的管理途径
20世纪80年代末,美国DoD和工业界开始认识到
管理的重要性
美国DoD的一项研究表明,70%的项目由于管理不善导 致难以控制进步、成本和质量; 进一步的研究发现:管理是影响软件项目成功开发的全 局性因素,而技术只影响局部 如果软件开发组织不能对软件项目进行有效管理,就不 能充分发挥软件开发方法和工具的潜力,也就不能高效 率地开发出高质量的软件产品
96年Ariane火箭发射失败,浮点数 转换时发生错误
24
1.1 软件工程产生的背景 b、软件的特征
成本高(1/2)
成本高(2/2)
产品 Lotus1-2-3 Version 3.0 Space Shuttle 1989 Lincoln Continental City Bank Teller machine IBM Chechout Scanner 代码行 400k 25.6M 83.5M 780k 90k 工 作 量 成本(百万) (人年) 263 22 35 150 58 12 1.8 13.2 3
软件工程之第3章-需求分析(第五版)(张海潘编著)精品PPT课件
3.2 与用户沟通获取需求的方法
访谈 面向数据流自顶向下求精 简易的应用规格说明技术 快速建立软件原型
需求的获取
需求获取是开发人员与客户或用户一起对应用领 域进行调查研究,收集系统需求的过程
层次的方法展示细节。
3.1 需求分析的任务
确定对系统的综合要求
---功能需求、性能需求、可靠性和可用性需求、出错处理需求、 接口需求、约束、 逆向需求、将来可能提出的要求。
分析系统的数据要求 导出系统的逻辑模型 修正系统开发计划
3.1.1 确定对系统的综合要求
1. 功能需求 2. 性能需求 3. 可靠性和可用性需求 4. 出错处理需求 5. 接口需求 6. 约束 7. 逆向需求 8. 将来可能提出的要求
确定系统必须完成哪些工作,也就是对目标系 统提出完整、准确、清晰、具体的要求。
系统分析员应该写出软件需求规格说明书,以 书面形式准确地描述软件需求。
需求:正在构建的系统必须符合的事务。
需求管理:是一种获取、组织并记录系统需求 的系统化方案以及一个使客户与项目团队不断 变更的系统需求达成并保持一致的过程。
第四代技术特点:
简单易学,用户界面良好,面向问题、非过程化程度 高,用户只需告知系统做什么,而无需说明怎么做。 用4GL编程使用的代码量较少,并可成数量级地提高 软件生产率。
程序设计语言划代:
1GL是汇编语言;
2GL是高级程序设计语言,如FORTRAN,ALGOL, BASIC,LISP等;
术性的转换
功能范围更广,
现代
全过程的,注 重整个产品过 程的全部
软件工程导论之第3章-需求分析(第五版)(张海藩编著)-b-百度文库PPT课件
55
单击此处编辑2.母需版求标专题题样式讨论会
• 单击此处编辑母版副标题样式
56
单击此处编辑母版3.标问题卷样调式查
• 问卷调查
• 单-击可此用于处确编认假辑设母和收版集副统计标倾题向样数据式
- 问卷需要快速回答,允许匿名方式
• 存在问题
- 相关的问题不能事先决定 -问题背后的假设对答案造成偏颇,如这符合你的期望吗? -- 难以探索一些新领域 - 难以继续用户的模糊响应
• 单需击要此系处统编做辑什么母。版副标题样式
• 用例建模的步骤
- 确定系统的参与者 确定场景 - 确定系统用例 - 确定用例之间的关系 编写用例描述文档
60
青岛科技大学信息学院
3.3 分析建模与规格说明
3.3.1分析建模
-需求分析的步骤
1、问题识别
双方确定对问题的综合需求。基于项目有 关的软件的功能、性能、环境、用户界面、可 靠性、安全性、保密性、可移植性、可维护性、 等方面的需求。
3.6 状态转换图 3.7 其他图形工具 3.8 验证软件需求 3.9 小结 习题
青岛科技大学信息学院
青岛科技大学信息学院
3.2 与用户沟通获取需求的方法
需求获取的关键在于通过与用户的沟通和交流,收集 和理解用户的各项要求。
3.2.(1) 访谈--访问用户和用户领域的专家 (2) 需求讨论会 (3) 问卷调查 (4) 现场考察
3.3.2 软件需求规格说明
青岛科技大学信息学院
3.3.2 软件需求规格说明
软件需求规格说明书,是需求分析阶段得 出的最主要的文档。
补充:需求分析阶段要编写文档:
1)编写“需求规格说明书” 2)编写初步用户手册 3)编写“确认测试计划”(为系统完成后确认验收的依 据). 4) 修改完善软件开发计划
软件工程课件之第1章_软件工程学概述(第五版)(张海潘编著)
图1.1 引入同一变动付出的代价随时间变化的趋势
轻视软件维护。维护是极端艰巨复杂的工作,需要花 费很大代价。软件维护的费用占软件总费用的 55%~70%。软件工程学的一个重要目标就是提高软 件的可维护性,减少软件维护的代价。
1.1.3 消除软件危机的途径
对计算机软件有正确的认识。 认识到软件开发是一种组织良好、管理严密、 各类人员协同配合、共同完成的工程项目。 应该推广使用在实践中总结出来的开发软件 的成功技术和方法,并继续研究探索。 应该开发和使用更好的软件工具。 总之,为了解决软件危机,既要有技术措施( 方法和工具),又要有必要的组织管理措施。
三个时期: 八个阶段: 问题定义 可行性研究 需求分析
软件定义
软件生命周期
软件开发
概要设计 系统设计 详细设计 编码和单元测试 系统实现 综合测试
运行维护
软件维护
1. 问题定义 任务:问题是什么
通过对客户的访问调查,系统分析员扼要地写出关 于问题性质、工程目标和工程规模的书面报告。 经过讨论和必要的修改之后这份报告应该得到客户 的确认。
软件工程方法学3要素:
方法:是完成软件开发的各项任务的技术方法,回答 “怎样做”的问题; 工具:是为运用方法而提供的自动的或半自动的软件 工程支撑环境;如,CASE(Computer-Aided Software Engineering )工具 过程:需要完成的一系列任务的框架,它规定了完成 各项任务的工作步骤。
1950 年
1960 年
1970 年
1980 年
1990 年
2000 年
计算机软件发展的4个阶段
1.1.1 软件危机的介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2、解决危机的管理途径
20世纪80年代末,美国DoD和工业界开始认识到
管理的重要性
美国DoD的一项研究表明,70%的项目由于管理不善导 致难以控制进步、成本和质量; 进一步的研究发现:管理是影响软件项目成功开发的全 局性因素,而技术只影响局部 如果软件开发组织不能对软件项目进行有效管理,就不 能充分发挥软件开发方法和工具的潜力,也就不能高效 率地开发出高质量的软件产品
-与软件本身的特点有关
-软件≠程序 -急于求成=拔苗助长
-各自为阵无方法/学
C、软件工程(学)因危机而产生
开发一个具有一定规模和复杂性的软件 系统与编写一个简单的程序不一样
正如建设狗窝和高楼大厦
大型、复杂软件系统的开发是一项工程, 必须按照工程化的方法组织软件的生产 和管理,必须经过分析、设计、实现、 测试、维护等一系列软件过程和活动
理解、掌握和运用
理解
什么是软件工程 为什么需要软件工程(产生背景) 软件工程需要解决那些问题 软件工程涉及那些方面内容
掌握
软件工程
概念
需求分析 软件设计 程序设计 软件维护
先导要求
程序设计语言 最好有一定的软件开发经验
系统分析员的地位
用户
分析员
程序员
软件工程技术的明显特点
u 强调规范化 u 强调文档化
第1章 软件工程概述
软件工程产生的背景(软 件危机) 软件工程定义
软件工程方法学 软件过程模型
小结
1.1 软件工程产生的背景 1)软 件
a. 软件的定义 软件( Software)是计算机系统中与硬件相互依存的 另一部分,它是包括程序(Program) ,数据(Data)及 其相关文档( Document)的完整集合。 Software = Program + Data + Document
软件工程
Software Engineering
课程介绍及要求
用工程化的方法来开发软件
教学目标
为什么要学习这门课程
有助于正确理解和认识“软件”的概念及其特点 理解软件开发面临的问题和挑战
课程介绍和要求
掌握软件工程的原则、方法和思想来系统地开发软 件,尤其是复杂、庞大的软件的开发
了解和接触软件开发所需的各种技术手段
成功:26% 失败:28% 受到挑战:46%
课程介绍和要求
近几年来的统计数据
1.1 软件工程产生的背景 b、软件的特征
维护困难
维护形式多样化
改正性:修改故障 完善性:增加功能 适应性:移植
维护成本越来越高
55%到70%
维护带来的问题
1.1 软件工程产生的背景
c. 软件的发展
d、软件工程(学):克服软件危机的努力 (1)从管理的角度 软件开发过程的研究、文档的 标准化以及人们 的交流方式等 (2)软件开发方法的研究 结构化软件开发方法, 面向对象的 开发
1、解决危机的技术途径
提出有效的方法和工具支持软件开发
1968年提出软件工程概念和思想 20世纪70年代的结构化软件开发方法 20世纪80年代的面向对象的软件开发方法 新的技术: 软件重用、快速原型、需求工程 典型技术: COM, Java, C++, J2EE, .Net, …. 支撑工具和环境:Jbuilder, Visual Studio, WebLogic, …
典型错误
1 人员
挫伤人员的积极性 人员素质低 对有问题的员工失控 个人英雄主义 项目后期加入人员 办公环境拥挤嘈杂 开发人员与客户之间产生摩擦 不现实的预期 缺乏有效的项目支持 缺乏各种角色的齐心协力 缺乏用户介入 政治高于物质 充满想象
典型错误
1.2 软件工程定义
总之: 软件工程是应用计算机科学、数学及 管理科学等原理开发软件的工程。它借鉴 传统工程的原则、方法,以提高质量,降 低成本为目的。
软件工程的特性
1. 软件工程关注于大型程序的构造 2. 软件工程的中心课题是控制复杂性 3. 软件经常变化 4. 开发软件的效率非常重要 5. 和谐地合作是开发软件的关键 6. 软件必须有效地支持它的用户 7. 在软件工程领域中是由具有一种文化背景的 人替具有另一种文化背景的人
1.2 软件工程定义(1)
The establishment and use of sound engineering principles (methods) in order to obtain economically software that is reliable and works on real machines. (1968- Fritz Bauer)
由于软件质量问题导致失败的软件项目非常多
a、软件危机的表现(3/3)
进度难以控制
项目延期比比皆是 由于进度问题而取消的软件项目较常见 只有一小部分的项目能够按期完成
维护非常困难
软件维护的多样性 软件维护的复杂性 软件维护的副作用
b、产生软件危机的原因
(难于维护, 逻辑复杂) -与软件开发与维护的方法不正确有关:
2 过程
过于乐观的计划 缺乏足够的风险管理 承包人导致的失败 缺乏计划 在压力下放弃计划 在模糊的项目前期浪费时间 前期活动不合要求 设计低劣 缺少质量保证措施 缺少管理控制 太早或过于频繁的集成 项目估算是遗漏了必要的任务 追赶计划 鲁莽编码
典型错误
“软件工程”课程 与其它软件专业课的区别
(1) 立足于系统的整体。
(2) 讲授系统分析、系统设计、 测试及维护的理论和方法。 (3) 构筑一个软件系统,实践 软件开发全过程。
“软件工程”课程教学与实践的目标
u 转变对软件的认识: 上升 程序 系统
u 转变思维定式: 上升 程序员 系统工程师 (系统分析员) 工程化训练
早期 •面向批处理 •有限的分布 •自定义软件 第二阶段 •多用户 •实时 •数据库 第三阶段 •分布式系统 •嵌入“智能” •低成本硬件 第四阶段
•强大的桌面系统
•面向对象技术 •专家系统
•软件产品
•消费者的影响
•人工神经网络
•并行计算 •网路计算机
1968年10月,北大西洋公约组织(NATO)的科学家在德 国召开的学术会议上正式提出了软件危机问题。
96年Ariane火箭发射失败,浮点数 转换时发生错误
24
1.1 软件工程产生的背景 b、软件的特征
成本高(1/2)
成本高(2/2)
产品 Lotus1-2-3 Version 3.0 Space Shuttle 1989 Lincoln Continental City Bank Teller machine IBM Chechout Scanner 代码行 400k 25.6M 83.5M 780k 90k 工 作 量 成本(百万) (人年) 263 22 35 150 58 12 1.8 13.2 3
程序是按事先设计的功能和性能要求执行的指令序列 数据是使程序能正常操纵信息的数据结构 文档是与程序开发,维护和使用有关的图文材料
1.1 软件工程产生的背景 b、软件的特征
逻辑复杂
非常复杂
远远高于硬件的逻辑复杂 度
开发复杂
成本难以估算 进度难以控制 人员素质要求 质量得不到保证
教学与考核
必修考查课,共48学时,其中理论38学 时,实验10学时 平时(作业、考勤)20%,实验20%, 试卷60%
典型案例1 例: 美国IBM公司在1963年至1966年开发的
IBM360机的操作系统。这一项目花了5000人一
年的工作量,最多时有1000人投入开发工作,
写出了近100万行源程序。......据统计,这个
3 产品
需求的镀金 功能蔓延 开发人员镀金 又推又拉的交易 研究导向的开发
典型错误
4 技术
使用不成熟的技术 使用不适合的技术 不恰当的使用
处在十字路口的中国软件产业
主权大国必须建立基于自主技术的、 完整的软件产业体系。 软件本国提供率:中国1/3左右,美国97% “印度模式”还是“中国模式” 软件人才结构不合理,缺乏中高级软 件人才,软件人员缺乏软件工程化的概 念。
1950
1960
1970
1980
1990
2000
1.1 软件工程产生的背景
2) 、软件危机 a、软件危机的表现(1/3)
成本高
IBM 360 OS, 5000多人年, 耗时4年(1963-1966),花费 2亿多美元 美国空军:1955年软件占总 费用(计算机系统)的18%,70 年60%,85年达到85% 美国全球军事指挥控制系统 ,硬件1亿美元,软件高达 7.2亿美元
软件工程就是建立和使用一套合理 的工程原理,从而经济地获得可靠的、 可以在实际机器上高效运行的软件。
1.2 软件工程定义(2)
Software engineering. (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1). (IEEE(The Institute for Electrical and Electronic engineers) Std 610-1990.) 软件工程是:(1)把系统的、规范的、 可度量的途径应用于软件开发、运行和维护 过程,也就是把工程应用于软件;(2)研究 (1)中提到的途径。