清华大学郑人杰 殷仁昆教授 《软件工程讲义》03.

合集下载

清华大学殷仁昆教授讲授《软件工程》讲义

清华大学殷仁昆教授讲授《软件工程》讲义
e) 模块保护 将模块内出现异常情况的影响 范围限制在模块内部;
5) 设计应遵循信息隐蔽的原则。
✓ Patnas主张在开发时,将每个程序的成分隐 藏在模块内,定义每一个模块时尽可能少地 显露其内部的处理。
2020/5/4
软件工程
14
✓ 每个模块的实现细节对于其它模块是隐蔽的, 将来修改软件时偶然引入错误所造成的影响 就可以局限在一个或几个模块内部,不致波 及到软件的其它部分。
内聚性:内聚是一个模块内部各个元素彼此结 合的紧密程度的度量。
② 设计应当模块化。
2020/5/4
软件工程
8
③ 设计应当包含数据、体系结构、接口和构件 (模块)的清晰的视图。
④ 设计应当根据将要实现的对象和数据模式导出 合适的数据结构。
⑤ 设计应当建立具有独立功能特征的构件。 ⑥ 设计应当建立能够降低模块与外部环境之间复
杂连接的接口。 ⑦ 设计模型应当通过使用软件需求信息所驱动的
⑤ 设计结果应能适应未来可能的变更;
⑥ 设计不是编码,编码也不是设计。设计模型 的抽象级别比源代码高。在编码级别上唯一 的设计决策是补充一些实现细节。
2020/5/4
软件工程
10
⑦ 设计应具有容错性和异常处理能力。对于异 常数据、事件、操作条件等能够平滑处理。
⑧ 在建立设计方案时就应能评估设计质量,而 不是在系统编码之后。
求,必须满足用户希望的所有隐式需求。
2020/5/4
软件工程
7
① 对于开发者和未来的维护者而言,设计必须 是可读的、可理解的,使得将来易于编程、 易于测试、易于维护。
② 设计应该给出软件的全貌,包括从实现角度 可看到的数据、功能、行为。
衡量设计模型的技术原则 ① 设计模型应该是一个分层结构。该结构: ✓ 使用可识别的设计模式搭建系统结构。 ✓ 用显示良好设计特征的构件构成。 ✓ 可以用演化的方式实现。

(完整word版)殷人昆《实用软件工程》复习资料

(完整word版)殷人昆《实用软件工程》复习资料

1.软件工程目标:正确性、可用性、适合销售活动:需求、设计、实现、V&V(验证与确认)、支持原则:开发泛型、设计方法、支持工具、工程管理WW软件工程是开发,运行,维护和修复软件的系统方法,将系统化的,规范的,可度量的方法应用与软件的开发,运行维护的过程。

即将工程化应用于软件中。

2.软件过程中的基本活动(pdca)1.软件规格说明plan2.软件开发do3.软件确认check4.软件演进action3.瀑布模型:需求-》系统设计-》实现单元测试-》集成与系统测试-》运营维护。

他的显著特点是顺序性和依赖性。

4.演化模型:软件通过不断的演化才能完成和完善,其显著特点是迭代。

适合于业务和需求不断变更的开发过程,交付部分功能给客户,确认需求,逐步完善。

5.螺旋模型:将瀑布模型和演化模型结合起来,加入了风险分析。

6.增量模型:是将软件分解成一系列的增量的构件,在增量开发迭代中逐步加入,也叫极限程序设计。

7.软件工程原则:a)抽象自顶向下,逐层细化b)模块化的开发方法c)信息隐蔽和数据封装。

d)局部化e)一致性f)完备性g)可验证性8.软件工程基本原理:a)按软件生存期分阶段制定计划并认真实施b)坚持进行阶段评审c)坚持严格的产品控制d)使用现代程序设计技术e)明确责任f)用人少而精g)不断改进开发的过程9.识别用户要求,必须考虑的问题:a)功能和性能b)可靠性和质量c)总的系统目标d)成本与进度的把控e)制造需求f)市场竞争情况g)有效的技术h)将来可能的扩展10.可行性研究a)问题识别b)市场调查c)分析准备d)环境分析e)物理分析f)功能分析g)信息分析h)动态分析i)确立系统方案和成本估算j)模型评审k)成本可行性l)法律可行性11.面向对象设计面向对象=对象+分类+继承+消息通信,基本组成部分叫对象,计算是通过新对象的确立和对象之间的通信来执行。

相对于面向过程开发,核心:数据被封装在对象中,而不是全局变量中,数据流是通过消息传递,而不是面向过程解决办法。

软件工程实践者教材--概述

软件工程实践者教材--概述
o 软件涉及各行各业的知识,这对软件工程师提出了很高要求。 o 软件不仅是一种在市场上推销的工业产品,也是与文学艺术作
品相似的精神作品。与体力劳动相比,精神活动过程的特点是 “不可见性”,这大大增加了组织管理上的困难。
软件工程实践者教材--概述
社会对软件的要求
o 用户的需求更高、涉及的领域更广 o 软件运行环境更加庞大 o 软件更新换代更加频繁
n 实现预期的软件功能,达到较好的软件性能,满足用户 的需求。
n 增强软件过程可见性和可控性,保证软件的质量。 n 提高软件的可维护性,降低维护费用。 n 提高软件开发生产率,及时交付使用。 n 合理预算开发成本,付出较低的开发费用。
软件工程实践者教材--概述
1.3 软件工程发展简史
o 1968年在德国格密斯(Garmish)举行的 学术会议上,北大西洋公约组织(NATO) 正式提出了“软件工程”这一术语。软件工 程作为工程学科家族中的新成员,对软件产 业的形成和发展起了决定性作用,它指导人 们科学地开发软件,有效地管理软件项目, 对提高软件质量具有重要作用。
软件工程实践者教材--概述
•别墅的设计—设计图纸、施工图纸
软件工程实践者教材--概述
•设计和施工说明
软件工程实践者教材--概述
其他管理性文件
o 项目计划书 o 施工质量计划书 o 建设标准和规范 o 施工手册 o ……
软件工程实践者教材--概述
典型helloworld程序—太简单! 不要设计
o 90年代后期,软件工程的一个重要进展就是基于组件的开发方 法。为了提高软件生产力,尽可能地利用可复用组件来组装成 新的应用软件系统。到目前为止,组件技术的研究和发展形成 了新一代软件工程,即第三代软件工程,也有不少人称之为组 件工程。

清华大学郑人杰殷仁昆教授软件工程讲义03

清华大学郑人杰殷仁昆教授软件工程讲义03
b) 模块可组装性 可利用已有的设计构件组 装成新系统,不必一切从头开始。
软件工程
12
c) 模块可理解性 一个模块可不参考其他模 块而被理解;
d) 模块连续性 对软件需求的一些微小变更 只导致对某个模块的修改而整个系统不 用大动;
e) 模块保护 将模块内出现异常情况的影响 范围限制在模块内部;
5) 设计应遵循信息隐蔽的原则。
✓ Patnas主张在开发时,将每个程序的成分隐 藏在模块内,定义每一个模块时尽可能少地 显露其内部的处理。
软件工程
13
✓ 每个模块的实现细节对于其它模块是隐蔽的, 将来修改软件时偶然引入错误所造成的影响 就可以局限在一个或几个模块内部,不致波 及到软件的其它部分。
✓ 在可预见将来可能修改的场合,信息隐蔽可 以提高软件的可修改性、可测试性和可移植 性。
公共耦合(Common Coupling)
若一组模块都访问同一个公共数据环境,则它 们之间的耦合就称为公共耦合。公共的数据环 境可以是全局数据结构、共享的通信区、内存 的公共覆盖区等。
软件工程
21
公共耦合的复杂程度随耦合模块的个数增加而 显著增加。若只是两模块间有公共数据环境, 则公共耦合有两种情况。松散公共耦合和紧密 公共耦合。
软件工程
25
功能内聚 (Functional Cohesion)
一个模块中各个部分都是完成某一具体功能必 不可少的组成部分,或者说该模块中所有部分 都是为了完成一项具体功能而协同工作,紧密 联系,不可分割的。则称该模块为功能内聚模 块。
功能内聚模块的功能独立性最强。
软件工程
26
信息内聚 (Informational Cohesion)
这种模块完成多个功能,各个功能相互独立但 都在同一数据结构上操作,每一项功能有一个 唯一的入口点。这个模块将根据不同的要求, 确定该执行哪一个功能。

CH1软件工程课件

CH1软件工程课件
17
yet, Success Hasnt Come Easily
Successfully 53%
Challenged 16%
31% Canceled
软件危机
相关术语
✓ “两难境地(Crunch Mode)”:处于两难境地的项目面临着无
法达到最初目标的威胁(费用、进度表、功能性等等),而项目团 队在努力想要跨越该困境。
能够对一定数量的读者进行相应的信息存储与 管理,这其中包括:
8
读者信息的登记、删除及修改。 读者资料的统计与查询。
能够对需要的统计结果提供打印输出。 能够提供一定的安全机制,提供数据信息授权
访问,防止随意删改,同时提供信息备份的服 务。
9
鼓励项目
移动互联网项目 李开复:创新工作室
应提交的文档
5
软件工程
计划:工作内容
① Contractor Management ② Home Owner Management ③ Architectural Management ④ Interior Designer ⑤ Landscape Management ⑥ Schedule & Supplier Management Funding Management Land Office Management
“Software” = “Place a sequence of instructions together to get the computer to do something useful”.
User Computer
Late 1950’s:
Computer became cheaper and more common High level languages were invented easier

软件工程概论课后习题答案

软件工程概论课后习题答案

软件工程概论郑人杰等版第1章软件与软件工程的概念1.1 举出你所知道的应用软件的例子。

办公软件、游戏软件、财务软件、银行软件、人事管理软件、工资管理软件、学籍管理软件等。

1.2 认为“软件就是程序,软件开发就是编程序。

”这种观点是否正确?为什么?认为“软件就是程序,软件开发就是编程序。

”这种观点是错误的。

首先,软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合,程序只是软件的组成部分之一;其次,在软件开发中,编程只是软件开发过程的一个阶段。

1.3 如果将软件开发比作高楼大厦的建造,可以将软件的设计比作什么?可以将软件的设计比作建筑设计,软件设计的成果相当于建筑设计的设计图纸。

1.4 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

典型表现:(1)对软件开发成本和进度的估计常常很不准确。

(2)用户对“已完成的”软件系统不满意的现象经常发生。

(3)软件产品的质量往往靠不住。

(4)软件常常是不可维护的。

(5)软件通常没有适当的文档资料。

(6)软件成本在计算机系统总成本中所占的比例逐年上升。

(7)软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势。

产生软件危机的原因:除了软件本身的特点,其原因主要有以下几个方面:(1) 缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作计划很难制定。

(2) 软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误。

(3) 软件开发过程不规范。

如,没有真正了解用户的需求就开始编程序。

(4) 随着软件规模的增大,其复杂性往往会呈指数级升高。

需要很多人分工协作,不仅涉及技术问题,更重要的是必须有科学严格的管理。

(5) 缺少有效的软件评测手段,提交给用户的软件的质量不能完全保证。

1.5 什么是软件工程?软件工程是指导计算机软件开发和维护的工程学科。

清华大学郑人杰殷仁昆教软件工程讲义08

清华大学郑人杰殷仁昆教软件工程讲义08
25
1. 数据组员是否满足数据封装旳要求
检验数据组员是否满足数据封装旳要求,就是检验 其数据组员是否能被外界(数据组员所属旳类或子 类以外旳调用)直接调用。更直观旳说,当变化数 据组员旳构造时,看其是否影响了类旳对外接口, 是否会造成相应外界必须改动。
值得注意,有时强制旳类型转换会破坏数据旳封装 特征。例如: class Hiden { private: int a = 1;
12
c) 高层旳类旳属性和服务是否完全体现下层 旳共性。
d) 低层旳类是否基于其上层类旳属性和服务 并具有自己旳特殊性。
2) 对复合构造旳测试从如下方面入手: a) 整体类和局部类旳复合(聚合)关系是否符 合现实旳关系。 b) 整体类旳局部类是否在问题领域中有实际应 用。 c) 整体类中是否漏掉了在问题领域中有用旳局 部类。
件旳功能实现,造成软件开发后期大量可防止旳修 补工作;而某些冗余旳对象或构造会影响类旳选定、 程序旳整体构造或增长程序员不必要旳工作量。所 以,OOA测试旳要点在其完整性和冗余性。 根据Coad和Yourdon措施所提出旳OOA实现环节, 对OOA阶段旳测试划分为下列五个方面: ✓对认定旳类旳测试 ✓对认定旳构造旳测试 ✓对认定旳主题旳测试
11
✓ 在Coad和Yourdon措施中,认定旳构造分为两 种:泛化构造和复合构造。泛化构造体现了问 题领域中对象旳一般与特殊旳关系,复合构造 体现了问题领域中对象旳整体与局部旳关系。
1) 对泛化构造旳测试可从如下方面着手: a) 对于构造中旳一种类,尤其是处于高层旳类, 看是否能在问题领域中派生出其下一层旳类。 b) 对于构造中旳一种类,尤其是处于同一低层 旳类,看是否能抽象出在现实世界中有意义 旳更一般旳上层旳类。
21

【计算机专业考研必备】殷仁昆_数据结构考研-要点解析(清华大学殷仁昆教授数据结构辅导班讲义)

【计算机专业考研必备】殷仁昆_数据结构考研-要点解析(清华大学殷仁昆教授数据结构辅导班讲义)
14
3) 注意练习
只看书不做题,不能真正学会有关知识, 不能达到技能培养的目的。 做题是自我检查的重要手段。 在做算法设计类型的习题时,应考虑数据 结构的定义。 3. 提高算法设计的能力。

编写算法的题可能是学生比较棘手的问题,特 别是在考试这样一个氛围,时间又短促,想编 出一个好算法不太容易。
问题2. 当元素以A, B, C, D, E顺序进栈,D, B, C, E, A 是可能的出栈顺序吗?
解析:“否”,因序列的进出栈顺序为 IA IB IC ID OD, 当D 出栈后,栈顶为C,不能让B先出来。 所以D, B, C, E, A 不是可能的出栈顺序。
26
问题3. 可否用两个栈模拟一个队列?反过来呢? 解析:“可以”,一个栈把全部数据反过来,另一 个栈再把这些数据反过去即可。而队列不能。 问题4. 栈、队列对线性表加了什么限制?
9
复习的范围

根据2009年考试分析和历年考试经验,可以对今 后考试作一个简单评估:

单项选择题覆盖了考试大纲涉及的所有各章, 主要考查对各个数据结构的定义和特点的理解, 以及相应延伸的概念。

综合应用题分为两个部分:算法分析题和算法 设计题(编程题),主要考查分析问题和解决 问题的能力。算法分析题的重点在图、查找、 排序部分,算法设计题的重点在线性表、树与 二叉树、查找和排序部分。
16
第一章知识点解析

本章“线性表”的知识点有 5 个: 1) 线性表的定义和特点:由数据元素组成,惟一 直接前驱与后继。 2) 线性表的基本操作:查找、定位、遍历、插入、 删除。 3) 线性表的存储表示:顺序存储、链表存储。 4) 循环链表和双向链表:定义和基本运算。
5) 线性表的应用:掌握使用线性表基本操作实现 应用算法

软件工程(郑人杰版)复习资料

软件工程(郑人杰版)复习资料

软件工程复习第一章:软件危机与软件工程一.软件危机概念,软件危机产生的原因,解决软件危机的方法二.软件工程概念,软件工程原理,软件工程途径三.生命周期各阶段及其基本任务四.软件开发模型如:瀑布模型,演化模型,螺旋模型几种模型的形式与特征第二章:可行性研究一.可行性研究的任务,可行性研究的步骤,二.辅助工具如:数据流图,数据字典的画法及其在分析中的作用三.成本/效益分析第三章:需求分析一.需求分析的任务,需求分析的步骤,ER模型,二.辅助工具三.验证软件需求第四章:总体设计一.总体设计的任务和过程二.软件设计原理及概念模块化,抽象化,信息隐蔽,模块独立性(耦合与内聚)三.启发式规则(模块的作用域与控制域)四.辅助工具五.面向数据流的方法变换型分析与设计事务型分析与设计(结构化分析方法建立模型---变换设计与事务设计)第五章:详细设计一.结构化程序设计二.详细设计工具(程序流程图与盒图,PAD图之间的转化)三.JACKSON程序设计方法四.程序复杂度的定量度量(McCabe方法)第六章:编码设计一.选择程序设计语言二.程序的编码风格三.程序设计途径第七章:测试一.测试的有关概念二.软件测试的目的三.软件测试的策略四.软件测试用例设计两种常用的测试方法白盒测试中逻辑覆盖的各种测试方法(给定程序建立相应的控制流程图,设计测试用例,实现逻辑覆盖)黑盒测试的各种测试方法(等价类划分、边界值分析等)五.调试第八章:维护一.维护的方法二.维护的特点三.维护的过程四.可维护性第九章:面向对象的有关概念与特性面向对象、对象、消息、类和实例、继承、重载、多态第十章:面向对象方法的开发过程一.软件开发模型二.基于复用的面向对象开发过程的几个阶段三.面向对象应用生存期与面向过程的软件生存期四.类生存期、类的开发方法第十一章:面向对象分析与模型化一.对象模型、动态模型、功能模型的功能描述二.面向对象分析方法建立对象—关系模型三.面向对象分析方法建立动态模型《软件工程》期末复习第一章第一章软件工程概述一、一、重点掌握的内容:软件和软件工程的基本概念二、二、一般掌握内容:软件生存周期及软件开发的各种模型。

《软件工程概论》郑人杰版课件 第1章 软件与软件工程介绍

《软件工程概论》郑人杰版课件  第1章 软件与软件工程介绍

1.4 软件生存期
➢ 概要设计 – 概括地回答“怎样实现目标系统?”。 – 设计程序的体系结构,也就是确定程序由哪些 模块组成以及模块间的关系。 – 提交的文档是概要设计说明书。
➢ 详细设计 – 回答“应该怎样具体地实现这个系统”。 – 详细地设计每个模块,确定实现模块功能所需 要的算法和数据结构。 – 提交的文档是软件的详细设计说明书。
(4) 质量特性:目前还无法得到完全没有缺陷的软 件产品 。
1.1 软件的概念、特性和分类
(5) 生产特性:与硬件或传统的制造业产品的生产完 全不同,软件一旦设计开发出来,如果需要提供 多个用户,它的复制十分简单,其成本也极为有 限。
(6) 管理特性:由于上述的几个特点,使得软件的 开发管理显得更为重要,也更为独特 。
(9) 废弃特性: 与硬件不同,软件并不是由于被“用 坏”而被废弃的 。
(10) 应用特性:软件的应用极为广泛,如今它已渗 入国民经济和国防的各个领域,现已成为信息产 业、先进制造业和现代服务业的核心,占据了无 可取代的地位。
1.1 软件的概念、特性和分类
• 软件的分类
(1) 系统软件
• 操作系统 • 数据库管理系统 • 设备驱动程序 • 通信和网络处理程序等
1.4 软件生存期
• 软件定义时期
确定总目标和可行性; 导出策略和系统功能; 估计资源和成本; 制定工程进度表
分为三个阶段
➢ 问题定义 ➢ 可行性研究 ➢ 需求分析
1.4 软件生存期
• 问题定义
关键问题是:“要解决的问题是什么”。 提交的内容为关于问题性质、工程目标和工程 规模的书面报告。
• 可行性研究
算机资源的有效性; • 可维护性是指当环境改变或软件运行发生故障时,为了使

《软件工程需求分析--图书管理系统》

《软件工程需求分析--图书管理系统》

《软件工程需求分析--图书管理系统》图书管理系统软件工程需求分析软件工程软件项目的需求分析图书馆管理系统学号:班级:姓名:提交日期:2022年11月21日图书管理系统软件工程需求分析1引言1.1编写目的编写本文档的目的是根据系统分析工程师和客户沟通的结果,对用户需求进行了全面细致的分析,深入描述《图书管理系统》软件的功能和性能与界面,确定该软件设计的限制和定义软件的其他有效性需求。

该需求规格说明书的读者对象是图书管理系统软件小组的研发工程师、测试工程师、销售工程师,版权归上述所有者所有,严禁外传。

1.2背景1.3定义文档中采用的专门术语的定义及缩略词简要如下:[1]王慧亮关于图书管理系统的批文[2]郑人杰,殷人昆,陶永雷。

《实用软件工程》(第二版)。

北京:清华大学出版社,1997。

[3]王立福,麻志毅。

《软件工程》(第二版)。

北京:北京大学出版社,2001。

[4]唐学忠,王文。

《ViualBaic程序设计教程》北京:中国电力出版社,2002。

图书管理系统软件工程需求分析2任务概述2.1目标1.能够存储一定数量的图书信息,并方便有效的进行相应的书籍数据操作和管理,这主要包括:3.能够对需要的统计结果提供列表显示输出。

4.能够提供一定的安全机制,提供数据信息授权访问,防止随意删改,同时提供信息备份的服务。

2.2用户的特点该软件的最终用户是图书馆管理人员和读者。

这些人员对本软件的使用频度相当大2.3假定和约束一个更为完善的图书管理系统,应提供更为便捷与强大的信息查询功能,如相应的网络操作及服务,由于开发时间和计算机数量有限,该系统并未提供这一功能。

对信息的保护手段仅限于设置用户级别,以及提供数据文件的备份,比较简单,不能防止恶意的破坏,安全性能有待进一步完善。

3需求规定3.1对功能的规定1.1功能划分该软件具有如下主要功能:1.浏览功能;2.查询功能;3.插入功能;4.修改功能;图书管理系统软件工程需求分析5.6.1.21.删除功能;授权功能;功能描述浏览功能列出当前数据库文件中书籍和读者的所有记录;可选定一项记录,显示所有域;查询功能书目匹配查询;读者匹配查询;书目和读者相关匹配查询;插入功能增加一个书目记录;增加一个读者记录修改功能修改某一已存在的记录内容,提供确认机制;删除功能删除一个记录,提供确认机制;授权功能;授权读者访问数据的权限;2.3.4.5.6.3.2对性能的规定3.2.1精度查询时应保证查全率,所有在相应域中包含查询关键字的记录都应能查到,同时保证查准率。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档