软件工程教案(张海潘版本)1

时间:2019-05-15 07:30:56下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《软件工程教案(张海潘版本)1》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《软件工程教案(张海潘版本)1》。

第一篇:软件工程教案(张海潘版本)1

软件工程是个什么概念呢?

软件工程它不是一个完全计算机的概念,它实际上是一种管理的概念,就是怎么样用一种工程化的方法或者现代的管理去管理计算机软件开发的过程,它是这么一个基本概念。那么在这个基本概念的前提就是,现代的软件开发过程和传统的许多工业生产过程是有着巨大差异的。我们知道传统工业包括传统的制造业,传统的农业等等。他在生产的过程中有一系列管理的方法,包括物料,包括一些生产过程控制等等。

那么计算机软件呢,有它一些特有的方法,随着人们在计算机软件开发过程中碰到的各种问题以及后来慢慢提出的一些观点,形成了软件工程。所以说软件工程更该是更偏向于管理,更偏向于认知科学的一门学科,不完全是计算机软件里面的东西。

当然,一般来说对于软件工程学科门类的划分,是划分在计算机软件门类里面。通常来说,计算机现在划分为五大门类。一个是计算机软件,一个是计算机理论,一个是计算机体系结构,一个是计算机硬件,最后一个计算机的应用。

那么计算机软件里面它主要包括程序设计语言,数据结构,人机交互,程序设计方法论,和软件工程。那目前来说,我们看到从软件学科来说,程序设计语言,他的发展不是特别快,我们看到这几年每年出的新语言比较少,不外乎就是Java, sishop还具有一定的活力,那么 早期的语言如C++,再早的像C语言,已经是很多年没有什么变化了。

数据结构也基本上被研究的比较透彻了,链表啊,二参数啊,甚至把它发展到数据库的一些应用里面。

人机交互目前来说还是有一定潜力的。它包括怎么样让人和计算机有一些交互性,这种交互性怎么样能够让用户能够方便的使用,比如怎么样调这个颜色,怎么调键盘和鼠标输入的方式,让人能非常方便的接受它,这是人机交互这门课程他要讲的内容。

程序设计方法论讲的是程序设计过程中你怎么样要遵循一些规则,怎么样写程序,程序的风格是什么样的,变量是怎么取名的,程序是怎样调试的等等。

这几个都是软件领域里面的一部分。其中软件工程是现在最为瞩目,也是目前造就了国内教育部直属的3,4十所软件学院他的一个主要专业。为什么会提出软件学院,当然目前来说这个情况和当时是稍有差异的。在五年前,提出软件学院或者软件工程专业的主要目的是因为国内对于软件开发,他的这个管理水平远远低于国外的,但是中国在软件开发技术,包括编程语言,编程技巧这样的高手也不少,但是为什么国内的软件在国际上打不响。结果很多专家就认为软件人才匮乏,应该用一种非常的手段对某个专业的人员密集培养,突然之间大规模的从大学里面培养一批能够做软件工程的人员,不仅要会技术,而且还要会管理。目前来说软件学院国家办了35所,各个省也相应在办软件学院。软件学院和计算机学院可能是一起的,也可能不是一起的,但是软件学院肯定会有一个软件工程专业,它源于:软件发展到现在,靠单兵作战是不行的,当多个人在合作过程当中怎么样有效的进行管理,怎么样对企业的一些成果进行积累,这都是从软件工程角度上仔细地进行管理。所以目前来说 软件工程是在计算机软件学科里面是比较活跃的,同时这门课也是比较难教的。有很多这种经验公式,经验公式没有很科学的依据,还有为什么能推导出这个软件的复杂度,为什么这个函数带得子函数不能太多,太少了你要说出个理由来,有一些科学依据软件工程上不是特别多,它是一些先验性的经验总结,所以各种软件工程的课本和书籍都有所不同。

当然在软件工程门类讲得比较多,写得比较有趣的是:人月神话。多少人多少月,这是由老外写的一本书,这本书有中文版,讲起来像讲故事一样。

当然我们这本课程会把软件工程它的整个学科和目前的一些发展作一些介绍,但是每一项都不会特别的深入。

大概要讲得内容是第二到第八章一般来说成为传统的结构化的软件工程,9 10 11 12介绍的是面向对象的软件工程,面向对象的软件工程和传统的结构化的软件工程是相辅相成的,并没有说面向对象的软件工程就高级一些,也不是说传统的结构化的软件工程就低级一些,都有在使用,而且也不能认为某一个就能代替另外一种,通常来说在大学里面或软件工程专业里面这门课是一门基础课,其中有一门课专门讲可行性,另外还有一门课讲需求分析,总体设计和详细设计往往会合成一门课来上,分在软件设计里面,另外测试也是独立一门课程,然后面向对象的方法论,面向对象分析OOA,面向对象设计OOD一般会合在一起上称为OOAD,我们这门课程只是入门的一门课程,如果大家有兴趣,对里面的章节要进一步了解的话,可以去阅读一些相关的资料和教材。由于我们是工业工程专业,不是软件工程专业,并不会对每个章节进行展开。

那么既然软件工程能被提高到一个学院,或者一个国家要大力发展的一个高度。那肯定有它产生发展的原因。我们说它产生发展的原因主要来自于软件危机。

软件危机它是在上个世纪70年代之后人们逐渐发现,在软件开发过程中,传统的认为软件开发嘛不就是和根传统的工业化设计一样的,我开发一个软件和制造一个玩具有什么区别呢?随着人们软件行业的发展,确实发现是有区别的。软件行业的产生本来就比较晚,何况早期的计算机行业只有计算机业,像IBM等公司生产 设计等大型计算机,然后就卖掉。卖的时候就会发现它的客户往往对它的计算机有这样那样的要求,所以他们这些企业往往会和软件部门给客户定制一些软件,后来他们就发现原来给客户定制软件这个过程,有吃力不讨好的过程。客户要求很多,而且还会经常变化,另外软件又看不见摸不着,不就是做在软盘里面被人考走吗,那么软件到底能不能赚钱呢,由此人们越来越觉得软件业是一个越做越赔钱,就是说软件不是以行业,世界上没有人相信软件可以赚钱。到60年代时,人们逐渐发现我也投入了相当多的人力和成本来开发的,为什么就不能把它作为有价值,所以开始了软件的交易,就是把你的软件和我的软件来进行交换。IBM公司开始发现,他的计算机卖给某些用户的时候,用户要求拥有的软件功能和可能卖的另外一台软件的功能差异太大,既然差异太大,那么成本也就有差异。但是当时的人们又不能接受,这软盘考过来的东西能卖钱。后来IBM公司向社会宣布,以后IBM的所有硬件和软件要分开估价,软件要正式卖钱。随着IBM这些主流的计算机硬件厂家的推进,软件逐渐逐渐变成了钱,变成了有价值的东西。70年代初有了软件行业。早期的软件开发需要一年两年,现在开发大部分需要几周。以前叫人月,12个人月,12个人干一个月,或者1个人干12个月。现在叫人周,要大概5个人2周,是个人干一周,所以现在开发软件以星期为基本的度量。软件开发的效率是提升了。但是人们发现软件开发和传统的生产过程有巨大的差异,以至于人们对软件行业产生一些恐惧。人们称为软件危机。软件危机主要表现在:

1. 不准确。比如说我们要生产一个玩具,那么这个玩具可能需要多少时间,多少物料,是可以预计的。软件这东西是不可预计的,开发成本可能很高也可能很低。为什么会出现这种情况能?你比如说医疗管理系统,门诊的管理,挂号,药品,划价,收款等等,有可能还包括住院系统,药房的药品管理系统,那么这个软件开发的成本可能是零成本,为什么呢?因为我给第一医院做的,那么第二医院做的时候把他稍微改一改,或者根本不用改。这种开发成本也可能会很大,原因可能有各种因素引起,如发票格式不一样,连的网络不一样,导致要重新开发软件,甚至他的业务流程都不一样,如他不需要挂号的,可能在医生看完病,在买药的时候顺便付挂号费,如果出现这些情况的时候,那么这个软件开发成本是需要重新评估。

另外软件开发进度也往往是不准确的。估计开发进度的往往是项目管理人员,项目管理人员想如果我去干,有五个星期就干完了。关键是有没有三个我呢?没有。下面的员工不一定像你那样干,第二,下面的员工可能出现一些编程问题,他过不去,没办法继续往下进行;另外更神奇的情况,软件企业里面跳槽的人来说,三天两头的再跳,一般大学毕业以后两年肯定有人会跳一次,几年之内跳几次的人比比皆是,为什么呢?软件行业互相挖墙脚的情况。结果碰巧有人跳走了,你这个软件进度怎么办,所以说软件进度的受限很多,还可能会有意外的情况发生,比如说某个程序员生病了,出交通意外了等等,软件开发过程中不像传统的一些行业,有人生病了,可以较其他人顶,可替换性强。在软件开发过程中,软件开发人员可替换性不强,你要把一个人随便换掉,通常来说要有一个磨合期,新手要有一个接手,上路的过程,接手的过程往往需要两三个月,一个月肯定是不行,两个月是可能的,三个月是应该的,如果他完全工作比较多,或者比较专业,六个月都是正常的。这也是在软件企业里面,许多老总都会说办这个软件公司,我不就是给这个员工打工吗?成天想的是怎样把这个员工给养活了。所以这也是软件危机里面基本的表现,他投入的成本比较多。软件企业的人员工资是比较高的。软件危机从它的诞生到现在,还是有一些发展趋势的,至少目前软件自动化程度还是比较高的,以前是手工劳动,需要的人员的确比较高,目前随着高校的扩招,很多的专业,自动化,电器,都在向着方面靠。像现在找工作,计算机专业他未必能找到好的工作,不是人员过剩,还是高水平的一些程序员,或者说有软件工程概念的,有能够进行项目管理的人还是比较欠缺的。传统的软件共有各种定义:不管是啊一种定义,它基本上都透漏出一个观点:软件工程它是一系列的措施和,让软件发开这种特殊的生产形式规范化。

通常在软件工程里面把软件的生命周期划分为:定义阶段,开发阶段,维护阶段。

定义阶段通常来说只是计划,可以细分为:问题定义,可行性分析,这个项目到底是做还是不做,值不值得做。需求分析等于是项目启动的标记。

第二阶段是开发阶段,一般在需求分析之后可以进行,需求分析通常是跨两个阶段的,有些时候把它划在定义阶段,分清问题的定义;有时候把它归在开发阶段,这样定义阶段只是做个计划,一旦这个计划通过了,这个项目就启动了。需求分析等于是项目启动的标记。需求分析之后就进行概要设计,详细设计,这些都称为软件设计。设计之后再编码,所以在软件工程里面他要求的是先有文档,再写代码。最好是以后代码也不用写了,只要有一个文档,计算机就会把代码写出来,也不用测试了,它已经帮你搞好了,这种工具目前还比较少。但是至少目前来说,自动化工具已经覆盖了测试,现在已经很少有人写大规模的测试软件。因为都有现成的测试工具,不过测试里面的案例库还是要自己写,但大部分测试的软件如果有明确的测试流程,计算机都可以帮你来写。

以前的测试都需要高水平的程序员来写,现在的测试都是进了企业之后第一步就是让你做测试,为什么呢?通过让你做测试,你这个员工的技术能力到底怎么样,有没有水平,能不能跟得上企业的运作,所以很多企业招一些实习生,或者在实习期间会把一些员工先安排在测试部门,如果安排在开发组,万一你出什么问题,通过测试可以了解到看你到底适合什么样的岗位。目前来说企业里面很重视测试,但实际上不需要投入大量的人力,以前是由于没有自动化测试工具,所以工作量比较大。测试完成就可以把软件成交,成交之后就开始进入软件运行和维护阶段。这就是软件生命周期,它的周期时间比较长,所以现在的面向对象软件工程称生命周期的方法称为传统的软件工程,我们有时候称它为结构化的软件工程。在可行性分析里面,会经常使用到许多工具。软件公司开发的软件漏洞比较少的时候就迫不及待的推向市场,它要首先占领市场。所以我们看到许多软件能够做在线的升级,就是因为如果没有在线升级的话,这个软件怎么补补丁呢?必须要留有后门,留有给自己做维护的方式。

那么在可行性分析报告里面用得比较多的是系统流程图。系统流程图反映的是信息在各个部分之间流动的情况。就是我这个数据怎么样进来,怎么样经过,怎么样处理,怎么样加工,完成什么样的情况。所以系统流程图它和程序流程图是不一样的。系统流程图是给用户能看得明白,它是面向用户而不是面向程序的,它只是把现有的工作流程描述出来。

比如说,事物,来了一个事物之后,根据事务的不同,它要对库存清单的程序进行操作,那库存清单的程序会写数据库文件,库存清单主文件,同时会生成一个定货信息,根据订货信息产生一个报告,由订货生成报告产生订货报告。

所以作为可行性分析它的对于系统流程图的使用是比较的粗线条的,因为系统流程图主要在研究,给出用户级别的,如果将来大家要做ERP,就会涉及到对系统流程图进行修改,而我们现在讲软件工程,系统流程图是一个现在已经存在的模式,对这种系统模式是不修改的,我们只是想用软件把这种模式实现。ERP是,如果作企业资源计划,就会怎么样判定一个系统流程是合理的,是最优的,怎么样进行优化。同样是系统流程图,不同的课程作用是不一样的。

在可行性分析里面还会用到一个最重要的概念,数据流图。这个数据流图可以说是整个软件工程里面最核心的概念。不仅仅用于传统结构化的软件工程,还用于现在的面向对象的软件工程,也在大量的使用数据流图。

数据流的基本符号。

通常来说数据流图为了他的清晰起见,可以采用层次的结构来描述,会有顶层的数据流图,把顶层的数据流图逐层逐层的分解,分解到更细,所以不同的层次看到不同的情况。最顶层的类似于设计,最底层类似于实现,在企业里面通常作顶层数据流图的是技术部门经理,中间环节项目开发组的组长,最底层由程序员来完成。

前面我们讲了可行性分析过程中它是利用企业里面各个部门的人员,然后在一定时间内对项目进行评估,认为这个项目是可行还是不可行,如果可行的话,大概有哪几种解决方法,大概的进度计划是怎么样的,数据流图是怎么样的,它的盈利模式等等,作为可行性分析最终的结果会报告给企业的决策层,到底是做还是不做。一旦确定就有两种情况,不做,到此为止,或者是往后延,那么可行性分析小组马上就地解散,或者有一个人继续跟踪这个项目。当然有一些企业有比较大的规模,有一些战略部门的话,专做一些可行性研究的时候争取调查。如果要做这个项目,是不是马上要动用各种人力去开始写程序呢?不是。从软件工程角度上看,一个项目如果已经开始启动,那么需要的是给这个项目进行分析。确定这个项目启动了,这是项目要从零开始,之前的可行性分析只能作为一个参考。你光看可行性分析里面有一些数据流图,准确吗?通常是不准确的。原因在于可行性分析的时间太短了,很多的内容只能是粗略的估计,所以在这个过程中启动项目的第一过程就是要进行需求分析。

需求分析主要的任务就是:确定对系统的综合要求;分析系统的数据要求;导出系统的逻辑模型;修正系统的开发计划。

那它的系统功能要求是什么?

那么这么些的要求通常来说在软件公司是不能了解到的,所以需求分析的一个特点就是人要派出去,派到现场,派到具体要实施的这个软件项目的所在地进行调研,只有做了调研,你才能知道这个系统它的要求,周围环境如何,网络环境,它的计算机怎样,它的使用的用户有哪些,是什么一种类别,业务流程,甚至你可以把目标单位的一些单据,表单等等拿到。

所以需求分析重要的一点是选相应的人员去进驻一些企业。选什么样的人员呢?通常需求分析可以选两种人员,一种是做技术的,一种是做市场的。所以通常来说会从技术部门选几个人,从市场部门选几个人。为什么不全是技术部门的人去呢?因为技术部门人员的交流能力相对来说要比市场部门的人员要差得多。尤其是我们看到计算机专业人员,他跟别人谈,经常用计算机的专业术语来问,这时候市场人员在的时候它就会解释一下,这个一般纯技术人员是不擅长的。另外一个在需求分析过程中经常需要的是跟用户良好的交流,这交流可能包括跟用户交谈,座谈,调研,那么这个过程也是需要市场人员的参与。因此说一般由技术人员和市场人员同时参与,来进行一些需求的获取。

分析系统的数据要求,主要要建立系统的概念模型,E-R图和实体关系图;另外还有形象地描绘数据结构,包括层次方框图,Warnier土,IPO图。另外还要进行数据结构的规范。

因为需求分析的环节在整个软件工程里面可以认为是至关重要的。开头开得好不好,对整个项目的进行就看这个开头。

需求分析做完以后要写一个需求规格说明书,对后面的软件设计来说,一般认为需求规格说明书做完了,需求就到此为止,不再变化。作为设计人员,它是不到现场的,不和客户打交道的,设计人员如此,编程人员如此,测试人员如此。那么他们怎么知道用户那边的要求怎么样的,它就看需求规格说明书。所以说需求分析是在整个系统环节里面投入的时间,投入的人力都是最大的,那么通过作的需求分析,后面的人就把需求规格说明书作为依据做后续的设计,所以需求规格说明书一旦写了,就不能随意修改,一旦修改了需求分析,后面的总体设计要改,详细设计要改,程序要重新编,测试要重新做,维护人员也要重新写维护文档,这样的话代价太大了。因此在需求分析过程中必须要了解各种方面的信息,尽可能的了解完整。一般来说,一旦需求分析结束了,很少会再重新做,因为太复杂了。而且做需求不是说需求在哪你拿过来就可以了,而是需要你去挖掘它,需要交流,跟聊天的过程中慢慢了解到对方希望是什么样的,对方的数据结构里面是什么样的,很多认为当然的事情,由于行业的关系,你必须去深入地了解。这也就是需求分析为什么是专门的一门课程。

需求分析实际上就是你派出去几个人,那几个人带回来一个需求规格说明书,后面的所有设计人员只要有问题它就要去看需求规格说明书,说明书里面应该能把它所有要求的问题回答完。这也就是需求称为分析,后面的过程称为设计,换言之,再做需求之前你的目标是不明确的,是模糊的,这个软件大概是什么样的。分析的透不透彻,显示出分析人员它的技术水平,当然设计人员能够把你分析的结果最终能实现,所以说设计人员是偏技术的工作,需求分析人员包括管理,市场,技术,分析调查的综合性的工作。许多企业里面它的需求分析会选一些精干的人来做。怎么样让对方回答我的问题又不会让人很烦,这是需要技巧的。

导出逻辑模型。

需求分析过程是一个比较细致的工作,可能跟原来的粗略的可行性计划有差异,这时候可能要重新估算,重新估算软件开发进度。需求分析最终能确定这个软件规模如何,难度和计划进度如何等等,如果修正的数量和原来差异很大要及时汇报,要求重新评估原来的可行性分析。实际上‘需求分析的任务’就是借助当前的逻辑模型导出目标系统的逻辑模型,解决目标系统的“做什么“的问题。

如果这个系统原来有一个相似的系统,现在想开发一个新软件。用户单位正在使用,原来系统模型化,确认原来是怎么做的,抽象出逻辑模型,做什么,然后通过理解这个用户对于系统的使用过程,以及他希望的一些内容,导出新的系统的逻辑模型和物理模型,最终目标系统。在这个过程中,用户是非常难以提出专业性的语言,想怎么样做这个东西,目标系统如何,用户可能说不清楚,那么你可以做一个仿真的原型系统,界面,风格,流程等等。

第一范式:数据是所有数据都会出现。

第二范式:有一些数据它是具有唯一性。比如说,学生的学号,只要学号不一样,是关键字,姓名一样,性别一样,出生日期一样,都是非关键字。

第三范式:比如非关键字有生日,年龄。

3.7 其他图形工具

在需求分析过程中会用到的其他的辅助工具。前面我们讲到了实体关系图来分析各个实体之间的关系,关系的属性,实体的属性,来了解涉及到的一些实体,然后使用数据流图来描述信息的流动过程,由于数据流图里面带有数据字典,可以描述数据流图里面的数据元素,传输的信息流的格式,信息流的内容。

前面我们讲了结构化软件设计的方法,还补充了关于人机交互界面设计的一些细节,通过这些内容我们可以看到原来在系统设计过程中需要了解数据库是怎么设计的,软件模块怎样划分的,对于我们后面的软件设计来说,还要做什么呢?我们说还要作详细设计。并不是说把软件设计到模块一级这个软件就结束了。而是必须要设计到每个模块它里面实施的细节,那一些语句怎么样去设计,那些语句怎么样实现功能,这个过程我们称作详细设计。详细设计的文档可能比你写的代码的长度还要长,但是详细设计是一个必不可少的环节。像中国很多企业作外包的,通常来说,外包拿过来的就是详细设计的说明书,然后你就要进行代码化,测试。

详细设计它是一个面向编程语言的设计,你拿到详细设计的人,他通常来说他看到的是模块和子模块。我们前面说了他的基本流程是:由项目经理做总体设计,然后总体设计分成几个大的子系统,每个子系统交给几个项目组的组长去设计,形成项目总体组,总体组设计完了之后,把项目进行分工,某一个项目小组作其中的哪两个模块,就项目小组长要完成的时候它会把这两个模块里面的子模块和函数分开给不同的设计人员来实现,作为详细设计的人员它是设计人员里面最底层的人员,他看不见整个系统的概况,他不知道这个项目是做什么的,甚至只知道他这个子系统要完成什么样的功能,他还知道他的子系统跟别人的数据接口是什么样的,这些都由总体设计组来定。他要完成一个模块和模块里面的子模块,或子模块到函数一级,函数到函数里面语句这一级,如果它是写程序的话,怎么样用程序设计语言来设计它。

当然详细设计要求的就是怎样用结构化的程序设计的方法来实现前面概要设计里面的某些功能,所以我们看到详细设计人员往往就是后面的编程人员,所以详细设计并不是很高深的东西。在详细设计过程中需要使用哪些结构化的方法呢,主要包括以下几种:

自顶向下逐步求精的方法,先粗后细,逐步完善。

同时这个结构设计具有单入口、单出口的控制结构,所以它没有GO TO语句。有五种基本的控制结构:

顺序结构:上一条语句执行完了执行下一条语句。选择结构:IF为条件,条件满足了,执行某一分支,条件不满足了,执行另一分支。

先判断循环结构:先判断某一条件是否满足,如果满足进行循环,循环一次之后再判断,再循环,一旦不满足条件,跳出去。后判断循环结构:先执行循环体一次然后判断,如果满足条件再执行循环体,否则的话跳出去。

多选择结构:选择的时候可以选择某个值,但某个值为1的时候做什么,为2的时候做什么,CASE结构。

这是在详细设计的里面必须遵循的结构,有些同学认为是不是还少了一种递归,不是的,递归程序在什么地方排除掉了呢?在概要设计里面其实已经被排除掉了,概要设计里面就认为软件的结构是层次的结构,调用关系都是从上往下调用哪里来的递归呢?所以递归程序一般在软件工程里面极少极少使用,除非是迫不得已才会在概要设计里面留下,在详细设计里面留下的都是更加详细的结构。

下面是关于在软件设计过程中用的比较多的内容,用户界面设计.那么用户界面设计通常来说会在几个地方出现:

一个是在需求分析里面,可能会在开发原型系统时候需要使用用户界面设计,你要给用户看你的原型系统,用户并不关系你的数据在什么地方存储的,加工过程你可能在原型系统里面也没有,用户看到的是模拟的人机交互界面,所以需求分析里面可能会出现用户界面设计。

同时在系统设计过程中也需要进行一个人机交互的设计,所以人机交互界面设计并不是属于计算机技术非常强的一个技术。但是他考虑到怎么样适合于用户来使用,所以在一些企业里面有一些开发人员专门作人机交互的。用户界面(GUI 图形用户界面)这些都是用户最看得见摸得着的东西,一个软件的质量好不好当然跟软件的设计有关,而一个软件是否被用户认为好不好,那是跟用户对软件的评价有关,如果软件质量没有问题,用户对软件的评价主要来源于用户设计,所以用户设计是非常重要的。

用户界面应具备的特性:

作为用户界面设计来说最重要的特征是可使用性,因为用户界面是给用户看的一个主要接口,所以用户对用户界面是否能接受,这是最重要的。

这里面涉及到一个问题就是使用是否简单,以及用户界面里面的术语是否是标准化或者是一致化的。在一个软件里面或有些地方称他为用户界面后来又冒出来了个人机交互,这是两个概念还是一个概念。当然我们看到给用户的使用说明书一定采用标准化的使用方式。

第三个要拥有Help的功能,当用户发现使用过程中有问题的时候,它能够看帮助,一个是离线帮助,一个是在线帮助。用户可以登上你得公司或企业的网站,找到企业网站维护人员进行沟通,或者用户干脆打你得客户服务电话,这种打电话的方式成本消耗比较大,所以很多地方会采用在线方式,就是在互联网上通过写字板,通过讨论区,通过论坛来回答用户提出的问题。

第四个是快速的系统响应,就是你这个软件是否响应快,同时你的软件要求的系统成本比较低,就是在比较差的计算机上你的软件要能跑起来。

第五个是用户界面应具有容错能力。你要求用户输入一个邮编,但如果用户不小心输入了ABC呢,你要告诉他输错了,重新输,你不能说点了一下软件就死掉了,重起计算机了,那这样的软件用户肯定是不敢用的。

灵活性: 首先一个是算法的可隐可显性。用户可以不关心你这里面数据是怎么处理的,但是你也可以通过某些方式让用户了解你的处理过程是在处理哪些数据。

第二个灵活性是用户可以根据需要制定和修改界面方式。那我们看到向一些电子邮件,像一些网站,它可以给你一些风格让你自己设计,甚至像一些聊天室你可以更该背景啊,自己做一些图标,等等。这样用户就会觉得不错,可定制性和个性比较突出。

第三个是能够按照用户的希望和需要,提供不同详细程度的系统响应信息。比如说用户在进行网络蚂蚁下载的时候,我可以看他每一个链接的情况,也可以看下载的速度,还可以看到有一个小图标在跑。用户他对这个事情的关心可能不一样。

第四个是与其他软件系统应有标准的界面(指接口)为使用户接口具有一定的灵活性,需要付出代价,而且有可能降低软件系统的运行效率。比如说你要设计CAD软件,那你必须要提供和ajs的接口,ajs是CAD软件的标准格式。比如说Word,它提供了rtf接口,rtf可以转化成其他格式。

复杂性和可靠性:用户界面的规模和组织的复杂程度就是界面的复杂性。通常认为界面可以越简单越好。但不是把所有功能和界面安排成线性序列就一定简单。用户界面的可靠性是指无故障使用的间隔时间。

用户界面设计的任务分析:

用户界面通常是和软件需求分析过程中同步进行的,你要知道用户界面是给用户用的,你回到软件公司让系统分析人员去做用户界面,他不知道用户有什么要求,只能去问需求分析人员他们对用户界面有什么要求,他们对计算机熟悉程度如何,他敲键盘快不快,他会不会输拼音,他会不会输五笔字型,他每秒钟能数多少个汉字,是10个汉字还是80个,我说双击鼠标他会不会两次很慢的单击,间隔时间很长,我能不能用鼠标右键加很多功能在里面,或者我能不能加很多热键,我的图标要设多大,如果用户是新手,我可能要设得比较大,如果是熟练人员,我可以全部设成菜单形式,或者快捷键形式。这些只能是需求分析人员所能回答的问题。

用户特征是详细了解用户技能和经验,用户有没有玩过计算机,如果用户只会玩QQ,MSN,玩游戏,那我们知道他们肯定鼠标很熟悉,能看懂一些提示,能进行一些中文输入。用户是否只在上班时间用计算机,还是偶尔用一下。或者说用户是不是残疾人,会不会要语音输入,要不要在评模旁边贴上一些简单的操作指南,你比如说一个图书馆的计算机借阅系统。由于图书馆的官员每天使用这个系统,因此他们使用系统的频率很高。他们以前可能没有使用过计算机,也没有人有自动化图书馆借阅系统和计算机系统的知识。他们的绝大多数的智力水平在中等以上。

比如说学生成绩提交系统,就不好用。一行敲完了以后,可以自动跳到下一行;或使用功能键就更好一些。

像Windows菜单都使用的这种子菜单的形式。像QQ用的就是浮动式菜单。对话框:必须回答式,像系统设了密码,你就必须回答。无需回答式,只是告诉你一个警告,你可以不必理睬他。警告式,和必须回答是有相似性,像针的要保存吗?会替换同名文件,还替换吗?

作为我们详细设计就要用这五种基本结构,五种程序设计方法来把前面这些模块、子模块;程序、子程序;函数实现。

任何复杂的程序流程图都应由以上五种基本结构组合而成。

它的一个特点是:容易掌握,且“历史悠久”,使用广泛。但缺点也很多,程序流程图它本质上不具备逐步求精的特点,对于提高大型系统的可理解性作用甚微,同时不太容易表示数据结构,你数据结构在数据流程图里面怎么表示我们看不到,只能看到程序流程图中控制流的结构,另外转移控制太方便。你随便画一条线指向另外一个地方,就算你转移出去了,所以写程序结构图随意性太大,正因为它随意性太大,现在用地越来越少,既然你要做详细设计,至少要把函数里的流程图画出来。图6.3是程序流程图的一些符号。

通过程序流程图我们可以看到下面几种形式,判定A:B有3种结果,A>B,A

盒图在详细设计里面一个非常重要的概念,它是用一种非常严谨的图形格式来表示。用矩形框来表示,每一个区域都是一个程序,第一个,顺序型A B,A再上面,B在下面,盒图的设计规则是从上往下执行,先执行A再执行B。

第二个选择型。当条件满足时执行THEN部分,不满足时执行ELSE部分。当ELSE部分没有呢,往下执行。

第三个WHILE循环。先判断再循环,条件满足了,再执行,然后再判断,再执行。这是一个循环。

第四个DO-UNTIL型。先执行再判断条件。直到条件不满足,否则一直在这循环。

盒图没有箭头,不允许随意转移控制。每个矩形框(CASE中条件取值例外)都是一个功能域(即一个特定结构的作用域),结构表示明确。局部及全局数据的作用域易见。易表示嵌套关系以及模块的层次结构。

花这个盒图占用空间大,所以又没有更方便,具有盒图相似功能的软件工具。下面我们看一下PAD图。

盒图是从上往下,PAD图它从左往右,同时具有从上往下两个功能。顺序型:它的基本书写方式是画一条竖线,这条竖线表示一个时间轴,P1 P2是从上往下写的,如果有嵌套的话语句是从左往右写的,跟盒图不一样,盒图如果有嵌套也写在里面。

第二选择型:写条竖线,C是个条件写在里面,这是个框,上面为真,下面为假,这是默认的。不像盒图里面要写T和F。

盒图可以转换成PAD图。

特点是:结构清晰,层次分明,通过竖线来完成,它不像盒图那样看上去眼花缭乱,线条没有盒图那么多,而且上下层次关系比较清晰,体现了逐步求精的设计思想,而且也比较容易把PAD图转换为高级语言的源程序,所以目前来说也是用得非常广泛的,许多企业里面它更加推荐使用PAD图。

第二篇:《软件工程导论》第五版 张海藩 编著 总结

《软件工程导论》第五版 张海藩 编著 总结

分类: Computer System2011-01-04 10:14 6417人阅读 评论(10)收藏 举报

测试数据结构工具任务文档软件测试

总结重点: Unit1

软件危机包含两方面的问题:一是如何开发软件,怎样满足人们对软件日益增长的需求?二是如何维护软件,使它们持久地满足人们的要求。

软件工程学定义:把软件当作一种工业产品,采用工程学的原理来管理和组织软件的开发和维护,称为软件工程。

软件是指程序、数据和文档三者共同构成的配臵。

包含与数据处理系统操作有关的程序、规程、规则以及相关文档的智力创作称为软件。文档是描述程序开发过程的,是智力创作的真实记录,是创作活动的历史档案和结晶。软件的描述性定义:软件由计算机程序,数据结构和文档组成。

软件质量定义为“与软件产品满足规定的和隐含的需求能力有关的特征和特性的全体” 具体来说: 1)软件产品中能满足给定需求的性质和特性的总体; 2)软件具有所期望的各种属性的组合程度。

将软件质量属性划分为六个特性(功能性、可靠性、易用性、效率、维护性和可移植性),这六个属性是面向用户的观点——面向管理的观点,且是定性描述的。

软件质量度量体系:内部度量可用于开发阶段的非执行软件产品,外部度量只能在生存周期过程中的测试阶段和任何运行阶段使用。

软件工程项目的基本目标:(1)低成本;(2)满足功能要求;(3)高性能;(4)易移植;(5)易维护。软件工程方法学就是要从技术和管理上提供如何去设计和维护软件。

软件开发方法:面向数据流(约旦)方法、面向数据结构方法、面向对象方法。

结构程序设计是进行以模块功能和处理过程设计为主的详细设计的基本原则。它的主要观点是采用自顶向下、逐步求精的程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环三种基本控制结构构造。

用来辅助软件开发、运行、维护、管理、支持等过程中活动的软件称为软件工具(CASE)。

软件生存周期定义:软件产品从形成概念开始,经过开发、使用和维护,直到最后不再使用的整个过程。各阶段的任务彼此间尽可能的相对独立,同一阶段内各项任务的性质尽可能的相同。软件的开发就是“按软件顺时间发展的过程分阶段进行”的。软件生存周期模型:

瀑布模型(阶段间具有顺序型和依赖性,清楚地区分逻辑设计与物理设计、尽可能推迟程序的物理实现,是文档驱动模型,遵循结构化设计);

原型模型(软件产品的开发是线性顺序进行的,本质是快速,用途是获知用户的真正需求,一旦需求确定,原型将被抛弃)。其核心都是将软件开发划分为:分析、设计、编码、测试和维护。

软件生存周期划分为以下几个阶段:可行性研究与计划、需求分析、总体设计、详细设计、实现、组装测试、确认测试、使用和维护。

软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤 软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型 软件工程过程是软件生存周期中各个可能的过程,这些过程可进一步划分成为了提供或获得软件产品或服务,或是为了完成软件工程项目需要完成的有关软件工程活动,每一项活动又可分解为一些软件工程任务。标准定义了21个过程分属三类:基本过程(include获取、供应、开发、运作、维护过程)、支持过程和组织过程。软件工程三要素:方法、工具和过程。软件工程管理

目的:为了按照进度及预算完成软件计划,实现预期的经济和社会效益。内容:成本估算、进度安排、人员组织、质量保证、配臵管理等等。怎么强调软件工程管理的极其重要性都不会过分

Unit2 可行性研究

任务和目的:用最小的代价在尽可能短的时间内确定问题是否能够在一定规模之内解决。(确定这一问题是否存在值得去做的解)

过程和步骤:

实质:进行一次大大压缩简化了的系统分析和设计过程,也就是在较高层次上以抽象方式进行的系统分析和设计过程。

技术和工具:DFD+DD

主要内容

(1)澄清问题定义 ——规模、约束和限制

(2)导出新系统的逻辑模型

(3)导出若干个供选择的物理解法(物理模型),并分别研究它们的可能行:

数据流图符号

Example:

数据流图的基本目的是 利用它作为交流信息的工具,另一个主要目的是作为分析和设计的工具。

数据字典是关于数据信息的集合,也就是对数据流图中包含的所有元素的定义的集合,它是通过对数据元素和数据结构的定义,来描述数据流和数据存储的逻辑内容的。数据流和数据字典共同构成系统的逻辑模型。数据字典的内容:

数据流、数据元素、数据存储、处理

数据字典最重要的用途是作为分析阶段的工具。

Unit3 需求分析:

目的:精确地定义系统必须做什么,也就是对目标系统提出完整、准确、清晰、具体的要求。——为目标系统提出精确的逻辑模型。

任务:确定对系统的综合要求,包括功能需求、性能需求、可靠性和可用性需求、运行要求、将来可能提出的要求。过程:处理逻辑的分解:自顶向下逐步分解直到每个处理逻辑已是不可再分的“功能单元”为止。书写文档:软件需求规格说明

工具:状态图、IPO图、层次方框图、Warnier图

结构化分析设计技术是70年代中期由E.Yourdon等人提出来的一种面向数据流的方法;要求系统的开发工作在结构化和模块化的基础上进行,它系统的运用了描述模型的概念,按照软件内部数据传递和变换的关系,自顶向下逐层分解,直到找出满足要求的可实现的软件。

在这个方法里,“抽象”,“分解”,“模块化”,“结构化”是它的主要手段;面向数据传递、变换所形成的数据流(Dataflow)和数据流程图(DFD)是它的主要依据。

这个方法的关键工作是:画分层的DFD和确定数据定义与加工策略。Yourdon方法(对应的瀑布模型)的缺陷: 其实Yourdon方法是建立在三个假设之上的:

假设1:所有的需求都是可以预先定义的;

假设2:需求在较长一段时间内是不变的(相对稳定的);

假设3:运用所提供的工具可以做到项目参与者之间清晰、准确、有效的沟通。这三个假设往往是很难成立的:

“逻辑模型”的精确描述依赖于“自顶向下的求精过程”,而“自顶向下的求精过程”的顺利进行又依赖于精确的“逻辑模型”,这二个问题互相缠绕依赖而构成方法学上的“死锁”。原型法(原型模型):

原型就是模型的意思(原型=模型),它指的是模拟某种产品的原始模型。运用原型的策略:抛弃策略&附加策略 对原型的逐步求精过程是一个迭代过程

相对于Yourdon方法来说原型法是一个非线性的系统开发方法。不再强调高质量的阶段性文档。

螺旋模型:沿螺线自内向外每旋转一圈便开发出一个更为完善的软件版本 Yourdon方法适合于“预先指定的系统”; 原型法适合于“用户驱动的系统”。

通常用“范式”定义消除数据冗余程度。第一范式数据冗余程度最大,第五范式数据冗余程度最小。状态转换图:

状态时可以被观察到的系统行为模式,一个状态代表系统的一种行为模式,它规定了系统对事件的响应方式。一张状态图有一个初态和0至多个终态。

事件:在某个特定时刻引起系统做动作和(或)状态转换的控制信息。

验证软件需求的正确性:

一致性、完整性、现实性、有效性

Unit4 总体设计:

目的:确定系统的具体物理实现方案(系统结构设计),确定组成每一个程序的模块,以及模块间的关系(软件结构设计)。任务:软件结构设计(过程设计是详细设计阶段的任务)过程:

设想供选择的方案

选取合理方案(每份方案有 系统流程图、组成系统的物理元素清单、成本/效益分析、实现这个系统的进度计划 4份资料)等9步(P92)

在软件开发早期阶段考虑测试问题,能促使软件设计人员在设计时注意提高软件的可测试性。总体设计阶段书写的文档:系统说明、用户手册、测试计划、详细的实现计划、数据库设计结果。

总体设计过程中,推荐最佳方案后进入“软件结构”设计:设计出组成这个系统的所有程序、文件和数据库,以及它们之间的联系。软件结构:由模块组成的层次系统。模块:数据说明、可执行语句等程序。C/S(Client/Server)结构是软件系统体系结构

“结构化设计”概括地说就是:用一组标准的工具和准则来确定系统应该由哪些模块、用什么方式联结在一起,才能构成一个最好的软件结构。

模块化就是把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。

模块: 具有四种属性的一组程序语句称为一个模块,这四种属性分别是:输入和输出、逻辑功能、运行程序、内部数据。(前两个是模块外部属性,后两个是内部属性,总体设计完成外部属性设计、详细设计完成内部属性设计)

软件结构图中,模块用一矩形表示。模块间调用:用→连接

开发具有独立功能而且和其它模块之间没有过多相互作用的模块,可以做到模块独立。影响模块独立的因素:

耦合(不同模块间互联程度)内聚(同一模块内各元素紧密程度)

力争高内聚、低耦合。5种耦合形式:

数据耦合、控制耦合、特征耦合、公共耦合、内容耦合(从左到右耦合程度递增)最弱的耦合是非直接耦合

7种内聚形式:

功能内聚、顺序内聚、通信内聚、过程内聚、时间内聚、逻辑内聚、偶然内聚(从左到右程度依次递减)模块的扇出与扇入:

模块的扇出是指一个模块拥有的直接下级模块的个数。模块的扇入是指一个模块的直接上级模块的个数。

模块的扇出系数应控制在7以内,尽可能的加大模块的扇入系数。

作用域应该是控制域的子集;

模块的控制域和作用域:

模块的控制域(控制范围):是指这个模块本身以及所有直接或间接从属于它的模块的集合。

模块的作用域(判断作用范围):是指受该模块内一个判断影响的所有模块的集合。(也就是该模块内存在着判断调用语句,而所有受到该判断逻辑影响的模块,就是该模块的作用域。)作用域应该是控制域的子集;理想的是作用域都是直接下属模块。数据流类型——数据在DFD中流径特征

变换流:进入系统中的数据所流经的路径几乎是一样的。事务流:进入系统中的数据所流经的路径不完全是一样的。



事务中心往往包含多个处理逻辑。



“事务”是指一组输入数据。

Unit5 详细设计:

目的:完成模块的过程设计(为SC中每个模块确定采用的算法和块内数据结构,用某种选定的表达工具给出详细清晰的描述。)

模块的逻辑设计(模块的过程描述)主要内容:

1)为每个模块确定采用的算法 2)确定每个模块使用的内部数据结构 3)确定模块的接口细节 4)制定模块的测试计划

完成模块的“内部属性”设计,即给出系统中各个模块的“运行程序”和“内部数据”;由此可见详细设计的结果基本上决定了最终软件的质量。

详细设计的目标更重要的是便于维护。工具:

1.程序流程图(流程图)2.N-S图(盒图)

3.PAD图(问题分析图)

4.伪代码和PDL语言

逻辑设计应遵循的理念:

1.从效率第一到清晰第一

2.结构化的控制结构:结构化程序设计=仅使用单入口单出口的三种基本控制结构 3.逐步细化的实现方法

[例] 在一组数中找出其中的最大数 分别用程序流程图、N-S图和PAD图描述 用“结构化”保证程序的清晰易读,用“逐步细化”实现程序的正确可靠,它们导致了一条自然的结论:模块的逻辑设计必须用结构化程序设计的原理来指导。(结构化分析设计在详细设计阶段)Yourdon方法的技术途径:DFD→DFD+DD→SC→PDL

Yourdon方法在分析阶段,我们用DFD来表示软件的逻辑模型;在设计阶段,又按照数据流类型,分别用变换分析或事务分析将它们转换成相应的软件结构。面向数据结构设计方法的根据和基本思想:

算法和数据结构是程序设计中不可分割的侧面,算法的结构依赖于它要处理的数据结构。只要事先知道一个问题的数据结构,就可以由此导出它的程序结构。

基于数据流还是基于数据结构的出发点不同,最终目标也不同。SADT(结构化分析设计工具)方法的目标是得出软件的最终SC图,它把注意力集中在模块的合理划分上;面向数据结构的设计则要求得出程序的过程性描述,并不明确也提出软件应该先分成模块等概念。

SADT方法:DFD->SC(软件结构图)->模块的过程性描述(PDL等)|<-------总体设计-------> | |<--------详细设计------->|

Jackson方法(面向数据结构):数据结构->程序结构->程序的过程性描述(伪代码等)|<-----总体设计-----> | |<----------详细设计--------->| 程序复杂程度的定量度量:

1.程序图(流图)(用任何方法表示的详细设计结果都可以变换成程序图)

流程图中的各种处理框均简化成一个结点

2.环域复杂度

程序的结构复杂度可用强连通的有向图中线性无关环的个数来度量 V(G)= 判定结点数 + Unit6

编码(也称实现)

任务:把模块的过程性描述翻译为用该语言书写的源程序(或源代码)。编码的风格

1.程序要清晰直观,不要过于巧妙

2.用一定的原则指导控制结构的使用(避免使用容易引起混淆的结构和语句)3.有规律地使用GOTO语句

不得不把效率的考虑放在首位的时候,而结构化程序又不能满足时间要求时,就可用GOTO语句来减少重复的代码段;

4.实现源程序的文档化(软件=程序+文档)<有意义的变量名称、适当注释、标准的书写格式>

Unit7: 软件测试:

定义:程序测试是为了发现错误而执行程序的过程。纠错(调试)是为了确定错误的性质,并且加以纠正。

软件测试包括机器测试(动态测试)(黑盒测试&白盒测试)和人工测试(代码复审)(代码走查+会审+办公桌检查)程序编译通过后,应该先人工测试(发现逻辑错误)后机器测试(在设定的测试数据上执行被测程序).动态测试是一个包括:①设计“测试用例”→②执行被测程序→③分析测试结果并发现错误的过程。(①设计“测试用例”是最关键)

测试用例={ 输入数据 + 期望结果 }

按照在设计“测试用例”时,是否涉及程序的内部结构,把动态测试分为: 白盒测试:从程序的内部逻辑入手,按照一定原则设计测试用例。

黑盒测试:仅以程序外部功能为依据来设计测试用例。检查程序是否完成应做的和是否做了不该做的。(按规格说明书的规定)

软件测试的的步骤:[见笔记本上图]

单元测试:在编码阶段完成;以模块为单位,(主要白盒)发现的往往是编码和详细设计的错误

综合测试:(模块组装测试、集成测试)以软件的设计信息为依据,主要用黑盒,发现设计错误,也可能发现需求说明错误。

确认测试(验收测试):以软件的需求信息为依据,用黑盒,发现需求说明书中的错误,验证软件的有效性 系统测试:指整个计算机系统(包括软件与硬件)的测试。代码复审

1.代码会审:开会逐句朗读和讲解程序,精力集中于发现错误,会后改正错误 2.走查:与会者扮演“计算机”的角色 3.办公桌检查:一个人参加的代码会审 黑盒测试方法:

等价分类法:

按测试结果“等价”把被测程序的输入域划分为若干个等价类,每一个等价类都选择一例“测试用例”,与“应做的事情”相对应的是“有效等价类”,而与“不应该做的事情”相对应的称之为“无效等价类”。

设计等价类的测试用例分为两步: 1.划分等价类并给出定义;

2.选择测试用例的原则:有效等价类的测试用例尽量公用;无效等价类必须每类一例。[例]某城市的电话号码……[看笔记] 边界值分析法(边值法)错误猜测法(猜错法)因果图法

白盒测试方法:[见笔记]

合理的白盒测试,就是要选取足够的测试用例,以实现对源程序比较充分的覆盖。逻辑覆盖法:(按照由低到高对程序逻辑覆盖程度的顺序)

语句覆盖:每条语句至少执行一次;

判定覆盖:不仅每条语句至少执行一次,而且每一分支至少执行一次;

条件覆盖:不仅语句覆盖,而且每个条件均按“真”、“假”两种结果至少执行一次; 条件组合覆盖:不仅语句覆盖,而且每个条件的所有可能组合都至少执行一次。

路径覆盖法:(按照由低到高对程序逻辑覆盖程度)

结点覆盖:每个结点走一次;相当于语句覆盖 边覆盖:每条边走一次;相当于判定覆盖

路径覆盖:每条路径走一次;(不需要考虑程序的循环)

Unit8

面向对象基本原理:使描述问题的问题空间和在计算机上解决问题的解空间在结构上尽可能一致。基本概念:

(1)对象:由数据以及可以施加在这些数据上的操作(或服务、方法、处理)所构成的统一体,它是面向对象软件的基本模块。

(2)类:对具有相同数据和相同操作的一组相似对象的定义(抽象)。(3)不同的对象彼此之间只能通过消息相互作用、相互联系

(4)继承:处于下一层次上的派生类自动继承了位于上一层次基类的属性(数据)和行为(操作)面向对象就是既使用对象又使用类和继承等机制,而对象之间仅能通过传递消息实现彼此间的通信。UML 用视图来表示被建模系统的各个方面,它把软件模型分成5个视图,每一个视图代表完整系统的一个特定方面。每一个视图又由一种或多种模型图构成。

1. 用例视图:用来支持需求分析,也就是说系统将提供的功能是在用例视图中描述的。

2. 逻辑视图:定义系统的实现逻辑,重点关注的是系统的静态结构(类、对象及它们之间的关系),也描述系统内部的动态协作关系。它的模型图包括类图、对象图、状态图、顺序图、协作图及活动图等。3. 组件视图:描述系统的实现模块及它们之间的依赖关系。组件是不同类型的代码模块,通过代码模块的结构和依赖关系来表示。

4. 部署视图:描述软件系统在计算机硬件系统和网络上的安装、分发和分布情况。5. 实现视图:描述组成软件系统的各个物理部件。UML由三部分组成:基本构造块、规则和公用机制

UML 定义了二类模型元素的图形表示:一类模型元素用于表示模型中的某个概念,一类模型元素用于表示模型元素之间的关系  面向对象建模:

对象模型——“谁做?”(类图)动态模型——“什么时候做?”(状态图)功能模型——“做什么?”(用例图)

这三种模型都是必不可少的,对象模型是最核心的。

在面向对象分析中,构造出完全独立于实现的应用域模型;在面向对象设计中,把求解域的结构逐渐加入到模型中;在实现阶段,把应用域和求解域的结构进行编码和验证。

OO方法:OOA→OOD→OOP→OOT 是一个逐渐扩充模型的过程,其间无需转换概念和表示,开发活动之间基本做到了平滑无缝过渡; 对象模型:

类与类之间一般有四种关系:关联、泛化(继承)、依赖和细化。1.关联:表示两个类的“对象”之间存在某种语义上的联系。

2.聚集:聚集是关联的特例,它表示类与类之间的关系是整体与部分的关系。3.泛化(继承):泛化关系指的是类与类之间是“一般---特殊”的关系。4.依赖和细化:依赖关系是指一个模型元素依赖于另一个独立的模型元素,细化关系是指一个模型元素细化成了另一个模型元素。动态模型:

描述了对象模型中对象的生命周期过程,即对象的状态,我们把一个触发行为称为一个事件。动态模型就是通过描述对象的状态、触发状态转换的事件、以及对象的行为来描述软件系统的动态行为(行为模型)。功能模型:

UML提供用例图来表示功能模型,并称之为用例模型。

功能模型也可用SADT中的一组DFD来表示。(也是需求分析阶段)一幅用例图包含的模型元素有:系统、行为者、用例和用例之间的关系。

一个用例是系统的一个完整的功能,通过关联与行为者连接,关联指出一个用例与哪些行为者交互,这种交互是双向的。

用例是一个类,用例的实例是系统的一种实际使用方法,我们称之为脚本。用例之间的关系主要有二种:扩展关系和使用关系。

创建用例模型的工作包括:定义系统、寻找行为者和用例、描述用例、定义用例之间的关系,并确认用例模型。

Unit9:

面向对象分析(Object-Oriented Analysis,简称OOA)的关键就是识别出对象与类,并分析它们之间的关系,最终建立对象模型、动态模型和功能模型。

图: 参照当前系统建立目标系统

通过划分“主题”把一个复杂系统的对象模型分解成几个不同的概念范畴。

软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。维护过程本质上是修改和压缩了的软件定义和开发过程,而且事实上远在提出一项维护要求之前,与软件维护有关的工作已经开始了。

进行维护的原因:改正程序中的错误和缺陷;改进设计以适应新的软、硬件环境;增加新的应用范围;为了将来的维护工作。

维护分为以下几类:改正性维护;适应性维护;完善性维护;预防性维护

----------

未涵盖进来的内容:

需求分析目的:确定目标系统必须具备哪些功能

总体设计的主要任务:一.制定几种可能的实现方案;二.设计程序的体系结构 详细设计(模块设计)任务:设计出程序的详细规格说明 集成测试和验收测试:

集成测试(组装测试):根据设计的软件结构

验收测试:按照规格说明书的规定,由用户参与下对目标系统进行验收的测试

通过对软件测试结果的分析可以预测软件的可靠性。传统软件工程方法学的软件过程,可以用瀑布模型来描述 瀑布模型的特点:阶段间具有顺序性和依赖性、推迟实现的观点

清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现。

瀑布模型带反馈环,发现前面阶段的错误时,沿反馈线回头修改

快速原型模型不带反馈环,软件产品开发是线性顺序进行的,用途是获知用户的需求

增量模型(渐增模型):把软件产品分解成增量构件。原则:当把新构件集成到原有构件时,所形成的产品必须是可测试的。它能在较短时间内向用户提交可完成部分工作的产品。要求开始实现各个构件前就全部完成的需求分析、规格说明、总体设计。

螺旋模型的基本思想:使用原形及其他方法来尽量降低风险。可以看作每个阶段前都加了风险分析的快速原型模型。螺旋模型是风险驱动型的。

喷泉模型体现了面向对象开发过程迭代和无缝的特性。

采用先行顺序的开发方法不可能开发出当今客户需要的大型复杂系统。

构件:功能清晰的模块或子系统。模型:对事物的无歧义的书面描述。

RUP强调采用迭代和渐增的方式来开发软件,重复一系列组成软件生命周期的循环。面向对象方法=对象+类+继承+用消息通信

可行性分析中导出供选择的解法的最简单途径,是从技术角度出发考虑解决问题的不同方案。

系统流程图是概括地描绘物理系统的工具,表达数据在系统各部件之间的流动情况,而非对数据加工处理。数据流图(DFD)描绘信息流和数据从输入移动到输出的过程中所经受的变换。(描绘数据在软件中流动和被处理的逻辑过程),设计时只考虑系统必须完成的基本逻辑功能。

画数据流图的基本目的:利用它作为交流信息的工具;作为分析和设计的工具。符号:数据源点/终点,变换数据的处理,数据存储,数据流 数据存储是处于静止状态的数据流,数据流是处于运动中的数据。

数据字典是关于数据的信息的集合,即对数据流图中包含的所有元素的定义的集合。

数据字典包含内容:数据流,数据流分量,数据存储,处理 数据字典用途:分析阶段的工具。

逆向需求说明软件系统不应该做什么

分析系统常用图形工具:层次方框图、Warnier图 需求分析时要把数据结构规范化。

结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法。

把分析过程中得到的有关数据元素记录在数据字典中,对算法的简明描述记录在IPO图中。快速建立软件原型是最好的需求分析技术。为快速构建和修改原型,使用三种工具和方法: 第四代技术 可重用的软件构件 形式化规格说明和原型环境

概念性数据模型是一种面向问题的数据模型,是按照用户的观点对数据建立的模型。数据对象是软件必须理解的复合信息的抽象。

用“范式”定义消除数据冗余的程度,第一范式冗余最大。

状态是任何可被观察到的系统行为模式,一个状态代表系统的一种行为模式。状态图的活动表中经常使用entry,exit,do三种标准事件。

IPO图是输入、处理、输出图,处理框中列出处理的次序暗示了执行的顺序。验证软件需求的正确性:一致性、完整性、现实性、有效性 结构设计是总体设计阶段的任务,过程设计是详细设计阶段的任务 软件结构(即由模块组成的层次系统)可以用层次图或结构图描绘。

在软件开发的早期阶段考虑测试问题,可以促使软件开发者设计时注意提高软件的可测试性。随着模块数增加,设计模块间接口所需工作量也增加。逐步求精是规格说明技术、设计和实现技术的基础。

逐步求精定义:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。

模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。

耦合强弱取决于模块接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。模块间的耦合程度影响系统的可理解性、可测试性、可靠性和可维护性 内聚比耦合更重要。

深度表示软件结构中控制的层数,能粗略标识系统大小。

宽度是软件结构内同一层次上的模块总数的最大值。

扇出过大意味着模块过分复杂,扇入越大则共享该模块的上级模块越多(好)。好的软件结构通常顶层扇出高,中层扇出较少,底层模块有高扇入。

面向数据流的设计方法把信息流映射成软件结构,信息流的类型(变换流、事务流)决定映射方法。经典程序设计:只允许使用顺序、IF_THEN_ELSE、DO_WHILE

扩展的结构程序设计:外加DO_CASE、DO_UNTIL 修改的结构程序设计:外加BREAK 系统响应时间的两个属性:长度、易变性 用户界面设计是一个迭代过程。

过程涉及工具:程序流程图、盒图、PAD图、判定表、判定树、过程设计语言PDL 程序复杂度定量度量:

1.McCabe方法(流图,也叫程序图):流图中的区域数=环形复杂度=判定节点数+1

程序的环形复杂度取决于程序控制流的复杂程度,即取决于程序结构的复杂程度。所以它是对测试难度的定量度量,也能对软件可靠性预测。

2.Halstead方法(根据程序中运算符和操作数总数来度量)编码和测试统称为实现。

程序的质量主要取决于软件设计的质量。

测试的目的:发现软件中的错误,根本任务:保证软件质量 调试的目的:诊断并改正测试中发现的错误 效率主要指处理机时间和存储器容量两方面。

用户角度:最严重的错误是导致程序不能满足用户需求的错误。

一旦完成了需求模型就可以着手制定测试计划,建立了设计模型之后就可以立即开始设计详细的测试方案。最佳测试效果:有最大可能性发现错误的测试

模块组装测试两种方法:非渐增式测试(分别测试每个模块)&渐增式测试(把下一个要测试的同已经测好的结合起来测试)

渐增方式分 自顶向下集成和自底向上集成

为了保证加入模块没有引进新的错误,可能需要进行回归测试

自顶向下测试方法主要优点:不需要测试驱动程序,能够在测试阶段的早期发现接口错误。

回归测试:重新执行已经做过的测试的某个子集。它用于保证由于调试或其他原因引起的变化,不会导致非预期的软件行为或额外错误。

确认测试的目的:验证软件的有效性。

如果软件的功能和性能如同用户期望的,就是有效的 确认测试以用户为主,重要内容是复查软件配臵。

条件测试的目的不仅是检测程序条件中的错误,而且是检测程序中的其他错误。在一段程序中已经发现的错误数往往和尚未发现的错误数成正比。

等价划分法和边界值分析法都只孤立地考虑各个输入数据的测试功效,而未考虑多个输入数据的组合效应。软件可靠性:程序在给定的时间间隔内,按照规格说明书的规定成功运行的概率 错误:由开发人员造成的bug;故障:由错误引起的软件的不正确行为

软件可用性:程序在给定的时间点,按照规格说明书上的规定,成功地运行的概率。预防性维护:为了改进未来的可维护性或可靠性…… 软件维护分为 非结构化维护和结构化维护

维护事件流的最后一个事件是复审,它再次检验软件配臵的有效性,并保证事实上满足了维护要求表中的要求。软件的可维护性:维护人员理解、改正、改动或改进这个软件的难易程度。提高软件维护性是支配软件工程方法学所有步骤的关键目标。

决定软件可维护性因素:可理解性、可测试性、可修改性、可移植性、可重用性 用户文档包括:功能描述、安装文档、使用手册、参考手册、操作员指南 面向对象方法用对象分解取代了传统方法的功能分解。对象彼此之间仅通过消息传递相互联系。面向对象=对象+类+继承+消息传递通信

如果仅用对象和消息,则称为基于对象的方法,而非面向对象的方法。

如果进一步要求把所有对象都划分成类,则称为基于类的方法,仍非面向对象的方法。只有同时使用以上4点,才是面向对象的。

OOD不同于面向过程设计,其思想是:使用现实世界的概念抽象地思考问题而自然的解决问题。(重要的是应用模型)

人在认识和解决复杂问题时最有力的思维工具是抽象。

传统的软件开发方法以算法为核心,开发过程基于功能分析和分解。

面向对象方法基于构造问题领域的对象模型,以对象为中心构造软件系统。对象=描述属性的数据+对数据施加的操作

对象是具有相同状态的一组操作的集合。(从OOD看对象)

对象是对问题域中某个东西的抽象,这种抽象反映了系统保存有关这个东西的能力与他交互的能力。(从信息模拟看对象)

对象:以数据为中心的、主动的、实现了数据封装、本质上具有并行性、模块独立性好 一个对象类型也可以看成是一种抽象数据类型

类:对具有相同数据和相同操作的一组相似对象的定义。消息具有:接受消息的对象、消息选择符(消息名)、变元。属性是对客观世界实体所具有的性质的抽象

继承分但继承和多重继承(多个父类),使用多重继承是要注意避免二义性。继承中,底层的性质将屏蔽高层的同名性质。

多态性通过虚函数实现。虚函数->实现动态联编 函数重载通过静态联编实现。OO 3models:

描述 系统数据结构——对象模型 描述 系统控制结构——动态模型 描述 系统功能计算——功能模型

典型的软件系统使用数据结构(对象模型),执行操作(动态模型)并且完成数据值的变化(功能模型)聚集表示类与类之间的关系是整体与部分的关系。泛化即继承。

动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列。所有对象都具有自己的生命周期,状态是对对象属性值的一种抽象。一个触发行为称作一个事件。用状态图描绘对象的状态、触发状态转换的事件以及对象的行为(对事件的响应)。

每个类的动态行为用一张状态图来描绘,各个类的状态图通过共享事件合并,从而构成系统的动态模型。动态模型是基于事件共享而相互关联的一组状态图的集合。用例模型描述的是外部行为者所理解的系统功能。

用例是一个类,他代表一类功能而不是使用该功能的某个具体实例。用例的实例称脚本。一个用例模型的创建包括:定义系统、寻找行为者和用例、描述用力、定义用力之间的关系、确认模型。针对每个类建立的动态模型,描述了类实例的生命周期或运行周期。

状态转换趋势行为发生,这些行为在数据流图中->处理,在用例图中->用例,同时与类图中的服务对应 数据流图的对应:

数据存储,原点/终点:对象 数据流:对象的属性值或对象

对象模型描述了数据流图中的数据流、数据存储以及数据原点/终点的结构。

分析过程总是提取系统需求的过程。

需求陈述的内容:问题范围、功能需求、性能需求、应用环境、假设条件 面向对象分析首要的工作:建立问题域的对象模型。对象模型的建立:

确定对象类和关联 给类增添属性

用适当的继承关系合并组织类

建立了动态模型和功能模型后,再定义类中的操作

应该按问题领域而不是功能分解方法来确定主题。脚本描述事件序列

从OOA到OOD,是一个逐渐扩充模型的过程,OOD即是用OO的观点建立求解域模型的过程。OO中,对象是最基本的模块。

对象之间,应降低交互耦合,提高继承耦合。对象间存在 服务内聚、雷内聚、一般-特殊内聚。

OOD准则:模块化、抽象、信息隐藏、若耦合、强内聚、可重用。

类构件的三种重用方式:实例重用(最基本的重用)、继承重用和多态重用。系统的总框架是基于问题域的。

设计实现服务的算法:算法复杂度、易理解、易实现、容易修改 程序设计风格中从所完成的功能看,有两类不同类型的方法:

策略方法:检查系统运行状态,处理出错情况,并不直接完成计算或实现复杂算法。实现方法:仅针对具体数据完成特定处理,用于实现复杂算法。

OO测试:单元测试、集成测试、确认测试

——授课教师:宁波大学 钱旭明老师

——总结人:宁波大学

张睿卿

第三篇:潘海云论文

计算机的保护策略

我们所处的时代是信息技术高速发展的时代,人们的生活越来越多地依赖于信息技术。它一方面提高了人们的生活品质,另一方面也给人们带来烦恼。如何确保计算机处于安全的环境下提供给用户使用,是计算机管理人员必须思考的问题。

关键词:公共计算机、硬盘还原卡、影子系统

图书馆、网吧、多媒体教室、机场和复印店等公共计算机由于使用的频率高,并且由于用户操作的失误,经常会导致文件丢失、病毒危害,并受到恶意软件和黑客攻击等问题。另外,随着公共计算机系统使用的时间长,垃圾文件增加,常导致计算机的运行速度变慢。如何确保公共计算机在安全状态下快速地运行,是每一个使用者都关心的问题。目前,最主要的几种加强计算机系统的防护技术有基于硬件的硬盘还原卡以及基于软件的影子系统等。硬盘还原卡

硬盘还原卡,也称硬盘保护卡,它可以让电脑硬盘在非物理损坏情况下,恢复到最初的样子。还原卡的主体是一种硬件芯片,插在主板上与硬盘的(主引导扇区)协同工作,在每次启动计算机时自动恢复盘信息,它可以让潘海云论文系统每次都保持在新装机时的状态。换句话说,不管是病毒、误改、误删、故意破坏硬盘的内容等,都可以轻易地还原。因此,它广泛应用在网吧、图书馆、计算机机房等公共计算机上。影子系统

操作系统,同时创建一个和真实操作系统一模一样的虚拟化影像系统,主要用于保护操作系统。它构建现有操作系统的虚拟影像即影子模式,它和真实的系统完全一样,用户可随时选择启用或者退出这个虚拟影像。用户进入影子模式后,所有操作都是虚拟的,不会对真正的系统产生影响,一切改变将在退出影子模式后消失。因此所有的病毒、木马程序、流氓软件都

计算机的保护策略

我们所处的时代是信息技术高速发展的时代,人们的生活越来越多地依赖于信息技术。它一方面提高了人们的生活品质,另一方面也给人们带来烦恼。如何确保计算机处于安全的环境下提供给用户使用,是计算机管理人员必须思考的问题。

关键词:公共计算机、硬盘还原卡、影子系统

图书馆、网吧、多媒体教室、机场和复印店等公共计算机由于使用的频率高,并且由于用户操作的失误,经常会导致文件丢失、病毒危害,并受到恶意软件和黑客攻击等问题。另外,随着公共计算机系统使用的时间长,垃圾文件增加,常导致计算机的运行速度变慢。如何确保公共计算机在安全状态下快速地运行,是每一个使用者都关心的问题。目前,最主要的几种加强计算机系统的防护技术有基于硬件的硬盘还原卡以及基于软件的影子系统等。硬盘还原卡

硬盘还原卡,也称硬盘保护卡,它可以让电脑硬盘在非物理损坏情况下,恢复到最初的样子。还原卡的主体是一种硬件芯片,插在主板上与硬盘的(主引导扇区)协同工作,在每次启动计算机时自动恢复盘信息,它可以让潘海云论文系统每次都保持在新装机时的状态。换句话说,不管是病毒、误改、误删、故意破坏硬盘的内容等,都可以轻易地还原。因此,它广泛应用在网吧、图书馆、计算机机房等公共计算机上。影子系统

操作系统,同时创建一个和真实操作系统一模一样的虚拟化影像系统,主要用于保护操作系统。它构建现有操作系统的虚拟影像即影子模式,它和真实的系统完全一样,用户可随时选择启用或者退出这个虚拟影像。用户进入影子模式后,所有操作都是虚拟的,不会对真正的系统产生影响,一切改变将在退出影子模式后消失。因此所有的病毒、木马程序、流氓软件都无法侵害真正的操作系统,它们的所有操作都只是假象。两者之间的比较

硬盘保护卡实现起来很容易,只要把保护卡装到主板插槽上,再安装相应的驱动程序,便可以实现保护的功能。同时,硬盘保护卡还可以进行网络拷贝,只需要对网络里的一台计算机进行设置和操作,就可以通过同一网络里带有保护卡的计算机进行统一的设置。但它有一个很致命的缺点,那就是每次启动都会对硬盘进行一次读写,这样对硬盘的寿命有很大的影响。其次,硬盘保护卡也不能完全保护我们的系统,如机器狗病毒可以穿透保护卡,从而使我们的电脑感染各种病毒。另外,安装和维护成本较高。除需要购置硬盘保护卡以外,还需要在主板上安装保护卡以及负责日常保护卡的维护,这将带来资金的投入和人员的扩充。影子系统作为一个软件,只需要在计算机上安装即可。安装后选择模式设置,在模式设置里选择进入影子模式确定后就可以了。当然,进入影子模式的盘符自己可以随便选择,可以完全进入影子模式,也可以使某个盘进入影子模式。但是,如果想下载安装其他程序,先退出影子模式,重新启动电脑后选择进入进入正常模式,安装成功后重新进入影子模式。因此,必须重启两次电脑才能安装好软件,这将给维护工作带来额外的工作量。另外,我们在退出影子模式安装软件时,必须确保我们安装的软件和移动存储器是没有病毒的,否则,由于我们先入为主的观念,将会放松对计算机进行查毒、杀毒。如此,病毒将一直存在于我们的计算机内,直到我们发现它。

通过对这两种保护方式的比较,我们了解各种保护方式有各自的优缺点。但如果从经济和实用性的角度来看,影子系统是一个非常不错的系统保护工具,在公共计算机上的应用更受到管理人员的青睐。

如何打造一个安全的公共计算机环境

无法侵害真正的操作系统,它们的所有操作都只是假象。

两者之间的比较

硬盘保护卡实现起来很容易,只要把保护卡装到主板插槽上,再安装相应的驱动程序,便可以实现保护的功能。同时,硬盘保护卡还可以进行网络拷贝,只需要对网络里的一台计算机进行设置和操作,就可以通过同一网络里带有保护卡的计算机进行统一的设置。但它有一个很致命的缺点,那就是每次启动都会对硬盘进行一次读写,这样对硬盘的寿命有很大的影响。其次,硬盘保护卡也不能完全保护我们的系统,如机器狗病毒可以穿透保护卡,从而使我们的电脑感染各种病毒。另外,安装和维护成本较高。除需要购置硬盘保护卡以外,还需要在主板上安装保护卡以及负责日常保护卡的维护,这将带来资金的投入和人员的扩充。影子系统作为一个软件,只需要在计算机上安装即可。安装后选择模式设置,在模式设置里选择进入影子模式确定后就可以了。当然,进入影子模式的盘符自己可以随便选择,可以完全进入影子模式,也可以使某个盘进入影子模式。但是,如果想下载安装其他程序,先退出影子模式,重新启动电脑后选择进入进入正常模式,安装成功后重新进入影子模式。因此,必须重启两次电脑才能安装好软件,这将给维护工作带来额外的工作量。另外,我们在退出影子模式安装软件时,必须确保我们安装的软件和移动存储器是没有病毒的,否则,由于我们先入为主的观念,将会放松对计算机进行查毒、杀毒。如此,病毒将一直存在于我们的计算机内,直到我们发现它。

通过对这两种保护方式的比较,我们了解各种保护方式有各自的优缺点。但如果从经济和实用性的角度来看,影子系统是一个非常不错的系统保护工具,在公共计算机上的应用更受到管理人员的青睐。

如何打造一个安全的公共计算机环境

首先,在计算机上安装影子系统,然后进入正常模式下进行相关的设置。修改配置文件,设置默认启动系统为单一影子系统或完全影子模式(主要根据公共计算机所在的场合所决定),并把选择系统的时间设置为一秒,这样一般的用户将在默认的情况下进入影子模式。另外,设置进入正常模式的密码,以防非管理人员进入真实系统进行破坏。这样,将保证只有管理人员才能对系统进行管理和维护。当然,管理人员必须在计算机上安装日常经常使用的软件,如、阅读器、下载工具、影音播放器等等。当大部分的用户都需要用到其他的软件时,则需要管理员进入正常模式下进行安装。虽然这给用户和管理人员带来一点麻烦,但从维护和安全的角度来看,它将大大减少计算机感染病毒的风险。其次,公共计算机上须安装杀毒软件。虽然装有影子系统的计算机在每次启动后都将自动恢复,但仍不能确保计算机是处于安全的状态之下,例如使用者携带的盘含有病毒或木马程序等,因此需安装必要的杀毒软件进行检测和杀毒。但是,由于计算机处于影子系统状态下,每次启动后系统都将被还原,这样杀毒软件的病毒库将不能得到及时的更新。此时需穿透影子系统,即把杀毒软件的病毒库文件夹排除在保护之外。例如,在安装了影子系统计算机上,进入正常模式,在软件主界面点击例外列表,在弹出的窗口点击添加文件夹,然后单击浏览,选择病毒库文件夹,确定后重新启动计算机。如此,每当杀毒软件自动更新病毒库时,都可以把数据保存起来,而不会使病毒库被还原。这将保证杀毒软件能够及时更新和有效地对盘等外存储器进行杀毒和保护。

最后,由于管理人员安装了影子系统,难免会产生先入为主的观点。他们认为系统完全处于保护状态中,但我们并不能确保安装的软件或用户携带的盘没有病毒或木马程序。此时,为了使用户的信息更加安全,在此建议在公共计算机上安装防火墙软件,如天网防火墙。安装完成后,把安全级别设置为中或高,此外也可以自定义规则,把有害的数据包挡在你的机器之外。下面是设置一个防止别人用木马冰河来控制计算机的规则:首先,把规则名称和说明填好,免得以后不知道这条规则具有什么样的作用;然后,在数据包方向就设

置成发送,木马都是从内到外的,对方的地址就设置成任何地址,不论是谁想用冰河来窃取信息都没办法了。冰河使用的协议是,端口是,所以就选择协议,本机端口的;最后,设置成满足上述条件的时候就拦截,同时记录在日志里,并且会警告一声。这样,就可以防止木马冰河入侵计算机了。

结语

俗语说,没有坚固不摧的矛,也没有攻无不克的盾。由于计算机技术的不断发展,总会有最新的病毒出现并入侵我们的电脑,也总会有相应的解决策略。作为一个公共计算机的管理人员,需及时留意计算机技术革新,保证计算机处于安全的状态下运行。

件主界面点击例外列表,在弹出的窗口点击添加文件夹,然后单击浏览,选择病毒库文件夹,确定后重新启动计算机。如此,每当杀毒软件自动更新病毒库时,都可以把数据保存起来,而不会使病毒库被还原。这将保证杀毒软件能够及时更新和有效地对盘等外存储器进行杀毒和保护。





第四篇:张海娟上课教案

《真理诞生于一百个问号之后》教案

张海娟

教学目标:

1.研读三个关于科学发现的故事,着重从“问号”、“真理”及“从问号到真理的过程”,正确理解“真理诞生于一百个问号之后”的含义。

2.能联系上下文,理解含义深刻的句子。

3.体会作者的写作特点,学习用事例说明道理的方法,并能仿照课文的写法,写一段话。

4.引导学生认识凡事多问几个为什么的重要性。教学重点:

理解三个关于科学发现的故事,能从具体事例中正确理解“真理诞生于一百个问号之后”的含义。教学难点:

能仿照课文的写法写一篇短文,用具体事实证明一个观点。教学准备:

学生:查找与课文中相类似的事例。老师:多媒体课件。教学过程:

一、回顾复习:

1.根据意思写词语。

2.作者在文中提出了一个什么观点? 3.作者列举了哪几个事例来说明观点?

二、新课:

1.比较三个事例在内容、写法上的相同点。(是啊,“从细小的、司空见惯的现象中发现问题、追根求源,最后把“?”拉直

变成“!”,找到了真理。”这也是课文中的哪个自然段的内容?)2.理解课文第二小节【纵观千百年来的科学技术发展史,那些定理、定律、学说的发现者、创立者,差不多都很善于从细小的、司空见惯的自然现象中看出问题,不断发问,不断解决疑问,追根求源,最后把“?”拉直变成“!”,找到了真理。】(请学生读)

提问:这里的“?”号和“!”号,它们代表的是什么?(科学家的疑问和寻求到的真理。)3.寻求科学真理的过程。

师:从疑问到找到真理这是一个漫长的过程,科学家们凭借着什么在这漫漫的长途中寻找到真理?请同学们自已读课文第3、4、5段,找找看,看看三位科学家靠什么找到了真理。A、见微知著 出示句子:

●洗澡是一件非常普通的事情,而美国……敏锐地注意到……

(你是从“敏锐”一词,体会到谢皮罗教授的善于发现,敏锐的观察力,对吗?请你再读这句话,把你对这个词的体会读出来)

师:洗澡是件再普通不过的事情了,谢皮罗却敏锐地捕捉到一个细节……并抓住了问题的本质,这种本领就叫——见微知著。谢皮罗教授善于从细小的、隐约的现象中,看到它的实质,这种见微知著的本领同样在波义尔和奥地利医生身上找到吗?

让学生找出相关的句子,并交流。……波义尔立即敏感的意识到…… 他感到很奇怪,连忙叫醒儿子……(读出对加点词语的体悟)

师:看来要想发现问题,有所成就,首先得练就一双锐利的眼睛,善于观察到生活中的细枝末节,能见微知著。

B、不断发问、独立思考、追根求源

师:请同学用波浪线画出他们发问的句子。并写写你从中感受到科学家什么样的品质。

学生交流,教师引导。

那一连串的疑问其目的是为了——用文中的一个词:追根求源,或者说是打破沙锅问到底,其实发问的过程也是他们独立思考的过程,(板书:追根求源 独立思考)

让咱们跟随着这些科学家一起发问,一起思考,一起追根求源,请齐读这些发问的句子。C、锲而不舍(坚持不懈)

提问:当他们发现问题之后,他们是怎样做的?谢皮罗? 学生找句子,并交流

●谢皮罗紧紧抓住这个问号不放,进行了反复的实验和研究。

(我听出来了,你强调了“紧紧、反复”,为什么要这样读?)

(因为这样突出了他那坚持不懈的精神。)

提问:波义尔是怎样做的?你找到的句子是?你读这句话你准备强调哪个词?

这一奇怪的现象……许多实验。(强调许多)

师:谁来说说那位奥地利医生? 他百思不得其解……

师:“百思”说明他想的——很多很多,可是没有找到答案。是放弃还是继续研究下去?此时他可能在想?

总结:这三位科学家在提出问题后,他们锲而不舍、不断探索,最终取得成功。看来,探寻科学真理的过程就是:见微知著+善于发问+不断探索+独立思考+锲而不舍。

过渡:其实呀,科学并不是那样神秘莫测,真理也不是遥不可及。

4.学习最后两段。

请同学们读课文第7、8自然段,说说你从中读懂了什么? 学生交流。

总结:是呀!科学并不遥远,它可能就在我们身边,只要我们遇事能多问几个为什么,并不断探索,在解决了这些问题之后,我们就能得到真理。

5.领悟“!”所蕴涵的情感。

师:现在我们再看看这个感叹号“!”,我觉得它不仅仅是一个符号,一个“!”凝结了多少难以名状的情感啊!当他们走向了成功,回首自己走过的历程时,他们激动地、骄傲、兴奋……对世人说(指板书):真理诞生于一百个问号之后;……让我们也坚定地说——真理诞生于一百个问号之后!

6.交流类似谢皮罗、波义尔、奥地利医生这样的事例。学生交流课前找的资料。

小结:这些科学家成功的事例再次告诉我们一个不变的事实,那就是——真理诞生于一百个问号之后

三、体会写法,仿写练习。

1、课文学完了,我们来看一看这篇课文跟我们以前学过的 课文在写法上有什么不同?(本文先点明观点,然后通过具体事例证明观点,最后总结观点。)

学生回答之后,教师总结:这篇课文围绕着“真理诞生于一百个问号之后”这一观点,列举具体事例加以证明。这样的文章叫做议论文,不同于我们经常阅读的记叙文。

2、“失败乃成功之母”这句格言也是一条真理,现在就请你 们仿照本文的写法运用具体事例来写一篇短文。

附:板书设计:

20、真理诞生于一百个问号之后

问题 拉直 真理

?-------------→!见微知著+善于发问+不断探索+独立思考+锲而不舍

第五篇:海张五教案5

《贱卖海张五》教学设计

翠峦第一小学 乔凤英 教学内容:

九年义务教育小学五年制第十册第5课《贱卖海张五》。教材分析:

本文取自冯骥才的《俗世奇人》,文章叙述了一件张明山捏泥人戏弄取笑海张五的事。这个生动、传奇的故事充分体现了泥人张嫉恶如仇,不畏强权和技艺高超的特点,海张五财大气粗、横行霸道的性格。学生在有感情地朗读课文的基础上品味富有表现力的语言,体会作者对人物动作、语言、神态细致入微地描写,激发他们热爱民间艺术的美好情感。设计理念:

本文教学设计以文题中的“贱卖”为主线,在此主线两侧进行两个人物的对比教学,其中也包含有众人对海张五的态度与泥人张的态度的对比等,从而烘托泥人张不畏强权、智者不锐的高贵品质。教学目标:

1.正确、流利、有感情地朗读课文。

2、联系文化背景领悟文章的内涵,对民族文化有所了解,激发学生热爱民间艺术的美好情感。

3、在品读的过程中了解故事情节、体会作者对人物细致入微的描写方法。教学重点:

学习作者对人物动作、语言、神态的描写方法。教学难点:

品味文章富有特色的语言,想象故事发生时的场景。教学方法:

以读代讲、讨论法和谈话法 学

法:

读写结合和合作探究法 教学准备:

1.泥人张相关泥塑作品的图片。

2.课前搜集“泥人张”相关的背景资料,了解“泥人张”称呼的由来。

3.多媒体课件。教学时间:

2课时。教学过程:

第1课时

一、欣赏图片、导入新课

1、泥塑欣赏(课件)

2、师:同学们,刚刚我们看到的是历代泥人张传人的泥塑作品,其比例之精确,传神之精妙让人叹为观止!而今天我们所要学习的课文主人公就是“泥人张”的创始人:张明山。

3、同学们,通过预习、查找资料,你们对我国民间艺人“泥人张”已经有了一些了解。谁愿意把你查找的资料与大家进行交流?请一位同学对张明山做以人物简介。

师:张明山作为泥人张民间艺术的创始人,不但技艺高超而且聪明睿智,更有不少趣闻流传于世,下面请同学们走进趣闻之一,(板书课题:贱卖海张五)

二、初读课文,提炼主旨

1.请同学们自由朗读课文,注意读准字音,读通句子。(学生自由读课文)

2.读了课文,谁能说说课文主要讲了一件什么事?(引导学生根据故事的起因、经过、结果来概括主要内容。)

3.本文是谁和谁之间的较量?(泥人张和海张五)

4.请大家快速读课文,想想泥人张和海张五是怎样的人?你能各用一个字把他们两个人的特点概括出来吗?(引导归纳后板书:泥人张是“奇”,海张五是“狂”。)

三、研读理解,深情感悟

1.在了解“泥人张”高超的手艺之前,我们先来认识一下海张五这个人物。海张五狂妄、横行霸道,在课文的哪些地方有所体现呢?

2.学生读课文,找出相关语句画出来。

3.指名读相关语句。(课件同时出示句子)

(1)中间一位穿得阔绰,大脑袋,中溜个子,挺着肚子,架式挺牛,横冲直撞往里走。

(2)跟着就是海张五的大粗嗓门说:“捏什么?狗不理包子吧!”随后一阵笑,拿泥人张找乐子。

(3)他朝着正走出门的泥人张的背影叫道:“这破手艺也想赚钱,贱卖都没人要。”

谁愿意再来读读这几句话?结合具体语境,要读出每句话应有的语气。

谁愿意将这几句话的内容用表演的形式展现给大家。(学生先练习,再指名表演。)

4结合刚才的表演,让学生再来读一读描写海张五的句子,体会他的狂妄。

5.海张五的狂妄、横行霸道被同学们演绎得淋漓尽致,真是了不起!对海张五的狂妄——“做买卖的地界,谁有钱谁横,官儿也怵三分”,这里“怵”是什么意思?泥人张也怵他吗?

提问:从哪儿能看出泥人张不怵他?(“泥人张只管饮酒,吃菜,西瞧东瞅,全然没把海张五当个人物。”)6.面对海张五的无理挑衅、侮辱,泥人张是怎样“回报”他的?

“回报”为什么要用引号呢?(学生:回报原意是指报答别人,这里是回应的意思。)

7.课件出示第8、9自然段。

“只见人家泥人张似乎没听见,左手伸到桌子下边,打鞋底下抠下一块泥巴。右手依然端杯饮酒,眼睛也只瞅着桌上的酒菜,这左手便摆弄起这团泥巴来:几个手指飞快捏弄,比变戏法的手还灵巧。海张五那边还在不停地找乐子,泥人张这边把那些话在他手里的泥上全找回来了。随后手一停,他把这泥团往桌上一撂,起身去柜台结账。

吃饭的人伸脖一瞧,这泥人真捏绝了!就像把海张五的脑袋割下来放在桌上一般:瓢似的脑袋,小鼓眼,一脸狂气,比海张五还像海张五,只是只有核桃大小。”

8.请同学们细读这两段话,并画出描写泥人张动作的词,说说从中你体会到了什么?(泥人张的技艺高超,只用左手,不用眼瞧,却能“飞快”,捏的泥人 “比海张五还像海张五”“只有核桃大小”。“似乎没听见”“打鞋底下抠下一块泥巴”“把这泥团往桌上一撂”是无声的反抗,表现出了泥人张作为手艺人不畏强权,敢于同恶霸势力作斗争的高贵品质。)

9.理解重点句子:

(1)“海张五那边还在不停找乐子,泥人张这边把那些话在他手里的泥上全找回来了。”让学生说一说,这句中的“话”指什么话?泥人张怎么在泥上找回来了?

(2)“比海张五还像海张五”。

提问:本来捏的就是海张五,为什么还这样说? 10.能用一个词来形容泥人张的高超技艺吗?(引导学生大胆说,只要意思贴近即可,如:心灵手巧、身手不凡„„)在第9自然段中用了“比„„还”的句式,读一读,想一想这个句子什么意思?(表示第1个比第2个程度更深)并模仿这个句式说一句话。

11.泥人张与海张五的较量并没有结束,引读“第二天„„”,学生接读后3个自然段。

12.泥人张与海张五较量的结果是谁赢了?(泥人张)泥人张用他高超的技艺、不畏强权的品质赢得了大家的支持与敬佩,更维护了自己的尊严。他赢得奇,赢得妙,所以文中第1自然段用了什么修辞方法向我们介绍了这个奇人?(夸张的手法)

13.课件出示句子“天津手艺人中,捏泥人的‘泥人张’排第一,而且,有第一,没第二,第三差着十万八千里。”

读读这句话,换一种表达方式来说一说,体会哪种说法更好。(运用夸张的手法,更能突出泥人张的技艺高超。)

齐读这句话,“而且、没、差”要重读。

四、精读内化,品味赏析

1.结合自己的感受,有感情地朗读课文。

2.用自己的话讲述《贱卖海张五》的故事。

(1)学生练讲。

(2)指名讲故事。

3.读完了这个故事,能用一句话说说这个传奇的艺术家泥人张给你留下了什么印象吗?

五、拓展延伸,积累运用

填空:课文第8自然段有关动作的词语填写,体会这些词语运用的妙处。

师:用天津百姓的话来说,泥人张“捏嘛像嘛”,作为泥人张的创始人张明山,《俗世奇人》作者冯骥才夸其手艺人中排第一,有第一,没第二,第三差着十万八千里。著名画家徐悲鸿在《泥人张感言》中盛赞其风骨。慈禧太后寿宴无视众多金银珠宝独爱泥人张的泥塑。在历代泥人张传人的不断努力和创新下,泥人张这一泥塑艺术形式以声名远播、享誉世界。

六、布置作业

1.简要写一写自己所了解的“泥人张”。

2.排练这个小故事,在活动课上表演。

板书设计:

泥人张:奇:不畏强权、技艺高超

智斗

海张五:狂:财大气粗、横行霸道

教学反思:

小组合作和设疑的教学方法极大调动学生积极性,激发学生的学习兴趣,在今后的教学中还要运用。

下载软件工程教案(张海潘版本)1word格式文档
下载软件工程教案(张海潘版本)1.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    海 燕教案1

    海燕 作者:高尔基执教:监利县实验初级中学 陈良红 【教学内容】: 1、引导学生把握散文诗的优美意境,培养学生阅读鉴赏诗歌的能力。2、品味文章用词的准确性,积极发展学生的形象......

    张潘镇工作总结

    张潘镇“一打击两整治”专项行动工作总结自全县“一打击两整治”专项行动安排部署以来,张潘镇党委、政府高度重视,结合本镇实际多措并举,把“一打击两整治”专项活动引向深入。......

    软件工程教案

    刘鹏 《软件工程》教案 《软件工程》教学案 一、课程的性质与任务 软件工程课程是中央广播电视大学计算机科学与技术专业的统设必修课,4学分,72学时,其中讲课46学时,实验26学时......

    软件工程练习题1

    《软件工程概论》练习题 单选15 判断10 一、概念解释15 1.软件2.软件危机3.软件生命周期4.概要设计、详细设计5.软件测试 6.信息隐藏7.耦合8.内聚9.黑盒测试10.白盒测试11.对象 1......

    张海鹏 德育论文

    德育论文:在初中思想品德课上如何体现德育与心育的有机统一土城子中学张海鹏 积极探索和采用有效的教学方法,这是成功实施心育的重要途径。教学方法是教学活动中的重要方面,是......

    张海猛演讲稿

    尊敬的各位领导、老师: 大家下午好!我今天演讲的题目是《我与学校共发展》。 金秋九月,我跟一批年轻的教师一起走进了这个美丽整洁的校园-清怡中学。一个个年轻漂亮、精神饱满......

    教案软件工程导论

    授课日期: 11月13日课程名称: 软件工程导论教学目的:让学生了解软件以及软件危机的概念 了解软件危机出现的原因以及解决途径 熟悉软件工程产生的原因以及其生命周期各个阶段的......

    软件工程导论教案

    计算机系统发展迅速,但是人们仍然没有彻底摆脱“软件危机”的困扰,软件已经成为限制计算机系统发展的瓶颈。计算机软件工程学就是为了研究如何消除软件危机而发展起来的。那么......