您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 畜牧/养殖 > 河南农业大学软件工程考点
第一章软件工程概论1.软件工程定义软件工程是开发、运行、维护和修复软件的系统方法。是一门指导计算机软件开发和维护的工程学科。软件工程学科是一门指导计算机软件开发和维护的工程学科。软件工程是一类求解软件的工程。2,软件工程包括三个要素:方法、工具和过程。方法:“如何做”工具:CASE,是软件开发环境中最重要的组成部分。过程:将方法和工具综合起来以达到合理、及时的进行计算机软件开发的目的。3,软件危机....指在计算机软件开发和维护过程中所遇到的一系列问题:1、不能正确地估计软件开发成本和进度,致使实际开发成本往往高出预算很多。2、软件产品不可靠,满足不了用户的需求,甚至无法使用。3、交付使用的软件不易演化,以至于人们不得不重复开发类似的软件。4、软件生产率低下,远远满足不了社会发展的需求。4,软件工程是为了解决软件危机而产生的。5,软件工程目标:生产具有正确性、可用性以及开销合算的产品。第二章软件开发模型1.软件生存周期......:软件生命周期实质上是大型系统开发过程中各项目阶段的一种表示方法,如同任何事物一样,软件也有一个孕育、诞生、成长、成熟、衰亡的生存过程。根据这一思想,把上述基本的过程活动进一步展开,可以得到软件生命期的6个步骤,即制定计划、需求分析、设计、程序编码、测试及运行维护。软件生命期模型是从软件项目需求定义直至软件经使用后废弃为止,跨越整个生命周期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。2,软件开发过程模型........(软件生存周期模型),是把软件生存周期中软件生产活动的有序流程用一个合理的框架——开发模型规范描述。软件开发模型是软件开发全部过程、活动和任务的结构框架。软件开发过程模型是一种软件过程的抽象表示法,它从一个特定的角度表现一个开发过程。软件过程模型主要是根据软件的类型、规模,特别是软件的开发方法、开发环境等多种因素确立模型。主要有:原型模型、演化模型、增量模型、瀑布模型。3,软件过程各阶段任务(了解)各种软件过程模型虽然有所不同,一般都由软件定义、软件开发和软件维护三个时期组成,每个时期又可由多个阶段(子阶段)组成。软件定义时期的活动是弄清软件“做什么”,软件开发时期的活动是集中解决软件“怎样做”,软件维护时期的活动是聚焦于软件的“修改/完善”,它们的主要活动特征可以概括为“What-How-Change”。1,软件定义时期是了解用户(或客户)提出的需求、确定项目的总目标、考察和分析项目的可行性、导出实现项目目标应该采用的策略,系统的功能,并估计该项目需要的资源和成本,制定工程进度表等。软件定义时期可以划分成问题定义、可行性研究、需求分析和开发计划四个阶段,其中,最核心的是需求分析阶段,所以,软件定义时期也可以称为需求分析时期。2,软件开发时期的任务是设计和实现已定义的,并经过需求分析的软件系统。软件开发时期通常划分成软件设计、软件实现和软件测试三个阶段。软件测试也可以分解到软件实现的各个活动中,可重新划分成编码和单元测试、集成测试、系统测试三个阶段。甚至,还可以认为软件测试不是一个独立的阶段,因为它应该和所有软件生产活动并行进行。3,件维护时期(阶段)任务是在整个软件运行时期内,当发现错误时加以改正,以确保运行正常;当环境改变时修改软件,以适应新的环境;当用户有新要求时及时改进软件,以满足需求等一系列维护活动。每一项维护活动一般都经过提出(或报告)维护问题、分析维护要求、提出维护方案、审批维护方案、确定维护计划、修改软件设计、修改程序、测试/验收、维护报告等一系列环节(维护活动实质是一次压缩和简化了的软件定义和开发过程)。4,瀑布..模型(...WaterfallModel..............).也称线性顺序模型。瀑布模型把开发过程分成固定的、相对独立的各个阶段,每个阶段都有确定的、有限的任务,而且在各个阶段采用一些规范的开发方法和管理手段,力求保证软件质量和提高软件生产率。该模型适用于需求非常清楚的软件开发环境。图5.瀑布模型5,原型模型可分为:快速原型模型、抛弃式原型模型、演化式原型模型1,图8.抛弃式原型模型抛弃式原型模型建立原型的目的是,评价目标系统的某一个或某一些特性,以便更准确地确定需求,或者更严格地验证设计方案。使用完之后就把该原型系统抛弃掉,然后再重新构造正式的目标系统。抛弃式原型模型本质上仍属于瀑布模型,建立原型系统只不过是“需求分析”和“有效性验证”的一种辅助手段,需求分析阶段结束时原型系统的生存周期也就终止。6,增量模型(IncrementalModel)把软件描述、设计、实现活动分解成一系列相互有联系的增量构件的迭代开发,是瀑布模型顺序特征和快速原型模型迭代特征相结合的一种软件构件化的模型。增量式的开发过程,首先根据客户需要提供的服务的优先次序,确定一系列交付增量,每个增量提供系统功能的一个子集。随着开发过程的进展,每次迭代产生一个可发布的(可执行的)软件增量构件。增量模型是一种非整体开发的模型。是一种进化式的开发过程。7,螺旋模型....将开发过程分为几个螺旋周期,每个螺旋周期可分为4个工作步骤:第一,确定目标、方案和限制条件;第二,评估方案、标识风险和解决风险;第三,开发确认产品;第四,计划下一周期工作。对大型软件,需要多个原型描述系统的生存期,适于螺旋模型开发方法,将瀑布模型与原型化模型结合起来,并加入风险分析讨论。图11.螺旋模型结构第三章需求分析1.软件需求说明书是用户验证的一个标准。2.需求获取的内容分为:(了解)物理环境:对系统运行时所处的环境的要求。界面:软件与用户界面的友好性。用户或人的因素:对用户的要求。功能:你的系统什么的干活?文档:文字说明等。数据:对数据的各种要求。资源:软件运行时所需的数据、软件、内存空间等各项资源。安全性:******质量保证:可靠性和如何对付出错等。3,需求工程的基本活动包括:............●获取需求;深入实际,在充分理解用户需求的基础上,获取系统需求。●需求分析与建模;进行需求建模、对模型或原型进行分析。●确认需求;确保需求说明准确、完整地表达系统的主要特性。●进化需求。客户的需要总是不断(连续)增长的,进化需求是必要的。4,需求分析方法1.结构化分析方法是一种以数据、数据的封闭性为基础,从问题空间到某种表示的映射方法,由数据流图(DFD图)表示。2.信息建模法是从数据的角度对现实世界建立系统的信息模型,基本工具是ER图。是由实体、属性和关系组成的网络图。E-实体,是一个或一组对象;R-关系,实体之间联系或交互作用。3.面向对象的分析方法面向对象分析方法(OOA)的关键是识别问题域内的对象,分析它们之间的关系,并建立起三类模型。5,结构化需求分析方法在结构化需求分析方法中模型表示工具有:数据流图、数据字典、小说明。数据流图:是一种描述数据变换的图形工具,系统接受输入的数据,经过一系列的变换(加工),最后输出结果。数据字典:以一种准确的和无二义的方式定义所有被加工引用的数据流和数据存储。小说明:用于集中描述一个加工“做什么”。数据流图在数据流图中,加工、数据流、数据存储、数据源和数据谭是数据流图的基本成分。6,数据字典以一种准确的和无二义的方式定义所有被加工引用的数据流和数据存储。包含:数据流条目;数据存储条目;数据项条目7,实施步骤结构化分析从本质上说是一种抽象和分解技术,“自顶向下、逐步求精”的过程。有了工具后(数据流图、数据字典、小说明),我们来看看如何进行结构化分析:1确定系统边界,画出系统环境图。2自顶向下,画出各层数据流图。3定义数据字典。4定义小说明。5汇总前面各步骤的结果。8,需求的可变性必须进行验证。9,需求验证的内容1有效性检查—指功能需求是否符合用户所提出的需求。2一致性检查—系统功能描述及约束是否一致。3完备性检查—是否包含所有系统用户的需求和约束。4可检验性检查—是否能设计出一组验证方法,确定了检验的标准。10,需求分析规格说明书是需求分析阶段产生的一份最重要的文档,它以一种一致的、无二义的方式准确的表达用户的需求。有如下作用:1、作为软件开发机构和用户之间一份事实上的技术合同书。2、作为软件开发机构下一步进行设计和编码的基础。3、作为测试和验收目标系统的依据。第四章软件设计1,软件设计任务涉及多方面,可分为总体设计和详细设计。2,软件设计的目标(如下图所示)就是构造一个高内聚低耦合的软件模型。3,软件体系结构确定了系统的组织结构和拓扑结构。体系结构设计是软件设计的第一个阶段,该阶段侧重于系统宏观结构的设计,而不关心模块的内部算法。4,软件设计分为总体设计和详细设计两个阶段。其工作流程可用下图表示:设计阶段结束要交付的文档是设计说明书,根据设计方法的不同,有不同的设计文档。图33.软件设计工作流程每个设计步骤完成后,都应进行复审。5,以下经过长期考验的设计准则:软件结构的准则;模块化准则;软件独立性准则。1.软件结构的准则:软件结构表示软件的系统结构,是软件模块间关系的表示,均表示为层次关系。图34.软件结构示意图有关指标:①深度:表示软件结构中从顶层模块到最底层模块的层数;②宽度:表示控制的总分布;③扇出数:指一个模块直接控制下属的模块个数;④扇入数:指一个模块的直接上属模块个数。一个好的软件结构的形态准则是:顶部宽度小,中部宽度最大,底部宽度次之;在结构顶部有较高的扇出数,在底部有较高的扇入数。2,模块化准则:所谓模块化就是将系统划分成若干模块,每个模块完成一个子功能,把这些模块集中起来组成一个整体,以满足所要求的整个系统的功能。我们利用模块化来降低软件复杂度。注意选择分解的最佳模块数。3,软件独立性准则:软件独立性的含义是指开发具有功能专一,模块之无过多相互作用的模块。又称为模块独立性准则。这种类型的模块可以并行开发,开发容易,能减少错误的影响,使模块容易组合、修改及测试。软件独立性的度量标准是两个定性指标:耦合性和内聚性。(1)耦合性用于描述模块之间联系的紧密程度。耦合性的几种类型:图35.耦合性的几种类型从三个方面衡量块间联系大小:方式(直接或间接)类型(数据型、控制型、混合型)数量(数量越大,块间联系越紧密。图36.三个方面间的联系(1)内聚性用于描述模块内部联系的紧密程度。内聚性的几种类型:图37.内聚的类型6,从系统设计的角度出发,软件设计方法可分为3大类:1,面向数据流的设计;2,面向数据结构的设计,3,面向对象的设计。7,结构化设计方法分为两部分:总体设计和详细设计。总体设计:确定系统的整体模块结构。任务:解决系统的模块结构,即分解模块,确定模块功能及系统模块的层次结构。文档:模块结构图及其模块功能说明。1.总体设计的目标:是把系统的功能需求分配给软件结构,形成软件的模块结构图。如图38所示:2.总体设计的表示形式层次图:总体设计常用的表示方法,用来描绘软件的层次结构。HIPO图:H图+IPO图。结构图:精确表达程序结构的图形表示方法。(模块之间上下的联系是调用关系)图38.软件的模块结构图3,结构化设计方法可以把数据流图变换成软件结构。⑴从DFD图导出初始的模块结构图(SC):中心变换型(transformcenter)_变换分析;事务处理型(transaction)_事务分析。⑵按照SD法设计总则,改进模块结构图。注意:模块结构图不同于“框图”。软件层次性:反映软件整体的性质(结构图)过程性:反映局部的性质(框图)4,中心变换型的DFD图:这类数据流图可看成是对输入数据进行转换而得到输出数据的处理。DFD图可以明显分为“输入—处理—输出”三部分。,5,设计的准则:(1)好的设计的准则:模块化;抽象;耦合;内聚.....耦合性是程序结构中各个模块之间相互关联的度量,他取决于各个模块之间接口的复杂程度、调用模块的方式以及那些信息通过接口。模块化设计的目标是希望建立模块间耦合尽可能松散的系统。(耦合性最....松散的是数据耦合........)内聚是模块内部各成分之间相互关联的强度。应
本文标题:河南农业大学软件工程考点
链接地址:https://www.777doc.com/doc-268895 .html