软件工程考点

以下的内容均是我一个字一个字的码的,也许也有错误。
软件工程考点 SundayCoder俊勇
欢迎大家下载打印
下载地址:http://download.csdn.net/detail/qq_33094993/9720629
考试题型:
1选择题(20x1)
2填空题(10x1或者5x2)
3名词解释(5x3)
4简答题(5X5)
5应用题(3x10)
(1)什么叫软件危机?
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重的问题。
(2)软件危机主要包含两方面的问题:
1如何开发软件,以满足对软件日益增长的需求。
2如何维护数量不断膨胀的已有软件。
(3)软件危机的表现
1 对软件开发成本和进度的估计常常很不准确。
2用户对 “已经完成”的软件系统不满意的现象经常发生。
3软件产品的质量往往靠不住。
4软件常常是不可维护的。
5软件通常没有适当的文档资料。
6软件成本在计算机系统总成本中所占的比例逐年上升。
7软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
(4)产生软件危机的原因:
在软件的开发和维护的过程中存在这么多严重的问题:
一方面和软件本身的特点有关
一方面也和软件开发与维护的方法的不正确有关。
(5)软件工程是什么?
软件工程是指导计算机软件开发和维护的一门工程学科。
软件工程的研究内容应该蕴含软件开发模型,软件开发方法,软件支持过程,软件管理方面。
(6)软件工程的目标
1 较低的开发成本
2 达到要求的软件功能,取得较好的软件性能。
3开发软件的质量指标高,可靠性高。
4需要较低的维护费用
5能按时完成开发工作,及时交付使用。
(7)什么是软件生命周期?
软件生命周期由软件定义、软件开发、运行维护(也称软件维护)3个时期组成。
软件定义通常分为三个阶段:
1 问题定义 2 可行性研究 3需求分析
开发时期分为四个阶段:
1 总体设计 2 详细设计 3 编码 4 单元测试 (1,2又称系统设计,3,4称为系统实现)
维护时期:
维护时期的主要任务是使软件持久地满足用户的需要。
(8)什么叫软件过程?
软件过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定完成各项任务的工作步骤。(关键:who,when,what,how)

(9)什么是软件生存周期模型?
软件生存周期模型是跨越了整个软件的生存周期的系统开发、运作、维护所实施的全部工作和任务结构框架,它是软件过程的一种抽象表示。
常见的软件生存周期模型:
1瀑布模型:
具有的特点:1阶段间具有顺序性和依赖性2推迟实现的观点3质量保证的观点
(1) 每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。
(2) 每个阶段结束之前都要对已经完成的文档进行评审,以便尽早的发现问题,改正错误

2原型模型:(也称为快速模型)
它具有先开发一个‘原型软件’,完成主要功能,展示给用户并征求意见,然后逐步的完善的反复循坏过程。按照原型建立的目的不同,可以分为:
(1) 探索型模型,用户用户需求阶段。
(2) 实验型模型,用于设计阶段。
(3) 演化型模型,软件开发全过程,及早向用户提交的一个原型系统。

3增量模型:
增量模型是一种非整体开发模型。把软件产品作为一系列的增量构建来设计、实现、集成、测试。开发时分批向用户提交产品,每次提交一个满足用户需求子集的增量构件,直到最后一次得到满足用户的全部需求的完整产品为止。
4螺旋模型:
螺旋模型是一种风险驱动的模型,它将瀑布模型和增量模型结合起来,并且加入了风险分析。螺旋模型主要适用于内部开发的大规模软件项目。
5喷泉模型:
喷泉模型对软件的复用和生存周期中的多项开发活动的集成提供了支持,主要支持面向对象的开发方法,系统的某个部门常常重复无数多次,相关的功能在每次的迭代中随着加入演化的系统。

第二章
1可行性的研究目的是什么?
可行性研究的目的是用最小的代价在尽可能短的时间内研究并确定客户提出的问题是否有行得通的方法。(简而言之,就是可行否!!!)
可行性的实质是进行了一次大大压缩简化了的系统分析和设计的过程。
一般从三个方面研究每种解法可行性。
(1) 技术可行性。(使用现有的技术可以实现这个系统吗?)
(2) 经济可行性。(这个系统的经济效益能超过它的开发成本吗?)
(3) 操作可行性。(系统的操作方式在这个用户组织内行得通吗?)
注:可行性的研究时间长短取决于工程的规模,可行性的研究成本占预期的工程总成本的5%–10%。

2可行性的研究过程
(1) 复查系统规模和目标
(2) 研究目前正在使用的系统。
(3) 导出新系统的高层逻辑模型。
(4) 进一步定义问题。
(5) 导出和评价供选择的解法。
(6) 推荐行动方针。
(7) 草拟开发计划。
(8) 书写文档提交审查。
3系统流程图
系统流程图是概括的描绘物理系统的传统工具。它的基本思想是用圆形符号以黑盒子形状描绘组成系统的每个部件(程序,文档,数据库,人工过程等)。
注:系统流程图表示的是数据在系统各部件之间的流动的情况,而不是对数据进行加工处理的控制过程,因此尽管系统流程图的某些符号和程序流动图的符号形式相同,但它却是物理数据流图而不是程序流程图。
4数据流图(DFD)【参看P42】
数据流图的符号
(1) 正方形(或立方体表示数据的源点或者终点)。
(2) 圆角矩形(或圆代表变换数据的处理)。
(3) 平行线(代表数据存储)
(4) 箭头(代表数据流,即特定数据的流动方向)。
5成本效益的分析方法。
1货币的时间形式。
F=P(1+i)^n(p元钱在N年后的价值)
P=F/(1+i)^n(N年后收入钱为F,那么现在的钱的价值为P)
2投资回收期。
投资回收期越短就越能越快获得利润,因此这个项目更加值得投资。
投资回收期=投资总额/(年新增利润额+年折旧额)
3纯收入。(赚的钱-成本)
4投资回收率。
P=∑Fi/(1+j)^i(i为1,2,3…n)
【Fi为i年年底的效益,n是系统使用寿命,j是投资回收率,P是现在的投资额】
第三章
1需求分析的任务是什么?
需求分析是软件定义时期的最后一个阶段。
软件定义总共分为3个阶段
(1) 问题定义
(2) 可行性研究
(3) 需求分析
需求分析的基本任务是准确的回答“系统必须做什么?”这个问题。
所以需求分析的任务还不是确定系统怎样完成它的工作,仅仅是确定系统必须完成那些工作,也就是对目标系统提出完整,清晰,具体的要求。

2需求分析的具体任务。
(1) 确定对系统的综合要求。
1功能需求
2性能需求
3可靠性和可用性需求
4出错处理需求
5接口需求
6约束
7逆向需求
8将来可能提出的要求
(2) 分析系统的数据要求。
(3) 导出系统的逻辑模型。
(4) 修正系统的开发计划。
3需求分析的方法
1功能分解的方法。
2面向数据流自定向下求精。(结构化分析方法)
3信息建模方法。快速建立软件模型。(最准确,最有效,最强大的需求分析技术)
4面向对象的方法。
4需求分析过程应该建立的三种模型
(1) 数据模型。(E-R图)
(2) 功能模型。(数据流图)
(3) 行为模型。(状态转换图)
5需求分析可能用到的三个图形
(1) 层次方框图。(层次的树形状)
(2) Warnier图(与思维导图相似)
(3) IPO图。(输入、处理、输出图的简称,能够方便的描绘输入数据,对数据的处理和输出数据之间的关系。)【改善的IPO图成为IPO表】
6验证软件需求。
(1) 一致性。(所有的需求必须是一致性的,任何需求不能与其他需求相矛盾)
(2) 完整性。(需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能)
(3) 现实性。(指定的需求是现有的硬件和软件技术可以实现的)
(4) 有效性。(必须验证需求是正确有效的,确实能解决用户面对的问题)

第五章
1总体设计
经过了需求分析阶段的任务之后,系统必须“做什么”已经很清楚了。现在是解决“怎么做”的时候了。
总体设计的基本目的就是回答“概括的说,系统应该如何实现?”这个问题。
因此,总体设计又称为概要设计或者初步设计。通过这个阶段的设计将将划分组成系统的物理元素—程序、文件、数据库、人工过程和文档。

2 模块化设计原理
模块,是指具有相对独立性的,由数据说明,执行语句等程序对象构成的集合,程序中的每个模块都需要单独命名,通过名字可实现对指定模块的访问。

在软件的结构体系中,模块是可组合可分解和更换的单元,具有四个基本属性:接口、功能、逻辑、状态。
接口、功能、状态反映模块的外部特征,逻辑反映的是模块的内部特征。

模块化是把整个程序划分为若干个模块,每个模块用于实现一个特定的功能。把这些模块组合起来构成的一个整体,可以完成指定的功能满足用户的需求。

3抽象和逐步求精
抽象是抽出事务的本质特性而展示不考虑他们的细节。
逐步求精是一种先总体后局部的思维原则,也就是一种逐层分解,分而治之的方法。

4信息屏蔽和局部化
信息屏蔽是指在设计和确定模块时,使一个模块内包含的信息(过程和数据),对于不需要这些信息的其他模块来说,是不可访问的。
局部化是与信息屏蔽相关的,所谓局部化,就是使得一些关系密切的软件元素彼此靠近一些。

5模块的独立性
模块的独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系量最少且接口简单。

模块的独立性可以由两个定性的标准度量。
(1) 反应模块外部特征的标准是耦合。
耦合:耦合也称为块间联系,是对一个软件结构内不同模块间相互联系紧密程度的的度量,模块间的联系越紧密,耦合性就越强,模块的独立性就越差。
耦合类型:非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共耦合、内容耦合。
(2) 反应模块内部特征的标准则是内聚。
内聚:内聚也称为块内联系,是指一个模块内部个个元素之间关系的紧密程度。若是一个模块中的各元素(语句程序段)联系得越紧密,内聚性就越高,模块的独立性就越好。
内聚类型:功能内聚、信息内聚、通信内聚、过程内聚、时间内聚、逻辑内聚、巧合内聚。

6 典型的数据流类型和系统结构。
典型的数据流类型有变换型数据流和事务型数据流。数据流的类型不同,得到的系统结构也不同。
(1) 变化型数据流和变化型系统结构。
变换型数据处理问题的工作大概分为三步:取得数据,变换数据,给出数据。
数据沿着外部通道进来,变成内部形式,在通过加工,再变成外部形式输出。
(2) 事务型数据流和事务型系统结构。
数据沿着输入通路到达一个处理T时,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。
注:处理T成为事务中心。它完成以下任务:
(1) 接受输入数据。(输入数据又称为事务)
(2) 分析每个事务并确定他们的类型。
(3) 根据事务类型选取一条活动通路。
7程序流程图
要点:
8盒图(N-S图)
N-S图的特点:
■功能域明确;
■很容易确定局部和全局数据的作用域;
■不可能任意转移控制;
■很容易表示嵌套关系及模块的层次关系。

9 PAD图(问题分析图缩写)
10判定表
11jackson图
Jackson和Warnier是最著名的两个面向数据结构的设计方法。
Jackson设计方法是一种面向数据结构的软件设计方法,Jackson分析方法是面向数据流的分析方法。
逻辑数据结构三类:
(1) 顺序
(2) 选择
(3) 重复
第七章 软件编码
1什么是编码?
编码就是讲详细设计的结果转换成用某种编程语言编写的源程序。
编码风格应该简明清晰,易读易懂。
为了达到目的,必须遵守以下的原则。
(1) 程序内部的文档(包括适当的标识符,适当的注解,程序的视觉组织)。
(2) 数据说明
(3) 语句构造
(4) 输入输出
(5) 效率
2软件测试基础
软件测试的目的与软件工程所有其他阶段的目的都相反,软件工程其他阶段都是‘建设性的’,但软件测试的目的确是为了“破坏”已经建立好的软件系统—竭力证明程序中有错误,不能按照预定要求正确的工作。
测试阶段的根本目标是竟可能多的发现并且排除软件中潜藏在的错误。3
3什么是测试?它的目标是什么?
(1) 测试是为了发现程序中的错误而执行程序的过程。
(2) 好的测试方案是极有可能发现迄今为止未能发现错误的测试方案。
(3) 成功的测试是发现至今未止尚未发现的错误的测试。
4软件测试的准则
(1) 所有的测试度应该追溯到用户需求。
(2) 应该在测试开始之前就制定好测试计划。
(3) 把prareto的原理应用到软件测试中去。
(4) 应该从小规模开始测试并且逐步进行大规模测试。
(5) 穷举测试是不可能的。
(6) 为了达到最佳的测试效果,应该由独立的第三方从事测试工作。
5软件的测试方法
软件的测试技术分为静态分析技术和动态预测技术。
静态分析技术:1人工测试。2利用计算机辅助静态测试。
动态预测技术:
(1) 黑盒测试(又称功能测试)
黑盒测试:已经知道产品应该具有什么样的功能,可以通过测试来检验是否每个功能都能正常的使用。
(2) 白盒测试(又称结构测试)
白盒测试:如果知道产品的内部工作过程,可以通过测试来验证产品内部动作是否按照规格说明书的规定正常的执行。
6软件测试的步骤
测试的步骤基本上是由以下的步骤组成的。
(1) 模块测试。(单元测试)
(2) 子系统测试。(局部测试)
(3) 系统测试。(也称为集成测试)
(4) 验收测试。(也称为确认测试,用户有参与)
(5) 平行运行。(新旧共存)

7集成测试
(1) 自顶向下集成。
自顶向下集成:从主控制模块(主程序开始),沿着软件的控制层次向下移动,从而逐步的把各个模块结合起来
(2) 自底向上集成。
自底向上集成:从‘原子’模块(即软件最底层的模块)开始组装和测试。因为是从底部开始向上结合模块总能得到下层模块处理的功能,所以不需要存根程序。
8白盒测试技术。
(1) 逻辑覆盖
1语句覆盖2判定覆盖(分支覆盖)3条件覆盖4判定/条件覆盖
5条件组合覆盖6点覆盖7边覆盖8路径覆盖
(2) 控制结构测试
1基本路径测试
2条件测试
3循环测试
9黑盒测试技术
(1) 等价划分
等价划分:首先把程序的输入域划分成为若干个数据类,然后根据划分出的输入数据种类开始设计测试用例。
(2) 边界值分析
(3) 错误推测
10两种测试方法.
黑盒测试不能替代白盒测试。
白盒测试是在测试过程中的早期阶段执行,而黑盒测试是在测试阶段过程的后期执行。
黑盒测试可以发现白盒测试不易发现的其他不同类型的错误。
(1) 功能不正确或者功能遗漏。
(2) 界面错误。
(3) 数据结构错误或者外部数据库访问错误。
(4) 性能错误。
(5) 初始化和终止错误。

11调试
调试(也称为纠错)作为成功测试的后果而出现,也就是说,测试是在测试发现错误之后排除错误的过程。
调试途径:1回溯法2原因排除法。

第八章
1软件维护的定义。
软件维护就是软件已经交付用户使用之后,为了改正软件中的错误或使软件满足新的功能需求而修改软件的过程。
软件维护包括下述4中活动:
(1) 改正性维护。
(2) 适应性维护。
(3) 完善性维护。
(4) 预防性维护。
2软件维护的特点。
(1) 结构化维护和非结构化维护差别巨大。
(2) 维护的代价高昂。
(3) 维护的问题很多。
3软件的可维护性
软件的可维护性可以理解是维护成员理解、改正、改动或改进这个软件的难易程度。
决定软件的可维护性的因素。
(1) 可理解性
(2) 可测试性
(3) 可修改性
(4) 可移植性
(5) 可靠性
(6) 可重用性
(7) 效率
4如何提高软件的可维护性
(1) 建立明确的软件质量目标。
(2) 使用先进的软件开发技术和工具。
(3) 建立明确的质量保证。
(4) 选择可维护性的程序设计语言。
(5) 改进程序的文档。

第九章 面向对象的设计方法
1面向对象的设计方法的优点
(1) 与人类习惯的思维方法一致。
(2) 稳定性好。
(3) 可重用性好。
(4) 较易开发大型软件系统。
(5) 可维护性好。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值