软件工程导论复习136059.pptx
软件工程一、总体设计基本任务(过程)1、软件结构设计=模块设计+接口设计(5)软件结构设计是以软件结构设计是以模块模块为基础,以为基础,以需求分析需求分析的结果为依据,从实现的的结果为依据,从实现的角度进一步划分模块,并组成模块的层次结构角度进一步划分模块,并组成模块的层次结构(接口接口)。)。(1)采用某种方法,将一个复杂的系统按功能划分成模块;(2)确定每个模块的功能;(3)确定模块之间的调用关系;(4)确定模块之间的接口(传递的信息);(5)评价模块结构的质量。CH5 CH5 总体设计总体设计计算机导论软件工程3 3、书写文档(、书写文档(8 8)总体设计说明书、数据库设计说明书、详细的实现计划总体设计说明书、数据库设计说明书、详细的实现计划4 4、评审(、评审(9 9)总体设计评价是对设计部分是否完整地实现了总体设计评价是对设计部分是否完整地实现了需求需求中规定的功能、中规定的功能、性能等要求,性能等要求,设计方案设计方案的可行性的可行性 ,关键的处理关键的处理及内外部及内外部接口接口定义正确定义正确性性 、有效性,各部分之间的一致性等都一一进行评审。、有效性,各部分之间的一致性等都一一进行评审。2 2、数据设计、数据设计=数据结构设计数据结构设计+数据库设计设计(数据库设计设计(6 6)(1)(1)根据需求分析阶段对系统数据的组成、操作约束和数据间关系根据需求分析阶段对系统数据的组成、操作约束和数据间关系的描述,确定数据结构特性。的描述,确定数据结构特性。(2)(2)一般软件系统都有数据存储,存储要借助数据库技术。数据库一般软件系统都有数据存储,存储要借助数据库技术。数据库的设计包括:概念设计、逻辑设计和物理设计。的设计包括:概念设计、逻辑设计和物理设计。计算机导论软件工程二、软件设计的基本原理二、软件设计的基本原理 1、抽象:抽象:是认识复杂过程中使用的思维工具,即抽象出事物的本质共同特征是认识复杂过程中使用的思维工具,即抽象出事物的本质共同特征而暂不考虑它的细节,不考虑其它因素。而暂不考虑它的细节,不考虑其它因素。2、逐步求精逐步求精:是在原始说明的基础上进行详细说明,随着不断细化给出更多的细是在原始说明的基础上进行详细说明,随着不断细化给出更多的细节。节。3、模块化模块化:模块是可组合、分解和更换的单元,具有:接口、功能、状态、逻模块是可组合、分解和更换的单元,具有:接口、功能、状态、逻辑辑4大特征。大特征。4、信息隐藏信息隐藏:指设计模块时,使一个模块内包含的信息,对不需要这些的其它模指设计模块时,使一个模块内包含的信息,对不需要这些的其它模块来说,是不能访问的。通过信息隐藏可以定义和实施对模块的过程细块来说,是不能访问的。通过信息隐藏可以定义和实施对模块的过程细节和局部数据结构的存取权限。节和局部数据结构的存取权限。5、模块独立性模块独立性:指完成系统要求的独立的子功能,并且与其它模块的联系最少且接指完成系统要求的独立的子功能,并且与其它模块的联系最少且接口简单。衡量独立性的标准:内聚性、耦合性。口简单。衡量独立性的标准:内聚性、耦合性。计算机导论软件工程(1)(1)模块间耦合的类型模块间耦合的类型模块间耦合的类型模块间耦合的类型两两个个模模块块没没有有直接关系直接关系一模块调用另一模块时,被调用模块的输入、输出都是简单的数据如如两两个个模模块块通通过过传传递递数据结构数据结构一一模模块块通通过过开开关关量量、标标志志、名名字字等等控控制制信信息息,明明显显地地控制另一模块的功能控制另一模块的功能一一组组模模块块引引用用同同一一个个公用数据区公用数据区一一模模块块直直接接访访问问另另一一模块的内部信息模块的内部信息计算机导论软件工程(2)模块的内聚性类型模块的内聚性类型模块内各部分间无模块内各部分间无联系联系把把几几种种相相关关功功能能(逻逻辑辑上上相相似似的的功功能能)组组合合在在一一模模块块内内,每每次次调调用用由由传传给给模模块块的的参参数数确确定定执执行行哪哪种种功能。功能。功功能能只只因因时时间间因因素素关联在一起关联在一起模模块块内内各各处处理理成成分分相相关关,且且必必须须以以特特定次序执行定次序执行模模块块内内各各部部分分使使用用相相同同的的输输入入数数据据,或或产产生生相相同同的的输输出出结果结果模模块块内内各各部部分分使使用用相相同同的的输输入入数数据据,或或产产生生相相同同的的输输出出结果结果模模块块仅仅包包括括为为完完成成某某个个功功能能所所必必须须的的所有成分所有成分计算机导论软件工程三、软件结构图三、软件结构图 软件结构往往用树状和网状结构的图形来表示。结构图主要内容有:模软件结构往往用树状和网状结构的图形来表示。结构图主要内容有:模块、模块的控制关、模块间的信息传递。具有如下形态特征:深度、宽度、块、模块的控制关、模块间的信息传递。具有如下形态特征:深度、宽度、扇入、扇出。扇入、扇出。选择调选择调用用数据流数据流循环调循环调用用控制流控制流计算机导论软件工程四、软件结构设计优化标准四、软件结构设计优化标准 1 1、模块独立性标准。高内聚、低耦合、模块独立性标准。高内聚、低耦合 2 2、控制与作用范围之间的标准。一个模块的作用范围应在其控制范围之、控制与作用范围之间的标准。一个模块的作用范围应在其控制范围之内。内。3 3、结构特征标准。从形态上看,应是顶层扇出较高一些,中间层扇出、结构特征标准。从形态上看,应是顶层扇出较高一些,中间层扇出较低一些,底层扇入数较高一些。较低一些,底层扇入数较高一些。4 4、模块接口标注。模块的接口要简单、清晰及含义明确,便于理解,、模块接口标注。模块的接口要简单、清晰及含义明确,便于理解,易于实现、维护与测试。易于实现、维护与测试。计算机导论软件工程五、面向数据流的设计方法五、面向数据流的设计方法 DFD DFD软件结构软件结构 1 1、变换型数据流图:由输入、变换、输出三部分组成。形成顺序结构。、变换型数据流图:由输入、变换、输出三部分组成。形成顺序结构。2 2、事事务务型型数数据据流流图图:若若某某个个加加工工将将它它的的数数据据流流分分离离成成许许多多发发散散的的数数据据流流,并并根根据据输输入入的的值值选选择择其其中中一一个个路路径径来来执执行行,这这个个加加工工称称为为“事事务务处处理理中心中心”。计算机导论软件工程六、填空题六、填空题 1 1、在在软软件件的的体体系系结结构构中中,模模块块是是可可组组合合、分分解解和和更更换换的的单单元元。模模块块具具有有 、和、和 等属性。等属性。接口、功能、逻辑、状态接口、功能、逻辑、状态 2 2、总体设计的文档主要有:、总体设计的文档主要有:和和 。总体设计说明书、总体设计说明书、数据库设计说明书数据库设计说明书 3 3、数数据据库库设设计计指指 的的设设计计,主主要要进进行行一一下下几几方方面面的的设设计计 、。数据存储设计数据存储设计 概念设计、逻辑设概念设计、逻辑设计、物理设计计、物理设计 4 4、软件设计的基本任务包括:、软件设计的基本任务包括:、和和 4 4个方面个方面 设计软件结构、数据结构和数设计软件结构、数据结构和数据库设计、编写设计文档、评据库设计、编写设计文档、评审审 5 5、抽抽象象是是认认识识复复杂杂现现象象过过程程中中使使用用的的思思维维工工具具,即即抽抽出出事事物物 的的、的的特性而暂不考虑它的特性而暂不考虑它的 ,不考虑其它因素。,不考虑其它因素。本质、共同、细节本质、共同、细节 6 6、软软件件结结构构设设计计是是以以 为为基基础础,以以需需求求分分析析的的结结果果为为依依据据,从从实实现现的的角角度进一步划分度进一步划分 ,并组成模块的,并组成模块的 。模块模块模块模块层次结构层次结构计算机导论软件工程 7 7、软件设计是一个把、软件设计是一个把 转换为软件表示的过程,包括总体设计和转换为软件表示的过程,包括总体设计和 。需求分析需求分析 8 8、进入了设计阶段,要把软件、进入了设计阶段,要把软件“做什么做什么”的的 模型变换为模型变换为“怎么做怎么做”的的 模型,即着手实现软件需求,并将设计的结果反映在模型,即着手实现软件需求,并将设计的结果反映在 文档中。文档中。详细设计详细设计 9 9、总总体体设设计计评评价价是是对对设设计计部部分分是是否否完完整整地地实实现现了了需需求求中中规规定定的的 、等等要要求求,设设计计方方案案的的 ,关关键键的的处处理理及及内内外外部部接接口口定定义义 有有效效性性,各各部部分之间的分之间的 等都一一进行评审。等都一一进行评审。逻辑逻辑 设计设计 1010、在在一一个个模模块块中中,、和和 反反映映模模块块外外部部特特征征,反反映映它它的的内内部特性。部特性。功能、性能功能、性能 1111、是是指指在在设设计计和和确确定定模模块块时时,使使得得一一个个模模块块的的内内包包含含的的信信息息对对于于不不需需要遮羞信息的其它模块来说是不能要遮羞信息的其它模块来说是不能 的。的。可行性可行性 1212、设设计计软软件件结结构构,具具体体为为:(1)(1)采采用用某某种种方方法法将将一一个个复复杂杂系系统统按按功功能能划划分分为为 (2)(2)确确定定每每个个模模块块的的 (3)(3)确确定定模模块块之之间间的的 (4)(4)确确定定模模块块之之间间的的 ,即模块之间传递的信息。,即模块之间传递的信息。(5)(5)评价模块结构的质量。评价模块结构的质量。正确性正确性一致性一致性功能、状态、接口功能、状态、接口 物理物理 逻辑逻辑 信息隐藏信息隐藏 访问访问 模块模块 功能功能 调用关系调用关系 接口接口 计算机导论软件工程 13 13、模块间耦合高低取决与模块间、模块间耦合高低取决与模块间 、及及 。接口的复杂性、调用方式、传递信息接口的复杂性、调用方式、传递信息 14 14、耦合性分、耦合性分 种类型,最强耦合种类型,最强耦合 ,最弱耦合,最弱耦合 。1515、模模块块独独立立性性中中每每个个模模块块只只完完成成问问题题要要求求的的 子子功功能能,并并且且与与其其它它模模块块的联系的联系 。6 6、内容耦合、无、内容耦合、无直接耦合直接耦合 16 16、内聚性分、内聚性分 种类型,最强内聚种类型,最强内聚 ,最弱内聚,最弱内聚 。独立的、最少且接口简单独立的、最少且接口简单 1717、耦耦合合性性指指软软件件结结构构中中 相相互互联联系系紧紧密密程程度度的的一一种种度度量量。模模块块之之间间联联系系越越 ,其耦合性就越强,模块的,其耦合性就越强,模块的 则越差。则越差。1818、是是指指两两个个模模块块之之间间有有调调用用关关系系,传传递递的的是是简简单单的的数数据据值值,相相当当于于高高级语言中的级语言中的 。7 7、偶然内聚、功能内聚、偶然内聚、功能内聚 各模块间、紧密、独立性各模块间、紧密、独立性 数据耦合、值传递数据耦合、值传递 计算机导论软件工程 1919、指指两两个个模模块块之之间间传传递递的的是是数数据据结结构构,如如高高级级语语言言中中的的数数据据名名、记录名、文件名等,其实传递的是记录名、文件名等,其实传递的是 。标记耦合、这个数据结构的地址标记耦合、这个数据结构的地址 2020、功功能能内内聚聚是是内内聚聚程程度度最最 的的内内聚聚,指指模模块块内内所所有有元元素素共共同同完完成成 ,缺一不可。功能内聚的模块与其它模块的耦合是,缺一不可。功能内聚的模块与其它模块的耦合是 的。的。21 21、结构图主要内容有、结构图主要内容有 、。强、一个功能、弱强、一个功能、弱 22 22、变换型、变换型DFDDFD由由 、和和 三部分组成。三部分组成。模块、模块的控制关系、模块、模块的控制关系、模块的信息传递模块的信息传递 2323、软软件件结结构构从从形形态态上上总总的的考考虑虑是是:顶顶层层扇扇出出数数较较 一一些些,中中间间层层扇扇出出数数较较 一些,底层一些,底层 数较高一些。数较高一些。2424、软软件件结结构构设设计计是是以以 为为基基础础,在在需需求求分分析析阶阶段段,已已经经把把系系统统分分解解成成层层次次结结构构。设设计计阶阶段段以以需需求求分分析析的的结结果果为为根根据据,从从实实现现的的角角度度进进一一步步划划分为模块,并组成模块的层次结构。分为模块,并组成模块的层次结构。输入、变换、输出输入、变换、输出 扇入扇入 模块模块高高低低 计算机导论软件工程选择题选择题1 1、软件设计一般分为总体设计和详细设计,它们之间的关系是(、软件设计一般分为总体设计和详细设计,它们之间的关系是()。A.A.全局和局部全局和局部 B.B.抽象和具体抽象和具体 C.C.总体和层次总体和层次 D.D.功能和结构功能和结构A A2 2、软件结构使用的图形工具,一般采用(、软件结构使用的图形工具,一般采用()图。图。A.DFD B.PAD C.SC D.E-RA.DFD B.PAD C.SC D.E-RC C3 3、下列中属于软件设计的基本原理的是(、下列中属于软件设计的基本原理的是()。A.A.数据流分析数据流分析 B.B.变换流分析变换流分析 C.C.事务流分析事务流分析 D.D.模块化模块化4 4、将几个逻辑上相似的成分放在一个模块中,该模块属于(、将几个逻辑上相似的成分放在一个模块中,该模块属于()内聚。)内聚。A.A.逻辑逻辑 B.B.时间时间 C.C.功能功能 D.D.通信通信5 5、模块内的某成分的输出是另一成分的输入,该模块属于(、模块内的某成分的输出是另一成分的输入,该模块属于()内聚。)内聚。A.A.功能功能 B.B.顺序顺序 C.C.逻辑逻辑 D.D.时间时间D DA AB B6 6、结构图中不是主要成分的是(、结构图中不是主要成分的是()。)。A.A.模块模块 B.B.模块间传递数据模块间传递数据 C.C.模块内部数据模块内部数据 D.D.模块的控制关系模块的控制关系C C计算机导论软件工程7 7、模块中的所有成分结合起来完成一项任务,该模块属于(、模块中的所有成分结合起来完成一项任务,该模块属于()内)内聚,它具有简明的外部界面,由它构成的软件易于理解、测试和聚,它具有简明的外部界面,由它构成的软件易于理解、测试和维护。维护。A.A.偶然偶然 B.B.顺序顺序 C.C.通信通信 D.D.功能功能D D8 8、软件设计中模块间的耦合性尽可能(、软件设计中模块间的耦合性尽可能()。)。A.A.强强 B.B.弱弱 C.C.较强较强 D.D.适中适中B B9 9、一个模块把一个数值量作为参数传递给另一模块。这两个模块之间、一个模块把一个数值量作为参数传递给另一模块。这两个模块之间的耦合是(的耦合是()。)。A.A.逻辑耦合逻辑耦合 B.B.数据耦合数据耦合 C.C.控制耦合控制耦合 D.D.内容耦合内容耦合1010、一个模块把开关量作为参数传递给另一模块。这两个模块之间的耦合、一个模块把开关量作为参数传递给另一模块。这两个模块之间的耦合是(是()。)。A.A.外部耦合外部耦合 B.B.数据耦合数据耦合 C.C.控制耦合控制耦合 D.D.内容耦合内容耦合1111、在面向数据流的软件设计方法中,一般将信息流分为(、在面向数据流的软件设计方法中,一般将信息流分为()。)。A.A.变换流和数据流变换流和数据流 B.B.变换流和控制流变换流和控制流 C.C.事务流和控制流事务流和控制流 D.D.数据流和控制流数据流和控制流B BC CD D计算机导论软件工程1212、(、()着重反映的是模块间的隶属关系,即模块间的调用关系和)着重反映的是模块间的隶属关系,即模块间的调用关系和层次关系。层次关系。A.A.程序流程图程序流程图 B.B.数据流图数据流图 C.E-R C.E-R图图 D.D.结构图结构图D D1313、首先将系统中的关键部分设计出来,再让系统的其余部分的设计、首先将系统中的关键部分设计出来,再让系统的其余部分的设计去适应它们,这称为(去适应它们,这称为()。)。A.A.模块化模块化 B.B.逐步求精逐步求精 C.C.抽象抽象 D.D.信息隐藏信息隐藏C C1414、模块(、模块(),则说明模块的独立性越强。),则说明模块的独立性越强。A.A.耦合越强耦合越强 B.B.扇入数越多扇入数越多 C.C.耦合越弱耦合越弱 D.D.扇出数越多扇出数越多1515、为了提高模块(、为了提高模块(),当修改和维护模块时减少把一个模块的错误),当修改和维护模块时减少把一个模块的错误扩散到其它模块中去的机会。扩散到其它模块中去的机会。A.A.耦合性耦合性 B.B.独立性独立性 C.C.内聚性内聚性 D.D.共享性共享性3030、(、()把已确定的软件需求转换成特定形式的设计表示,使其得以)把已确定的软件需求转换成特定形式的设计表示,使其得以实现。实现。A.A.系统设计系统设计 B.B.详细设计详细设计 C.C.逻辑设计逻辑设计 D.D.总体设计总体设计C CB BD D计算机导论软件工程作业作业一、填空题:一、填空题:25-5025-50二、选择题:二、选择题:7-127-12、16-1716-17、1919、2121、2626、31-3331-33计算机导论软件工程CH3 CH3 需求分析需求分析一、需求分析概念一、需求分析概念 需求分析是发现、求精、建模、规格说明和复审的过程,回答需求分析是发现、求精、建模、规格说明和复审的过程,回答“做什么做什么”的问题。的问题。为最终用户所看到的系统建立一个软件的逻辑模型(为最终用户所看到的系统建立一个软件的逻辑模型(将用户将用户非形非形式的需求式的需求陈述转化为陈述转化为完整的需求定义完整的需求定义)。二、需求分析的基本原则二、需求分析的基本原则 (1)(1)可以把一个复杂问题按功能进行分解并可逐层细化;可以把一个复杂问题按功能进行分解并可逐层细化;(2)(2)必须能够表达和理解问题的数据域和功能域;必须能够表达和理解问题的数据域和功能域;(3)(3)建立软件的逻辑模型;建立软件的逻辑模型;三、三、需求分析四项主要任务 (1)确定对系统的综合要求 (2)分析系统的数据要求 (3)导出软件的逻辑模型 (4)编写文档软件工程五、分析(五、分析(逻辑逻辑)模型)模型 数据模型(数据模型(E-RE-R图图,层次方框图层次方框图,Warnier,Warnier图);图);功能模型(数据流图功能模型(数据流图,数据字典);数据字典);行为模型(状态转换图,行为模型(状态转换图,IPOIPO););四、需求获取方法四、需求获取方法 (1)(1)访谈(用户被动)访谈(用户被动)(2)(2)面向数据流自顶向下求精(用户被动)面向数据流自顶向下求精(用户被动)(3)(3)简易的应用规格说明技术(用户主动)简易的应用规格说明技术(用户主动)(4)(4)快速建立软件原型(用户与开发者不区分)快速建立软件原型(用户与开发者不区分)软件工程六、从哪些方面六、从哪些方面验证软件需求的正确性验证软件需求的正确性 一致性:测试;形式化工具;一致性:测试;形式化工具;完整性:原型系统;完整性:原型系统;现实性:参照以往开发经验,仿真模拟;现实性:参照以往开发经验,仿真模拟;有效性:原型系统;有效性:原型系统;软件工程七、七、选择题选择题 1 1、需求分析的基本任务是要准确地定义、需求分析的基本任务是要准确地定义 ,为了满足用户需求,为了满足用户需求,回答系统必须回答系统必须 的问题。的问题。扇新系统的目标扇新系统的目标 做什么做什么 2 2、在需求分析阶段,首先进行问题识别,即双方确定对问题的综合需、在需求分析阶段,首先进行问题识别,即双方确定对问题的综合需求,这些需求包括:求,这些需求包括:需求、需求、需求、需求、需求、需求、需求。另外还需求。另外还有可靠性、安全性、保密性、可移植性、可维护性等方面的需求。有可靠性、安全性、保密性、可移植性、可维护性等方面的需求。功能、性能、环境、用户界面功能、性能、环境、用户界面 3 3、需求分析的困难主要体现在、需求分析的困难主要体现在4 4个方面:问题的复杂性、个方面:问题的复杂性、需求易变性。需求易变性。交流障碍、不完备性和不一致性交流障碍、不完备性和不一致性 4 4、在需求分析阶段进行以下几个方面的工作:识别系统综合要求、在需求分析阶段进行以下几个方面的工作:识别系统综合要求、导出软件逻辑模型、导出软件逻辑模型、。分析系统的数据要求、编写文档分析系统的数据要求、编写文档 软件工程八、填空题八、填空题 1 1、需求分析(、需求分析()。A.A.要回答要回答“软件必须做什么?软件必须做什么?”B.”B.可概括为:可概括为:“理解、分解、表达理解、分解、表达”6”6个字个字 C.C.要求编写需求规格说明书要求编写需求规格说明书 D.D.以上都对以上都对2 2、需求分析阶段研究的对象是软件项目的(、需求分析阶段研究的对象是软件项目的()。A.A.用户要求用户要求 B.B.合理要求合理要求 C.C.系统要求系统要求 D.D.环境要求环境要求 3 3、软件需求分析阶段的工作,可以分成、软件需求分析阶段的工作,可以分成4 4个方面:确定系统综合要求、个方面:确定系统综合要求、分析系统的数据要求、导出逻辑模型以及(分析系统的数据要求、导出逻辑模型以及()。A.A.进度规划进度规划 B.B.测试计划测试计划 C.C.需求分析评审需求分析评审 D.D.编写文档编写文档4 4、需求规格说明书的作用不应包括(、需求规格说明书的作用不应包括()。A.A.软件设计的依据软件设计的依据 B.B.用户与开发人员对软件要做什么的共同理解用户与开发人员对软件要做什么的共同理解 C.C.软件验收的依据软件验收的依据 D.D.软件可行性行研究的依据软件可行性行研究的依据D DA AD DD D计算机导论软件工程CH2 CH2 可行性研究可行性研究一、可行性研究概念一、可行性研究概念 可行性研究是用最小的代价在尽可能短的时间内确定项目是否能够开发?可行性研究是用最小的代价在尽可能短的时间内确定项目是否能够开发?可行性研究是用最小的代价在尽可能短的时间内确定项目是否能够开发?可行性研究是用最小的代价在尽可能短的时间内确定项目是否能够开发?是否值得去开发。是否值得去开发。是否值得去开发。是否值得去开发。二、二、可行性研究的任务任务 (1)技术可行性 (2)经济可行性 (3)操作可行性 (4)社会可行性(1)这个系统的经济效益能超过它的开发成本吗?(2)短期效益,长远利益分析。操操作作规规程程简简便便。容容易易获获得结果。得结果。(1)建立一个项目范围,该范围在管理级及技术级均是无二义性的和可理解的。(2)项目计划的目标提供一个框架,使项目的结果限定在这一个合理的范围内。(3)确定系统开发可能导致的任何侵权行为、妨碍性后果和责任。(1)能否解决系统中的技术难题,能否实现所要求的功能;(2)所开发的系统能否达到所要求的性能;(3)限制条件研究(资源有效性)现有系统能实现吗现有的技术人员能否胜任;开发所需要的软件与硬件能否如期得到等 计算机导论软件工程三、可行性研究步骤步骤三、可行性研究步骤步骤问问问问题题题题定定定定义义义义技术、经济、技术、经济、技术、经济、技术、经济、操作、社会操作、社会操作、社会操作、社会可行性研究可行性研究可行性研究可行性研究研究结果研究结果研究结果研究结果计算机导论软件工程四、成本四、成本-效益分析效益分析 1 1、系统成本、系统成本=开发成本开发成本+维护成本维护成本 2 2、系统效益、系统效益、系统效益、系统效益=经济效益经济效益经济效益经济效益+社会效益社会效益社会效益社会效益 3 3、成本估计技术(主要表现为人力消耗、成本估计技术(主要表现为人力消耗、成本估计技术(主要表现为人力消耗、成本估计技术(主要表现为人力消耗)(1)(1)代码行技术代码行技术代码行技术代码行技术 (2)(2)任务分解技术(类似代码行技术,只是划分的单位不同)任务分解技术(类似代码行技术,只是划分的单位不同)任务分解技术(类似代码行技术,只是划分的单位不同)任务分解技术(类似代码行技术,只是划分的单位不同)(3)(3)自动估计成本技术(前提是有大量的历史数据库)自动估计成本技术(前提是有大量的历史数据库)自动估计成本技术(前提是有大量的历史数据库)自动估计成本技术(前提是有大量的历史数据库)计算机导论软件工程五、数据流图五、数据流图DFDDFD 1 1、图中没有任何具体物理元素,只是描绘信息在系统中流动和处理的情、图中没有任何具体物理元素,只是描绘信息在系统中流动和处理的情况。非专业人员容易理解是通信的极好工具。况。非专业人员容易理解是通信的极好工具。2 2、由数据流、处理、数据存储、实体(数据源点、由数据流、处理、数据存储、实体(数据源点/终点)组成。终点)组成。3 3、数据流:是数据在系统内传播的路径,由一组成分固定的数据项组成,、数据流:是数据在系统内传播的路径,由一组成分固定的数据项组成,用名称标注(与数据存储传播除外)。用名称标注(与数据存储传播除外)。4 4、为了表示复杂问题的数据处理过程,用一组分层的数据流图反映它。、为了表示复杂问题的数据处理过程,用一组分层的数据流图反映它。5 5、数据字典、数据字典(DD)(DD)是关于数据信息的集合,是对是关于数据信息的集合,是对DFDDFD中包含的所有的定义中包含的所有的定义数据项以一种准确、无二义的描述方式,数据项以一种准确、无二义的描述方式,DD+DFDDD+DFD共同组成了软件的逻辑模共同组成了软件的逻辑模型。型。6 6、数据项是数据流和数据存储的最小单位。、数据项是数据流和数据存储的最小单位。软件工程六、六、选择题选择题 1 1、的目的就是用最小代价在尽可能短的时间内确定该软件项目是的目的就是用最小代价在尽可能短的时间内确定该软件项目是否能够开发、是否值得开发。否能够开发、是否值得开发。2 2、可行性研究的目的不是是开发一个软件项目,而是研究这个项目是、可行性研究的目的不是是开发一个软件项目,而是研究这个项目是否否 。3 3、可行性研究需要从、可行性研究需要从 可行性、可行性、可行性可行性、可行性和可行性和 可行性四个方面分析研究每种解决方案的可行性。可行性四个方面分析研究每种解决方案的可行性。经济、技术、操作、社会经济、技术、操作、社会 4 4、技术可行性是对开发项目的、技术可行性是对开发项目的 、进行分析,确定现有进行分析,确定现有资源条件下,技术风险有多大,项目是否能实现。资源条件下,技术风险有多大,项目是否能实现。功能、性能、限制条件功能、性能、限制条件 2 2可行性研究可行性研究是否做值得是否做值得 5 5、经济可行性一般要考虑的情况包括:、经济可行性一般要考虑的情况包括:和和 。成本、效益成本、效益 6 6、社会可行性所涉及的范围包括、社会可行性所涉及的范围包括 、用户组织的管理、用户组织的管理模式、范围以及其他一些技术人员常常不了解的陷阱。模式、范围以及其他一些技术人员常常不了解的陷阱。合同、责任、侵权合同、责任、侵权 软件工程 7 7、典型的可行性研究有以下步骤:确定项目的规模和目标、典型的可行性研究有以下步骤:确定项目的规模和目标、导出和评价各种方案、推荐可行的方案和编写可行性研究报告。、导出和评价各种方案、推荐可行的方案和编写可行性研究报告。8 8、系统效益系统效益系统效益系统效益=经济效益经济效益经济效益经济效益+。9 9、效益分有型效益和、效益分有型效益和 两种。两种。无形无形 10 10、可行性研究的第一个步骤是、可行性研究的第一个步骤是 。社会效益社会效益 建立新系统的高建立新系统的高层逻辑模型层逻辑模型 11 11、数据字典就是用来定义数据流图中的、数据字典就是用来定义数据流图中的 的。它和数据流图共同的。它和数据流图共同构成了系统的构成了系统的 ,是,是 的主要组成部分。的主要组成部分。确定项目的规模和目标确定项目的规模和目标 12 12、由于数据流是流动中的数据,所以必须有、由于数据流是流动中的数据,所以必须有 。除了与。除了与 之间之间的数据流命名外,数据流应该采用名词或名词短语。的数据流命名外,数据流应该采用名词或名词短语。各个成分的具体含义、各个成分的具体含义、逻辑模型、需求说明逻辑模型、需求说明书书 研究正在运行的系统研究正在运行的系统 流向、数据存储流向、数据存储 软件工程七、填空题七、填空题 1 1、研究开发资源有效性是进行、研究开发资源有效性是进行()()可行性研究的一个方面可行性研究的一个方面 A.A.技术技术 B.B.经济经济 C.C.社会社会 D.D.操作操作2 2、在软件可行性研究中、可以从不同的角度对软件进行研究,其中从软、在软件可行性研究中、可以从不同的角度对软件进行研究,其中从软件的功能可行性角度考虑的是件的功能可行性角度考虑的是()()可行性可行性 A.A.经济经济 B.B.技术技术 C.C.操作操作 D.D.社会社会 3 3、在遵循软件工程原则开发软件过程中,计划阶段应该依次完成、在遵循软件工程原则开发软件过程中,计划阶段应该依次完成()A.A.可行性研究、需求分析、问题定义可行性研究、需求分析、问题定义 B.B.问题定义、可行性研究、问题定义、可行性研究、需求分析需求分析 C.C.需求分析、问题定义、可行性研究需求分析、问题定义、可行性研究 D.D.可行性研究、问题定义、需求分析可行性研究、问题定义、需求分析4 4、可行性研究要进行的需求分析和设计应是、可行性研究要进行的需求分析和设计应是()()。A.A.详细的详细的 B.B.全面的全面的 C.C.简化的简化的 D.D.彻底的彻底的D DB BB BC C计算机导论软件工程 CH1 CH1 软件工程概念软件工程概念一、基本概念1、软件工程 “软件工程软件工程”的概念是为了有效的控制软件危机的发生而被提出来的,它的中心目标就是把软件作为一种物理的工业产品来开发,要求“采用工程化的原理与方法对软件进行计划、开发和维护”。2 2、软件生命周期、软件生命周期 按照在软件生命周期全过程中应完成的任务的性质,在概念上可以把软软件件生生命命周周期期划分成问题定义、可行性研究、需求分析、概要设计、详细设计、编码和单元测试、综合测试以及维护等八个阶段。计算机导论软件工程3、软件过程 软件过程软件过程是为了是为了获得高质量软件产品所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件过程必须科学、合理,才能开发出高质量的软件产品。4、软件危机 软件的可靠性没有保障、维护费用不断上升、进度无法预测、成本增长无法控制、程序员无限度增加等,形成软件开发局面失控的状态。计算机导论软件工程二、软件的特征二、软件的特征抽象性。抽象性。模糊性。模糊性。不磨损、不老化。不磨损、不老化。依赖性。依赖性。高成本。高成本。多因性。多因性。可复制性可复制性。是一种逻辑实体,而不是物理实体是一种逻辑实体,而不是物理实体受受计计算算机机系系统统的的限限制制,这这导导致了软件移植的问题致了软件移植的问题软件开发不纯粹是技术,是门艺术,还涉软件开发不纯粹是技术,是门艺术,还涉软件开发不纯粹是技术,是门艺术,还涉软件开发不纯粹是技术,是门艺术,还涉及法律、伦理、心理学等社会因素及法律、伦理、心理学等社会因素及法律、伦理、心理学等社会因素及法律、伦理、心理学等社会因素没有明显的制作过程没有明显的制作过程由软件维护复杂性决定,大部分是由软件维护复杂性决定,大部分是定制的,而不是装配的定制的,而不是装配的与开发成本相比,复制成本很低。与开发成本相比,复制成本很低。计算机导论软件工程 对软件开发成本和进度的估计常常很不准确对软件开发成本和进度的估计常常很不准确 用户对用户对“已完成的已完成的”软件系统不满意的现象经常发生软件系统不满意的现象经常发生 软件产品的质量往往靠不住软件产品的质量往往靠不住 软件常常是不可维护的软件常常是不可维护的 软件通常没有适当的文档资料软件通常没有适当的文档资料 软件成本在计算机系统总成本中所占的比例逐年上升软件成本在计算机系统总成本中所占的比例逐年上升 软件开发生产率提高的速度远远跟不上计算机应用迅速普及深软件开发生产率提高的速度远远跟不上计算机应用迅速普及深 入的趋势入的趋势 三、软件危机三、软件危机主要表现主要表现计算机导论软件工程软件工程的基本原理 四、软件工程四、软件工程7条基本特性条基本特性(1)软件工程关注大型程序的构造(2)软件工程的中心课题是控制复杂性(3)软件经常变化(4)开发软件的效率非常重要(5)和谐的合作是开发软件的关键(6)软件必须有效地支持它的用户(7)由具有一种文化背景的人代替具有另一种文化背景的人创造产品计算机导论软件工程软件工程的基本原理(1)(1)用生命周期计划严格管理用生命周期计划严格管理(2)(2)坚持进行阶段评审坚持进行阶段评审(3)(3)实行产品一致性控制实行产品一致性控制(4)(4)采用最新的软件设计技术采用最新的软件设计技术(5)(5)清楚地审查软件产品清楚地审查软件产品(6)(6)开发小组的人员应该少而精开发小组的人员应该少而精(7)(7)承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性 五、软件工程的五、软件工程的7条基本原理条基本原理计算机导论软件工程六、软件生命周期六、软件生命周期六、软件生命周期六、软件生命周期8 8个阶段的基本任务个阶段的基本任务个阶段的基本任务个阶段的基本任务阶段阶段关键问题关键问题结束标准结束标准问题定义问题定义要解决的问题是什么?要解决的问题是什么?关于规模和目标的报告书关于规模和目标的报告书可行性研究可行性研究有可行的解吗?有可行的解吗?系统的高层逻辑模型系统的高层逻辑模型需求分析需求分析系统必须做什么?系统必须做什么?系统的逻辑模型系统的逻辑模型总体设计总体设计概括地说,应该如何解决这概括地说,应该如何解决这个问题?个问题?系统层次图或结构图系统层次图或结构图详细设计详细设计怎样具体地实现这个系统?怎样具体地实现这个系统?编码规格说明编码规格说明编码和单元测试编码和单元测试正确的程序模块正确的程序模块源程序、单元测试方案和源程序、单元测试方案和结果结果综合测试综合测试符合要求的软件符合要求的软件综合测试方案和结果、软综合测试方案和结果、软件配置件配置维护维护持久地满足拥用户需要持久地满足拥用户需要维护记录维护记录计算机导论软件工程七、5种生命周期模型(即软件过程模型)瀑瀑布布模模型型的优势在于它是规范的、文档驱动的方法;缺点是,最终交付的产品可能不是用户真正需要的。快快速速原原型型通过快速构建起一个可运行的原型系统,让用户试用原型并收集用户反馈意见的办法,获取用户的真实需求。增增量量模模型型具有能在软件开发的早期阶段使投资获得明显回报和易于维护的优点,但是,要求软件具有开放结构是使用这种模型时固有的困难。计算机导论软件工程 风风险险驱驱动动的的螺螺旋旋模模型型适用于大规模的内部开发项目,但是,只有在开发人员具有风险分析和排除风险的经验及专门知识时,使用这种模型才会获得成功。当使用面向对象范型开发软件时,软件生命周期必须是循环的,也就是说,软件过程必须支持反馈和迭代。喷喷泉泉模模型型是一种典型的适合于面向对象范型的过程模型。计算机导论软件工程八、八、SE方法学方法学(1)面向过程的分析和设计方法(2)面向数据的分析和设计方法(3)面向对象的分析和设计方法这种方法学把软件生命周期这种方法学把软件生命周期的全过程依次划分为若干个的全过程依次划分为若干个阶段,然后顺序地逐步完成阶段,然后顺序地逐步完成每个阶段的任务。也称结构每个阶段的任务。也称结构化方法化方法这种方法学这种方法学是从信息结构进行分析,产生数据结构图,再在此基础上,进行需求分析,导出软件的结构。这种方法学把这种方法学把数据和行为看成同等重要,它是一种以数据为主线,把数据和对数据的操作紧密地结合在一起的方法。面向对象的基本原则是尽可能地模拟人类的思维习惯使问题描述空间与计算机的解空间尽可能保持一致。