您好,欢迎访问三七文档
第一章1,软件危机的概念:在计算机软件的开发和维护过程中遇到的一系列严重问题。2,产生软件危机的原因:一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法的不正确性有关。3,消除软件危机途径:a,对计算机软件有一个正确的认识;b,充分认识到软件开发不是某种个体的神秘技巧,而是各类人员协同配合,共同完成的工程项目;c,应该推广和使用在时实践中总结出来的开发软件成功的技术和方法,并研究探索更好,更有效的技术和方法,尽快消除在计算机系统早起发展阶段形成的一些错误概念和做法;d,开发和使用更好的软件工具。4,软件工程的概念:是指导计算机软件开发和维护的工程学科。5,软件工程的基本原理:用分阶段的生命周期计划严格管理;坚持进行阶段评审;实行严格的产品监控;采用现代程序设计技术;结果应能清除的审查;开发小组的人员应该少而精;承认不断改进软件工程实践的必要性。6,软件不是程序,软件=程序+数据+文档。7,软件工程研究的内容:软件开发方法,软件开发模型,软件支持过程和软件管理过程。8,软件工程的三要素:过程+方法+工具。:1,什么是软件的生命周期:软件定义,软件的开发和运行维护3个时期组成。包括:问题定义,可行性研究,需求分析,概要设计,编码和单元测试,综合测试,软件维护。2,如何理解软件生命周期的内在特征:软件产品的生命周期是指从设计该产品的构思开始,到最终该产品被市场淘汰的全过程。这个概念从时间的角度讲软件的开发和维护的过程分解为若干个阶段,每个阶段都有相对独立的任务。每个阶段任务相对总任务难度降低,会比较容易控制,故该合理划分软件生命周期。3,对比瀑布模型,原型模型,增量模型和螺旋模型。瀑布:主要体现了分阶段、有控制的思想。活动间强调按顺序、文档化;寻在的问题是过于理想化,每一步的工作必须完整准确,否则无法进行下一步工作。原型:需求分析入手快速,表达直观,容易交流。解决了瀑布模型的需求分析入手难得问题。增量:对于需求复杂的系统,采用分块开发,逐步集成的开发策略。体现了演进、迭代思想,每一块就是一个增量。每个增量就是一个迭代。螺旋:融合了以上三种模型,融进了循环往复,强化了演进迭代思想,增加了风险控制环节,但是,风险分析的正确性是左右软件演进的关键因素。4,XP是一种是现在版的增量模型,特点是客户参与,适应变化、测试驱动,以代码为核心。5,CMM的作用:是评价软件组织开发能力的参考模型,是一种认证标准,认可软件工程达到的程度;是软件组织提升自身能力、走向成熟的参考系;CMM软件的提高依靠软件过程改进;CMM既是评估软件能力成熟的模型,也起到了促进软件企业按照该模型设置的级别和关键过程域不断改进自己软件过程的作用。:1,什么是需求分析,分析的目的和工作目标是什么?需求分析是发现、求精、建模、规格说明和复审的过程。目的:弄清用户对系统的细节要求,完整、准确、清晰、具体的回答目标系统“做什么”。目标:对用户提出的软件功能、性能等应用问题及其环境进行分析与理解,采用一系列的分析方法和技术,把系统可行性分析阶段产生的系统规格说明书和项目规划逐步精确化、完全化、一致化,借助于当前系统的逻辑模型导出目标系统的逻辑模型,最终形成规格说明文档的过程。2,数据流图,状态转换图,实体关系图,图3.13,如何理解结构化需求分析方法和基本思想?结构化需求分析是一种面向数据流的需求分析方法。它基于“分解”和“抽象”的基本思想。逐步建立目标系统的逻辑建模,进而描绘出满足用户需求的的软件系统。4,如何进行结构化需求分析,其建模方法有哪些?a,建立当前系统的“具体模型”b,抽象出当前系统的逻辑模型;c,建立目标系统的逻辑模型;d,人机界面和其他问题。结构化分析中经常用到的建模方法主要有:数据流图,实体关系,控制流图,状态转换图。第四章:1,图4.1,4.62,模块:是完成特定功能的程序实体。模块时构成程序的基本构件。抽象:抽出事务的本质特征而暂时不考虑他们的细节。逐步求精:为了集中精力解决主要问题而尽量推迟对细节问题的考虑。信息隐藏:设计和确定模块时,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说是不能访问的。3,模块独立性的指标:内聚和耦合。耦合是对一个软件结构内不同模块之间互联程度的度量。内聚是标志一个模块内各个元素彼此结合的紧密程度。4,启发规则:改进软件结构提高模块独立性;模块规模应该适中;深度、宽度、扇出和扇入都应适中;模块的作用域应该在控制域之内;力争降低模块接口的复杂程度;设计单入口单出口的模块;模块功能应该可以预测。5,变化流:信息沿输入通路进入系统,同时由外部形式变换为内部形式,进入系统的信息通过变换中心,经加工处理后再沿输出通路变换成外部形式离开软件系统。事务流:数据沿输入通路到达一个处理T,这个处理根据输入数据类型在若干个动作序列中选出一个来执行。6,过程设计工具:程序流程图,盒图(N-S图),PAD图(问题分析图),判定表,判定树,过程设计语言。7,软件设计与需求分析的关系:软件设计可看成将需求规格说明书逐步转换为软件源代码的中间过渡过程。8,软件设计的工作目标:将需求模块细化为设计模型,形成设计规格说明书。任务:概要设计和详细设计。概要设计是根据需求确定软件和数据的总体框架,详细设计是将其进一步精化成软件的算法和数据结构。9,什么是模块化,为什么要模块化?模块化就是把程序划分为可独立命名且独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。Why:将问题简化,划分模块可使每个模块完成单一的功能;可以独立的进行模块的编码测试,便于软件开发工作的组织;便于纠错;便于对特定模块的优化;模块的重复利用,提高软件产品的复用率;程序易于理解;利于估计工作量和开发成本。10,简述面向数据流谁方法的主要思想:就是通常所说的结构化设计方法。它是以数据流图为基础,将DFD变换软件结构的不同映射方法,以软件结构图(SC图)的形式表现。Sc图描述软件系统的层次和分块结构的关系,体现模块与模块之间的联系与通讯,从而表达软件的体系结构。11,简述软件设计优化的准则:划分模块时,尽量做到高内聚,低耦合,保持模块的相对独立性;模块的大小要适中;模块的接口要简单、清晰,含义明确,便于理解,易于实现、易于测试和维护;模块的控制范围因子其控制范围之内,且判断所在的模块,因与受其影响的模块在层次上尽量靠近;软件结构深度、宽度、扇入、扇出应适当;力求设计单入口、单出口的模块;设计功能可预测模块的划分,应防止功能过于局限。:1,测试的目标或者定义:为了发现程序中的错误而执行的程序的过程;好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;成功的测试是发现了至今尚未发现的错误的测试。2,黑白盒子测试的概念及作用,流图画法黑盒子:依据软件的需求规格说明书,检查程序功能是否满足需求的要求,主要的黑盒子测试方法有:等价类划分、边界值分析、错误推测法、因果图法、场景法。白盒子:主要针对程序内部逻辑和数据流程的测试,因此白盒子测试的测试用例设计需要了解程序的内部逻辑。常用白盒子测试方法:逻辑覆盖法,基本路径测试法。3,测试的方法:逻辑覆盖(语句覆盖;判断覆盖;条件覆盖;判定/条件覆盖;条件组合覆盖)、控制结构测试(基本路径测试、条件测试、数据流测试、循环测试)。4,基本的路经测试:根据过程设计结果画出相应的流图;计算流图的环型复杂度;确定线性独立路径的基本集合;设计可强制执行基本集合中每条路径的测试用例。5,什么是等价类划分?步骤。等价划分是一种黑盒子测试方法,这种方法把程序的输入域划分成数据类,据此可以导出测试用例。6,边界值分析:刚刚小于、大于、等于测试。7,集成测试,由模块组装成程序时有两种方法:非渐增式测试方法和渐增式测试方法。8,黑白盒子对比:黑盒子测试白盒子测试优点适用于各阶段测试;可构成测试数据使特定程序部分得到测试;从产品功能角度测试;有一定的充分性度量手段;易入手生成测试数据可有较多工具支持缺点某些代码得不到测试;通常不易生成测试数据;如果规格说明有误,则无法发现;无法对未实现规格说明的部分进行测试;易进行充分性测试工作量大,通常只用于单元测试,有应用局限性质是一种确认技术,回答“我们在构是一种验证技术,回答”我们是在正确的构造造的是一个正确的系统吗?“一个系统吗?”:1,对象:是封装了数据结构及可以施加在这些数据结构上的操作的封装体,这个封装体可以唯一的标志它的名字,而且向外提供一组服务。类:是对具有相同属性和行为的一个或者多个对象的描述。继承:能够直接获得已有的性质和特征,而不必重复定义他们。多态性:在类等级的不同层次中可共享一个行为或方法的名字,然而不同层次的每个类却各自按自己的需求来实现这个行为。2,面向对象的三种模型特点:对象模型:表示静态的、结构化的系统的“数据”性质。描绘了系统的静态结构,从客观世界实体的对象关系角度来描对象。动态模型:表示瞬间的、行为化的系统的“控制”性质。它关心的是系统的挖掘及操作的执行顺序,序幕宏观世界从对象的事件和状态的角度出发,表现了对象的相互行为.功能模型:表示变化的系统的“功能”性质。描述了系统的所有计算,指出发生的时间,事件和客观.3,三种模型之间的关系:三种主要模型是对象模型、功能模型、动态模型。他们有三个不同但又密切相关的角度模拟目标系统。对象模型是最基本、最核心、最重要的3个模型之间具有下述关系。(1)与功能模型的关系:对象模型展示了功能模型中的动作者、数据存储和流的结构,动态模型展示了执行加工的顺序。(2)与对象模型的关系:功能模型展示了类上的操作和每个操作的变量,因此它也表示了类之间的“供应者一客户关系;动态模型展示了每个对象的状态以及它接收事件和改变状态时所执行的操作。(3)与动态模型的关系:功能模型展示了动态模型中未定义的不可分解的动作和活动的定义,对象模型展示了是谁改变了状态和承受了操作。4,面向对象基本概念:面向对象=对象(O+类(C)+继承(I)+通信(M):1,面向对象分析的过程面向对象分析就是抽取和整理用户需求并建立问题域精确模型的过程。面向对象的基本任务是运用面向对象的方法,软件工程师和用户必须进行充分的沟通,以了解基本的用户需求,对问题域和系统责任进行分析和理解。面向对象过程包括三个子模型:静态结构(对象模型)、交互模型(动态模型)、数据变换(功能模型),五个层次:主题层、类与对象层、结构层、属性层和服务层。面向对象分析大体按照下列顺序进行:寻找类与对象,识别结构,识别主题,定义属性,建立动态模型,建立功能模型,定义服务。2,怎样建立对象模型:a,确定类与对象;b,确定关联;c,划分主题;d,确定属性;e,识别继承关系;f,反复修改。3,动态模型(交互图,转换图画法);功能模型(用例图画法)4,面向对象分析的目的是对客观世界的系统进行建模,是定义所有与待解决问题相关的类,完成对所求解问题的分析,确定系统“做什么”,并建立系统的模型。5,面向对象的基本任务是:获取客户对系统的需求;识别类和对象,定义类的结构和层次;建造对象-关系模型;建立对象-行为模型。:1,面向对象设计的准则:模块化、抽象、信息隐藏、弱耦合、强内聚、可重用。2,图8.23,简述面向对象启发规则设计结果应该清晰易懂;一般——特殊结构的深度适当;设计简单类;使用简单的协议;使用简单的操作;把设计变动减至最小。4,简述何为面向对象设计面向对象设计是面向对象方法在软件设计阶段应用与扩展的结果,就是根据在问题域中已建立的分析模型,运用面向对象技术进行系统软件设计,并且补充实现的细节部分,形成符合成本和质量要求的,抽象的系统实现方案,在求解域中建立设计模型。:1,UML:是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示。2,UML图:用例图、静态图、行为图、交互图、实现图。:1,度量软件规模:代码行技术(LOC)、功能点技术(FP)。2,怎样设计任务::1,软件质量,就是供方提供的软件产品满足用户明确和隐含需求的能力特性的总和。2,软件
本文标题:软件工程
链接地址:https://www.777doc.com/doc-4365114 .html