软件工程导论复习资料(汇总)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章概述
1.IEEE为软件下的定义是:计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据的完整集合
2.程序是为了解决某个特定问题而用程序设计语言描述的适合计算机处理的语句序列。
3.文档是软件开发活动的记录,主要供人们阅读,既可用于专业人员和用户之间的通信和交流,也可以用于软件开发过程的管理和运行阶段的维护。
4.软件的特点:
·软件是一种逻辑产品,无法看到软件本身的形态。
·软件产品的生产主要是开发研制,没有明显的制造过程。
·软件产品在使用过程中,不存在磨损、消耗、老化等问题。
·软件产品的开发主要是脑力活动,还未完全摆脱手工开发方式,大部分产品是“定做的”,生产效率低。
·软件产品的成本昂贵,软件费用不断增加。
·软件对硬件和环境有不同程度的依赖性。
·软件是复杂的。
5.软件的分类:
·传统意义上从计算机系统角度看,软件分为两大类:系统软件和应用软件。·从计算机软件用途来划分三类,大致分为服务类、维护类和操作管理类。6.软件危机(重点):
·如何开发软件以满足软件日益增长的需求
·如何维护数量不断增长的已有软件。
7.软件危机表现形式:
·对软件开发成本和研制进度的估计常常很不精确。
·“已完成”的软件不能满足用户的要求。
·软件产品质量差,可靠性得不到保证。
·软件产品可维护性差
·软件成本在计算机系统总成本中所占的比例逐年上升。
·软件开发生产率提高的速度远远跟不上计算机应用速度普及深入的趋势。8.产生软件危机的原因
·软件是计算机系统中的逻辑部件。
·软件开发的管理困难。
·软件开发费用不断增加,维护费用急剧上升
·软件开发技术落后。
·生产方式落后
·开发工具落后,生产效率缓慢
9.解决软件危机途径
·对计算机软件有正确认识,清除“软件是程序”的错误观念
·使用好的开发技术和方法,并且要不断研究探索更好更有效的技术和方法·有良好的组织、严密的管理,各类人员要相互配合,共同完成任务
·开发和使用好的软件工具。
10.软件工程的定义:是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。
11.软件工程基本目标:
·降低软件开发成本
·满足用户要求的全部软件功能
·符合用户要求,令用户满意的软件性能
·具有较好的易用性、可重用性和可移植性
·较低的维护成本,较高的可靠性
·按合同要求完成开发任务,及时交付用户使用
12.软件工程的研究内容的基本原理:
·软件开发技术:主要研究软件开发方法、软件开发过程、软件开发工具和技术。·软件开发过程管理:主要研究软件工程经济学和软件管理学。
13.软件工程的基本原理:
·用分阶段的生存周期计划严格管理
·坚持进行阶段评审
·实行严格的产品控制
·采用现代程序设计技术
·结果应能清楚地审查
·开发小组人员应该少而精
·承认不断改进软件工程实践的必要性
14.软件工程的发展史:
·程序设计时代
·程序系统时代:IBMDE 360OS==》转折点
·软件工程时代
15.软件过程的定义:把输入转化为输出的一组彼此相关的资源和活动
16.软件生存周期的定义:某一软件项目从被提出并着手实现开始,直到该软件报废或停止使用为止所经历的时间
17.软件生存周期:
·计划时期:(1)问题定义(2)可行性研究
·开发时期:(1)需求分析(2)概要设计(3)详细设计(4)编码(5)测试·运行时期:(1)维护
18.软件开发模型的定义:为整个软件建立的模型
19.软件开发模型及优缺点和应用范围:
(1)瀑布模型:
A、定义:存周期各个活动规定为依线性顺序连接的若干阶段的模型。
B、适用范围:适合于需求明确的软件项目的开发。
C、优点:使开发过程可以在分析设计、编码、测试和维护的框架下进行。过程具有系统性,可控性。克服了软件开发的随意性。
D、缺点:a.开始阶段用户很难精确的提出产品需求,修改需求十分普遍。b.项目开发晚期才能得到程序的运行版本,这时修改软件需求和开发中的错误代价很大。c.采用线性模型组织项目开发经常发生开发小组人员“堵塞状态”特别是项目的开始和结束
(2)快速原型模型:
A、适用范围:用户有时间和精力参与原型的开发并与开发者之间进行频繁交流的项目,而且项目容易进行模块化
B、优点:增进软件开发人员和用户对系统服务的理解,用户最容易获取信息和发表自己的意见
C、缺点a、对于大型软件项目,原型模型需要足够的人力资源以建立足够的原型组。
b、原型模型要求开发者和客户在一段时间内共同完成原型系统的开发,如果任何一方没有实现承诺,会导致原型开发的失败。
c、如果系统难以模块化,建造原型所需构件就有问题。
(3)增量模型:
A、适用范围:适合于软件要求不明确,设计方案有一定风险的软件项目。
B、优点:增量模型具有较大的灵活性
C、缺点:与新增量构件集成到现在软件中时,所形成的产品必须是可测试的(4)螺旋模型:
A、适用范围:适合于大规模高风险的软件项目开发
B、优点:使开发人员和用户都能更好的了解每个螺旋周期演化存在的风险,从而做出相应的对策
C、缺点:由于它是风险驱动的,因此使用该模型需要有相当丰富的风险评估经验和这方面的专门技术
(5)喷泉模型,统一过程(RUP)模型,变换模型,净室模型
(6)基于构件的开发模型
(7)统一过程(RUP)模型
(8)基于形式化的开发模型
20.传统软件工程方法步骤:
·采用结构化分析、结构化设计和结构化实现完成软件开发的各项任务
·把软件生存周期划分成若干个阶段,然后按顺序完成各个阶段的任务
·每一个阶段的开始和结束都有严格标准,前一阶段结束的标准是后一阶段工作开始的标准
·在每一阶段结束之前,必须正式地进行严格的技术审查和管理复审
21.面向对象软件工程开发过程的特点:开发阶段界限模糊,开发过程逐步求精,开发活动反复迭代
22.传统软件工程和面向对象软件工程的分析方法对比:
开发思想对比,传统软件工程:以功能划分为导向;面向对象开发方法是以对象作为整个问题分析的中心,围绕对象展开系统的分析与设计工作。
开发过程方面,传统软件工程开发过程包括需求设计、总体设计、详细设计、面向过程的编码和测试;面向对象软件工程开发过程包括需求分析与对象抽取、对象详细设计、面向对象的编码和测试。