软件工程一、总体设计基本任务(过程)1、软件结构设计=模块设计+接口设计(5)软件结构设计是以模块为基础,以需求分析的结果为依据,从实现的角度进一步划分模块,并组成模块的层次结构(接口)。(1)采用某种方法,将一个复杂的系统按功能划分成模块;(2)确定每个模块的功能;(3)确定模块之间的调用关系;(4)确定模块之间的接口(传递的信息);(5)评价模块结构的质量。CH5总体设计计算机导论软件工程3、书写文档(8)总体设计说明书、数据库设计说明书、详细的实现计划4、评审(9)总体设计评价是对设计部分是否完整地实现了需求中规定的功能、性能等要求,设计方案的可行性,关键的处理及内外部接口定义正确性、有效性,各部分之间的一致性等都一一进行评审。2、数据设计=数据结构设计+数据库设计设计(6)(1)根据需求分析阶段对系统数据的组成、操作约束和数据间关系的描述,确定数据结构特性。(2)一般软件系统都有数据存储,存储要借助数据库技术。数据库的设计包括:概念设计、逻辑设计和物理设计。计算机导论软件工程二、软件设计的基本原理1、抽象:是认识复杂过程中使用的思维工具,即抽象出事物的本质共同特征而暂不考虑它的细节,不考虑其它因素。2、逐步求精:是在原始说明的基础上进行详细说明,随着不断细化给出更多的细节。3、模块化:模块是可组合、分解和更换的单元,具有:接口、功能、状态、逻辑4大特征。4、信息隐藏:指设计模块时,使一个模块内包含的信息,对不需要这些的其它模块来说,是不能访问的。通过信息隐藏可以定义和实施对模块的过程细节和局部数据结构的存取权限。5、模块独立性:指完成系统要求的独立的子功能,并且与其它模块的联系最少且接口简单。衡量独立性的标准:内聚性、耦合性。计算机导论软件工程(1)模块间耦合的类型两个模块没有直接关系一模块调用另一模块时,被调用模块的输入、输出都是简单的数据如两个模块通过传递数据结构一模块通过开关量、标志、名字等控制信息,明显地控制另一模块的功能一组模块引用同一个公用数据区一模块直接访问另一模块的内部信息计算机导论软件工程(2)模块的内聚性类型模块内各部分间无联系把几种相关功能(逻辑上相似的功能)组合在一模块内,每次调用由传给模块的参数确定执行哪种功能。功能只因时间因素关联在一起模块内各处理成分相关,且必须以特定次序执行模块内各部分使用相同的输入数据,或产生相同的输出结果模块内各部分使用相同的输入数据,或产生相同的输出结果模块仅包括为完成某个功能所必须的所有成分计算机导论软件工程三、软件结构图软件结构往往用树状和网状结构的图形来表示。结构图主要内容有:模块、模块的控制关、模块间的信息传递。具有如下形态特征:深度、宽度、扇入、扇出。选择调用数据流循环调用计算机导论软件工程四、软件结构设计优化标准1、模块独立性标准。高内聚、低耦合2、控制与作用范围之间的标准。一个模块的作用范围应在其控制范围之内。3、结构特征标准。从形态上看,应是顶层扇出较高一些,中间层扇出较低一些,底层扇入数较高一些。4、模块接口标注。模块的接口要简单、清晰及含义明确,便于理解,易于实现、维护与测试。计算机导论软件工程五、面向数据流的设计方法DFD软件结构1、变换型数据流图:由输入、变换、输出三部分组成。形成顺序结构。2、事务型数据流图:若某个加工将它的数据流分离成许多发散的数据流,并根据输入的值选择其中一个路径来执行,这个加工称为“事务处理中心”。计算机导论软件工程六、填空题1、在软件的体系结构中,模块是可组合、分解和更换的单元。模块具有、、、和等属性。接口、功能、逻辑、状态2、总体设计的文档主要有:和。总体设计说明书、数据库设计说明书3、数据库设计指的设计,主要进行一下几方面的设计、、。数据存储设计概念设计、逻辑设计、物理设计4、软件设计的基本任务包括:、、和4个方面设计软件结构、数据结构和数据库设计、编写设计文档、评审5、抽象是认识复杂现象过程中使用的思维工具,即抽出事物的、的特性而暂不考虑它的,不考虑其它因素。本质、共同、细节6、软件结构设计是以为基础,以需求分析的结果为依据,从实现的角度进一步划分,并组成模块的。模块模块层次结构计算机导论软件工程7、软件设计是一个把转换为软件表示的过程,包括总体设计和。需求分析8、进入了设计阶段,要把软件“做什么”的模型变换为“怎么做”的模型,即着手实现软件需求,并将设计的结果反映在文档中。详细设计9、总体设计评价是对设计部分是否完整地实现了需求中规定的、等要求,设计方案的,关键的处理及内外部接口定义有效性,各部分之间的等都一一进行评审。逻辑设计10、在一个模块中,、和反映模块外部特征,反映它的内部特性。功能、性能11、是指在设计和确定模块时,使得一个模块的内包含的信息对于不需要遮羞信息的其它模块来说是不能的。可行性12、设计软件结构,具体为:(1)采用某种方法将一个复杂系统按功能划分为(2)确定每个模块的(3)确定模块之间的(4)确定模块之间的,即模块之间传递的信息。(5)评价模块结构的质量。正确性一致性功能、状态、接口物理逻辑信息隐藏访问模块功能调用关系接口计算机导论软件工程13、模块间耦合高低取决与模块间、及。接口的复杂性、调用方式、传递信息14、耦合性分种类型,最强耦合,最弱耦合。15、模块独立性中每个模块只完成问题要求的子功能,并且与其它模块的联系。6、内容耦合、无直接耦合16、内聚性分种类型,最强内聚,最弱内聚。独立的、最少且接口简单17、耦合性指软件结构中相互联系紧密程度的一种度量。模块之间联系越,其耦合性就越强,模块的则越差。18、是指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中的。7、偶然内聚、功能内聚各模块间、紧密、独立性数据耦合、值传递计算机导论软件工程19、指两个模块之间传递的是数据结构,如高级语言中的数据名、记录名、文件名等,其实传递的是。标记耦合、这个数据结构的地址20、功能内聚是内聚程度最的内聚,指模块内所有元素共同完成,缺一不可。功能内聚的模块与其它模块的耦合是的。21、结构图主要内容有、、。强、一个功能、弱22、变换型DFD由、和三部分组成。模块、模块的控制关系、模块的信息传递23、软件结构从形态上总的考虑是:顶层扇出数较一些,中间层扇出数较一些,底层数较高一些。24、软件结构设计是以为基础,在需求分析阶段,已经把系统分解成层次结构。设计阶段以需求分析的结果为根据,从实现的角度进一步划分为模块,并组成模块的层次结构。输入、变换、输出扇入模块高低计算机导论软件工程选择题1、软件设计一般分为总体设计和详细设计,它们之间的关系是()。A.全局和局部B.抽象和具体C.总体和层次D.功能和结构A2、软件结构使用的图形工具,一般采用()图。A.DFDB.PADC.SCD.E-RC3、下列中属于软件设计的基本原理的是()。A.数据流分析B.变换流分析C.事务流分析D.模块化4、将几个逻辑上相似的成分放在一个模块中,该模块属于()内聚。A.逻辑B.时间C.功能D.通信5、模块内的某成分的输出是另一成分的输入,该模块属于()内聚。A.功能B.顺序C.逻辑D.时间DAB6、结构图中不是主要成分的是()。A.模块B.模块间传递数据C.模块内部数据D.模块的控制关系C计算机导论软件工程7、模块中的所有成分结合起来完成一项任务,该模块属于()内聚,它具有简明的外部界面,由它构成的软件易于理解、测试和维护。A.偶然B.顺序C.通信D.功能D8、软件设计中模块间的耦合性尽可能()。A.强B.弱C.较强D.适中B9、一个模块把一个数值量作为参数传递给另一模块。这两个模块之间的耦合是()。A.逻辑耦合B.数据耦合C.控制耦合D.内容耦合10、一个模块把开关量作为参数传递给另一模块。这两个模块之间的耦合是()。A.外部耦合B.数据耦合C.控制耦合D.内容耦合11、在面向数据流的软件设计方法中,一般将信息流分为()。A.变换流和数据流B.变换流和控制流C.事务流和控制流D.数据流和控制流BCD计算机导论软件工程12、()着重反映的是模块间的隶属关系,即模块间的调用关系和层次关系。A.程序流程图B.数据流图C.E-R图D.结构图D13、首先将系统中的关键部分设计出来,再让系统的其余部分的设计去适应它们,这称为()。A.模块化B.逐步求精C.抽象D.信息隐藏C14、模块(),则说明模块的独立性越强。A.耦合越强B.扇入数越多C.耦合越弱D.扇出数越多15、为了提高模块(),当修改和维护模块时减少把一个模块的错误扩散到其它模块中去的机会。A.耦合性B.独立性C.内聚性D.共享性30、()把已确定的软件需求转换成特定形式的设计表示,使其得以实现。A.系统设计B.详细设计C.逻辑设计D.总体设计CBD计算机导论软件工程作业一、填空题:25-50二、选择题:7-12、16-17、19、21、26、31-33计算机导论软件工程CH3需求分析一、需求分析概念需求分析是发现、求精、建模、规格说明和复审的过程,回答“做什么”的问题。为最终用户所看到的系统建立一个软件的逻辑模型(将用户非形式的需求陈述转化为完整的需求定义)。二、需求分析的基本原则(1)可以把一个复杂问题按功能进行分解并可逐层细化;(2)必须能够表达和理解问题的数据域和功能域;(3)建立软件的逻辑模型;三、需求分析四项主要任务(1)确定对系统的综合要求(2)分析系统的数据要求(3)导出软件的逻辑模型(4)编写文档软件工程五、分析(逻辑)模型①数据模型(E-R图,层次方框图,Warnier图);②功能模型(数据流图,数据字典);③行为模型(状态转换图,IPO);四、需求获取方法(1)访谈(用户被动)(2)面向数据流自顶向下求精(用户被动)(3)简易的应用规格说明技术(用户主动)(4)快速建立软件原型(用户与开发者不区分)软件工程六、从哪些方面验证软件需求的正确性①一致性:测试;形式化工具;②完整性:原型系统;③现实性:参照以往开发经验,仿真模拟;④有效性:原型系统;软件工程七、选择题1、需求分析的基本任务是要准确地定义,为了满足用户需求,回答系统必须的问题。扇新系统的目标做什么2、在需求分析阶段,首先进行问题识别,即双方确定对问题的综合需求,这些需求包括:需求、需求、需求、需求。另外还有可靠性、安全性、保密性、可移植性、可维护性等方面的需求。功能、性能、环境、用户界面3、需求分析的困难主要体现在4个方面:问题的复杂性、、、需求易变性。交流障碍、不完备性和不一致性4、在需求分析阶段进行以下几个方面的工作:识别系统综合要求、、导出软件逻辑模型、。分析系统的数据要求、编写文档软件工程八、填空题1、需求分析()。A.要回答“软件必须做什么?”B.可概括为:“理解、分解、表达”6个字C.要求编写需求规格说明书D.以上都对2、需求分析阶段研究的对象是软件项目的()。A.用户要求B.合理要求C.系统要求D.环境要求3、软件需求分析阶段的工作,可以分成4个方面:确定系统综合要求、分析系统的数据要求、导出逻辑模型以及()。A.进度规划B.测试计划C.需求分析评审D.编写文档4、需求规格说明书的作用不应包括()。A.软件设计的依据B.用户与开发人员对软件要做什么的共同理解C.软件验收的依据D.软件可行性行研究的依据DADD计算机导论软件工程CH2可行性研究一、可行性研究概念可行性研究是用最小的代价在尽可能短的时间内确定项目是否能够开发?是否值得去开发。二、可行性研究的任务任务(1)技术可行性(2)经济可行性(3)操作可行性(4)社会可行性(1)这个系统的经济效益能超过它的开发成本吗?(2)短期效益,长远利益分析。操作规程简便。容易获得结果。(1)建立一个项目范围,该范围在管理级及技术级均是无二义性的和可理解的。(2)项目计划的目标提供一个框架,使项目的结果限定在这一个合理的范围内。(3)确定系统开发可能导致的任何侵权行为、妨碍性后果和责任。(1)能否解决系统中的技术难题,能否实现所要求的功能;(2)所开发的系统能否达到所要求的性能;(3)限制条件研究(资源有效性)①现有系