复旦大学软件工程考研(MSE)计算机系统基础复习资料
MSE计算机操作系统第四章笔记
第四章1.一个作业从提交给计算机系统到执行结束退出系统,一般都要经历提交、收容、执行和完成四个状态。
一个作业在其处于从输入设备进入外部存储设备的过程成为提交状态。
处于提交状态的作业,因其信息尚未全部进入系统,所以不能被调用程序选取。
收容状态也称为后备状态,输入管理系统不断地将作业输入到外存中对应部分(或称输入井,即专门用来存放待处理作业信息的一组外存分区)。
若一个作业的全部信息已全部被输入进输入井,那么,在它还未被调度去执行之前,该作业处于收容状态。
作业调度程序从后备作业中选取若干作业到内存投入运行。
它为被选中作业建立进程并分配必要的资源,这时,这些被选中的作业处于执行状态。
当作业运行完毕,但它所占用的资源尚未全部被系统收回时,该作业处于完成状态。
一般来说,处理机调度可分为4级:作业调度、交换调度、进程调度、线程调度。
作业调度:又称宏观调度或高级调度,其主要任务是按一定的原则对外存输入井上的大量后备作业进行选择,给选出的作业分配内存、输入输出设备等必要的资源,并建立相应的根程序,以使该作业的进程获得竞争处理机的权利,另外,当该作业执行完毕时,还负责回收系统资源。
交换调度:又称中级调度,其主要任务是按照给定的原则和策略,将处于外存交换区中的就绪状态或就绪等待状态的进程调入内存,或把处于内存就绪状态或内存等待状态的进程交换到外存交换区。
交换调度主要涉及内存的管理和扩充,一般将它归在存储管理之中。
进程调度:又称微观调度或低级调度,其主要任务是按照某种策略和方法选取一个处于就绪状态的进程占用处理机。
只有在多道批处理系统中才有作业调度,而在分时和实时系统中一般只有进程调度、交换调度和线程调度。
这是因为在分时和实时系统中,为了缩短响应时间或为了满足用户需求的截止时间,作业不是建立在外存中,而是直接建立在内存中。
2.作业调度作业调度的功能:(1)记录系统中各作业的状况,包括执行阶段的有关情况。
通常,系统为每个作业建立一个作业控制表JCB记录这些有关信息。
复旦大学计算机考研题库
复旦大学计算机考研题库复旦大学作为中国顶尖的高等学府之一,其计算机专业的考研题库通常包含以下几个方面的内容:1. 数据结构:包括线性表、栈和队列、树和二叉树、图等基本数据结构的定义、操作和应用。
2. 计算机组成原理:涉及计算机硬件的基本组成,如CPU、存储器、输入输出设备等,以及指令集、寻址方式、数据路径和控制单元的设计。
3. 操作系统:包括进程管理、内存管理、文件系统、设备管理等操作系统的基本概念和原理。
4. 计算机网络:涵盖网络体系结构、协议、路由算法、网络安全等网络通信的基础知识。
5. 软件工程:软件开发的生命周期、需求分析、设计、编码、测试和维护等软件工程的基本过程。
6. 数据库系统:数据库的设计、SQL语言、数据库管理系统的基本原理和应用。
7. 算法设计与分析:算法的基本概念、分类、复杂度分析以及一些经典算法的实现。
8. 编译原理:编译器的工作原理,包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成。
9. 人工智能:人工智能的基本概念,包括机器学习、深度学习、自然语言处理等。
10. 专业英语:计算机科学领域的专业英语词汇和术语,以及英文文献的阅读和理解能力。
考研题库的题目通常包括选择题、填空题、简答题、计算题、编程题和案例分析题等类型。
考生需要对上述知识点有深入的理解和熟练的应用能力。
考生在准备考研时,应该注重基础知识的掌握,多做历年真题和模拟题,了解考试的题型和难度,同时培养解决实际问题的能力。
此外,考生还应该关注复旦大学计算机专业最新的研究方向和动态,以便在面试或笔试中更好地展示自己的专业素养。
最后,希望每位考生都能够通过自己的努力,成功考入复旦大学计算机专业,开启一段新的学术旅程。
计算机与软件工程考试复习资料
计算机与软件工程考试复习资料
引言
本文档旨在为计算机与软件工程考试的复提供资料和指导。
通过全面概述计算机与软件工程的相关知识点和考试要点,帮助考生提高复效果和备考策略。
目录
1. 算法与数据结构
- 常用数据结构及其特点
- 常见算法的原理与应用
- 复杂度分析和性能优化方法
2. 编程语言
- 常见编程语言的特点与应用场景
- 语法和语义的理解与应用
- 面向对象编程的原则和概念
3. 软件工程
- 软件开发生命周期的各阶段和特点
- 需求分析和系统设计的方法和技巧- 软件测试与质量保证的原则和方法
4. 数据库
- 数据库管理系统的基本概念和组成- 数据库设计与规范化的原则和步骤- SQL语言的基本操作和高级查询技巧
5. 网络与通信
- 计算机网络的基本原理和协议
- 网络安全与加密方法
- 云计算和大数据技术的应用与发展
6. 人工智能与机器研究
- 人工智能的基本概念和发展历程
- 机器研究算法及其应用
- 深度研究的原理和实践
7. 软件项目管理
- 团队合作与项目管理的基本原则
- 敏捷开发方法与实践
- 软件工程的最佳实践和规范
结论
本文档提供了计算机与软件工程考试复的详细资料和指导,帮助考生系统化地复考试的各个知识点和要点。
考生可以根据自己的实际情况制定复计划,并结合练题和实际项目来提高理论与实践的结合能力。
祝考生们取得优异的成绩!。
复旦MSE复习资料软件工程(SE05软件测试2011)
• 1) 测试是为了验证软件已正确地实现了用户的要求。 • (2) 白盒测试仅与程序的内部结构有关,完全可以不考
虑程序的功能要求。 • (3) 黑盒测试的测试用例是根据程序内部逻辑设计的。 • (4) 为了快速完成集成测试, 采用一次性集成方式是适
宜的。
(5) 在软件开发过程中,若能推迟暴露其中的错误,则 为修复和改正错误所花费的代价就会降低。
27
• 1、错。 测试的目的是尽可能多地发现软件中的错误,其附带的收获才是验证该软件 已正确地实现了用户的要求。
2、对
3、错。 黑盒测试主要是根据程序的有关功能规格说明和覆盖准则来设计测试用例, 进行测试的,不是根据程序的内部逻辑来设计测试用例。
4、错。 采用一次性集成方式进行模块组装,往往成功率很低,而且出现错误时,不 容易确定问题出现在什么地方,因此应采用增量式集成方式,可以把出错的 范围局限到少数模块之中。
19
软件测试步骤
• 系统测试(system testing) 将软件、硬件、数据库等集成为计算机 系统,检查系统的功能、性能等是否符 合计算机系统的要求 测试方法:黑盒 发现的错误:系统工程
20
测试与软件开发各阶段的关系
21
软件开发V模型
系统工程
系统测试
需求分析
确认测试
设计
集成测试
编码
单元测试
32
3
有关软件测试的错误观点
• “程序测试是证明程序正确地执行了 预期的功能”。实际上,一个程序 不仅要完成它所需完成的功能,而 且不应完成它不该做的事。如不能 把边长为0、0、0的三条边判断为 等边三角形。
4
软件测试的原则
1. 应当把“尽早地和不断地进行软件测试” 作为软件开发者的座右铭。
复旦大学mse2016大纲
考试题型:概念问答题、实践案例题总分:50分一、软件过程软件过程的概念;经典软件过程模型的特点(瀑布模型、增量模型、演化模型、统一过程模型);过程评估与CMM/CMMI的基本概念;敏捷宣言与敏捷过程的特点。
二、软件需求软件需求的概念;需求工程的基本过程;分层数据流模型;用例和场景建模及其UML表达(用例图、活动图、泳道图、顺序图);数据模型建模及其UML表达(类图);行为模型建模及其UML表达(状态机图)。
三、软件设计与构造软件体系结构及体系结构风格的概念;设计模式的概念;模块化设计的基本思想及概念(抽象、分解、模块化、封装、信息隐藏、功能独立);软件重构的概念;软件体系结构的UML建模(包图、类图、构件图、顺序图、部署图);接口的概念;面向对象设计原则(开闭原则、Liskov替换原则、依赖转置原则、接口隔离原则);内聚与耦合的概念、常见的内聚和耦合类型。
四、软件测试软件测试及测试用例的概念;单元测试、集成测试、确认测试、系统测试、回归测试的概念;调试的概念、调试与测试的关系;测试覆盖度的概念;白盒测试、黑盒测试的概念;代码圈复杂度的计算方法;白盒测试中的基本路径测试方法;黑盒测试中的等价类划分方法。
第二部分计算机系统基础考试题型:问答、分析、编程总分:40分一、处理器体系结构内容:CPU中的时序电路、单周期处理器的设计、流水线处理器的基本原理、Data Hazard的处理、流水线设计中的其他问题二、优化程序性能内容:优化程序性能、优化编译器的能力和局限性以及表示程序性能、特定体系结构或应用特性的性能优化、限制因素、确认和消除性能瓶颈三、存储器结构及虚拟存储器内容:局部性、存储器层级结构、计算机高速缓存器原理、高速缓存对性能的影响、地址空间、虚拟存储器、虚拟内存的管理、翻译和映射、TLB、动态存储器分配和垃圾收集四、链接、进程及并发编程内容:静态链接、目标文件、符号和符号表、重定位和加载、动态链接库、异常和进程、进程控制和信号、进程间的通信、进程间信号量的控制、信号量,各种并发编程模式,共享变量和线程同步,其他并行问题五、系统级I/O和网络编程内容:I/O相关概念、文件及文件操作、共享文件、网络编程、客户端-服务器模型,套接字接口、HTTP请求,Web服务器第三部分数据结构与算法考试题型:问答、分析、编程总分:60分一、栈(Stack)、队列(Queue)和向量(Vector)内容:单链表,双向链表,环形链表,带哨兵节点的链表;栈的基本概念和性质,栈ADT及其顺序,链接实现;栈的应用;栈与递归;队列的基本概念和性质,队列ADT及其顺序,链接实现;队列的应用;向量基本概念和性质;向量ADT及其数组、链接实现;二、树内容: 树的基本概念和术语;树的前序,中序,后序,层次序遍历;二叉树及其性质;普通树与二叉树的转换;树的存储结构,标准形式;完全树(complete tree)的数组形式存储;树的应用,Huffman树的定义与应用;三、查找(search)内容: 查找的基本概念;对线性关系结构的查找,顺序查找,二分查找;Hash查找法,常见的Hash函数(直接定址法,随机数法),hash冲突的概念, 解决冲突的方法(开散列方法/拉链法,闭散列方法/开址定址法),二次聚集现象;BST树定义,性质,ADT及其实现,BST树查找,插入,删除算法;平衡树(AVL) 的定义,性质,ADT及其实现,平衡树查找,插入算法,平衡因子的概念;优先队列与堆,堆的定义,堆的生成,调整算法;范围查询;四、排序内容: 排序基本概念;插入排序,希尔排序,选择排序,快速排序,合并排序,基数排序等排序算法基本思想,算法代码及基本的时间复杂度分析五、图内容:图的基本概念;图的存储结构,邻接矩阵,邻接表;图的遍历,广度度优先遍历和深度优先遍历;最小生成树基本概念,Prim算法,Kruskal算法;最短路径问题,广度优先遍历算法,Dijkstra算法,Floyd算法;拓扑排序。
复旦大学软件工程考研(MSE)数据结构复习资料
树
大纲描述: 树的根本概念和术语;树的前序、中序、后序
、层次序遍历; 二叉树及其性质;普通树与二叉树的转换; 树的存储构造,标准形式;完全树(complete
tree)的数组形式存储; 树的应用,Huffman树 。
树的根本概念和术语
树: 是n〔n≥0〕个结点的有限集 在任意一棵非空树中: 有且仅有一个特定的称为根的结点 当n>1时,其余结点可以分为m〔m>0〕个互
练习答案
树的遍历
树的遍历
按某种搜索路径巡访树中每个结点,使每个结点均 被访问一次仅且一次
二叉树的遍历可分为前序、中序、后序、层次序等 普通树的遍历可以分为先根、后根、层次序等
树的遍历
二叉树的遍历 前序、中序、后序定义 层次序:从上而下,从左至右 常见问题 树写遍历结果 遍历结果画树 依据:二叉树的前序和中序遍历可以唯一确定
中缀表达式A-(B+C)*D/E的后缀形式是 _________________。
练习
中缀表达式a * ( b + c ) / d转为后缀表达式是 ————?
例题
计算后缀表达式1 2 + 4 * 2 /的值为——?
答案:6 思路:
顺序计算 或 转换为中缀表达式计算
习题
计算后缀表达式3 2 - 4 * 2 / 3+的值为—— ?
例题
例题
列出如上图所示树的所有叶子结点 答案:K,L,F,G,M,I,J
列出如上图所示树的所有分支结点 答案:A,B,C,D,E,H
树A为几次树?子树B呢?
答案:3,2
前页图所示树的高度为多少?
答案:4
树的根本概念和术语
如果将树中结点的各子树看作从左到右有序的 ,那么该树为有序树(ordered tree),否那么为无 序树。
复旦MSE复习资料-软件工程(SE02 软件需求分析2011)
其他几种关于"需求"的定义
*需求是用户所需要的并能触发一个程序 或系统开发工作的说明; *需求是从系统外部能发现系统所具有的 满足于用户的特点、功能及属性等; *需求是指明必须实现什么的规格说明。 它描述了系统的行为、特性或属性,是在 开发过程中对系统的约束。
一条鸿沟
• 建造软件系统的过程中,我们经常习惯地 沿用一些不规范的方法,其后果便是产生 一条鸿沟--开发者开发的与用户所想得到的 软件存在着巨大的"期望差异"。
数据流图举例
• 教务人员维护学生信息和课程信息,并登 录学生的选课成绩; 学生查询自己的成绩单。0层
数据流图举例
• * 第1层DFD图 对第0层DFD图中的一个加工"学生成绩管 理"进行展开。
数据流图举例
• 第2层DFD图 对第1层DFD图中的一个加工"查询学生成 绩"进行展开
鸿沟产生的原因
• 我们也许会问:为什么人们开发一个软件系统会 比建造一座摩天大厦要难得多? • 一是因为软件行业缺乏准确而又统一的语言来定 义或描述相应的工作,真正的"需求"实际上存在 于人们的头脑中; • 二是因为软件开发过程难以用一种工程化的方法 来统一规范和有效实施。因此"需求"这个名词的 定义不仅仅是从用户角度对系统外部行为的描述 ,以及从开发人员角度对系统内部特性的描述, 其关键的一点是"需求"必须文档化。
软件需求包含着多个层次
• 实际上,软件需求包含着多个层次,不同层次的需求从不 同角度与不同程度反映着细节问题。 IEEE软件工程标准词汇表(1997年)将需求定义为: (1)用户解决问题或达到目标所需的条件或能力。 (2)系统或系统部件要满足合同、标准、规范或其 它正式规定文档所需具有的条件或能力。 (3)一种反映上面(1)或(2)所描述的条件或能 力的文档说明。 IEEE的定义包括从用户角度(系统的外部行为), 以及从开发者角度(一些内部特性)来阐述需求,其关键 的问题是一定要编写需求文档。
复旦大学软件工程考研[MSE]数据结构复习资料全
证明
完全树的数组形式存储
完全树的数组形式存储算法
将其编号为i的结点元素存储在一维数组下标为i-1 的分量中
例题
已知数组[20,30,19,87,30,40]表示一棵完全二 叉树,请画出该树。
练习答案
树的遍历
树的遍历
按某种搜索路径巡访树中每个结点,使每个结点均 被访问一次仅且一次
栈的基本概念和性质
栈:
栈是限定仅在表尾进行插入和删除操作的线性表 后进先出特性(LIFO) 栈顶、栈底、出栈、入栈
例题
设有一个栈S,元素S1, S2, S3, S4, S5, S6依 次进栈,如果6个元素的出栈顺序为S2, S3, S4, S6, S5, S1,则栈的容量至少应为多少?
树的基本概念和术语
树:
是n(n≥0)个结点的有限集 在任意一棵非空树中:
1. 有且仅有一个特定的称为根的结点 2. 当n>1时,其余结点可以分为m(m>0)个互不相交的有
限集,其中每个集合本身又是一棵树,并且称为根的子 树
树属于层次结构数据结构
树的基本概念和术语
节点
标签
父节点、子节点、兄弟 节点、祖先节点、子孙 节点
将算法3.1中8换成d
例题
十进制数1167等于八进制数——?
答案: 2217 思路:
计算方法:除余倒排法 验证方法:指数相加法
习题
十进制数1167等于七进制数——?
栈的应用
表达式求值:
中缀表达式转后缀表达式
后缀表达式求值
三种表达式:
前缀表达式
+ab
例题答案
树的遍历
软件工程复习资料
软件工程复习资料1. 软件工程概述软件工程是一门研究如何构建和维护软件系统的学科。
它涵盖了软件开发的各个方面,包括软件需求、设计、编码、测试、维护等。
本节将对软件工程的基本概念和重要原理进行介绍。
1.1 软件工程的定义软件工程是一种应用工程原理、方法和工具来开发和维护高质量软件的系统工程。
它关注软件开发过程中的各个环节,以提高软件质量和开发效率。
1.2 软件工程的目标软件工程的目标是开发高质量的软件系统,满足用户需求,具备良好的可维护性和可扩展性。
通过采用合适的开发方法和工具,提高软件开发过程的可靠性和效率。
1.3 软件工程的原则软件工程遵循一些重要的原则来指导软件开发过程,包括模块化、抽象、信息隐藏、接口规范、单一职责等原则。
这些原则有助于提高软件质量和可维护性。
2. 软件开发过程软件开发过程是指将软件需求转化为可执行软件的过程。
它包括需求分析、设计、编码、验证和维护等阶段。
本节将介绍常用的软件开发过程模型和相应的方法。
2.1 瀑布模型瀑布模型是一种线性的软件开发过程模型,包括需求分析、设计、编码、测试和维护等阶段。
瀑布模型适用于需求稳定的项目,但不适用于需求频繁变更的项目。
2.2 敏捷开发敏捷开发是一种迭代的软件开发过程模型,强调快速反馈和适应需求变化。
敏捷开发方法包括Scrum、XP等。
它适用于需求不确定或频繁变更的项目。
2.3 增量开发增量开发将软件系统划分为多个增量,每个增量包含了一个或多个功能模块。
每个增量的开发和测试独立进行,逐步完善系统。
增量开发适用于大型项目和复杂项目。
2.4 软件开发过程的选择选择适合项目的软件开发过程模型非常重要。
需要考虑项目的规模、需求的稳定性、团队的能力等因素来决定采用哪种开发过程模型。
3. 软件需求工程软件需求工程是软件工程的一项重要活动,旨在准确捕获用户需求,并将其转化为可执行的软件需求规格。
本节将介绍软件需求的定义、分类和常用的需求获取和分析方法。
软件工程复习资料-完整版
软件工程复习资料-完整版一、概述软件工程是一门关于开发、维护和管理软件的综合学科。
它涵盖了软件开发的各个阶段,包括需求分析、设计、编码、测试和维护。
软件工程的目标是提供高质量的软件,满足用户的需求,同时将开发过程控制在预定的时间和预算范围内。
二、软件生命周期1. 需求分析阶段在需求分析阶段,开发团队与用户沟通,了解用户的需求和期望。
通过需求分析,确定软件的功能和性能要求,制定详细的需求规格说明。
2. 设计阶段在设计阶段,团队根据需求规格说明,设计软件的整体架构和模块。
设计阶段包括概要设计和详细设计,概要设计主要确定软件的整体结构,详细设计则更加具体,包括模块的功能和接口设计。
3. 编码阶段在编码阶段,根据详细设计,实现软件的各个模块。
编码时应遵循编程规范,确保代码的可读性和可维护性。
同时,要进行单元测试,确保每个模块的功能正确。
4. 测试阶段在测试阶段,对软件进行不同层次的测试,包括单元测试、集成测试和系统测试。
单元测试测试各个模块的功能,集成测试测试模块之间的接口,系统测试测试整个系统的功能和性能。
5. 部署和维护阶段在软件开发完成后,需要将软件部署到目标环境中,并进行用户培训。
同时,还需要对软件进行维护和升级,以解决出现的问题和满足用户的需求变化。
三、软件工程的原则1. 模块化将软件划分为多个模块,每个模块负责特定的功能。
模块化能够提高软件的可维护性和复用性,同时有利于团队的协作开发。
2. 可伸缩性软件应该具备可伸缩性,能够满足不同规模和需求的用户。
在设计和实现软件时,需要考虑未来的扩展和升级,保证软件的灵活性。
3. 可测试性软件应该具备可测试性,方便进行各个阶段的测试。
在设计和编码时,需要考虑如何进行自动化测试,提高测试的效率和覆盖率。
4. 可维护性软件应该具备可维护性,方便对软件进行改进、修复和升级。
在设计和编码时,需要遵循良好的编程规范,提高代码的可读性和可维护性。
5. 文档化软件开发过程需要进行详细的文档记录,包括需求文档、设计文档、测试文档等。
复旦MSE高级数据库技术复习资料
高级数据库技术复习资料(2011年10月)本次考试范围请关注教科书相关章节课后练习的奇数计算题部分。
一.缓冲区管理(Buffer Management)【书: P239;PPT: Storing data;答案请打印: P118-P126(以备不时之需)】课堂练习,基于LRU(least recently used)算法,计算经过get(7), get(2), get(6), pin(7), get(1), get(3), unpin(7), get(2)操作后,缓冲区中的值和Miss次数。
操作完成后,缓冲区中的值为7, 2, 3;Miss次数为6。
二.B+树(要求:给一课树,插入几个节点,删除几个节点,需要写出中间过程;约定:从左边借,右边是大于等于)【书: P257;PPT: Tree-Structured Indexes;答案请打印: P127-P145(以备不时之需)】考虑图10.27所示的秩d=2的B+树索引。
图10.271)把码值为9的数据项插入原始树,显示得到的树。
2)把码值为3的数据项插入原始树,显示得到的B+树。
插入需要多少页的读操作和多少页的写操作?答:插入需要4页的读操作,5页的写操作,并分配2个新的页。
3)把码值为8的数据项从原始树中删除,显示得到的B+树,并假设对可能的重分布检查左兄弟。
4)把码值为8的数据项从原始树中删除,显示得到的B+树,并假设对可能的重分布检查右兄弟。
5)从原始树开始插入码值为46的数据项后,再删除码值为52的数据项,显示得到的B+树。
6)把码值为91的数据项从原始树中删除,显示得到的B+树。
7)从原始树开始插入码值为59的数据项后,再删除码值为91的数据项,显示得到的B+树。
8)连续把码值为32,39,41,45和73的数据项从原始树中删除,显示得到的B+树。
三.连接操作Join algorithms(要求:给出关系R和S,求BNM、I/O次数,需要了解循环嵌套算法,尤其是块循环BNL(Block Nested Loops)算法、排序归并SMJ(Sort Merge Join)算法、HASH算法,只需要考虑一般的HASH,不需要考虑混合HASH的情况)【书: P337;PPT: Implementation of Relational Operations;答案请打印: P186-P201(以备不时之需)】相关公式:1)嵌套循环连接算法:M+M×N(M是外关系)2)块嵌套循环连接算法(没有缓冲区):M+N3)块嵌套循环连接算法(有缓冲区):M+N×⌈M/(B−2)⌉4)块嵌套循环连接算法(有缓冲区,并直接给出缓冲区所能容纳的页数):M+N×⌈M/所能容纳的页数⌉5)排序归并连接算法:2×(⌈log B−1M/B⌉+1)×M+2×(⌈log B−1N/B⌉+1)×N+M+N6)排序归并连接算法(优化后): 3×(M+N)7)哈希连接算法:3×(M+N)考虑练习14.1中关系R和S的连接。
软件工程复习资料(提纲+答案)
软件工程复习资料(提纲+答案)第一章软件工程的实质1、什么是软件?由什么组成?软件:是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档组成的完整集合。
可以写作为:软件=程序+数据+文档。
2、什么是软件危机?为什么会产生?(原因)软件危机:指的是在计算机软件的开发和维护过程中所遇到的一系列严重的问题。
原因:用户需求不明确、缺乏正确的理论指导、软件规模越来越大、软件复杂度越来越高3、为什么要进行软件开发?4、软件工程的三段论?三段论:软件项目管理论、软件项目开发论、软件过程改进论5、软件工程生存期模型概念、类型、每种类型的特点?答:软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。
软件生存周期模型确立了软件开发和演绎中各阶段的次序限制以及各阶段或机动的准则,确立开发过程所遵守的规定和限制,便于各种活动的协调,便于各种人员的有效通信,有利于活动重用,有利于活动管理。
常见的软件生存周期模型有瀑布模型、V模型、原型模型、增量式模型、螺旋式模型。
6、了解复用的原则第二章软件项目的需求分析1、需求分析的主要任务?(基本任务)答:需求分析阶段的基本任务是要准确的定义新系统的目标,满足用户需要,回答系统必须“做什么”的问题。
本阶段要主要有以下几方面工作:(1)问题识别,双方确定对问题的综合需求,包括:功能需求、性能需求、用户界面需求,以及可靠性、安全性、可维护性等方面的需求。
(2)建立模型,对获取的需求,进行分析细化,划分系统功能,确定系统构成,并建立系统的逻辑模型。
(3)编写文档,也就是完成“需求规格说明书”的编写工作。
2、需求分析分两大块(功能与非功能)功能需求描述系统所预期提供的功能或服务。
非功能需求是对系统提供的服务或功能给出的约束。
包括时间约束、开发过程的约束、标准等。
3、(P27)需求建模的基本方法?答:关联模型、行为模型(数据流模型和状态机模型)、数据模型、面向对象模型、结构化模型(技术:数据流图(DFD)、数据字典(DD)、系统流程图)以及其他方法(如原型法、功能列表等)4、结构化方法的代表?(P29)7状态图活动图8、理解好数据流图为什么要分层?9、UML中常用的9种图?(P32 把包图去掉)静态图:类图、对象图、构件图、实施图和包图。
MSE考研复习
24
计算机网络的分类
按网络覆盖的范围分类 按拓扑结构分类 按信息交换方式分类
25
按网络覆盖的范围分类
局域网LAN 校园网CAN 城域网MAN 广域网WAN 全球网GAN (Local Area Network) (Campus Area Network) (Metropolitan Area Network) (Wide Area Network) (Global Area Network)
报文交换 分组交换
数据报 虚电路方式
30
网络通信标准化组织
标准化工作的好坏对一种技术的发展有着很大 的影响,缺乏国际标准将会使技术的发展处于 比较混乱的状态,而盲目自由竞争的结果很可 能形成多种技术体制并存且互不兼容的状态 1992年,因特网不再归美国政府管辖,因此成 立了一个国际性组织叫做因特网协会ISOC (internet Society),以便对因特网进行全 面管理以及在世界范围内促进其发展和使用。 ISOC下面有一个技术组织叫做因特网体系结构 研究委员会 IAB (Internet Architecture Board),负责管理因特网有关协议的开发。 IAB下面又设有两个工程部。
传输介质
41
ISO/OSI参考模型
1. 物理层(The Physical Layer)
在物理线路上传输原始的二进制数据位(基本网络硬件)。
2. 数据链路层(The Data Link Layer)
数据报分组交换112虚电路分组交换在数据传送之前先建立站与站之间的一条逻辑通路不是专用的通路分组在每一个节点上仍需缓冲并在线路上进行排队等待输出一个站能和任何站建立多个虚电路也能与多个站建立虚电路每条虚电路支持特定的二个端系统之间的数据传输每个分组除了数据之外还有一个虚电路标识节点根据虚电路标识知道把这些分组引导到哪里113虚电路方式数据交换过程114虚电路分组交换提供可靠的通信功能能对差错流量顺序进行控制每个节点要有一张虚电路表存放已经建立的虚电路信息当某个节点或某条线路出故障时所有经过该节点线路的虚电路立即被破坏115数据报分组交换特点
复旦MSE复习资料软件工程(SE03软件设计2011)
1.耦合
耦合有以下5类:
① 数据耦合:模块间通过参数传递基本类型的数据,称 为数据耦合。
② 标记耦合:模块间通过参数传递复杂的内部数据结构, 称为标记耦合。此数据结构的变化将使相关的模块发 生变化。
③ 控制耦合:一个模块在界面上传递一个信号(如开关 值、标志量等)控制另一个模块,接收信号的模块的 动作根据信号值进行调整,称为控制耦合。
– 模块之间相互调用时,传递的参数最好只有一个,最 多不超过四个。
– 在设计模块时尽量做到把模块之间的连接限制到最少, 模块环境的任何变化,都不应引起模块内部发生改变。
2.内聚
• 一个模块内各个元素彼此结合的紧密程度 用内聚来度量。
• 理想的模块只完成一个功能,模块设计的 目标之一是尽可能高的内聚。
• 模块的作用域与控制域 – 模块的作用域是指模块中判定的影响范围。 – 模块的控制域是指模块本身及其直接或间接调用的模块。
模块化
• 模块化(Modularization)是把系统分割 成能完成独立功能的模块,明确规定各模 块及其输入输出规格,使模块的界面不会 产生任何混乱。
• 在软件工程中,模块化是大型软件设计的 基本策略。在软件系统模块化时,最重要 的原理是模块独立性,而模块独立性要求 模块之间低耦合和模块内部高内聚。
软件设计概述
• 概要设计:将软件需求转化为数据结构和软件的系统结 构。概要设计只是描绘出软件的总体框架,根据功能、 性能需求和数据需求导出软件的数据结构和系统结构。
• 概括地说,概要设计进行数据设计/数据库设计和系统 体系结构设计。
• 概要设计主要完成以下任务: • 制定规范; • 软件系统结构的总体设计; • 数据库设计; • 概要设计评审。
软件工程复习资料全
软件工程复习材料一、考试复习围:1、软件工程基本概念、基本原理2、需求分析,结构化分析、面向对象分析,结构化分析建模、面向对象分析建模3、软件设计,结构化程序设计,概要设计、详细设计4、软件测试二、考试题型:单项选择题、简答题、综合应用题(要求会画:数据流图、软件结构图、用例图、类图、N-S盒图、PAD图)三、复习容:1、什么是软件危机?人们把软件开发和维护中的各种问题称为“软件危机”。
2、软件危机主要包含哪两方面的问题?①如何开发软件以满足软件日益增长的需求。
②如何维护数量不断增长的已有软件。
3、软件危机的表现有哪些?①对软件开发成本和进度的估算很不准确。
②用户对完成的软件很不满意。
③软件产品的质量很不可靠。
④没有完整的文档。
⑤软件成本比重上升。
⑥软件开发生产效率低下,软件开发技术进步落后与需求的增长,造成“供不应求”的局面。
4、什么是软件工程?软件工程的定义:采用工程的概念、原理和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。
5、.软件工程包括3个要素有哪些?方法、工具和过程。
6、软件生命周期各阶段有哪些?软件生命周期包括:软件定义、软件开发、软件维护三个时期。
其中:软件定义包括:问题定义、可行性研究、需求分析阶段;软件开发包括:总体设计、详细设计、编码、软件测试阶段。
7、需求分析的任务有哪些?需求分析的任务主要有两个方面:①通过对问题及环境的理解、分析和综合,建立分析模型。
②在完全弄清用户对软件系统的确切要求的基础上,用“软件需求规格说明书”把用户的需求表达出来。
8、软件系统需求分类是哪些?软件系统需求可以分为功能需求、非功能需求和领域需求:1)功能需求描述系统所预期提供的功能或服务。
即定义系统应该做什么,系统要求输入什么信息,输出什么信息,以及如何将输入变换为输出。
它由开发的软件类型、软件未来的用户以及开发的系统类型决定。
软件工程复习资料完整版
一、选择题:、用例图中,用来表示用例的符号为()。
、协作图中包含的元素包括()。
. 对象. 链. 激活. 消息、在类图中,哪种关系表达整体与部分的关系()。
.泛化. 实现. 依赖. 聚合、下列各种图形符号中,用来表示组成关系的符号为()。
. . . .、()工具在软件的详细设计中不能使用。
.. 图. 流程图.、“软件危机”是指()。
. 计算机病毒的出现 . 利用计算机进行经济犯罪活动. 软件开发和维护中出现的一系列问题 . 人们过分迷恋计算机系统、快速原型是利用原型辅助软件开发的一种新思想,它是在研究()的方法和技术中产生的。
. 需求阶段. 设计阶段. 测试阶段. 软件开发的各个阶段、从严格意义上讲,下列个选项中属于顺序图的元素是()。
. 对象. 参与者. 消息. 激活、下列图形中,()属于的动态视图。
. 协作图. 状态图. 活动图. 顺序图、数据字典是软件需求分析阶段的最重要的工具之一,其最基本的功能是()。
. 数据库设计. 数据通信. 数据关系描述. 数据定义、详细设计与概要设计衔接的图形工具是()。
. 图. 程序图. 图. 图、中,大多数建模者把节点分为()A. 设备. 构件. 处理器. 显示器、()是一种特殊形式的状态机,用于对计算流程和工作流程建模。
.时间图. 流程图. 活动图. 状态图、()描述从状态到状态的控制流程,常用来对系统的动态特征进行建模。
. 状态图. 序列图. 协作图. 活动图、下列特点属于描述用例的特点的是()。
. 相对独立:不需要与其他用例交互,即功能是完备的. 用例的执行结果是可观测有意义的. 用例由参与者发起(不能自启动,或者由其他用例启动). 一个用例是一个单元(需求单元、分析单元、设计单元、开发单元、测试单元、部署单元) 、在图书管理系统中,读者与书籍之间的“借阅”关系的多重性是(). :. :. :…. …:…、我希望能够支持跨行业务;我插入卡片输入密码后可以让我选择是取钱还是存钱;为了方便,可以设置一些默认的存取金额按钮;我可以修改密码,可以挂失;我希望可以缴纳电话费、水费、电费等;为安全起见,应该有警示小心骗子的提示条,有摄像头;如果输入三次密码错误,卡片应当可以自动吞没;下列那些是有效的用例(). 支持跨行业务. 取钱. 存钱. 选择服务、快速原型法适用于()系统的开发。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2
参考教材
• 计算机系统基础
• 袁春风 • 机械工业出版社
• 深入理解计算机系统的 子集
3
课程概要
• 程序的结构和执行
• 处理器的结构 • 存储系统 • 程序性能的优化 • 程序的链接 • 进程 • 虚拟存储系统
• 程序在系统中的运行
• 程序间的通信和交互
• 系统I/O • 网络编程 • 并发编程
8
考试大纲和解读
9
处理器系统结构
• CPU中的时序电路 • 单周期处理器的设计 • 流水线处理器的基本原理 • 数据冒险(Data Hazard)的处理 • 流水线设计中的其它问题
10
解读-基础
• 信息在计算机上的表示
• 整数 • 浮点数 • 数据的大小和顺序(大小端) • • • • 数据访问 算术和逻辑运算 数组的表示和访问 复杂数据结构的表示
16
虚拟存储系统
• 地址空间 • 虚拟存储 • 虚拟存储的管理 • 翻译和映射 • TLB • 动态内存管理 • 垃圾收集
17
18
解读
• 地址类型
• 页 • 请页
• 内存管理
• 地址转换
• 物理地址、虚拟地址
• 动态内存的管理
• 页表 • TLB(加速)
• 为什么 • 方法
• 垃圾回收
• 标记-清扫
19
链接
• 静态链接 • 目标文件 • 符号和符号表 • 重定位和加载 • 动态链接库
20
解读
21
进程
• 异常 • 进程 • 进程控制 • 信号和信号量 • 进程间的通信 • 进程间信号量的控制
22
解读
• 异常 • 进程
• 主控流程/其他事物 • 中断 • CPU的虚拟化 • 上下文 • 核心/用户
15
解读
• 理解程序的执行
• 程序的正确性 • 过程/函数调用的代价
• 编译器优化的局限
• 结构无关的优化
• 消除循环的低效 • 减少函数调用 • 减少不必要的内存访问 • 多功能单元 • 流水 • 周期数和时延 • 数据的依赖 • 提高并行 • 循环展开
• 现代处理器的理解
• 体系结构相关的优化
13
解读
• 不同介质的特征
• 高速缓存 • 内存 • 外存 • 指令 • 数据
• 程序运行的局部性 • 高速缓存对程序性能的影响 • 高速缓存的形式
• 直接映射 • 全相关 • 组相关
• 命中率
14
优化程序性能
• 优化程序性能 • 编译器优化的能力和局限 • 程序性能的表示 • 应用特性(体系结构无关)的优化 • 体系结构相关的优化 • 限制因素 • 发现和消除性能瓶颈
4
计算机的抽象模型
Instructions / Program
Main Memory
Arithmetic Unit
AC
Control Unit
PC IR SR
Addresses
Input/Output Unit E.g. Storage
5
桌面计算机-IA32
6
桌面计算机-Core i7
7
计算机系统
• 程序的表示(汇编指令)
• 程序动态表示
• 控制 • 过程调用
• 栈 • 参数传递
11
解读
• 指令集
• 格式 • 逻辑门 • 组合电路 • 时钟 • 时序 • 阶段
• 电路的基本概念
• 顺序电路 • 流水线
12
存储器结构
• 存储器层级结构 • 局部性
• 计算机高速缓存器(Cache)的原理
• 高速缓存对系统性能的影响
计算机系统基础
MSE, 复旦大学 2016/来自1/20占总分150分中的40分 完整考点掌握有一定难度 建议 量力而行
参考教材
• 深入理解计算机系统,第2版
• Randal E.Bryant, David O'Hallaron • 龚奕利,雷迎春 • 机械工业出版社
• Computer Systems: A Programmer's Perspective (2nd Edition)
26
• 信号的机制
23
并发编程
• 各种并发编程模式 • 共享变量 • 线程同步 • 其它并行问题
• • • • 线程安全 可再入 竞争 死锁
24
系统I/O
• I/O概念 • 文件 • 文件操作 • 共享文件
25
网络编程
• 网络 • 客户端/服务器模型(Client/Server) • 套接字接口(Socket) • HTTP请求 • Web服务器