前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【愚公系列】软考中级-软件设计师 033-软件工程基础(考点简介)

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

原创
作者头像
愚公搬代码
发布2024-02-14 09:40:30
2550
发布2024-02-14 09:40:30
举报

🏆 作者简介,愚公搬代码 🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。 🏆《近期荣誉》:2023年华为云十佳博主,2022年CSDN博客之星TOP2,2022年华为云十佳博主等。

🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。

🏆🎉欢迎 👍点赞✍评论⭐收藏

🚀前言

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

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

  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.系统测试

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

测试类型

描述

功能测试

验证系统的功能是否符合需求规格说明书中的规定,包括输入输出功能、界面功能、业务逻辑功能等。

性能测试

通过模拟实际使用情况,测试系统的性能指标,例如响应时间、吞吐量、并发能力等。

安全测试

测试系统的安全性,包括对潜在安全漏洞的检测和评估,防止未授权访问、数据泄露和恶意攻击等。

兼容性测试

测试系统在不同平台、不同操作系统、不同浏览器等环境下的兼容性,确保系统能够在各种环境中正常运行。

可用性测试

测试系统的易用性和用户体验,包括界面友好性、操作简便性、响应速度等方面。

可靠性测试

测试系统的稳定性和可靠性,评估系统在长时间运行和高负荷情况下的表现。

回归测试

在软件系统更新或修改后,重新执行之前已通过的测试用例,确保新的更改不会对系统的现有功能产生影响。


我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🚀前言
  • 🚀一、软件工程基础
    • 🔎1.软件工程概述
      • 🔎2.软件过程模型
        • 🔎3.软件开发方法
          • 🔎4.需求分析
            • 🔎5.系统设计
              • 🔎6.系统测试
                • 🔎7.运行和维护知识
                  • 🔎8.软件项目管理
                    • 🔎9.软件质量
                      • 🔎10.软件度量
                        • 🔎11.软件工具与软件开发环境
                        • 🚀二、软件工程基础(10分)(重点)
                          • 🔎1.软件工程概述
                            • 🔎2.软件过程模型
                              • 🔎3.需求分析
                                • 🔎4.系统设计
                                  • 🔎5.软件质量和度量
                                    • 🔎6.软件项目管理
                                      • 🔎7.运行和维护
                                        • 🔎8.系统测试
                                        相关产品与服务
                                        项目管理
                                        CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
                                        领券
                                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档