【愚公系列】软考中级-软件设计师 033-软件工程基础(考点简介)

本文主要是介绍【愚公系列】软考中级-软件设计师 033-软件工程基础(考点简介),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。
🏆《近期荣誉》:2023年华为云十佳博主,2022年CSDN博客之星TOP2,2022年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏

文章目录

  • 🚀前言
  • 🚀一、软件工程基础
    • 🔎1.软件工程概述
    • 🔎2.软件过程模型
    • 🔎3.软件开发方法
    • 🔎4.需求分析
    • 🔎5.系统设计
    • 🔎6.系统测试
    • 🔎7.运行和维护知识
    • 🔎8.软件项目管理
    • 🔎9.软件质量
    • 🔎10.软件度量
    • 🔎11.软件工具与软件开发环境
  • 🚀二、软件工程基础(10分)(重点)
    • 🔎1.软件工程概述
    • 🔎2.软件过程模型
    • 🔎3.需求分析
    • 🔎4.系统设计
    • 🔎5.软件质量和度量
    • 🔎6.软件项目管理
    • 🔎7.运行和维护
    • 🔎8.系统测试
  • 🚀感谢:给读者的一封信


🚀前言

软件工程基础是指软件工程的基本概念、原理、方法和技术等基础知识。在软件工程学科中,这些基础知识对于设计、开发、测试和维护高质量软件非常重要。

软件工程基础包括以下几个方面:

  1. 软件需求工程:软件需求是指对软件系统所需功能和性能的详细描述。软件需求工程是指对软件需求的获取、分析、规范和管理等过程。

  2. 软件设计:软件设计是指根据软件需求,对软件系统进行结构和逻辑的设计。软件设计要求设计者有良好的抽象能力和系统思维能力。

  3. 软件开发:软件开发是指根据软件设计,编写和测试软件代码的过程。软件开发涉及到多种开发方法和技术,如面向对象编程、迭代开发、测试驱动开发等。

  4. 软件测试:软件测试是指对软件系统进行验证和验证的过程,以确保软件系统满足预期的功能和性能要求。软件测试涉及到测试计划、测试设计、测试执行和测试评估等过程。

  5. 软件维护:软件维护是指对已经发布的软件系统进行修复bug、增强功能和适应新环境的过程。软件维护涉及到版本管理、问题跟踪和软件更新等活动。

  6. 软件项目管理:软件项目管理是指对软件开发项目的组织、协调和控制等活动。软件项目管理涉及到项目计划、人员配备、进度控制和风险管理等方面。

🚀一、软件工程基础

🔎1.软件工程概述

  • 软件工程基本原理

    • 用分析段的生命周期计划严格管理

    • 坚持进行阶段评审

    • 严格实现的产品控制

    • 采用现代程序设计技术

    • 结果应清楚地审查

    • 开发小组地人员应少而精

  • 软件工程的基本要素

    • 方法

    • 工具

    • 过程

  • 软件生存周期

    • 可行性分析与项目开发计划

    • 需求分析

    • 概要设计

    • 详细设计

    • 编码

    • 测试

    • 维护

  • 软件过程

    软件开发中所遵循的路线图称为“软件过程”

    • 能力成熟度模型(CMM)

    • 能力成熟度模型集成(CMMI)

🔎2.软件过程模型

  • 瀑布模型

    • 瀑布模型

    • V模型

  • 增量模型

  • 演化模型

    • 原型模型

    • 旋转模型

  • 喷泉模型

  • 基于构建的开发模型

  • 形式化方法模型

  • 统一过程(UP)模型

  • 敏捷方法

    敏捷过程的典型方法有很多,每一种方法基于一种原则,这些原则实现敏捷方法所宣称的理念(敏捷宣言).

    • 极限编程(XP)

    • 水晶法

    • 并列争求法

    • 自适应软件开发

    • 敏捷统一过程

🔎3.软件开发方法

  • 结构化方法

  • jackson方法

  • 原型方法

  • 面型对象方法

  • 敏捷开发

🔎4.需求分析

  • 软件需求

    • 功能需求

    • 性能需求

    • 用户或个人因素

    • 黄金需求

    • 界面需求

    • 文档需求

    • 数据需求

    • 资源使用需求

    • 安全保密要求

    • 可靠性要求

    • 软件成本消耗与软件进度需求

    • 其他非功能性要求

  • 需求分析原则

  • 需求工程

    • 需求获取

    • 需求分析与协商

    • 系统建模

    • 需求规约

    • 需求验证

    • 需求管理

🔎5.系统设计

  • 系统设计方法

    • 面向数据流的结构化设计方法

    • 面向对象的分析方法

  • 概要设计

  • 详细设计

🔎6.系统测试

  • 系统测试与调试

  • 传统软件的测试策略

    • 单元测试

    • 集成测试

    • 确认测试

    • 系统测试

  • 测试面向对象软件

    • 单元测试

    • 集成测试

  • 测试Web应用

  • 测试方法

    • 黑盒测试

    • 白盒测试

  • 调试

    • 调试过程

    • 调试方法

      • 试探法

      • 回溯法

      • 对分查找法

      • 归纳法

      • 演绎法

🔎7.运行和维护知识

  • 系统转换

  • 系统维护概述

  • 系统评价

🔎8.软件项目管理

  • 软件项目管理涉及的范围

    • 人员

    • 产品

    • 过程

    • 项目

  • 软件项目估算

    • 成本估计方法

      • 自顶向下估算方法

      • 自底向上估算方法

      • 差值估算方法

    • COCOMO估算模型

    • COCOMOII模型

    • Putnam估算模型

  • 进度管理

    • Gantt图

    • PERT图

  • 软件项目的组织

    • 组织结构模式

    • 程序设计小组的组织方式

  • 软件配置管理

    • 基线

    • 软件配置项

    • 版本控制

    • 变更控制

  • 风险管理

    • 商业风险

    • 风险识别

    • 风险预测

    • 风险评估

    • 风险控制

🔎9.软件质量

  • 软件质量特性

  • 软件质量保证

  • 软件评审

  • 软件容错技术

🔎10.软件度量

  • 软件度量分类

  • 软件复杂性度量

    • McCabe度量法

🔎11.软件工具与软件开发环境

  • 软件工具

  • 软件开发环境

在这里插入图片描述

🚀二、软件工程基础(10分)(重点)

🔎1.软件工程概述

软件工程是一门研究如何以系统化的、规范化的、可度量的方法和过程来开发和维护软件的学科。它涵盖了软件开发的各个阶段,包括需求分析、设计、编码、测试和部署。

软件工程的主要目标是提高软件开发的效率和质量,降低开发成本,并确保软件项目能够按时交付。

软件工程的核心原则是以用户需求为导向,通过系统化的方法和过程来开发和维护软件。这包括调查用户需求、制定详细的需求规格、设计软件架构、编写可复用的代码、进行测试和维护等。

软件工程还涉及到团队协作、项目管理和质量保证等方面。团队成员需要合作完成各阶段的工作,并且需要有效地进行沟通和协调。同时,项目管理和质量保证可以帮助确保软件项目按时交付,并且达到预期的质量标准。

软件工程还涉及到持续学习和不断改进的理念。由于技术和需求的不断变化,软件工程需要不断地学习新的技术和方法,并进行持续的改进,以适应不断变化的环境。

🔎2.软件过程模型

软件过程模型是指软件开发过程中所采用的一种组织架构和管理方法。它描述了软件开发过程中不同阶段之间的关系和活动的顺序,帮助开发团队进行有效的计划、设计、开发和测试工作。

常见的软件过程模型包括瀑布模型、迭代模型、增量模型、螺旋模型和敏捷模型等。

模型特点
瀑布模型- 最早、最常用的软件过程模型
- 将软件开发分为需求分析、设计、编码、测试和维护等阶段
- 每个阶段的结果是前一个阶段的输入
迭代模型- 在瀑布模型基础上的改进
- 将软件开发分为多个迭代
- 每个迭代包含瀑布模型的所有阶段
- 可反复进行
增量模型- 在瀑布模型基础上的改进
- 将软件开发分为多个增量
- 每个增量包含瀑布模型的所有阶段
- 可反复进行
螺旋模型- 强调风险管理和快速原型开发
- 将软件开发过程分为多个循环
- 每个循环包括风险分析、原型开发、评估和计划等活动
敏捷模型- 注重灵活性和合作的软件开发方法
- 强调迭代、增量和持续交付
- 适用于需求变化频繁的项目

选择适合的软件过程模型取决于项目的特点、需求的稳定性、开发团队的规模和经验等因素。开发团队可以根据具体情况选择和定制适合自己的软件过程模型。

🔎3.需求分析

需求分析是它是指对软件系统的需求进行识别、分析和明确的过程。需求分析的目的是确保开发团队理解用户的需求,为软件系统设计和开发提供指导。

阶段描述
需求收集- 通过与用户、相关利益相关者的沟通和访谈收集需求信息
- 使用面谈、问卷调查、观察等方法
需求分析- 对收集到的需求信息进行分析和整理
- 包括识别需求的主要功能和非功能需求,以及可能的约束和限制
需求建模- 将需求信息进行建模
- 使用用例图、活动图、时序图等来描述系统的功能和行为
需求验证- 将建立的需求模型与利益相关者进行确认和验证
- 确保需求的准确性和完整性
需求管理- 对需求进行管理和跟踪
- 包括版本控制、变更管理等
- 确保需求的一致性和追踪性

需求分析的结果是形成需求规格说明书(SRS),其中包含了对软件系统需求的详细描述和说明。需求规格说明书是软件开发的基础,为软件设计和编码提供了准确的指导。

需求分析在软件工程中的重要性不言而喻,它为软件系统的开发提供了明确的目标和方向,帮助开发团队避免不必要的工作和资源浪费,提高软件开发的效率和质量。

🔎4.系统设计

系统设计是软件工程中的一个重要阶段,它涉及确定系统的整体结构、组件的功能和交互方式,以及系统的性能、规模和安全性等方面的考虑。

在系统设计阶段,软件工程师需要根据需求分析阶段的结果,进一步细化系统的功能和特性,并确定如何将系统划分为若干个组件或模块。系统设计的目标是设计一个可靠、高效、易维护和可扩展的系统。

阶段描述
架构设计- 确定系统的整体结构
- 包括组件之间的关系和通信方式
- 常用的架构模式包括客户端-服务器模式、分层模式和微服务模式等
模块设计- 将系统划分为若干个模块
- 确定每个模块的功能和接口
- 考虑模块的内部结构和数据流程,以及模块之间的依赖关系和接口规范
数据库设计- 确定系统所需的数据存储和访问方式
- 包括数据库结构的设计和数据的组织方式
- 设计数据库的查询和更新操作
用户界面设计- 设计系统的用户界面
- 包括界面布局、交互方式和界面元素的设计等
- 考虑用户的需求和习惯,以及系统的易用性和可访问性
性能设计- 考虑系统的性能需求
- 包括响应时间、吞吐量和并发性等方面的考虑
- 考虑系统的硬件、网络和软件资源的利用方式,以及优化性能的方法和策略
安全设计- 考虑系统的安全需求
- 包括身份验证、访问控制和数据保护等方面的考虑
- 考虑系统的漏洞和攻击方式,以及采取的安全措施和防护策略

🔎5.软件质量和度量

软件质量是指软件产品的特性和功能是否满足用户的需求和期望。软件质量的好坏对用户的满意度和软件的可靠性有直接影响。

度量指的是对软件质量的衡量和评估。通过对软件的度量,可以从各个方面评估软件的质量,包括功能性、可靠性、性能、可维护性、可用性等。

软件质量和度量是密切相关的概念。通过度量,可以了解软件的质量特征和缺陷,并找到改进软件质量的方法。常用的软件度量方法包括代码度量、测试覆盖率度量、缺陷率度量等。

软件度量可以在软件开发的不同阶段进行,包括需求分析阶段、设计阶段、编码阶段和测试阶段。通过持续的度量和评估,可以及时发现和解决软件质量问题,提高软件的质量。

🔎6.软件项目管理

软件项目管理是指对软件开发项目进行规划、组织、执行和监控的过程。它涉及到项目的计划、进度、质量、成本、风险等方面的管理,旨在保证项目能按时、按质、按预算完成,并能满足用户的需求和期望。

阶段描述
项目规划- 确定项目的目标、范围、里程碑等
- 制定项目计划
需求管理- 收集和分析用户需求
- 编写需求文档
- 确保开发团队理解和满足需求
进度管理- 制定项目进度计划
- 跟踪项目进展
- 及时调整计划,保证项目能按时完成
质量管理- 制定质量标准
- 进行质量控制和质量保证
- 确保交付的软件质量符合要求
风险管理- 识别、评估和管理项目风险
- 制定应对措施,降低项目风险
资源管理- 合理分配项目资源,包括人力、物力、时间等
- 确保项目进展顺利
沟通管理- 建立有效的沟通渠道
- 及时与项目团队、利益相关方沟通
- 解决问题和冲突
变更管理- 管理项目范围的变更
- 确保变更能被及时识别、评估和控制
团队管理- 组建和管理项目团队
- 激励团队成员
- 促进团队合作
- 提高团队效能
后期维护- 在项目交付后,对软件进行维护和支持
- 确保软件的正常运行和更新

🔎7.运行和维护

软件运行和维护是指在软件开发完成后,对软件进行部署、运行和维护的过程。

序号阶段描述
1软件部署将软件安装到用户的计算机或服务器上,并进行必要的配置和设置。
2软件运行启动软件,确保软件能够正常运行,并能够处理用户的请求和输入。
3故障排除监控软件运行过程中的错误和异常,及时发现和解决问题,确保软件的稳定性和可用性。
4性能优化对软件的性能进行监测和分析,找出性能瓶颈,并进行优化改进,提高软件的运行效率和响应速度。
5安全管理采取必要的安全措施,保护软件和用户的数据免受恶意攻击和非法访问。
6版本管理对软件进行版本控制,及时发布新版本,并确保用户能够方便地进行升级和更新。
7用户支持为用户提供技术支持和培训,解答用户的问题,帮助用户充分利用和理解软件的功能。
8后期维护针对用户的反馈和需求,对软件进行修复、改进和更新,确保软件能够持续符合用户的需求。
9变更管理对软件的功能变更、需求变更进行管理,确保变更的正确性和可控性。

🔎8.系统测试

系统测试是对软件系统进行全面的验证和评估的过程。它主要用于检测和识别系统中的错误、缺陷和性能问题,以确保系统能够按照预期的方式运行。

测试类型描述
功能测试验证系统的功能是否符合需求规格说明书中的规定,包括输入输出功能、界面功能、业务逻辑功能等。
性能测试通过模拟实际使用情况,测试系统的性能指标,例如响应时间、吞吐量、并发能力等。
安全测试测试系统的安全性,包括对潜在安全漏洞的检测和评估,防止未授权访问、数据泄露和恶意攻击等。
兼容性测试测试系统在不同平台、不同操作系统、不同浏览器等环境下的兼容性,确保系统能够在各种环境中正常运行。
可用性测试测试系统的易用性和用户体验,包括界面友好性、操作简便性、响应速度等方面。
可靠性测试测试系统的稳定性和可靠性,评估系统在长时间运行和高负荷情况下的表现。
回归测试在软件系统更新或修改后,重新执行之前已通过的测试用例,确保新的更改不会对系统的现有功能产生影响。

🚀感谢:给读者的一封信

亲爱的读者,

我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。

如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。

我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。

如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。

在这里插入图片描述

再次感谢您的阅读和支持!

最诚挚的问候, “愚公搬代码”

这篇关于【愚公系列】软考中级-软件设计师 033-软件工程基础(考点简介)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/707756

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close