1软件工程概念及其基本要素-思考题
1:什么是软件?
软件是指计算机系统中的程序及其文档
程序是计算任务的处理对象和处理规则的描述
文档是便于了解程序所需要的阐明
第一步是计划,制定项目计划,不是需求分析
2什么是软件工程
是一类求解软件的工程,即应用计算机科学理论和技术,以及工程管理原则和方法,按预算和进度实现满足用户要求 的软件产品/系统的工程。
3软件工程框架-目标、原则、活动
目标-规定结果的性质
规定了结果应该具有的性质
可用性,
正确性,
合算性(开销适宜)
考题-可用性
考题-正确性-选B
软件的正确性是指( )。 A.软件能正常运行 B.软件达到预期功能的程度 C.软件符合用户的要求 D.软件运行中不出现任何错误
软件的正确性通常涉及软件是否能按照其设计规格和要求执行其功能。我们可以逐项分析选项内容来找出正确答案:
A.软件能正常运行:这个选项只涵盖了软件运行的一个基本方面,即软件能够启动和执行。但它没有涉及到软件是否按预期完成其功能。
B.软件达到预期功能的程度:这个选项直接关联到软件的正确性。它表示软件在多大程度上实现了其预定的功能或满足了设计规格。这是评价软件正确性时需要考虑的关键因素。
C.软件符合用户的要求:虽然这是一个重要的评价标准,但它更多地关联到软件的满意度或用户体验,而不完全是软件的正确性。用户的要求可能与设计规格不完全一致,或者用户可能并不完全了解他们真正需要的功能。
D.软件运行中不出现任何错误:这个选项太过绝对。在实际的软件开发中,很难保证软件完全不出现任何错误。更重要的是,软件是否能正确处理这些错误,并从错误中恢复,也是评价软件质量的重要因素。
综上所述,软件的正确性主要是指软件达到预期功能的程度。因此,正确答案是:
B.软件达到预期功能的程度。
验收测试是验证软件的有效性。
原则-指导每一项活动
选取良好的开发范型,
采用好的设计方法
提供高质量的支持
实施有效的管理
四项基本原则实际给出了软件工程学主要内容
软件开发范型 |
软件开发方法 |
软件工程支持技术 |
软件工程管理理论和技术 |
软件质量特征、保证和管理 |
计算机辅助软件工程CASE |
活动-基本工作
需求
设计
实现
确认
支持
4和5:如何理解ISO 12207 软件过程?含义和所包含的活动
定义:软件生存周期所涉及的一系列相关活动
分为
基本含义 | 所包含的活动 | |
基本过程 | 软件生产直接相关的活动集 | 获取过程 供应过程 开发过程 运行过程 维护过程 |
支持过程 | 有关各方按他们的支持目标所从事的一系列相关活动集,以便提高系统或软件产品的质量。 | 文档过程 配置管理过程 质量保证过程 验证过程 确认过程 联合评审过程 审核过程 问题解决过程 |
组织过程 | 与软件生产组织有关的活动集 | 管理过程 基础设施过程 改进过程 人力资源过程 资产管理过程 复用程序管理过程 领域软件工程过程 |
6如何理解”软件生存周期“和”软件生存周期模型“概念?
软件生存周期 | 一个软件从定义、开发、运行维护直到最终被废弃所经历的生存过程,称为软件生存周期。 周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段 |
软件生存周期过程 | 又叫软件过程,软件生存周期中的一系列相关过程。 当开发产品或构建系统时,遵循一系列可预测的步骤(路线图)是非常重要的,它有助于及时交付高质量的产品。软件开发中所遵循的路线图就是软件生存周期过程。 为了表述软件开发需要做"什么活",引入三个概念:过程是活动的集合,活动是任务的集合,任务是把输入转换成输出的操作。 |
软件生存周期模型 | 是一个包含软件产品定义,开发、运行和维护中有关过程、活动和任务的框架,覆盖了从该系统的需求定义到系统的终止使用 |
软件项目生存周期过程 | 在一个项目的生存周期中,每一个任务都通过一个或者多个过程的方式来完成,所有这些相关过程的组合,称为软件项目生存周期过程。 三个阶段: 1:软件生存周期模型的选择 2:精化所选择的软件生存周期模型,裁剪过程 3:软件项目生存周期过程的实现,组织的过程资产应用到精化的项目软件生存周期中 |
7常用的软件生存周期模型,优缺点及适用情况
模型名称 | 优点 | 缺点 | 适用情况 |
瀑布模型 | 1:每一个阶段评审 2:前一步作为后一步的基线 | 1:要求客户需求清晰明确 2:无法适用需求变化 | 需求明确、开发周期不紧张 |
增量模型 | 1:第一个版本所需时间和成本少,可以减小开发的风险 2减小用户需求的变更 3:允许增量投资 | 1:如果没有对用户变更进行规划,那么初始增量可能造成后来增量的不稳定 2:一些增量可能需要重新开发 3:进度和配置复杂,增加管理成本 | 产品可分批次交付,系统可被模块化 软开人员难一次性开发系统 项目管理人员把握全局水平高,需求较明确,架构较稳定 |
演化模型 | 有一些小的开发步组成,减小软件开发活动的盲目性 | 如果需求模糊,测试困难,设计困难,影响性能; 如果缺乏过程管理,模型退化; | 事先不能完整定义需求的软件开发 |
螺旋模型 | 设计灵活 客户参与每个阶段的开发 客户和管理层有效交互 客户认可开发方式 风险分析 | 难让用户确信结构可控 开发和技术水平有差距,不满足用户需求 | 大型,复杂,需求不明确的项目 |
喷泉模型 | 可同步开发,提高开发效率,节省时间 | 需要大量开发人员,不利于管理 严格管理文档,加大审核难度 | 面向对象技术的软件开发 |