软件工程期末概念复习
简答题6道,猜想软件、软件工程、软件危机、软件过程模型、软件测试和软件维护各一道。
画图题看ppt吧,也可以看这个大佬的总结软件工程期末总结
其他随缘了
1. 软件
- 软件:软件是计算机程序,规程以及运行计算机系统过程需要的相关文档和数据。在软件工程中,软件=程序+文档+数据。
- 程序:按事先设计的功能和性能要求执行的指令,程序=算法+数据结构;
- 数据是指程序初始化数据、测试数据、以及研发数据、维护数据等;
- 文档是与程序开发、维护和使用有关的图文材料。
- 特点:
- 软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。
- 软件是被开发或设计的,而不是传统意义上的被制造。
- 软件不会磨损。
- 虽然软件产业正在向基于构件的组装前进,大多数软件仍然是定制。
- 本质特性:软件具有复杂度、一致性、可变性和不可见性等固有的内在特性,这是造成软件开发困难的根本原因。
2. 软件危机
- 软件危机:指在软件的开发和维护过程中所遇到的一系列严重问题。
- 典型表现:
- 开发成本和进度的估计常常不准确;
- 用户对交付的软件系统不满意的现象经常发生;
- 软件质量无保证、可靠性差;
- 软件常常是不可维护的;
- 软件通常没有适当的文档资料;
- 软件成本在计算机系统总成本中所占比例逐年上升;
- 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
3. 软件工程
- 软件工程:是将系统化、规范化、可度量的方法应用于软件开发、运行和维护过程,即将工程化应用于软件中的方法的研究。是将计算机科学、管理科学等理论运用于指导软件开发与维护的一门交叉学科。
4. 软件的生命周期
- 定义:软件产品从考虑其概念开始到交付使用,直至最终退役为止的整个过程。
- 三阶段:
- 软件定义时期:软件定义的任务是确定待开发的软件系统要做什么,又称为系统分析。可进一步划分为问题定义,可行性研究,需求分析3个阶段;
- 软件开发时期:软件开发的任务是具体设计和实现软件。分为概要设计,详细设计,编码和单元测试、综合测试4个阶段,前两个统称为系统设计,后两个统称为系统实现;
- 软件运行与维护时期:运行维护的任务是根据软件运行中的问题,对其进行修改,使系统能持久的满足用户需求。
-
问题定义:弄清”要解决的问题是什么
-
可行性研究:用最小的代价在尽可能短的时间内研究并确定客户提出的问题是否有行得通的解决办法(系统分析师的工作)。分为技术可行性、经济可行性、操作可行性、 会可行性;
-
需求分析:最终形成一份经开发方和用户认可或达成共识的软件需求规格说明书。(关注:系统必须做什么/p>
-
需求规格说明:软件开发过程中非常重要的文档,是软件系统的逻辑模型的重要组成部分!
-
软件设计目标
阶段 回答的中心问题 成果 系统分析 做什么,明确系统功能 逻辑模型 系统设计 怎么做,如何实现系统说明书规定的功能 物理模型 -
软件设计的基本原则:
- 模块化:系统在设计是应追求尽可能高内聚、低耦合的系统。
- 抽象:抽象是实现模块化的手段之一。包括对过程、数据和控制的抽象。
- 逐步求精:抽象与求精是互补的概念。
- 信息隐蔽。
5. 软件过程
- 定义:描述、开发、维护软件制品,创建、管理和支持软件
项目的一系列活动和任务。 - 过程模型定义:
- 对软件开发全部过程的抽象;
- 是对软件全部开发过程中所涉及的活动(或者任务)、以及活动之间的关系的抽象;
- 过程、活动和任务的结构框架。
- 过程模型的作用:
- 明确规定要完成的活动、任务和开发策略;
- 告诉人们应该去遵循一个什么样的过程去开发软件系统;
- 为软件工程管理提供里程碑和进度表;
- 为软件开发提供框架和方法。
- 瀑布模型:瀑布模型包含了各项软件工程活动,即制定开发计划、进行需求分析、软件设计、程序编码、测试及运行维护。生命周期的各项活动自上而下,相互衔接呈线性图状,如同瀑布流水,逐级下落。各个活动之间具有顺序性和依赖性。瀑布模型是经典,是软件过程模型的里程碑。
- 特点:
* 强调了每一阶段的严格性,强调推迟实现;
* 强调质量保证:每个阶段通过严格的阶段评审与确认,得到一致、完整、准确、无二义性的文档,并“冻结”文档为该阶段结束的标志;
* 是一种整体开发模型- 局限性:
* 在软件开发的初期阶段获取正确、完整的需求很困难;
* 理想的线性开发模式,缺乏灵活性;
* 阶段划分完全固定,产生大量文档,极大地增加了工作量
- 原型模型:
- 原型:软件的一个早期可运行的版本,它反映最终系统的部分重要功能和性能;
- 原型的作用: 准确地确定用户需求;
- 主要使用领域:系统特别大、系统需求不明确;
- 优点:
* 用户参与,尽早揭示软件中可能存在的风险及不确定素,尤其是关于用户需求一致性方面的风险;
* 开发过程与用户培训过程同步,系统易维护,对用户更友好,产品柔性好。- 局限性:
* 对大型项目,不经过系统分析,一开始构造原型比较困难;
* 对于那些不是与用户密切交互的软件(比如大规模计算、批处理等软件),应用原型模型有一定的困难,因为比较难获取用户的评价;
* 文档容易被忽略。
- 增量模型:把软件产品作为系统的增量构件来设计、编码、集成和测试;每开发一部分,向用户展示一部分。
- 螺旋模型:将瀑布模型、原型模型和增量模型结合起来,加入了风险分析,弥补了不足之处。
- 喷泉模型:各个开发阶段没有特定的次序要求(无间隙性),并且可以交互进行,可以在某个开发阶段中随时补充其他任何开发阶段中的遗漏。
- 基于构件的开发模型,统一过程模型,敏捷开发。
6. 结构化分析与设计
- 结构化分析的主要思想是抽象与分解。
分析模型 | 面向过程 | 面向对象 |
---|---|---|
数据模型 | 数据字典DD、ER图 | 类图 |
功能模型 | 数据流图DFD,系统结构图 | 用例图 |
行为模型 | 状态变迁图STD | 时序图 |
- 数据字典:对系统的数据项D、数据结构A、数据流F、加工逻辑P、数据存储S以及外部实体E进行定义和描述,是关于系统数据的信息的集合。
- 结构化设计的主要内容:
- 概要设计:主要任务是将数据流图映射为软件系统结构图;
- 详细设计:对概要设计的每一个模块进行数据设计和过程设计。
- 结构化设计主要解决如何将需求分析阶段的DFD 图推导为软件系统结构,并用它提供的结构图描述之。
7. 面向对象分析与设计
- 面向对象=对象 + 类 + 消息 + 继承 + 多态 ;
- 静态模型:类图
- 动态模型:用例图、时序图(顺序图)。
6. 软件测试与维护
- 软件测试:是使用人工或自动手段来运行或测定某个系统的过程,检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。(简单的说,软件测试就是为了发现软件缺陷)
- 软件测试技术分类:
- 从是否关心软件内部结构和具体实现的角度:
* 黑盒测试:完全不考虑程序的内部结构和处理过程,只知道软件产品应该具有的功能,通过测试检验每个功能是否都能正常使用。又称为功能性测试或行为测试。
* 白盒测试:有时称为透明盒测试,已知产品内部工作过程,通过测试检验产品内部动作是否按照产品规格说明的规定正常进行。- 从是否执行程序的角度:
* 静态测试:是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。
* 动态测试:是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能。(通常意义上的测试就是指动态测试。)- 这两种不同的角度出发和组合:
* 静态黑盒测试:软件测试员可以利用书面文档进行黑盒测试,认真查找其中的缺陷。(测试产品说明书属于静态黑盒测=试);
* 动态黑盒测试:测试员输入数据、接受输出、检验结果。需要关于软件行为的一些定义,即需求文档或者产品说明书。定义测试用例(进行测试时使用的特定输入,以及测试软件的过程步骤) 主要包括数据测试和状态测试两部分。
* 静态白盒测试:在不执行软件的条件下有条理地仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程;
* 动态白盒测试:利用查看代码功能和实现方式得到的信息,来确定哪些需要测试、哪些不需要测试、如何展开测试,也称为结构化测试 。
- 软件维护定义:在软件产品交付使用后对其进行修改,以纠正故障、改进其性能和其他属性,或使产品适应改变了的环境的具体过程。
- 软件维护目的:就是保证软件系统能持续地与用户环境、数据处理操作相协调,最终使系统稳定运行。
- 软件维护分类:
- 纠错性维护(21%): 为了改正软件系统中的错误,使软件能够满足预期的正常运行状态的要求而进行的维护;
- 适应性维护(25%): 为了使软件适应内部或外部环境变化,而去修改软件的过程;
- 完善性维护(50%): 满足使用过程中用户提出增加新功能或修改已有功能的维护;
- 预防性维护(4%): 为了提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础而修改软件的活动。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!