软件工程复习课

  • 格式:doc
  • 大小:331.50 KB
  • 文档页数:8

1、软件工程的定义a)将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即,将工程化应用于软件;b)在上述方法中的研究;2、软件生存周期a)计算机系统工程其任务是确定待开发软件的总体要求和范围,以及该软件与其他计算机系统元素之间的关系,进行成本估算,做出进度安排,并进行可行性分析。

b)需求分析主要解决待开发软件要“做什么”的问题,确定软件的功能、性能、数据、界面等要求,生成软件需求规约。

c)设计(概要设计、详细设计)d)编码e)测试f)运行和维护(花费最大)3、软件危机的现象(上网百度的)4、软件开发过程模型(特点与优劣势)a)瀑布模型:按照软件生存周期活动的固定顺序,上阶段的活动完成后向下一阶段的活动过渡,最终得到所开发的软件产品。

特点:阶段的顺序性和依赖性、推迟实现b)演化模型:从构造初始的原型出发,逐步将其演化成最终软件产品的过程。

演化模型特别适用于对软件需求缺乏准确认识的情况。

c)原型模型:(P21)原型是预期系统的一个可执行版本,反映了系统性质(如功能、计算结果等)的一个选定的子集。

一个原型不必满足目标软件的所有约束,其目的是能快速、低成本地构建原型。

图:构建原型、部署交付和反馈、交流、快速计划、快速设计方式建模。

(从构建原型开始成圆圈循环)d)螺旋模型:将原型实现的迭代特征与瀑布模型中控制的和系统化的方面结合起来,并增加了风险分析。

螺旋模型分为四个方面的任务,分别是:制定计划、风险分析、工程实施、客户评估特点:瀑布+快速原型+风险分析,迭代过程5、能力成熟度模型CMMa)初始级:无秩序,甚至是混乱的b)可重复级:建立了基本的项目管理过程来追踪成本、进度和功能特性c)已定义级:已将管理和工程活动两方面的软件过程文档化、标准化,并综合成该组织的标准软件过程d)已管理级:收集对软件过程和产品质量的详细度量值,对软件过程和产品都有定量的理解和控制e)优化级:过程的量化反馈和先进的新思想、新技术促进过程不断改进。

6、敏捷开发的四个价值观:交流,简单,反馈,勇气7、可行性分析a)技术可行性技术可行性主要根据系统的功能、性能、约束条件等,分析在现有资源和技术条件下系统能否实现。

技术可行性分析通常包括风险分析、资源分析和技术分析。

风险分析:主要论证是否支持系统开发的各项活动。

资源分析:主要论证是否具备系统开发所需的各类人员、软件、硬件等资源和相应的工作环境。

技术分析:主要分析当前的科学技术是否支持系统开发的各项活动。

b)经济可行性经济可行性主要进行成本效益分析,从经济角度,确定是否值得开发。

c)法律可行性法律可行性主要研究系统开发过程中可能涉及到的合同、侵权、责任以及各种与法律相抵触的问题。

d)方案的选择和折衷8、结构化设计的任务:将结构化分析得到的数据流图映射成软件体系结构的一种设计方法。

(DFD->模块图)9、基于结构化分析与设计的重要工具:数据流图和数据字典10、数据流图(DFD)的概念和元素概念:a)概念:描述输入数据流到输出数据流的变换,用于对系统的功能建模。

b)元素:i.数据流:由一组固定成分的数据组成。

ii.加工:描述了输入数据流到输出数据流的变换。

iii.文件:用于存放数据。

每个文件用一个定义明确的名字标识。

iv.源或宿:指存在与软件系统之外的人员或组织,表示软件系统输入数据的来源数据流文件源或宿11、数据字典的概念与作用概念:数据字典是由字典条目组成,每个条目描述数据流图中的一个元素;作用:数据字典是结构化分析模型的核心,包括对软件使用和产生的所有数据的描述。

12、模块独立:模块完成独立的功能并且与其他模块的接口简单,符合信息隐蔽,模块间关联和依赖程度尽可能小。

是模块化、信息隐藏和局部化等概念的直接结果。

两项指标如下:a)内聚:衡量一个模块内部各个元素彼此结合的紧密程度的度量1.巧合内聚:将几个模块中没有明确表现出独立功能的相同程序代码段独立出来建立的模块。

2.逻辑内聚:指完成一组逻辑相关任务的模块,调用该模块时,由传输给模块的控制型参数来决定该模块应执行哪一项功能。

3.时间内聚:指一个模块中所有任务必须在同一时间段内执行。

4.过程内聚:指一个模块完成多个任务,这些任务必须按指定的过程执行。

5.通信内聚:指一个模块内所有处理元素都集中在某个数据结构的一块区域。

6.顺序内聚:指一个模块完成多个功能时必须顺序执行。

7.功能内聚:指一个模块中各个部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割。

b)耦合:模块之间的相对独立(互相连接的紧密程度)的度量。

耦合取决于各个模块之间接口的复杂程度、调用模块的方式以及通过接口的信息类型。

1.内容耦合:如果一个模块直接访问另一个模块的内部数据;或者一个模块不通过正常入口转到另一个模块呢;或者两个模块有一部分程序代码重叠;或者一个模块有多个入口,则两个模块之间就发生了内容耦合。

2.公共耦合:若一组模块都访问同一个公共数据环境,则他们之间的耦合就成为公共耦合。

(数据环境可以是去全局数据结构、共享的通信区或者内存的公共覆盖区等)。

3.外部耦合:模块间通过软件之外的环境连结。

4.控制耦合:一个模块传送给另一个模块的参数中包含了控制信息,该控制信息用于控制接收模块中的执行逻辑。

5.标记耦合:两个模块之间通过参数表传递一个数据结构的一部分。

6.数据耦合:两个模块之间仅通过参数传递简单数据。

7.非直接耦合:两个模块之间没有直接关系。

13、启发式规则a)改造程序结构图,降低耦合度,提高内聚度b)避免高扇出,并随着深度的增加,力求高扇入。

(降低软件复杂度)c)模块的影响范围应限制在该模块的控制范围内i.影响范围:ii.控制范围:d)降低模块结构的复杂程度和冗余程度,提高一致性e)模块功能应是可预测的,避免对模块施加过多的限制f)尽可能设计单入口和单出口的模块14、U ML图中最重要的两个图:用例图和类图用例图(即用况图):用况图展示了各类外部执行者与系统所提供的用况之间的连接。

一个用况就是系统提供的一个功能的描述,执行者就是那些有可能使用这些用况人或外部系统。

画用例图:找出给出问题中所要实现的功能,或者需解决的问题,即是用况。

(考试作用况图的时候,用况一定要是动作短语!!!基本上都是一层的用例关系,不用找出所有的用例,执行者与用例之间是用无箭头的实线相连!!)类图:展示了系统中类的静态结构,即类与类之间的相互关系。

其中联系方式有关联(相互连接)、依赖(一个类依赖或使用另外一个类)等。

类图的画法要请教盛达童鞋,敬请盛达童鞋补上此部分!!!15、基于面向对象过程的分析a)系统问题描述b)系统用例析取c)编写系统用例规约d)编写术语表(以上为衣杨老师上课讲的,下面是课本讲述的基于面向对象的分析与设计步骤)分析步骤:a)获取客户对系统的需求;b)以基本的需求作为指南来选择类和对象c)定义类的结构和层次d)建造对象与关系模型e)建造对象与行为模型f)利用用例/场景来复审分析模型设计步骤:a)系统设计b)对象设计c)消息设计d)复审16、用例图的概念和画法(用例包括用例图和用例规约)17、用例规约a)用况名称b)参与的执行者c)前置条件(一般来说是执行这个用况前的动作,如登录之类)d)事件流(一般是具体如何执行这个用况的步骤)e)后置条件(一般是指用况执行后系统会执行什么样的动作,或者进入什么状态)18、类图的概念和画法19、软件测试a)软件测试的目的是发现程序的错误和缺陷,并加以纠正,测试的任务是通过执行程序,暴露潜在的错误。

b)白盒测试:测试程序结构(主要是对程序模块的测试)i.逻辑覆盖法:基本的白盒测试法,主要考察使用测试数据运行被测程序时对程序逻辑的覆盖程度。

(P266)1.语句覆盖:选择足够的测试用例,使得运行这些测试用例时,被测程序的每个可执行语句都至少执行一次。

2.判定覆盖(分支覆盖):指……,使……,被测程序的每个判定的所有可能结果都至少出现一次(每个判断分支都至少经过一次)。

3.条件覆盖:指……,使……,被策程序的每个判定中的每个条件的所有可能结果都至少出现一次。

4.判定/条件覆盖:指……,使……,被测程序的每个判定的所有可能结果都执行一次,且每个判定中的每个条件的所有可能结果都至少出现一次。

5.条件组合覆盖:指……,使……,被测试程序的每个判定中的条件结果的所有可能组合都至少出现一次。

6.路径覆盖:指……,使……,被测试的每条可能执行到的路径都至少经过一次。

ii.路径测试法:着眼于程序执行路径的测试方法。

首先根据程序或设计图画出控制流图,并计算其区域数,然后确定一组独立的程序执行路径(基本路径),最后为每一个基本路径设计一个测试用例。

c)黑盒测试:测试程序功能i.等价分类法ii.边界值分析法iii.比较测试法d)α测试——内部测试e)β测试——用户测试20、软件测试策略:a)单元测试b)集成测试c)确认测试d)系统测试21、软件复杂性的六个方面a)程序理解的难度b)纠错、维护程序的难度c)向他人解释程序的难度d)按指定方法修改程序的难度e)根据设计文件编写程序的工作量f)执行程序时需要资源的程度22、软件项目管理中的4Pa)人员(people):是软件工程项目的基本要素和关键因素。

项目的人员类型分为:项目管理人员,高级管理人员,开发人员,客户,最终用户(P333)b)产品(product):进行项目计划之前,要先进行项目定义,定义项目范围,其中包括建立产品的目的和范围、可选的解决方案、技术或管理的约束等c)过程(process):软件项目强调对过程的控制,通常将项目分解为任务-子任务等,其分解准则是基于软件工程的过程。

d)项目(project):进行有计划和可控制的软件项目是管理复杂性的一种方式。

采用科学的方法及工具对项目基本内容进行管理。

23、功能点计算公式:FP=CT*(0.65+0.01*F)(F是Fi之和)a)有14个Fi (P343),Fi取0~5b)CT值的计算方法(P343)24、软件项目管理的概念:项目管理是通过项目经理和项目组织的努力,运用系统理论的方法对项目及其资源进行计划、组织、协调、控制,旨在实现项目的特定目标的管理方法体系。

软件项目管理的基本内容:项目定义、项目计划、项目执行、项目控制、项目收尾25、软件度量的概念:指计算机软件范围内的测量,主要是为产品开发的软件过程和产品本身定义相关的测量方法和标度。

对软件开发过程度量的目的是为了对过程进行改进,对产品进行度量的目的是为了提高产品质量。

度量的作用是为了有效的采用定量的方式来进行管理。

26、软件项目成本估算模型——COCOMO模型将软件项目类型分为组织性、半独立型和嵌入型a)基本CoCoMo模型E =D = c其中E表示工作量,单位是人月。