热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

(软件工程复习核心重点)第一章软件工程概论习题

这一章题目主要以简答和名词解释为主文章目录一:选择题二:填空题三:名词解释(1)必考(2

  • 这一章题目主要以简答名词解释为主



文章目录

  • 一:选择题
  • 二:填空题
  • 三:名词解释
    • (1)必考
    • (2)了解
  • 四:简答题
    • (1)必考
        • 1.关于软件危机
        • 2.关于软件工程
        • 3. 关于软件生命周期
        • 4.关于软件过程
        • 5.典型软件生命周期模型优缺点及适用范围
    • (2)了解
  • 五:应用题/画图题


一:选择题


二:填空题



软件发展的三个阶段


  • 程序设计阶段(50~60年代)
  • 程序系统阶段(60~70年代)
  • 软件工程阶段(70年代以后)


软件包括的三个部分


  • 数据:是使程序能够适当处理信息的数据结构
  • 程序:是能够完成预定功能和性能的可执行指令序列
  • 文档:是开发、使用和维护过程中程序所需要的图文资料


软件过程方法学的三个部分


  • 方法:完成软件开发各项任务的技术方法,回答“怎么做”的问题
  • 工具:为运用方法提供的自动或半自动软件工程支撑环境
  • 过程:是为了获得高质量软件所需要完成的一系列任务框架,回答“何时做”的问题


瀑布模型阶段间具有顺序性依懒性,遵从推迟实现质量保证的观点


三:名词解释


(1)必考


  • 软件危机:在计算机软件开发和维护过程中所遇到的一系列严重问题。主要包含两个方面:如何开发软件,以满足日益增长的软件需求;如何维护数量不断膨胀的已有软件
  • -软件工程:采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,经济的开发出高质量的软件并维护它
  • 软件过程:是为了获得高质量软件所需要完成的一系列任务框架,它规定了完成任务的工作步骤。通常用软件生命周期模型来描述软件过程

(2)了解


  • 软件:是计算机系统中与硬件相互依存的另一部分,包括程序、数据及其相关文档的完整集合
  • 软件工程方法学:把在软件生命周期全过程中使用的一整套技术方法的集合称之为方法学,也称为范型

四:简答题


(1)必考


1.关于软件危机


★★★在这里插入图片描述


【答案】

软件危机的定义:软件危机是在计算机开发和维护过程中所遇到的一系列的严重问题,主要包含两个方面


  • 如何开发软件,以满足日益增长的软件需求
  • 如何维护软件数量不断膨胀的已有软件

软件危机的表现:


  • 对软件开发成本和进度的估算不准确
  • 用户对软件不满意
  • 软件质量不可靠
  • 软件不可维护
  • 没有合适的文档资料
  • 软件成本在计算机系统中的成本逐年上升
  • 软件开发生产率低

软件危机的原因

①:主观方面


  • 忽视需求分析
  • 轻视软件维护
  • 没有认识到程序只是软件的一部分
  • 没有认识到开发只是软件漫长生命周期中一个比较次要的阶段
  • 越到后期引入变动代价会越高

②:客观方面


  • 软件是逻辑实体,具有不可见性,管理控制很困难
  • 软件不会磨碎,维护意味着需要原来的设计,维护困难
  • 软件规模庞大,程序的复杂性会随着软件规模增加而增加

如何解决


  • 对计算机软件应该有正确的认识
  • 要吸取和借鉴人类长期从事各种工程项目积累的原理、概念、技术和方法
  • 积极开发和使用计算机辅助开发软件
  • 探索更好更有效的管理措施和手段对开发过程进行控制和管理

2.关于软件工程


在这里插入图片描述


【答案】

软件工程定义:采用工程的概念、技术、原理和方法,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,经济的开发出高质量的软件并维护它

软件工程的特征
在这里插入图片描述

软件工程的原理

在这里插入图片描述


3. 关于软件生命周期


软件生命周期阶段如何划分?


在这里插入图片描述


4.关于软件过程


在这里插入图片描述


【答案】

软件过程的定义:是为了获得高质量软件所需要完成的一系列任务框架,它规定了完成任务的工作步骤,通常用软件生命周期模型来描述软件过程

软件工程方法学:把在软件生命周期全过程中所使用的一整套技术方法的集合称之为软件工程方法学。包含三个要素


  • 方法:完成软件开发各项任务的技术方法
  • 工具:为了运用方法提高的自动或半自动软件工程支撑环境
  • 过程:是为了获得高质量软件所需要完成的一系列任务框架

因此软件过程是软件工程方法学的重要组成部分


5.典型软件生命周期模型优缺点及适用范围


在这里插入图片描述


①瀑布模型

优点:


  • 强迫开发人员使用规范的方法
  • 严格规定了每个阶段提交的文档
  • 要求每个阶段交出的产品都必须经过质量保证小组的验证
  • 对文档的约束,使得软件维护变得容易一些,且能降低软件预算

缺点


  • 在软件开发初期就要求做出正确的,全面的,完整的需求分析对多数应用软件来说是很困难的
  • 在需求分析阶段,在需求确定后,无法及时验证需求是否正确,完整
  • 作为整体开发的瀑布模型,由于不支持产品演化,缺乏灵活性,对开发过程中很难发现的错误,只有在产品最终运行时才能发现

适用范围


  • 用户的需求非常清晰全面,且在开发过程中没有或很少有变化
  • 开发人员对软件的应用领域很熟悉
  • 用户的使用环境非常稳定
  • 开发工作对用户的参与要求很低

②快速原型模型

优点:


  • 开发的软件通常满足用户需求
  • 软件开发基本是线性过程

缺点


  • 准确原型设计困难
  • 原型理解可能不同
  • 不利于开发人员创新

适用范围


  • 对所开发的领域比较熟悉且与快速的原型开发工具
  • 项目招投标时,可以以原型模型作为软件的开发模型
  • 进行产品移植或升级时,或对已有产品原型进行客户化工作时

③:增量模型

优点


  • 短时间内可提交部分功能
  • 逐渐增加产品功能,用户适应产品快

缺点


  • 增量构件划分及集成困难
  • 容易退化成边做边改模型

④:喷泉模型

优点


  • 利于把软件质量作为软件的开发目标
  • 减少测试
  • 维护和开发不分开

缺点


  • 风险估计困难

(2)了解




什么是软件?软件的特点是什么?


在这里插入图片描述




在这里插入图片描述
在这里插入图片描述


【答案】

在软件开发的不同阶段进行修改所付出的代价是不相同的。在早期引入变动,由于设计的面较少,因而代价也比较低;在开发的中后期,软件配置相关工作已经完成,引入一个变动时常常会引起所有与之有关的成分发生变化,所以代价较高。一个人编码错误是不可避免的,但是修改的成本是很小的,因为这不是整体架构的错误,只要不断进行阶段评审,不要让错误留到后期,在早期就尽可能解决




在这里插入图片描述


【答案】

结构化范型


  • 采用结构化技术完成软件开发的各项任务
  • 把软件生命周期划分不同阶段
  • 每个阶段开始和结束都有严格标准
  • 每个阶段结束后要有严格审查

面向对象范型


  • 把对象作为融合了数据及在数据上的操作行为的统一软件构件
  • 把所有对象划分为类
  • 按照父类与子类的关系,把若干类组成层次结构的系统
  • 对象彼此间仅通过消息互相联系



在这里插入图片描述


【答案】

因为使用面向对象方法学开发软件时,各个阶段都使用统一的概念和表示符号, 因此,整个开发过程都是吻合一致的,或者说是无缝连接的,这自然就很容易实现各个开发步骤的反复多次迭代,达到认识的逐步深化,而喷泉模型则很好的体现了面向对象软件开发过程迭代和无缝的特性






在这里插入图片描述


【答案】

优点:提高了团队生产力,在迭代的开发过程、需求管理、基于组建的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面、针对所有关键的开发活动为每个开发成员提供了必要的准则、模版和工具指导,并确保全体成员共享相同的知识基础。它建立了简洁和清晰的过程结构,为开发过程提供较大的通用性

缺点:缺点: RUP只是一个开发过程,并没有涵盖软件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容,此外,他没有支持多项目的开发结构,这在一定程度上降低了在开发组织内大范围实现重用的可能性




在这里插入图片描述


【答案】大型的需求不断变化的复杂软件系统项目




在这里插入图片描述


【答案】适用于商业竞争环境下对小型项目提出的有限资源和有限开发时间的约束




在这里插入图片描述


【答案】适用于商业环境下具有有限资源和有限开发时间约束的项目的软件过程模式


五:应用题/画图题


推荐阅读
  • 本文详细介绍了如何在Ubuntu系统中下载适用于Intel处理器的64位版本,涵盖了不同Linux发行版对64位架构的不同命名方式,并提供了具体的下载链接和步骤。 ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • JavaScript实现表格数据的实时筛选功能
    本文介绍如何使用JavaScript实现对表格数据的实时筛选,帮助开发者提高用户体验。通过简单的代码示例,展示如何根据用户输入的关键字动态过滤表格内容。 ... [详细]
  • 深入探讨智能布线管理系统的电子配线架应用
    本文详细介绍了电子配线架智能布线系统的核心优势,包括实时监测网络连接、提高操作准确性、图形化显示连接架构、自动识别网络拓扑、增强安全性等功能。该系统不仅提升了网络管理的效率和准确性,还为资产管理、报告生成以及与其他智能系统的集成提供了强大的支持。 ... [详细]
  • 探讨架构师在项目中应如何平衡对产品的关注和对团队成员的关注,以实现最佳的开发成果。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • HBase运维工具全解析
    本文深入探讨了HBase常用的运维工具,详细介绍了每种工具的功能、使用场景及操作示例。对于HBase的开发人员和运维工程师来说,这些工具是日常管理和故障排查的重要手段。 ... [详细]
  • 本文详细解释了如何使用@IfProfileValue注解来检测Spring框架中的配置文件是否处于活动状态,并探讨其与@Profile和@activeProfiles的区别。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 创建项目:Visual Studio Online 入门指南
    本文介绍如何使用微软的 Visual Studio Online(VSO)创建和管理开发项目。作为一款基于云计算的开发平台,VSO 提供了丰富的工具和服务,简化了项目的配置和部署流程。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
author-avatar
嘉娜杰_877
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有