
操作系统设计报告总结
软程学习心得在期的软件工程课程的学习中,我们学习了十一章容。
第一章软软件工程的概念,这一章主要讲解的是一些概念性和基础性的内容,例如软件的概念、特性,软件危机的主要表现,软件工程的概念以及软件生存期、典型生存期模型等等。
第二章软件工程方法与工具,这一章主要对软件工程方法进行介绍,包括三种方法:传统方法、面向对象方法、形式化方法。
还引出了工具UML。
第三章软件需求获取与结构化分析方法,本章详细介绍了需求获取与需求分析阶段的任务以及结构化分析方法,画分层的数据流图、E-R图以及状态图式本节的重点。
第四章结构化分析方法,这一章重点讲解了使用变换型映射方法和事务型映射方法生成初始的模块结构以及模块结构的改进。
第五章编码,这一章重点讲解了编码的风格及规范,还告诉我们编码规范说带来的好处,并告诫我们将来一点要形成好的编码风格。
第六章软件测试方法,本章讲解了软件测试相关的概念及重要性,软件测试与开发各个阶段的关系;还介绍了白盒测试技术以及黑河测试技术。
第七章统一建模语言UML概述,本章详细介绍了UML的基本模式、事物、关系及建模时用到的各种图进行了介绍。
第八章面向对象分析,这一章主要讲解了面向对象分析的3种模型,包括功能模型、静态模型和动态模型。
第九章软件体系结构与设计模式,本章对软件体系结构的基本概念、典型风格等进行了讲解。
第十章面向对象设计,本章的重点是对面向对象分析时建立的对象模型进行调整和细化。
第十一章软件维护,本章主要介绍软件维护的任务、软件维护活动以及软件维护方法进行了介绍。
要学习软件工程,学会如何系统的思考,以及养成良好的编码习惯,想学好软件工程,就必须知道软件工程的目标、过程和原则: 软件工程目标:生产具有正确性、可用性以及开销合宜的产品。
正确性指软件产品达到预期功能的程度。
可用性指软件基本结构、实现及文档为用户可用的程度。
开销合宜是指软件开发、运行的整个开销满足用户要求的程度。
这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。
软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。
软件工程过程主要包括开发过程、运作过程、维护过程。
它们覆盖了需求、设计、实现、确认以及维护等活动。
需求活动包括问题分析和需求分析。
问题分析获取需求定义,又称软件需求规约。
需求分析生成功能规约。
设计活动一般包括概要设计和详细设计。
概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。
详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。
实现活动把设计结果转换为可执行的程序代码。
确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。
维护活动包括使用过程中的扩充、修改与完善。
伴随以上过程,还有管理过程、支持过程、培训过程等。
软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。
我们学习了详细设计的方法,其原则是过程描述是否易于理解、复审和维护,进而过程描述能够自然地转换成代码,并保证详细设计与代码完全一致。
包括程序流程图、N-S图、PAD图、HIPO图程序流程图:程序流程图又称之为程序框图,它是软件开发者最熟悉的一种算法表达工具。
它独立于任何一种程序设计语言,比较直观和清晰地描述过程的控制流程,易于学习掌握。
在流程图中只能使用下述的五种基本控制结构:顺序型;选择型;while型循环;until型循环;多情况型选择。
N-S图:一种符合结构化程序设计原则的图形描述工具,称为盒图,又称为N-S图。
在N-S图中,为了表示五种基本控制结构,规定了五种图形构件。
顺序型;选择型;WHILE重复型;UNTIL重复型;多分支选择型。
PAD图:它是用结构化程序设计思想表现程序逻辑结构的图形工具。
PAD也设置了五种基本控制结构的图示,并允许递归使用。
HIPO图:HIPO图是由一组IPO图加一张HC图组成。
它是美国IBM公司在软件设计中使用的主要表达工具。
HC图既是层次图,用于表示软件的分层结构。
HC图中的每一个模块,均可用一张IPO图来描述。
IPO 图由输入、处理和输出三个框组成,需要时还可以增加一个数据文件框,这种图形的优点,是能够直观地显示输入—处理—输出三者之间的联系。
还有测试方法:按照测试过程是否在实际应用环境中来分,有静态分析与动态测试。
测试方法有分析方法(包括静态分析法与白盒法)与非分析方法(称黑盒法)。
静态分析技术:不执行被测软件,可对需求分析说明书、软件设计说明书、源程序做结构检查、流程分析、符号执行来找出软件错误。
动态测试技术:当把程序作为一个函数,输入的全体称为函数的定义域,输出的全体称为函数的值域,函数则描述了输入的定义域与输出值域的关系。
还学习了其他很多工具、语言、方法等,虽然不是都学得很透彻,但我相信在今后的学习中一定会慢慢的完善的。
软件工程对于初学者来说,知识基础较薄弱,对一些应用操作、概念、工具方法等理解起来较为困难,要能从整体概念上较好地理解和把握、学好软件工程,不是仅仅把几本专业书籍细致地看几遍,然后上机练习几次就可以成功,学习过程中要注意多看多练要注意结合实际,更要多思考,面对错误不要一范就问,要尝试自己去解决。
但是还要注意什么都学,肯定是什么都学不透的,要集中精力打攻坚战,学习软件工程首先要明白自己的学习目标究竟是什么,根据自己的实际工作出发,有针对性的在相应的学习方向上进行提高,制定出详细的学习规划。
还要注意与其他科目的相辅相成,就像我们在学习面向对象分析的时候要结合大一学习的面向对象及其方法学这一专业科目进行研究拓展;在学习语言时,要看看与C语言的联系,多思多想,把从各个科目学到的知识通汇贯通。
在软件工程的学习中,我了解到了软件并非是一些代码这么简单,在开发软件的过程中,编写代码的工作量其实只占不到所有工程量的30%,而后期的管理和维护更是占了60%到80%之多。
一个完整的项目规划须包括,软件的定义,可行性分析报告,项目开发计划,软件需求说明书,概要设计说明书,详细设计说明书,用户操作手册,测试计划,测试分析报告,开发进度报告,项目开发总结报告,软件维护手册,软件问题报告,软件修改报告,等多个文档,每个文档都要上级验收审查,而文档数量众多,要做好这点真的不是很容易,而恰恰写好文档正能保证完成软件工程其中一个目的的关键,既研究如何用最小的开销做出生存期较长的软件,再加上各个阶段都要进行周密的策划、详细的分工部署和人员安排,且各阶段要据具体情况不断的反复才能达成,所以代码只是开发软件这个浩大的工程的一个小小的过程。
而编码的学习中,我更了解到形成自己独特的规范的编码风格是非常重要的事。
因为这影响到了软件后期繁重的维护,大家都要阅读你的程序,如果你写的程序毫无规范可言,那么别人怎么能读懂你的程序
读不懂程序,维护又从何谈起呢
所以,我们在今后的学习中,一定要注意这方面的培养,在写程序的过程中,要逐步的在规范的基础上形成属于自己的风格,即方便自己的修改,也方便日后他人的阅读。
在学习中,我们还要注意比较三种方法的优缺点,例如:传统方法虽然使软件摆脱了混乱和无序,但其在适应需求变化的方面不够灵活,而且传统方法要么面向行为,要么面向数据,缺乏两者的有机结合。
而面向对象方法的程序设计和问题求解更符合人们日常自然的思维习惯,适合大型、复杂及交互性比较强的系统。
形式化方法则是一中基于形式化数学变换的软件开发方法,它可将系统的规格说明转换为可执行的程序。
在今后的学习中要注意多读书、多思考、多练习、多讨论,不断熟悉书本的基础,并以此为基础将其扩散开来,应用于今后的实践。
不断锻炼自己,向一名合格的程序设计师迈进。
操作系统的基本特征
操作系统有四个基本特 , 如下:1.并发(concurrence) 并行性发性这概念是既相似又的两个概念。
并行性是指两个或者多个事件在同一时刻发生,这是一个具有微观意义的概念,即在物理上这些事件是同时发生的;而并发性是指两个或者多个事件在同一时间的间隔内发生,它是一个较为宏观的概念。
在多道程序环境下,并发性是指在一段时间内有多道程序在同时运行,但在单处理机的系统中,每一时刻仅能执行一道程序,故微观上这些程序是在交替执行的。
应当指出,通常的程序是静态实体,它们是不能并发执行的。
为了使程序能并发执行,系统必须分别为每个程序建立进程。
进程,又称任务,简单来说,是指在系统中能独立运行并作为资源分配的基本单位,它是一个活动的实体。
多个进程之间可以并发执行和交换信息。
一个进程在运行时需要运行时需要一定的资源,如 cpu,存储空间,及i\\\/o设备等。
在操作系统中引入进程的目的是使程序能并发执行。
2.共享 (sharing) 所谓共享是指,系统中的资源可供内存中多个并发执行的进程共同使用。
由于资源的属性不同,故多个进程对资源的共享方式也不同,可以分为:互斥共享方式 和 同时访问方式 3.虚拟 (virtual) 是指通过技术吧一个物理实体变成若干个逻辑上的对应物。
在操作系统中虚拟的实现主要是通过分时的使用方法。
显然,如果n是某一个物理设备所对应的虚拟逻辑设备数,则虚拟设备的速度必然是物理设备速度的1\\\/n。
4.异步 (asynchronism) 在多道程序设计环境下,允许多个进程并发执行,由于资源等因素的限制,通常,进程的执行并非“一气呵成”,而是以“走走停停”的方式运行。
内存中每个进程在何时执行,何时暂停,以怎样的方式向前推进,每道程序总共需要多少时间才能完成,都是不可预知的。
或者说,进程是以一步的方式运行的。
尽管如此,但只要运行环境相同,作业经过多次运行,都会获得完全相同的结果,因此,异步运行方式是运行的。
可见,操作系统为了使程序并发执行而产生了进程。
进程的定义:可并发执行的程序在一个数据集合上的运行过程。
进程的特征:1.动态性 进程既然是进程实体的执行过程,因此进程是有一定的生命期。
而程序只是一组有序指令的集合,并放在某种介质上,本身无运行的含义,因此程序是个静态的实体。
2.并发性3.独立性 这是指进程实体是一个能独立运行的基本单位,同时也是系统种独立获得资源和调度的基本单位。
4.异步性5.结构特征 从结构上看,进程实体是由程序段、数据段及进程控制块三部分组成。
(进程控制块(PCB):进程控制块是进程实体的一部分,它记录了操作系统所需要的、用于描述进程情况及控制进程运行所需的全部信息。
os 是根据PCB来对并发执行的进程进行控制和管理的)关于进程的总结:定义:可并发执行的程序在一个数据集合上的运行过程,每个进程有一个自己的地址空间以及一个单一的控制流程。
要解决的问题:为了使程序能并发执行,(要并发执行就要隔离进程,使进程独立,即每个进程有属于自己的数据段、程序段、进程控制块)线程的出现: 我们首先回顾进程的两个基本属性:(1)进程使一个可拥有资源的独立单位 (2)进程同时又是一个可以独立调度和分派的基本单位。
正是由于这两个基本属性,才使进程成为一个能独立运行的基本单位,从而构成了进程并发执行的基础。
为了使程序能并发执行,系统必须进行以下操作:(1) 创建进程。
创建一个进程时必须为之人、分配所必需的、除处理器以外的所有资源,如内存空间、I\\\/O设备以及建立相应的PCB.(2) 撤消进程。
系统在撤消进程时,需要先对这这些资源进行回收,然后再撤销PCB.(3) 进程切换。
在对进程进行切换时,由于要保留当前进程的CPU环境和设置新选中的进程的CPU环境,为此须花费不少处理器时间。
简言之,由于进程是一个资源的拥有者,因而在进程的创建、撤销、和切换的过程中,系统必须为之付出较大的时空开销,也正因为如此,在系统中设置的进程的数目不宜过多,进程的切换的频率也不宜过高,但这也就限制了并发程度的进一步提高。
为了解决这个问题,不少操作系统的学者们想到:将进程的两个属性分开,由操作系统分开处理。
即对作为调度和分派的基本单位,不同时作为独立分配资源的单位,以使之轻装运行;而对拥有资源的基本单位,又不频繁地对之进行切换,在这种思想的指导下,产生了线程的概念。
线程引入的原因: 为了减少程序并发执行所付出的时空开销,使os具有更好的并发性。
在引入线程的os 中,线程是进程中的一个实体(进程中的一个或多个指令执行流),是被系统独立调度和分派的基本单位。
线程基本上不再拥有系统资源,(只拥有一点在运行中必不可少的资源,如程序计数器、寄存器和栈),但它可与同属一个进程的其他线程功能共享进程所拥有的全部资源。
线一个线程可以创建和撤销另一个线程;同一进程中的多个线程之间可以并发执行。
线程与进程的比较: 线程具有许多传统进程所具有的特征,故又称为轻型线程或进程元;而把传统的进程称为重型进程。
在引入了线程的os中,通常一个进程拥有若干个线程。
下面从四个方面来比较线程与进程。
1.调度 在“原始”的OS中,拥有资源的基本单位和独立调度、分配的基本单位都是进程。
而在引入线程的OS中,则把线程作为调度和分派的基本单位,而把进程作为资源拥有的基本单位,使传统进程的两个属性分开,线程便能轻装运行,从而可以显著的提高系统并发程度。
在同一进程中,线程的切换不会引起进程切换,在由一个进程中的线程切换到另一进程中的线程时,将会引起进程切换。
2.并发性 在引入线程的OS中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间亦可以并发执行,因而使OS具有更好的并发性,从而能更有效的使用系统资源和提高系统吞吐量。
3.拥有资源 不论是“原始”的OS,还是设有线程的操作系统,进程都是拥有资源的一个独立单位,它可以拥有自己的资源。
线程自己基本不再拥有系统资源,但它可以访问其隶属进程的资源。
4.系统开销 由于在创建或撤销进程时,系统都要为之分配或回收资源,如内存空间,I\\\/O设备等。
因为,OS所付出的开销将显著地大于在创建或撤销线程时的开销。
类似的,在进行进程切换时,涉及到整个当前进程CPU环境的保存以及新被调度运行的进程的CPU 环境设置。
而线程切换只须保存和设置少量寄存器的内容,并不涉及存储器管理方面的操作。
可见,进程切换的开销也远大于线程切换的开销。
此外,由于同一进程中的多个线程具有相同的地址空间,使它们之间的同步和通信的实现变得比较容易。
这个机制在现代操作系统的实现主要可分为两大类。
即根据操作系统内核是否对线程可感知,分为内核线程和用户线程。
1.内核线程 无论是用户进程中的线程还是系统进程中的线程,它们的创建、撤销和切换都是由内核实现的。
在内核中保留了一张线程控制块,内核根据该控制块而感知线程的存在并对线程进行控制。
2.用户线程 它仅存在于用户级中,对于这种线程的创建、撤销和切换,都不利用系统调用实现,因而这种线程与内核无关。
相应地,内核也并不知道用户级线程的存在。
( 调度的实现方式是采用在用户空间增加运行库,这些运行库被称为“线程包”,每当用户进程获得CPU控制权,线程运行库决定该从哪里开始运行)( 实际上,上面所说的线程是操作系统调度的基本单位,实际上指的只是内核线程。
操作系统在调度时,参考各进程内的线程运行情况做出调度决定,如果一个进程中没有就绪态的线程,那么这个进程也不会被调度占用CPU.在Windows 2000中,操作系统进行调度时根本就不理采线程是属于哪个进程的,只是将所有的就绪线程统一排成若干个优先级队列,然后进行调度。
在这个情况下,线程的确成了调度的最小单位)。
关于线程的总结:出现的背景:由于进程是一个资源的拥有者,因而在进程的创建、撤销、和切换的过程中,系统必须为之付出较大的时空开销,限制了并发程度的进一步提高。
要解决的问题:解决进程的创建、撤销、和切换的过程中,系统必须为之付出较大的时空开销的问题解决的方法:将进程的两个属性分开,由操作系统分开处理。
把“独立调度、分配的基本单位”这个属性分离出来作为线程;而把进程作为资源拥有的基本单位,线程作为进程中的一个实体而存在。
应用程序域的出现:(来自msdn) 在.net出现以前,一个进程下,只能运行一个应用程序,而在,net出现后,一个进程下,可以运行多个应用程序,这都是因为应用程序域的出现。
以前使用进程边界来隔离在同一台计算机上运行的应用程序。
每一个应用程序被加载到单独的进程中,这样就将该应用程序与在同一台计算机上运行的其他应用程序相隔离。
隔离这些应用程序的原因在于内存地址是与进程相关的;在目标进程中,不能通过任何有意义的方式使用从一个进程传递到另一个进程的内存指针。
此外,您不能在两个进程间进行直接调用。
您必须代之以使用代理,它提供一定程度的间接性。
应用程序域提供安全而通用的处理单元,公共语言运行库可使用它来提供应用程序之间的隔离。
您可以在具有同等隔离级别(存在于单独的进程中)的单个进程中运行几个应用程序域,而不会造成进程间调用或进程间切换等方面的额外开销。
在一个进程内运行多个应用程序的能力显著增强了服务器的可伸缩性。
隔离应用程序对于应用程序安全也是十分重要的。
例如,您可以在单个浏览器进程中运行几个 Web 应用程序中的控件,同时使这些控件不能访问彼此的数据和资源。
应用程序域所提供的隔离具有以下优点(引入原因): 在一个应用程序中出现的错误不会影响其他应用程序。
因为类型安全的代码不会导致内存错误,所以使用应用程序域可以确保在一个域中运行的代码不会影响进程中的其他应用程序。
能够在不停止整个进程的情况下停止单个应用程序。
使用应用程序域使您可以卸载在单个应用程序中运行的代码。
应用程序域形成了托管代码的隔离、卸载和安全边界。
线程是公共语言运行库用来执行代码的操作系统构造。
在运行时,所有托管代码均加载到一个应用程序域中,由特定的操作系统线程来运行。
应用程序域和线程之间不具有一对一的相关性。
在任意给定时间,在单个应用程序域中可以执行几个线程,而且特定线程并不局限在单个应用程序域内。
也就是说,线程可以自由跨越应用程序域边界;不为每个应用程序域创建新线程。
在任意给定时间,每一线程都在一个应用程序域中执行。
运行库会跟踪在哪些应用程序域中有哪些线程正在运行。
学生成绩管理系统测试总结报告
《软件测试》课程报目:学生成绩管理系统院系:计科学学院班级:软件一班:田欣1.测试概述1.1测试目的对学生成绩管理系统项目中所有的软件测试活动中,包括测试进度、资源、问题、风险以及测试组和其他组间的协调等进行评估,总结测试活动的成功经验与不足,以便今后更好的开展测试工作。
熟悉掌握软件测试的活动,以及练习学习的Java程序设计。
学生成绩管理系统使用了全新的成绩管理理念,系统从完善的基础信息管理,和对创建新用户、已创建的成绩数据的录入,修改,浏览,统计等功能操作,基本能够满足各高校教师的需要。
对此次项目中的所有软件测试活动中,包括测试内容,进度,以及存在的问题,会产生哪些风险有一个详细的了解,有利于以后做项目时的,对此类错误的避免或改正。
1.2测试范围学生成绩管理系统测试项目主要管理学生的成绩及其存档信息,只对系统的功能和时间进行测试,其性能不在测试范围之内。
主要功能包括:用户管理、查询管理、成绩录入管理、更新管理、统计管理、注册管理等。
用户管理:设置了权限管理功能,学生用户只能查询成绩信息,管理员可以完成其他操作。
查询管理:包括查询成绩和基本信息。
可以显示单独一条记录,也可以显示所有信息。
成绩录入管理:每次考试结束,管理员录入学生成绩信息。
更新管理:当有需要时,管理员可以进行成绩和信息的删除和修改操作。
统计管理:统计学生人数,缺考人数,平均成绩和不及格人数。
1.3参考资料1.4预期
操作系统:实验三 进程的死锁与饥饿实验报告
实验三 进程的死锁与饥饿实验报告一、单项选择题(共5题,每题10分,共50分)1、采用资源剥夺法可以解除死锁,还可以采用_B___方法解除死锁。
A.执行并行操作 B.撤销进程C.拒绝分配新资源 D.修改信号量2、产生死锁的四个必要条件是:互斥、_B___、循环等待、不剥夺。
A. 请求与阻塞 B.请求与保持C.请求与释放 D.释放与阻塞 3、银行家算法在解决死锁问题中是用于_B___的。
A. 预防死锁 B.避免死锁 C. 检测死锁 D.解除死锁4、在下列解决死锁的方法中,属于死锁预防策略的是__B__。
A.银行家算法 B.资源有序分配法C.死锁检测法 D.资源分配图化简法5、某系统中有3个并发进程,都需要同类资源4个,试问该系统不会发生死锁的最少资源数是_B___。
A.9 B.10 C.11 D.12二、填空题(共4题,每题5分,共20分)1、在有M个进程的系统中出现死锁时,死锁进程的个数K应该满足的条件是_2= 2、死锁产生的4个必要条件是:互斥条件、_请求和保持条件___、_不剥夺条件___和_环路等待条件___。 3、产生死锁的根本原因是_可共享资源不足___,另一个基本原因是_进程的推进顺序不当___。 4、银行间算法中,当一个进程提出的资源请求将导致系统从_安全状态___进入_不安全状态___时,系统就拒绝它的资源请求三、 简答题(共2题,每题15分,共30分) 1、按序分配是预防死锁的一种策略。 什么是按序分配 为什么按序分配可以预防死锁 按序分配是将系统中所有资源按类型进行 线性排队,并赋予不同的编号,规定所有进程对资源的请求必须严格按照资源序号递增的次序提出。 按序分配可破坏产生死锁的四个必要条件中的“循环等待条件”2、产生死锁的必要条件是什么 解决死锁问题常采用哪几种措施 必要条件:互斥条件、部分分配条件、剥夺条件、环路条件。 解决死锁问题采用的措施:(1)撤销进程法:采用撤销进程法时,可用两种形式来撤销进程。 一种是撤销所有卷入死锁的进程。 另一种是一次撤销一个进程直到死锁消失。 高深操作系统:实验二 进程的同步与互斥实验报告



