第1章:
1、计算机软件:是与计算机系统操作有关的程序、规程、规则及任何与之有关的文档和数据。
2、软件危机的原因:
1) 用户对软件需求的描述不精确,可能有遗漏、有二义性、有错误,甚至在软件开发过程中,用户还提出修改软件功能、界面、支持环境等方面的要求。
2) 软件开发人员对用户需求的理解与用户的本来愿望有差异,这种差异必然导致开发出来的软件产品与用户要求不一致。
3) 大型软件项目需要组织一定的人力共同完成,多数管理人员缺乏开发大型软件系统的经验,而多数软件开发人员又缺乏管理方面的经验。各类人员的信息交流不及时、不准确,有时还会产生误解。
4) 软件项目开发人员不能有效地、独立自主地处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误。
5) 缺乏有力的方法学和工具方面的支持,过分地依靠程序设计人员在软件开发过程中的技巧和创造性,加剧软件产品的个性化。
6) 软件产品的特殊性和人类智力的局限性导致人们无力处理“复杂问题”。所谓“复杂问题”的概念是相对的,一旦人们采用先进的组织形式、开发方法和工具,提高了软件的开发效率和能力,新的、更大的、更复杂的问题又摆在人们面前。
3、软件工程的三要素:方法、工具、过程。
4、软件工程的原则:
1) 抽象。抽取事物最基本的特性和行为,忽略非基本的细节。
2) 信息隐藏。将模块中的软件设计决策封装起来的技术。
3) 模块化。模块是程序中逻辑上相对独立的成分,它是一个独立的编程单位,应有良好的接口定义。
4) 局部化。要求在一个物理模块内集中逻辑上相互关联的计算机资源。
5) 一致性。整个软件系统(包括文档和程序)的各个模块均应使用一致的概念,符号和术语。
6) 完整性。软件系统不丢失任何重要成分,完全实现系统所需功能的程度。
7) 可验证性。开发大型软件系统需要对系统逐步分解。
5、软件生存周期:软件产品从形成概念开始,经过开发、使用和维护,直到最后退役的全过程称为软件生存周期。
6、软件生存周期的3个组成部分:软件定义、软件开发、软件使用与维护。
7、软件生存周期的10个阶段:软件系统的可行性研究、需求分析、概要设计、详细设计、实现、组装测试、确认测试、使用、维护、退役。
8、软件定义可以分为2个阶段:软件系统的可行性研究、需求分析。
9、可行性论证的3部分:技术可行性、操作可行性、经济可行性。
10、软件开发可以分为5个阶段:概要设计、详细设计(统称设计)、实现(编码)、组装测试、确认测试(统称测试)。
11、软件开发过程中几个阶段的任务和要求:
1) 概要设计。根据软件需求规格说明建立软件系统的总体结构和模块间的关系,定义各功能模块的接口,设计全局数据库或数据结构,规定涉及约束,制定组装测试计划。
2) 详细设计。对概要设计产生的功能模块逐步细化,形成若干个可编程的程序模块,用某种过程设计语言设计程序模块的内部细节。
3) 实现。实现的主要任务是根据详细设计文档将详细设计转化为所要求的编程语言或者数据库语言的程序。
4) 组装测试。根据概要设计中各功能模块的说明及制定的组装测试计划,将经过单元测试的模块逐步进行组装和测试。
5) 确认测试。根据软件需求规格说明定义的全部功能和性能要求及软件确认测试计划对软件系统进行测试,测试系统是否达到了系统需求。
12、软件开发模型的3种类型:
1) 第一种是以软件需求完全确实为前提的瀑布模型。
2) 第二种是在软件开发初始阶段只能提供基本需求时采用的渐进式开发模型,如原型模型,螺旋模型等。
3) 第三种是以形式化开发方法为基础的变换模型。
13、螺旋模型的4个组成部分:需求定义、风险分析、工程实现、评审。
14、变换模型:它采用形式化的软件开发方法,对形式化的软件规格说明进行一系列自动或半自动的程序变换,最后映射成计算机系统能够接受的程序系统。
第二章:1、面向规模的度量:
生产率:p1=l/e l是软件项目的**行数(kloc)、e是软件项目的工作量(pm)、p1是软件项目的生产率,用(loc/pm)度量。
c1=s/l s是软件项目的总开销(美元)、c1是软件项目每行**的平均成本(¥、loc)
d1=pd/l pd是软件项目的文档页数、d1是每千行**的平均文档页数。
**出错率:
eqr1=ne/l ne是软件项目的**错误数。eqr1是每千行**的平均错误数。
2、面向功能的度量:
3、 加权公式:e = a + 4m +b)/6
4、 构造性成本模型:boehm把cocomo模型分为基本、中间和详细3个层次,分别用于软件开发的3个不同阶段。基本cocomo模型用于系统开发的初期,估算整个系统的工作量(包括软件维护)和软件开发所需要的时间,中间cocomo模型同于估算各个子系统的工作量和开发时间,详细cocomo模型用于估算独立的软部件,如子系统内部的各个模块。
5、 boehm把软件划分为组织型、半独立型、嵌入型三类。
6、 例题:用基本cocomo模型估算例2.2的工作量、开发时间和参加项目开发的人数。
在例2.2中,目标**行数为33.3kloc,cad软件开发属于中等规模、半独立型,从表2.
9中查到a=3.0,b=1.12。
代入式e=a(l)b得 e=3.0(l)1.12=3.
0x(33.3)1.12=152pm 代入式d=ced,并取c=2.
5,d=0.35,得 d=2.5e0.
35=2.5x1520.35=14.
5(月) 于是,参加项目将开发的人数 n=e/d =152/14.5=11(人)
7、 控制结构复杂性度量 v(g)=e-n+2 e为结构图的边数 n为结构图的结点数 v(g)等于结构图中有界或无界的封闭区域个数。
8、 当系统处于稳态时程序的有效性 a=mtbf/(mtbf+mttf)
9、 软件可靠性模型可以分为:宏观模型、微观模型。
10、 错误植入模型,用于估算程序中残留的错误。
et = 程序中原有的残留错误数 e1 = 第一位测试员在[0,t]时间内发现的错误数 e2 = 第二位测试员在[0,t]时间内发现的错误数 e0 = 两位试员在[0,t]时间内不约而同发现的错误数得 et/e1 ≈ e2 /e0 残留错误估计值计算式:et = e1e2 /e0
11、 软件工程的风险分析包括风险标识、风险估算、风险评价、风险管理4个部分。
12、 风险可以分为:项目风险、技术风险、商业风险。
13、 cmm成熟度级别的行为特征和关键过程域:l1初始级 l2可重复级 l3已定义级 l4已管理级 l5优化级。
第三章:1、 结构图。系统工程师用结构模版开发系统模型。它由:用户界面处理、输入处理、处理和控制功能、输出处理、维护和自测试5个部分组成。
2、 系统总体结构关系图(acd)位于系统模型图的最顶层。acd定义了系统的组成,定义了各子系统引用和生成的信息,建立了系统与系统运行环境之间的信息界面。系统工程师借助acd的帮助定义各子系统的结构图(afd)。
第四章:1、需求分析可分为:问题解析、需求描述、需求评审。
2、初步需求获取技术:访谈会议、观察用户工作流程、用户和开发人员共同组成联合小组、实例分析。
第六章:1、 uml4类图:用例图、静态图、行为图、实现图。
2、 迭代渐进式软件开发过程,它包含4个阶段:初启、细化、构造、移交。
3、 uml的用例与用例之间存在如下两种关系:使用关系、扩展关系。
4、 uml包图是表示顶层架构的适当机制。
5、 主要的架构模式:流程处理模式、客户/服务器模式、模型-视图-控制器(mvc)模式、分层模式。
6、 uml类图是表示领域概念模型的适当机制。
7、 在uml中,用类表示概念,用类图表示领域概念模型。
8、 uml的类包含3个部分:类的名称、属性列表、方法列表。
第七章:1、分治法:一个复杂问题分割成若干可管理的小问题后更易于求解,模块化正是以此为依据。
模块与软件耗费。
3、 一个软件的深度和宽度分别说明其控制的层数和跨度。一个模块的“扇出率”指该模块直接控制的其他模块数,一个模块的“扇入率”指能直接控制该模块的模块数。
第九章:1、 sd方法能方便地将数据流图转换为软件结构,其过程分为5步:
1) 确信信息流的类型;
2) 划定流界;
3) 将数据流图映射为程序结构;
4) 提取层次控制结构;
5) 通过设计复审和使用启发式策略进一步精华所得到的结构。
第3步所用映射方法涉及信息流的类型。信息流分为变换流和事务流两种类型。
2、 简答变换分析的步骤:
1) 步骤一,复审基本系统模型。
2) 步骤二,复审和精华软件数据流图。
3) 步骤三,确定dfd的特性,判定它为变换流还是事务流。
4) 步骤四,划定输入流和输出流的边界,孤立变换中心。
5) 步骤五,执行“以及分解”。
6) 步骤六,执行“二级分解”。
7) 步骤七,采用启动式设计策略,优化所得的程序结构。
3、 简答事务分析步骤:
1) 步骤一,复审基本系统模型。
2) 步骤二,复审并精华软件数据流图。
3) 步骤三,确定数据流图的特性。
4) 步骤四,指出事务中心,确定由事务中心发出的每一动作路径的数据流特性。
5) 步骤五,把数据流图映射为事务处理型的程序结构。
6) 步骤六,分解并精华事务结构以及每条动作路径所对应的结构。
7) 步骤。
七、采用启动式设计策略,优化所得的程序结构。
4、 判断题,启发式设计策略有哪些?
1) 改造程序结构,降低耦合度,提高内聚度。
2) 改造程序结构,减少扇出,在增加程序深度的前提下最求高扇入。
3) 改造程序结构,使任一模块的作用域在其控制域之内。
4) 改造程序结构,降低界面的复杂性和冗余程度,提高协调性。
5) 模块功能应该可语言,避免对模块施加过多限制。
6) 改造程序结构,追求单入口单出口的模块。
7) 为满足设计或可移植性的要求,把某些软件用包的形式封装起来。
第十章:1、 uml的消息有如下4中类型:简单消息、同步消息、异步消息、返回消息。
第十四章:1、 软件测试的步骤(按阶段划分):单元测试、综合测试、确认测试、系统测试。
软件工程复习
单选填空简答思考题。1 传统的软件瀑布生命模型包括哪六个方面?需求 分析 设计 实现 交付后维护 退役2 传统瀑布生命模型的中交付后维护包括哪三种?改正性维护 适应性维护 完善性维护3 现代维护和传统维护的观点有何不同?1 传统维护的观点是先开发后维护。2 现代维护的观点是无论是在软件安装前还是安装...
软件工程复习
软件工程复习资料。备注 1.老师反复强调我们之前做过的作业要熟练掌握 需求陈述 实验课画的模型 自己画。的数据流图 2 蓝颜色的字都是老师上课补充的,还有很多需要自己去补充,欢迎修正完善。核心问题 在考试做大是要表述清楚详细,关。键词要有 问题定义 专用名词表要解决的问题是什么?达要准确,不能更改 ...
软件工程 复习
1.概念 软件危机是指在计算机软件开发 使用与维护过程中遇到的一系列严重问题。2.为什么会产生软件危机?当软件开发技术的进步不能跟上硬件技术的进步,未能满足发展的要求,致使软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。3.软件危机的表现 经费预算经常突破...