13005 软件工程 第一章 软件工程概述

52 阅读11分钟

hello 大家好,由于作者25年10月份考期去参加习思想考试了,所以没有更新现在已经通过了《习思想》开始13005 软件工程的资料更新,献给每一位拥有梦想的"带专人",

每一章节中的练习部分中的标有 2504 的题是25年4月考期的真题希望可以帮到大家~

如果有需要《习思想》相关备考资料的可以私信我哦 我可是考了70多分的~

ps:有不正确的地方麻烦更新在评论区,我会一一修复 😅

第一章 软件工程概述

软件及软件的特点

软件是计算机系统中与硬件相互依存的一部分,包括程序、数据、文档

软件的特点,与硬件相比

  1. 软件与硬件生产方式不同
  2. 软件的磨损与硬件不同
  3. 软件的开发比硬件生产具有更多个性化细节,需要程序员定制
  4. 软件比硬件更具抽象性
  5. 软件的开发成本比硬件制造成本更难控制
  6. 软件的功能涉及组织机构、体制管理方式、管理策略、管理细则等社会因素

软件危机及软件工程

引起软件危机的原因

  1. 软件开发缺乏计划性
  2. 软件需求不够充分
  3. 缺乏软件开发过程的规范
  4. 软件开发的成本和进度难以控制
  5. 没有测评软件质量的标准与方法
  6. 软件难以维护

为解决软件危机问题,由计算机科学家提出

软件工程是从从管理和技术两方面,研究如何更好地开发和维护计算机软件,按工程化的原则和方法组织软件开发

危机六因:计划缺、需求少、无规范、控本难、无标准、维护差;

工程核心:管技结合,开发维护,原则方法来保驾

软件过程

软件过程是为了获得软件产品,在软件工具的支持下由软件工程师遵循一定的步骤完成的一系列软件工程活动

软件过程需要包含以下4种基本活动

  1. 软件需求分析:决定软件开发成败的关键阶段 输出软件需求分析文档

    1. 可行性研究
    2. 分析用户需求
    3. 描述需求
    4. 需求有效性验证
  2. 软件的设计和实现

    工作步骤和管理角度,可将软件设计分为概要设计和详细设计两个阶段

    从软件设计的技术内容角度,可将软件设计的任务分为数据设计、体系结构设计、实现过程设计

    软件的实现是程序员根据软件设计文档编写程序实现系统功能的过程

  3. 软件测试

  4. 软件演进

    可能会因为政策、规则、工作内容、程序运行环境、用户使用程序的习惯等因素对程序产生新的需求导致程序需要变更。不断根据用户的需求对程序进行修改、完善的这种循环往复的过程

瀑布模型

image.png

瀑布模型是软件工程最早的范例

瀑布模型将软件过程划分:

  1. 需求定义:弄清用户需求,输出《用户规格说明书》
  2. 系统和软件设计:建立总体结构,画出软件体系结构图
  3. 实现与单元测试
  4. 集成与系统测试:所有模块一起测试,输出测试报告、测试用例、测试结果
  5. 运行与维护:软件投入使用,根据用户要求进行维护

软件开发过程中严格按照瀑布模型按部就班地进行软件开发

缺点

  1. 实际的项目很少遵守瀑布模型提出的顺序
  2. 客户通常难以清楚地描述所有的需求
  3. 可不必须有耐心,在项目尾声的时,才能得到可执行程序
  4. 在评审可运行程序前,可能不会检测到重大错误

瀑布模型的主要缺点是在对软件产品的某个版本试用之前,要求用户完全、精确地表明软件需求

原型模型

image.png

主要思想:先建立一个反映用户需求、可运行的原型,让用户体验系统的概貌。引导用户提出更为具体、确定的需求。与用户反复沟通改进原型,最终实现符合用户需求的系统

缺点

  1. 相关利益者仅关注软件工作版本,可能忽视原型体系结构的演化,开发者可能未兼顾整体质量与长期可维护性。
  2. 软件工程师为快速实现原型常采用折中方案,若不够谨慎,这些不够完善的选择可能纳入最终系统。

螺旋模型

image.png

是一种演进式软件过程模型,结合了原型模型的迭代性质和瀑布模型的可控性与系统性特点,具有快速开发越来越完善的软件版本的潜力

统一过程模型

从传统的软件过程中挖掘最好的特征和性质,以敏捷开发中好的原则来实现

活动:策划、沟通、建模、构建、部署

发展阶段

  1. 起始阶段:客户沟通与项目策划
  2. 细化阶段:沟通确认 + 通用过程模型建模
  3. 构建阶段:同通用软件过程的构建活动
  4. 转换阶段:构建收尾 + 部署前期(交付 + 反馈)
  5. 生产阶段:同通用过程的部署活动

敏捷开发

快速的软件开发和交付已经成为系统软件最关键的需求

敏捷方法适合需求萌动、快速改变的中小型软件产品,以及团队人员少、组织紧密的团队

不适合安全性、可靠性要求高的大型系统

在系统维护上,关键文档是系统需求分析文档和测试文档

Scrum模型

Scurm过程由需求、分析、设计、演化、交付等活动组成

每个框架活动中,工作任务在较短的时间盒的期限内完成,称为一个冲刺

  1. Scrum团队和产品

    由产品负责人、Scurm Master 和3 - 6人 组成的小型开发团队组成

  2. 冲刺规划会议

每个冲刺开始前,产品负责人提出开发目标,在即将开始的冲刺中完成增量。Scurm Master 和 开发团队从冲刺待定项中选择开发任务

  1. 每日 Scurm 会议:

    每个工作日的前15分钟,团队成员在会议上同步活动并制定未来24小时的计划,每个成员提出并回答

    上次团队例会后做了什么

    遇到什么困难

    下次例会前计划做什么

  2. 冲刺评审会议

    开发团队认为增量完成时,召开冲刺评审会议,四周的冲刺评审会议通常在4小时

  3. 冲刺回顾

    在开始一个冲刺会议前,Scrum Master 将与开发团队一起开一个针对4周冲刺的三小时会议,会议上讨论

    在冲刺中哪些方面进展顺利

    哪些方面需要改进

    团队在下一次冲刺中主要改进什么地方

XP模型

极限编程,使用面向对象方法作为开发范型,包括4个框架活动的规划者和实践

  1. 策划:从一个需求搜集活动开始,倾听一系列故事,这些故事称为用户故事
  2. 设计:保持简洁(KIS)原则,不鼓励额外功能设计,鼓励使用CRC卡(CRC类-职责-协作者)CRC 卡也是作为极限编程过程一部分的唯一的设计工作产品
  3. 编码:故事开发与初步设计完成,团队不直接开始编写代码,而是开发单元测试用于检测本次所有故事
  4. 测试:为了使单元测试易于执行和重复,应当使用一个可以自动实施的框架进行单元测试。每当代码修改一次就进行一次回归测试。极限编程验收测试也称为用户测试

练习

  1. 下列关于软件与硬件比较的叙述中,错误的是 A

    1. 软件产品的成本容易控制,而硬件的成本难以控制
    2. 软件开发与硬件生产同样可以采用工程化方法进行管理
    3. 软件的进度比硬件的进度控制要困难
    4. 对软件和硬件产品都需要进行质量确认
  2. 以下哪项是瀑布模型的缺点 A 202504

    1. 客户难以在早期看到可运行的程序
    2. 软件过程具有可控性和系统性
    3. 将软件过程划分为不同的阶段
    4. 需求变更容易实现
  3. 极限编程中,结对编程的主要目的是 B 202504

    1. 不需要开发人员
    2. 提高代码质量和实时解决问题
    3. 免除项目管理以及任务分配
    4. 不需要测试工作
  4. 关于引起软件危机的原因,下列选项中,错误的是 C

    1. 软件难以维护
    2. 软件的开发成本难以控制
    3. 软件的实现缺乏好的算法
    4. 没有测评软件产品质量的标准
  5. 因为程序运行环境、用户使用程序的习惯等因素可能对程序产生新的需求,导致程序需要变更,这种变更称为 C

    1. 软件开发
    2. 软件复用
    3. 软件演进
    4. 软件调试
  6. 软件开发的过程需要严格按照先进行需求分析,再进行系统设计,根据设计方案进行编码的软件过程模型是

    1. 瀑布模型
    2. 原型模型
    3. 螺旋模型
    4. 统一过程模型
  7. 一般而言,软件过程都需要包含以下4种基本活动:软件需求分析、软件设计和实现、软件测试、软件演进 202504

  8. 软件需求分析分为哪几个阶段

    1. 可行性研究
    2. 分析用户需求
    3. 描述需求
    4. 需求有效性验证
  9. 什么是软件

    软件是计算机中与硬件相互依存的一部分,包括数据、程序、文档

  10. 什么是软件过程

    为了获得软件产品,在软件工具的支持下程序员遵循一定的步骤完成软件的开发

  11. 瀑布模型将软件开发分为哪几个阶段?瀑布模型有什么缺点

    需求定义、软件和系统设计、实现与单元测试、集成与系统测试、运行与维护

    在软件开发过程中很难严格按照瀑布模型按部就班地进行软件开发

  12. 请举例三个适合敏捷开发模型的软件项目

    手机端的在线购物、医院挂号、信息查询APP

  13. 软件工程 202504

    从管理与技术方面研究如何更好开发与维护计算机软件的一门学科,思想是按照工程化原则和方法组织软件开发

  14. 简述瀑布模型每个阶段的任务 202504

    1. 需求定义:弄清用户对软件的全部需求
    2. 系统和软件设计:建立软件总体结构,画出软件体系结构图
    3. 实现与单元测试:用编程语言实现软件,并对其进行测试
    4. 集成与系统测试:将软件所有模块集中到一起进行测试
    5. 运行与维护:软件投入使用,根据用户需求进一步优化软件

捏捏捏捏捏捏捏捏捏捏捏

笔者观看的课程是 B 站博主小飞学长Pro 课程,前四章是免费的如果需要看后面的建议大家去购买正版课程 😊😊

🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉