软件工程(郑人杰版)复习资料
软件工程复习资料精选全文完整版
可编辑修改精选全文完整版一、单选题(共20题,40分)1、使用数据流图,并不断细化的需求获取方法是()。
(2.0)A、简易的应用规格说明B、面向数据流自顶向下逐步求精C、访谈D、快速原型法正确答案: B2、Z语言是以()为基础的形式化规格说明语言。
(2.0)A、微积分B、概率C、图形D、一阶谓词演算正确答案: D3、HIPO是指(2.0)A、层次输入处理输出图或表B、层次功能结构图C、功能结构图D、输入处理输出图或表正确答案: A4、高铁调用系统最适宜采用()方法。
(2.0)A、有穷状态机B、 Petri网C、 Z语言D、一阶线性时态逻辑正确答案: B5、假设学生年龄的成绩输入范围为18-25,则根据等价类划分技术,下列划分正确的是()。
(2.0)A、可划分为2个有效等价类,2个无效等价类B、可划分为1个有效等价类,2个无效等价类C、可划分为2个有效等价类,1个无效等价类D、可划分为1个有效等价类,1个无效等价类正确答案: B6、用于并发系统,解决定时问题的形式化方法是()。
(2.0)A、 VDMB、 Z语言C、 Petri网D、一阶线性时态逻辑正确答案: C7、软件生命周期中所花费费用最多的阶段是(2.0)A、需求分析B、软件总体设计C、软件维护D、软件实现正确答案: C8、软件质量保证措施SQA不包括:(2.0)A、复审或评审B、软件测试C、程序正确性证明D、软件代码编写正确答案: D9、希望确定软件实现的功能是否与需求规格说明书一致,需进行()。
(2.0)A、单元测试B、有效性测试C、确认测试D、集成测试正确答案: C10、总体设计不包括:(2.0)A、体系结构设计B、数据库设计C、模块内算法设计D、逻辑数据结构设计正确答案: C11、关于类和对象的说法,正确的是(2.0)A、一个类只能有一个角色B、类的命名必须用动词C、类的所有对象都具有相同的属性和操作D、类是对象的实例,对象是类的抽象正确答案: C12、数据字典的基本功能是(2.0)A、数据库设计B、数据通信C、数据定义D、数据维护正确答案: C13、软件需求规格说明的内容不应该包括(2.0)A、主要功能B、算法的描述C、用户界面及其运行环境D、软件性能正确答案: B14、增量模型在添加新的模块时,有一个要求是()(2.0)A、需要更多的测试B、有足够的开发人员C、软件体系结构开放D、各个模块都要进行评审正确答案: C15、在软件详细设计过程中不采用的工具是(2.0)A、判定表B、PDLC、程序流程图D、DFD正确答案: D16、软件测试方法中,黑盒测试方法和白盒测试方法是常用的方法,其中黑盒测试方法主要用于测试(2.0)A、结构合理性B、软件外部功能C、程序正确性D、程序内部逻辑正确答案: B17、耦合是模块之间的相对独立性的度量。
软件工程概论复习资料
软件工程--复习资料第一章软件工程概论1.软件的特点是什么?1) 软件是逻辑实体;具有抽象性;软件的形态不可见;――必须通过观察、分析、思考、判断来了解其功能、性能和其它特性。
2) 软件是人脑思维的产物,其生产过程与硬件不同。
――开发过程的质量控制及软件产品保护问题。
3) 软件的开发和运行受计算机系统限制。
――软件移植问题。
4) 软件的开发技术落后,手工开发方式仍占统治地位。
――开发效率低。
2.2006年发布的国家分类标准是什么?独立式,组合式,集成式,嵌入式。
3.软件危机的表现有哪些?1) 对开发成本和进度的估算偏差太大2) 没有适当的文档3) 软件成本比重上升4) 质量很不可靠5) 供不应求6) 用户很不满意4.产生软件危机的原因是什么?l客观:软件本身特点1逻辑部件2规模庞大l主观:不正确的开发方法1忽视需求分析2“软件开发=程序编写”的错误观念3轻视软件维护5.什么是软件工程三要素?1.方法:为软件开发提供了“如何做”的技术。
2.工具:为软件工程方法提供了支撑环境。
3.过程:定义了方法使用的顺序、要交付的文档资料、为保证质量和适应变化所需要的管理、软件开发各个阶段完成的里程碑。
5.软件工程的基本目标是什么?1) 付出较低的开发成本2) 达到要求的软件功能3) 取得较好的软件性能4) 开发的软件易于移植5) 需要较低的维护费用6) 能按时完成开发工作,及时交付使用7.软件工程的基本原则是什么?1) 抽象2) 信息隐蔽3) 模块化4) 局部化5) 确定性6) 一致性7) 完备性8) 可验证性8.软件工程的基本原理是什么?1) 用分阶段的生命周期严格管理;2) 坚持进行阶段评审;3) 实行严格的产品控制;4) 采用现代程序设计技术;5) 结果应能清楚地审查;6) 开发小组人员应少而精;7) 承认不断改进软件工程实践的必要性。
9.瀑布模型有什么特点?1.里程碑或基线驱动,或者说文档驱动;2.过程逆转性很差,或者说不可逆转。
《软件工程概论》郑人杰版 第9章 软件实现
9.1 程序设计语言
• 程序设计语言的分类
(4) 第四代语言(4GL) ➢ 4GL以数据库管理系统所提供的功能为核心,进
一步构造了开发高层软件系统的开发环境,如报 表生成系统、多窗口表格设计系统、菜单生成系 统等。 ➢ 4GL提供了功能强大的非过程化问题定义手段, 用户只需告诉系统做什么,而无须说明怎么做。
9.1 程序设计语言
• 程序设计语言的选择
➢ 在选择编程语言时,可以考虑以下因素。 (1) 应用领域:目标系统的应用领域不同,需要采
取的系统开发范型也不同,所以要考虑支持相 应范型的编程语言。
(2) 系统用户的要求。
(3) 编程语言自身的功能。 (4) 编码和维护成本及开发环境。 (5) 编程人员的技能。
(4) 循环、判断等语句中的条件测试若有较长的表 达式,则要进行适应的划分,长表达式要在低优 先级操作符处划分新行,操作符放在新行之首。
1.版面
(5) 不允许把多个短语句写在一行中,即一行只写 一条语句。
(6) if、while、for、default、do等语句自占一行。 (7) 只用空格键,不要使用TAB键。以免用不同的
(6) 软件可移植性。
9.2 程序设计风格
• 在软件生存期中,人们经常要阅读程序。特别是 在软件测试阶段和维护阶段,编写程序的人和参 与测试、维护的人都要阅读程序。
• 在编写程序时多花些工夫,讲求程序的风格,这 将大量地减少人们读程序的时间。
• 本节对程序设计风格的4个方面,即源程序文档化、 数据说明的方法、语句结构和输入/输出方法中值 得注意的问题进行概要的讨论
(4) 输入数据时,应允许使用自由格式输入。 (5) 应允许默认值。 (6) 输入一批数据时,最好使用输入结束标志,而不要由用
清华大学郑人杰殷仁昆教授软件工程讲义03
软件工程
12
c) 模块可理解性 一个模块可不参考其他模 块而被理解;
d) 模块连续性 对软件需求的一些微小变更 只导致对某个模块的修改而整个系统不 用大动;
e) 模块保护 将模块内出现异常情况的影响 范围限制在模块内部;
5) 设计应遵循信息隐蔽的原则。
✓ Patnas主张在开发时,将每个程序的成分隐 藏在模块内,定义每一个模块时尽可能少地 显露其内部的处理。
软件工程
13
✓ 每个模块的实现细节对于其它模块是隐蔽的, 将来修改软件时偶然引入错误所造成的影响 就可以局限在一个或几个模块内部,不致波 及到软件的其它部分。
✓ 在可预见将来可能修改的场合,信息隐蔽可 以提高软件的可修改性、可测试性和可移植 性。
公共耦合(Common Coupling)
若一组模块都访问同一个公共数据环境,则它 们之间的耦合就称为公共耦合。公共的数据环 境可以是全局数据结构、共享的通信区、内存 的公共覆盖区等。
软件工程
21
公共耦合的复杂程度随耦合模块的个数增加而 显著增加。若只是两模块间有公共数据环境, 则公共耦合有两种情况。松散公共耦合和紧密 公共耦合。
软件工程
25
功能内聚 (Functional Cohesion)
一个模块中各个部分都是完成某一具体功能必 不可少的组成部分,或者说该模块中所有部分 都是为了完成一项具体功能而协同工作,紧密 联系,不可分割的。则称该模块为功能内聚模 块。
功能内聚模块的功能独立性最强。
软件工程
26
信息内聚 (Informational Cohesion)
这种模块完成多个功能,各个功能相互独立但 都在同一数据结构上操作,每一项功能有一个 唯一的入口点。这个模块将根据不同的要求, 确定该执行哪一个功能。
软件工程(郑人杰版)复习资料
软件工程复习第一章:软件危机与软件工程一.软件危机概念,软件危机产生的原因,解决软件危机的方法二.软件工程概念,软件工程原理,软件工程途径三.生命周期各阶段及其基本任务四.软件开发模型如:瀑布模型,演化模型,螺旋模型几种模型的形式与特征第二章:可行性研究一.可行性研究的任务,可行性研究的步骤,二.辅助工具如:数据流图,数据字典的画法及其在分析中的作用三.成本/效益分析第三章:需求分析一.需求分析的任务,需求分析的步骤,ER模型,二.辅助工具三.验证软件需求第四章:总体设计一.总体设计的任务和过程二.软件设计原理及概念模块化,抽象化,信息隐蔽,模块独立性(耦合与内聚)三.启发式规则(模块的作用域与控制域)四.辅助工具五.面向数据流的方法变换型分析与设计事务型分析与设计(结构化分析方法建立模型---变换设计与事务设计)第五章:详细设计一.结构化程序设计二.详细设计工具(程序流程图与盒图,PAD图之间的转化)三.JACKSON程序设计方法四.程序复杂度的定量度量(McCabe方法)第六章:编码设计一.选择程序设计语言二.程序的编码风格三.程序设计途径第七章:测试一.测试的有关概念二.软件测试的目的三.软件测试的策略四.软件测试用例设计两种常用的测试方法白盒测试中逻辑覆盖的各种测试方法(给定程序建立相应的控制流程图,设计测试用例,实现逻辑覆盖)黑盒测试的各种测试方法(等价类划分、边界值分析等)五.调试第八章:维护一.维护的方法二.维护的特点三.维护的过程四.可维护性第九章:面向对象的有关概念与特性面向对象、对象、消息、类和实例、继承、重载、多态第十章:面向对象方法的开发过程一.软件开发模型二.基于复用的面向对象开发过程的几个阶段三.面向对象应用生存期与面向过程的软件生存期四.类生存期、类的开发方法第十一章:面向对象分析与模型化一.对象模型、动态模型、功能模型的功能描述二.面向对象分析方法建立对象—关系模型三.面向对象分析方法建立动态模型《软件工程》期末复习第一章第一章软件工程概述一、一、重点掌握的内容:软件和软件工程的基本概念二、二、一般掌握内容:软件生存周期及软件开发的各种模型。
清华大学郑人杰殷仁昆教软件工程讲义08
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
软件工程复习资料
软件工程复习资料1. 软件工程概述软件工程是一门研究如何构建和维护软件系统的学科。
它涵盖了软件开发的各个方面,包括软件需求、设计、编码、测试、维护等。
本节将对软件工程的基本概念和重要原理进行介绍。
1.1 软件工程的定义软件工程是一种应用工程原理、方法和工具来开发和维护高质量软件的系统工程。
它关注软件开发过程中的各个环节,以提高软件质量和开发效率。
1.2 软件工程的目标软件工程的目标是开发高质量的软件系统,满足用户需求,具备良好的可维护性和可扩展性。
通过采用合适的开发方法和工具,提高软件开发过程的可靠性和效率。
1.3 软件工程的原则软件工程遵循一些重要的原则来指导软件开发过程,包括模块化、抽象、信息隐藏、接口规范、单一职责等原则。
这些原则有助于提高软件质量和可维护性。
2. 软件开发过程软件开发过程是指将软件需求转化为可执行软件的过程。
它包括需求分析、设计、编码、验证和维护等阶段。
本节将介绍常用的软件开发过程模型和相应的方法。
2.1 瀑布模型瀑布模型是一种线性的软件开发过程模型,包括需求分析、设计、编码、测试和维护等阶段。
瀑布模型适用于需求稳定的项目,但不适用于需求频繁变更的项目。
2.2 敏捷开发敏捷开发是一种迭代的软件开发过程模型,强调快速反馈和适应需求变化。
敏捷开发方法包括Scrum、XP等。
它适用于需求不确定或频繁变更的项目。
2.3 增量开发增量开发将软件系统划分为多个增量,每个增量包含了一个或多个功能模块。
每个增量的开发和测试独立进行,逐步完善系统。
增量开发适用于大型项目和复杂项目。
2.4 软件开发过程的选择选择适合项目的软件开发过程模型非常重要。
需要考虑项目的规模、需求的稳定性、团队的能力等因素来决定采用哪种开发过程模型。
3. 软件需求工程软件需求工程是软件工程的一项重要活动,旨在准确捕获用户需求,并将其转化为可执行的软件需求规格。
本节将介绍软件需求的定义、分类和常用的需求获取和分析方法。
软件工程知识点复习资料
软件工程知识点复习资料一、软件工程概述软件工程是一门研究如何以系统性的、规范化的、可度量的方法进行软件开发、运行、维护和管理的学科。
它涵盖了软件开发生命周期的各个阶段,包括需求分析、系统设计、编码实现、测试和维护等。
二、软件生命周期与开发模型1. 软件生命周期包括需求分析、系统设计、编码实现、测试和维护等阶段。
不同的项目可以采用不同的开发模型,常见的有瀑布模型、迭代模型和敏捷模型。
2. 瀑布模型是一种线性顺序开发模型,各个阶段严格按序进行,适用于需求较为稳定的项目。
3. 迭代模型将软件开发过程划分为多个迭代阶段,每个迭代阶段都包含需求分析、设计、编码和测试等活动,适用于需求较为不确定或需要持续改进的项目。
4. 敏捷模型强调快速响应需求变化和灵活合作,通过迭代、增量的方式进行开发,适用于需求频繁变更的项目。
三、需求工程1. 需求分析是软件开发的第一步,包括需求获取、需求分析、需求建模等过程,目的是明确系统的功能和性能需求,并与客户达成一致。
2. 需求获取可以通过面谈、问卷调查、观察等方式进行,需求分析则要对已收集到的需求进行分析、整理和归纳。
3. 需求建模使用UML(统一建模语言)等工具,将需求表示为用例图、活动图、时序图等形式,便于后续的系统设计和编码实现。
四、设计与架构1. 系统设计是软件开发的关键阶段,包括软件架构设计和详细设计等过程,目的是指导后续的编码和测试工作。
2. 软件架构设计确定系统的整体结构、模块划分和模块间的关系,常见的架构风格包括层次结构、客户-服务器、面向对象等。
3. 详细设计是对系统模块的具体设计,包括数据结构设计、算法设计和接口设计等,常用的设计方法有结构化设计和面向对象设计。
五、编码实现与调试1. 编码实现是将设计阶段得到的设计方案转化为计算机可执行的代码,采用合适的编程语言和开发工具进行。
2. 编码时要注重代码的可读性、可维护性和可重用性,采用良好的编程风格和命名规范。
软件工程复习资料-完整版
一、选择题:1、用例图中,用来表示用例的符号为( B ) 。
2、协作图中包含的元素包括(A ) 。
A. 对象 B. 链 C. 激活 D. 消息3、在类图中,哪种关系表达整体与部分的关系( D ) 。
A .泛化 B. 实现 C. 依赖 D. 聚合4、下列各种图形符号中,用来表示组成关系的符号为 (B )。
A. B. C. D.5 、(A )工具在软件的详细设计中不能使用。
A . DFD B. N-S 图 C. 流程图 D. PDL6 、 “软件危机”是指 (C )。
A. 计算机病毒的出现B. 利用计算机进行经济犯罪活动C. 软件开发和维护中出现的一系列问题D. 人们过分迷恋计算机系统7 、 快速原型是利用原型辅助软件开发的一种新思想,它是在研究 (A )的方法和技术中产生 的。
A. 需求阶段B. 设计阶段C. 测试阶段D. 软件开发的各个阶段8、从严格意义上讲,下列 4 个选项中属于顺序图的元素是(ABCD ) 。
A.对象B. 参与者C. 消息D. 激活9、下列 UML 图形中, (ABCD )属于 UML 的动态视图。
A. 协作图B. 状态图C. 活动图D. 顺序图10、数据字典是软件需求分析阶段的最重要的工具之一,其最基本的功能是( D ) 。
A. 数据库设计B. 数据通信C. 数据关系描述D. 数据定义11、详细设计与概要设计衔接的图形工具是 (D )。
A. DFD 图B. 程序图C. PAD 图D. SC 图12 、UML 中,大多数建模者把节点分为(AC )A . 设备 B. 构件 C. 处理器 D. 显示器13 、(C)是一种特殊形式的状态机,用于对计算流程和工作流程建模。
A .时间图 B. 流程图 C. 活动图 D. 状态图14 、(A )描述从状态到状态的控制流程,常用来对系统的动态特征进行建模。
A. 状态图B. 序列图C. 协作图D. 活动图15、下列特点属于描述用例的特点的是( D ) 。
软件工程期末复习指导
软件工程期末复习指导软件工程课程是计算机科学与技术专业本科生的一门选修课程。
主要讨论如何运用科学的概念、理论、方法和技术来进行软件的开发、维护和管理。
课程主要内容有:软件工程概述;系统分析;需求分析;软件设计;Jackson系统开发方法;用户界面设计;程序编码;软件测试;面向对象技术;软件质量保证;软件维护;软件工程标准和软件文档;软件项目管理与计划。
本课程选用的教材是由郑人杰主编清华大学出版社出版的《实用软件工程》第一部分各章复习要求下面按照主教材中各章次序给出每章的具体复习要求,以便指导同学们更好地进行期末复习。
第一章软件工程概述1.1 软件的概念、特点和分类(熟练掌握)1.2 软件的发展和软件危机(掌握)1.3 软件工程过程和软件生存期(掌握)1.4 软件生存期模型(了解)1.5 软件工程的基本目标(了解)第二章系统分析2.1 基于计算机的系统(了解)2.3 系统需求识别(了解)2.4 可行性研究(掌握)2.5 成本效益分析(掌握)2.6 技术分析(了解)2.7 分配与权衡(了解)2.8 系统结构的模型化(了解)2.9 系统定义与评审(了解)第三章软件需求分析3.1软件需求分析的任务(掌握)3.2需求分析的过程(掌握)3.3软件需求分析的原则(了解)3.4分析员和用户的责任(了解)3.5软件需求分析方法(了解)3.6原型化方法(掌握)3.7结构化分析方法(熟练掌握)第四章软件设计4.1软件设计的目标和任务(掌握)4.2软件设计基础(掌握)4.3模块的独立性(掌握)4.4结构化设计方法(Structure Design,SD)(掌握)4.6过程设计(熟练掌握)第五章Jackson 系统开发(JSD)方法5.1 进程模型(了解)5.2 JSD方法的步骤(了解)5.3 实体动作分析(掌握)5.4 实体结构分析(掌握)5.5 定义初始模型(了解)5.6 功能描述(了解)第六章用户界面设计6.1用户界面应具备的特性(掌握)6.2用户界面设计的任务分析(了解)6.4界面设计的基本类型(了解)6.5数据输入界面(了解)6.6数据显示界面设计(了解)第七章程序编码7.1对软件的质量要求(掌握)7.2结构化程序设计(Structure Programming)(掌握)7.3程序设计风格(了解)7.4程序效率(了解)第八章软件测试8.1 软件测试的基础(掌握)8.2 测试用例设计(熟练掌握)8.3 白盒测试的测试用例设计(熟练掌握)8.4 黑盒测试的测试用例设计(了解)8.5 软件测试的策略(掌握)8.7 调试(了解)第九章面向对象技术9.1面向对象的概念(了解)9.3面向对象分析(Object-Oriented Analysis)(了解)第十章软件的质量保证10.1软件质量的概念(掌握)10.2软件质量的度量和评价(掌握)10.3软件质量保证(掌握)10.5质量保证的实施(了解)10.7技术评审(掌握)10.8软件可靠性(掌握)10.10软件容错技术(了解)第十一章软件维护11.1软件维护的概念(掌握)11.2软件维护活动(了解)11.3程序修改的步骤及修改的副作用(了解)11.4软件可维护性(了解)11.8软件配置管理(Software Configuration Management)(了解)第十二章软件工程标准化与软件文档12.1什么是软件工程标准(掌握)12.2软件工程标准化的意义(了解)12.4软件工程标准的层次(了解)12.8文档的作用与分类(了解)第十三章软件项目管理与计划13.1项目的管理过程(了解)13.2软件生产率和质量的度量(了解)13.4软件项目估算(掌握)13.5软件开发成本估算(了解)13.6风险分析(了解)13.7进度安排(了解)13.8 软件项目的组织与计划(了解)13.9 软件过程成熟度模型(了解)第二部分期末复习题示例名词解释模块独立性:是指软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中其他的模块接口是简单的。
软件工程复习资料(提纲+答案)
软件工程复习资料(提纲+答案)第一章软件工程的实质1、什么是软件?由什么组成?软件:是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档组成的完整集合。
可以写作为:软件=程序+数据+文档。
2、什么是软件危机?为什么会产生?(原因)软件危机:指的是在计算机软件的开发和维护过程中所遇到的一系列严重的问题。
原因:用户需求不明确、缺乏正确的理论指导、软件规模越来越大、软件复杂度越来越高3、为什么要进行软件开发?4、软件工程的三段论?三段论:软件项目管理论、软件项目开发论、软件过程改进论5、软件工程生存期模型概念、类型、每种类型的特点?答:软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。
软件生存周期模型确立了软件开发和演绎中各阶段的次序限制以及各阶段或机动的准则,确立开发过程所遵守的规定和限制,便于各种活动的协调,便于各种人员的有效通信,有利于活动重用,有利于活动管理。
常见的软件生存周期模型有瀑布模型、V模型、原型模型、增量式模型、螺旋式模型。
6、了解复用的原则第二章软件项目的需求分析1、需求分析的主要任务?(基本任务)答:需求分析阶段的基本任务是要准确的定义新系统的目标,满足用户需要,回答系统必须“做什么”的问题。
本阶段要主要有以下几方面工作:(1)问题识别,双方确定对问题的综合需求,包括:功能需求、性能需求、用户界面需求,以及可靠性、安全性、可维护性等方面的需求。
(2)建立模型,对获取的需求,进行分析细化,划分系统功能,确定系统构成,并建立系统的逻辑模型。
(3)编写文档,也就是完成“需求规格说明书”的编写工作。
2、需求分析分两大块(功能与非功能)功能需求描述系统所预期提供的功能或服务。
非功能需求是对系统提供的服务或功能给出的约束。
包括时间约束、开发过程的约束、标准等。
3、(P27)需求建模的基本方法?答:关联模型、行为模型(数据流模型和状态机模型)、数据模型、面向对象模型、结构化模型(技术:数据流图(DFD)、数据字典(DD)、系统流程图)以及其他方法(如原型法、功能列表等)4、结构化方法的代表?(P29)7状态图活动图8、理解好数据流图为什么要分层?9、UML中常用的9种图?(P32 把包图去掉)静态图:类图、对象图、构件图、实施图和包图。
软工各章复习知识点
第4 章
1.学会使用有穷状态机描述一个系统。
2.应用形式化方法的准则。
第5 章
1.总体设计主要完成哪两项任务?每项任务主要 完成什么?
3.什么是软件生命周期?划分为哪些几个阶段?
解:(1)软件生命周期有软件定义、软件开发和运行维护三个时期组成,每个时期又进一步划分成若干个阶段。 (2)阶段:问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试、软件维护。 4.软件工程方法学的3个要素;目前使用最广泛的软件工程方法学是什么?有哪些特点? 解:(1)工具,方法和过程。(2)传统方法学和面向对象方法学(3)特点: 传统方法学也称为生命周期方法学或结构化范型。它采用结构化 技术(结构化分析、结构化设计、结构程序设计和结构化测试)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支
3.单元测试的重点(5个方面)
4.什么是存根程序?什么是驱动程序?什么是回归 测试?什么是α测试?什么是β测试? 5.什么是白盒测试技术?在白盒法中典型的技术有 哪些?在实际中要会熟练应用。
6.什么是黑盒测试技术?在黑盒法中典型的技术有
哪些?在实际中要会熟练应用。
第8 章
1.什么是软件维护?它包括哪四项活动?
持结构化技术的运用。面向对象方法学: 当软件规模较大,或者对软件的需求是模糊的或随时间变化的时候,使用结构化范型开发软件往
往不成功;此外,使用传统方法学开发出的软件,维护起来通常都很困难。 5.典型的生命周期模型(或软件开发模型、过程模型)有哪些?说明其优缺点及适用范围。
清华大学郑人杰殷仁昆教授软件工程讲义2
需求阶段
a
23
变换模型
变换模型是一种基于形式化规格说明语言及程 序变换的软件开发模型。
它采用形式化的软件开发方法,对形式化的软 件规格说明进行一系列自动的或半自动的程序 变换,最终映射成为计算机系统能够接受的程 序系统。
多步程序变换过程的重要性质是:每一步程序 变换的正确性仅与该步变换所依据的规范 Mi 以及对变换后的假设 Mi+1 有关。
编码
测试
增量3 交付
增量4 分析
设计
编码
测试
增量4 交付
日历时间
a
21
喷泉模型
体现了迭代和无间隙的特性。 系统某个部分常常重复工作多次,相关对象在
每次迭代中随之加入演进的软件成分。 无间隙是指在各项开发活动,即分析、设计和
编码之间不存在明显的边界。 喷泉模型是对象驱动的过程。
a
22
维护与演进阶段
软件工程原则有: 1) 抽象与自顶向下、逐层细化 采用分层抽象 的方法,有效控制软件开发的复杂性。
2) 模块化 把问题分解为若干较小的较易解决 的模块,有助于信息隐蔽和抽象。
3) 信息隐蔽和数据封装 将模块中的软件设计 决策封装在模块内部,使得模块实现与使用 分离,有助于控制修改局部化。抽象与自顶 向下、逐层细化
软件需求
软件设计
软件构造
软件测试
软件维护
软件配置管理
软件工程管理
软件工程过程
软件工程工具和方法 软件质量
a
9
软件工程过程与软件生存周期
ISO 9000定义:软件工程过程是把输入转化为 输出的一组彼此相关的资源和活动。
从软件开发的观点看,它就是使用适当的资源 (包括人员、硬软件工具、时间等),为开发 软件进行的一组开发活动,在过程结束时将输 入(用户要求)转化为输出(软件产品)。
《软件工程概论》郑人杰版 第5章 面向对象方法与UML
节不能从类外访问。
继承
• 继承。继承是一种联结类的层次模型,为类的重用提供
了方便,它提供了明确表述不同类之间共性的方法。 • 我们将公共类称为超类(superclass)、父类(father
class)、祖先(ancestor)或基类(base class),而 从其继承的类称为子类(subclasses)、后代( deslendane)或导出类(derived class)。
对象之间的交互
行为事物
(2)状态机(state machine)── 描述了一个对 象或一个交互在生存周期内响应事件所经历的状 态序列,单个类或者一组类之间协作的行为都可 以用状态机来描述。 状态机涉及到状态、变迁和活动,其中状态用圆角 矩形来表示。
对象
(2) 角色(Roles)── 一个实体的角色也可 以抽象成一个单独的对象。角色对象的操 作是由角色提供的技能。
• 例如,一个面向对象系统中通常有“管理器”对象,它履 行协调系统资源的角色。一个窗口系统中通常有“窗口管 理器”对象,它扮演协调鼠标器按钮和其他窗口操作的角 色。特别地,一个实际的物理对象可能同时承担几个角色 。
清晰,容易掌握使用。 (6)与编程语言的关系
支持UML的一些CASE工具(如Rose)可以根据 UML所建立的系统模型自动产生Java、C++ 等代 码框架。
UML的基本模型
➢ UML符号为开发者或开发工具使用这些图形符号 和文本语法为系统建模提供了标准。 ➢ 这些图形符号和文字所表达的是应用级的模型, 在语义上它是UML元模型的实例。 ➢UML模型由事物、关系和图组成 。
第5章 面向对象方法与UML
软件工程复习资料全
软件工程复习材料一、考试复习围:1、软件工程基本概念、基本原理2、需求分析,结构化分析、面向对象分析,结构化分析建模、面向对象分析建模3、软件设计,结构化程序设计,概要设计、详细设计4、软件测试二、考试题型:单项选择题、简答题、综合应用题(要求会画:数据流图、软件结构图、用例图、类图、N-S盒图、PAD图)三、复习容:1、什么是软件危机?人们把软件开发和维护中的各种问题称为“软件危机”。
2、软件危机主要包含哪两方面的问题?①如何开发软件以满足软件日益增长的需求。
②如何维护数量不断增长的已有软件。
3、软件危机的表现有哪些?①对软件开发成本和进度的估算很不准确。
②用户对完成的软件很不满意。
③软件产品的质量很不可靠。
④没有完整的文档。
⑤软件成本比重上升。
⑥软件开发生产效率低下,软件开发技术进步落后与需求的增长,造成“供不应求”的局面。
4、什么是软件工程?软件工程的定义:采用工程的概念、原理和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。
5、.软件工程包括3个要素有哪些?方法、工具和过程。
6、软件生命周期各阶段有哪些?软件生命周期包括:软件定义、软件开发、软件维护三个时期。
其中:软件定义包括:问题定义、可行性研究、需求分析阶段;软件开发包括:总体设计、详细设计、编码、软件测试阶段。
7、需求分析的任务有哪些?需求分析的任务主要有两个方面:①通过对问题及环境的理解、分析和综合,建立分析模型。
②在完全弄清用户对软件系统的确切要求的基础上,用“软件需求规格说明书”把用户的需求表达出来。
8、软件系统需求分类是哪些?软件系统需求可以分为功能需求、非功能需求和领域需求:1)功能需求描述系统所预期提供的功能或服务。
即定义系统应该做什么,系统要求输入什么信息,输出什么信息,以及如何将输入变换为输出。
它由开发的软件类型、软件未来的用户以及开发的系统类型决定。
《软件工程概论》郑人杰版课件 第1章 软件与软件工程介绍
1.4 软件生存期
➢ 概要设计 – 概括地回答“怎样实现目标系统?”。 – 设计程序的体系结构,也就是确定程序由哪些 模块组成以及模块间的关系。 – 提交的文档是概要设计说明书。
➢ 详细设计 – 回答“应该怎样具体地实现这个系统”。 – 详细地设计每个模块,确定实现模块功能所需 要的算法和数据结构。 – 提交的文档是软件的详细设计说明书。
(4) 质量特性:目前还无法得到完全没有缺陷的软 件产品 。
1.1 软件的概念、特性和分类
(5) 生产特性:与硬件或传统的制造业产品的生产完 全不同,软件一旦设计开发出来,如果需要提供 多个用户,它的复制十分简单,其成本也极为有 限。
(6) 管理特性:由于上述的几个特点,使得软件的 开发管理显得更为重要,也更为独特 。
(9) 废弃特性: 与硬件不同,软件并不是由于被“用 坏”而被废弃的 。
(10) 应用特性:软件的应用极为广泛,如今它已渗 入国民经济和国防的各个领域,现已成为信息产 业、先进制造业和现代服务业的核心,占据了无 可取代的地位。
1.1 软件的概念、特性和分类
• 软件的分类
(1) 系统软件
• 操作系统 • 数据库管理系统 • 设备驱动程序 • 通信和网络处理程序等
1.4 软件生存期
• 软件定义时期
确定总目标和可行性; 导出策略和系统功能; 估计资源和成本; 制定工程进度表
分为三个阶段
➢ 问题定义 ➢ 可行性研究 ➢ 需求分析
1.4 软件生存期
• 问题定义
关键问题是:“要解决的问题是什么”。 提交的内容为关于问题性质、工程目标和工程 规模的书面报告。
• 可行性研究
算机资源的有效性; • 可维护性是指当环境改变或软件运行发生故障时,为了使
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程复习第一章:软件危机与软件工程一.软件危机概念,软件危机产生的原因,解决软件危机的方法二.软件工程概念,软件工程原理,软件工程途径三.生命周期各阶段及其基本任务四.软件开发模型如:瀑布模型,演化模型,螺旋模型几种模型的形式与特征第二章:可行性研究一.可行性研究的任务,可行性研究的步骤,二.辅助工具如:数据流图,数据字典的画法及其在分析中的作用三.成本/效益分析第三章:需求分析一.需求分析的任务,需求分析的步骤,ER模型,二.辅助工具三.验证软件需求第四章:总体设计一.总体设计的任务和过程二.软件设计原理及概念模块化,抽象化,信息隐蔽,模块独立性(耦合与内聚)三.启发式规则(模块的作用域与控制域)四.辅助工具五.面向数据流的方法变换型分析与设计事务型分析与设计(结构化分析方法建立模型---变换设计与事务设计)第五章:详细设计一.结构化程序设计二.详细设计工具(程序流程图与盒图,PAD图之间的转化)三.JACKSON程序设计方法四.程序复杂度的定量度量(McCabe方法)第六章:编码设计一.选择程序设计语言二.程序的编码风格三.程序设计途径第七章:测试一.测试的有关概念二.软件测试的目的三.软件测试的策略四.软件测试用例设计两种常用的测试方法白盒测试中逻辑覆盖的各种测试方法(给定程序建立相应的控制流程图,设计测试用例,实现逻辑覆盖)黑盒测试的各种测试方法(等价类划分、边界值分析等)五.调试第八章:维护一.维护的方法二.维护的特点三.维护的过程四.可维护性第九章:面向对象的有关概念与特性面向对象、对象、消息、类和实例、继承、重载、多态第十章:面向对象方法的开发过程一.软件开发模型二.基于复用的面向对象开发过程的几个阶段三.面向对象应用生存期与面向过程的软件生存期四.类生存期、类的开发方法第十一章:面向对象分析与模型化一.对象模型、动态模型、功能模型的功能描述二.面向对象分析方法建立对象—关系模型三.面向对象分析方法建立动态模型《软件工程》期末复习第一章第一章软件工程概述一、一、重点掌握的内容:软件和软件工程的基本概念二、二、一般掌握内容:软件生存周期及软件开发的各种模型。
三、三、主要知识点:软件:软件定义由以下三部分组成:(1)(1)在运行中能提供所希望的功能和性能的指令集(即程序);(2)(2)使程序能够正确运行的数据结构;(3)(3)描述程序研制过程、方法所用的文挡。
软件是一种产品,同时又是开发和运行产品的载体。
作为一种产品,它表达了由计算机硬件体现的计算潜能。
作为开发运行产品的载体,软件是计算机工作的基础、信息通信的基础,也是创建和控制其他程序的基础。
软件的特点:①软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。
②软件是通过人们的智力活动,把知识与技术转化成信息的一种产品,是在研制、开发中被创造出来的。
③在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题。
④软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。
⑤软件的开发至今尚未完全摆脱手工的开发方式。
⑥软件的开发费用越来越高,成本相当昂贵。
软件的分类:软件依据不同的标准,可划分为不同的分类。
软件工程:是指导计算机软件开发和维护的工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
软件工程准则可以概括为六条基本原理:(1)用分阶段的生存周期计划严格管理;(2)坚持进行阶段评审;(3)实行严格的产品控制;(4)采用现代程序设计技术;(5)应能清楚地审查结果;(6)合理安排软件开发小组的人员。
软件危机:指的是软件开发和维护过程中遇到的一系列严重问题。
软件工程的基本内容:软件工程学的内容可包括理论、结构、方法、工具、环境、管理、规范等。
软件生存周期:一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。
软件生存周期一般可分为以下阶段:·问题定义·需求分析与可行性研究·设计·编码·测试·运行与维护软件生存期也可以分为三个大的阶段:计划阶段。
开发阶段和维护阶段。
软件开发模型:软件开发模型是跨越整个软件生存周期的系统开发、运作、维护所实施的全部工作和任务的结构框架。
瀑布模型即生存周期模型,由 B.M.Boehm 提出,是软件工程的基础模型。
其核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作。
采用结构化的分析与设计方法,将逻辑实现与物理实现分开。
此外,还有螺旋模型、第四代技术模型、原型模型、构件组装模型、混合模型等软件开发模型。
第二章可行性研究一、重点掌握的内容:可行性研究的系统流程图二、二、一般掌握内容:可行性研究的任务和步骤,成本效益分析三、主要知识点:系统流程图:系统流程图是描绘物理系统的传统工具。
它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序,文件,数据库,表格,人工过程等等)。
系统流程图表达的是部件的信息流程,而不表示对信息进行加工处理的控制过程。
系统流程图的功能:1.制作系统流程图的过程是系统分析员全面了解系统业务处理概况的过程,它是系统分析员作进一步分析的依据。
2.系统流程图是系统分析员、管理人员、业务操作人员相互交流的工具。
3.系统分析员可直接利用系统流程图画出可以实现计算机处理的部分。
4.可利用系统流程图来分析业务流程的合理性。
可行性研究的任务:是用最小的代价在尽可能短的时间内确定问题是否能够解决。
一般说来,应从经济可行性、技术可行性、运行可行性、法律可行性和开发方案等方面研究可行性。
可行性研究的步骤:可行性研究的步骤分为九个步骤。
成本效益分析:成本/效益分析的目的是要从经济角度分析开发一个特定的新系统是否可行,从而帮助使用部门负责人正确地做出是否投资于这项开发工程的决定。
几种度量效益的方法:1.货币的时间价值;2.投资回收期;3.纯收入。
第三章需求分析一、重点掌握的内容:需求分析的方法和面向数据流的分析方法。
二、一般掌握内容:需求分析的任务和原则。
三、主要知识点:需求分析的方法:需求分析方法由对软件的数据域和功能域的系统分析过程及其表示方法组成,它定义了表示系统逻辑视图和物理视图的方式,大多数的需求分析方法是由数据驱动的,也就是说,这些方法提供了一种表示数据域的机制,分析员根据这种表示,确定软件功能及其他特性,最终建立一个待开发软件的抽象模型,即目标系统的逻辑模型。
面向数据流的需求分析方法:结构化分析方法是面向数据流进行需求分析的方法。
结构化分析方法使用数据流图DFD与数据字典DD来描述,面向数据流问题的需求分析适合于数据处理类型软件的需求描述。
其核心思想是分解化简问题,将物理与逻辑表示分开,对系统进行数据与逻辑的抽象。
具体来说,结构化分析方法就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。
重点掌握结合实例画数据流图和定义数据字典。
需求分析的任务:它的基本任务是准确地回答“系统必须做什么?”这个问题。
需求分析所要做的工作是深入描述软件的功能和性能,确定软件设计的限制和软件同其它系统元素的接口细节,定义软件的其它有效性需求。
需求分析的任务不是确定系统如何完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。
一般说来,需求分析阶段的任务包括下述几方面:①确定对系统的综合需求对系统的综合需求主要有:系统功能需求、系统性能需求、运行需求、将来可能提出的需求。
②分析系统的数据需求③导出系统的逻辑模型就是在理解当前系统“怎样做”的基础上,抽取其“做什么”的本质,明确目标系统要“做什么”,可以导出系统的详细的逻辑模型。
具体做法是:首先确定目标系统与当前系统的逻辑差别;然后将变化部分看作是新的处理步骤,对功能图(一般为数据流图)及对象图进行调整;最后由外及里对变化的部分进行分析,推断其结构,获得目标系统的逻辑模型。
通常用数据流图、数据字典和主要的处理算法描述这个逻辑模型。
④修正系统开发计划在经过需求分析阶段的工作,分析员对目标系统有了更深入更具体的认识,因此可以对系统的成本和进度做出更准确的估计,在此基础上应该对开发计划进行修正。
⑤开发原型系统使用原型系统的主要目的是,使用户通过实践获得关于未来的系统将怎样为他们工作的更直接更具体的概念,从而可以更准确地提出和确定他们的要求。
需求分析的步骤:1.调查研究;2.分析与综合;3.书写文档;4.需求分析评审需求分析的原则:其基本原则可概括为: (1)必须能够表达和理解问题的数据域和功能域;(2)按自顶向下、逐层分解问题;(3)要给出系统的逻辑视图和物理视图。
第四章概要设计一、重点掌握的内容:概要设计的过程和方法二、一般掌握内容:概要设计的文档与评审三、主要知识点:概要设计任务:①系统分析员审查软件计划、软件需求分析提供的文档,提出最佳推荐方案,用系统流程图,组成系统物理元素清单,成本效益分析,系统的进度计划,供专家审定,审定后进入设计。
②确定模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。
确定模块间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略。
③编写概要设计说明书,用户手册,测试计划,选用相关的软件工具来描述软件结构,结构图是经常使用的软件描述工具。
选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐蔽原则等。
概要设计过程:概要设计要先进行系统设计,复审系统计划与需求分析,确定系统具体的实施方案;然后进行结构设计,确定软件结构。
软件设计的概念与原则:①将软件划分成若干独立成分的依据。
②如何表示不同的成分内的功能细节和数据结构。
③如何统一衡量软件设计的技术质量。
其中有几个概念:1.模块化:就是把程序划分成若干个模块,每个模块具有一个子功能,把这些模块集总起来组成一个整体,可以完成指定的功能,实现问题的要求。
2. 抽象:就是抽出事物的本质特性而暂时不考虑它们的细节。
3. 信息隐蔽:模块中所包括的信息不允许其它不需要这些信息的模块调用。
4. 信息局部化:是指把一些关系密切的软件元素物理地放得彼此靠近。
5. 模块独立性:是软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中其他的模块接口是简单的。
模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。
6. 耦合:是对一个软件结构内各个模块之间互连程度的度量。
耦合强弱取决于模块间接口的复杂程度,调用模块的方式,以及通过接口的信息。
7. 内聚:标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。