系统分析师13:软件工程

news2024/11/6 3:09:45

文章目录

  • 1 内容概要
  • 2 信息系统的生命周期
    • 2.1 单个系统开发周期
  • 3 软件开发方法
  • 4 软件开发模型
    • 4.1 概述
    • 4.2 其他经典模型
    • 4.3 瀑布模型
    • 4.4 V模型
    • 4.5 喷泉模型
    • 4.6 W模型
    • 4.7 迭代与增量
    • 4.8 增量模型与螺旋模型
    • 4.9 构建组装模型
    • 4.10 快速应用开发模型(RAD)
    • 4.11 统一过程
    • 4.12 敏捷方法
      • 4.12.1 敏捷开发方法XP:4大价值观
      • 4.12.2 敏捷开发方法XP:12条过程实践规则
    • 4.13 敏捷开发方法
      • 4.13.1 敏捷开发方法 - SCRUM
  • 5 逆向工程
  • 6 附录:思维导图

1 内容概要

在这里插入图片描述

2 信息系统的生命周期

  • 立项阶段:企业全局、形成概念、需求分析
  • 开发阶段
  • 运维阶段:通过验收、移交之后
  • 消亡阶段:更新改造、功能扩展、报废重建

2.1 单个系统开发周期

①系统规划

  • 初步调查、分析系统目标、子系统组成、拟实施方案、可行性研究、制定系统建设方案
  • 输出文档:系统设计任务书(系统建设方案、实施计划)

②系统分析

  • 业务流程分析、数据与数据流程分析、软件需求分析、网络需求分析
  • 输出文档:系统需求规格说明书、软件需求规格说明书、确认测试计划、系统测试计划、初步的用户手册

③系统设计

  • 软件架构设计、软件概要设计、详细设计、网络设计
  • 输出文档:架构设计文档、概要设计说明书、详细设计说明书、程序规格说明书、概要测试计划、详细测试计划、各类设计图

④系统实施

  • 软件编码、软件单元/集成/系统测试、综合布线
  • 输出文档:源码、单元测试、集成测试报告、操作手册

⑤系统验收

  • 确认测试、试运行
  • 输出文档:确认测试报告,项目验收报告

3 软件开发方法

结构化法

  • 自顶向下,逐步分解求精严格区分阶段,阶段产出标准化
  • 应变能力差

面向对象方法

  • 自底向上
  • 阶段界限不明
  • 更好应变、更好复用
  • 符合人们的思维习惯

面向服务的方法

  • 粗粒度、松耦合
  • 标准化和构件化
  • 抽象级别:操作【低】->服务【中】->业务流程【高】

原型法
需求阶段,作用是展示及获取需求
针对需求不明确

  • 按功能分:水平原型(界面)、垂直原型(复杂算法)
  • 按最终结果分:抛弃式原型、演化式原型
    在这里插入图片描述

形式化方法

  • 净室软件工程【受控污染级别的环境】
  • 数学模型化
  • 所有东西均可证明/验证,而不是测试

统一过程方法【UP】
敏捷方法

例1
软件方法学是以软件开发方法为研究对象的学科。其中,()是先对最高层次中的问题进行定义、设计、编程和测试,而将其中未解决的问题作为一个子任务放到下一层次中去解决。()是根据系统功能要求,从具体的器件、逻辑部件或者相似系统开始,通过对其进行相互连接、修改和扩大,构成所要求的系统。()是建立在严格数学基础上的软件开发方法。

A:面向对象开发方法
B:形式化开发方法
C:非形式化开发方法
D:自顶向下开发方法

A:自底向上开发方法
B:形式化开发方法
C:非形式化开发方法
D:原型开发方法

A:自底向上开发方法
B:形式化开发方法
C:非形式化开发方法
D:自顶向下开发方法

解析

  • 自顶向下开发方法特点,从整体到局部,逐步细化。因此,第一个空应该填 D;
  • 自底向上开发方法的特点,即从具体的部件开始,逐步构建整体系统。因此,第二个空应该填 A;
  • 形式化开发方法的特点,即使用数学方法来描述和验证软件系统。因此,第三个空应该填 B;

答案:D、A、B。

4 软件开发模型

4.1 概述

在这里插入图片描述

4.2 其他经典模型

在这里插入图片描述

  • 原型法:构建一个简易原型,用来获取需求。针对需求不明确的项目
  • 快速型原型:又称抛弃型原型,原型最终被抛弃掉了
  • 演化模型:演化原型成为最终产品
  • 螺旋模型:原型+瀑布模型
  • 增量模型:一步一步新增模块完成任务

4.3 瀑布模型

  • 严格区分阶段
  • 只适合需求明确的项目

在这里插入图片描述

4.4 V模型

在这里插入图片描述

  • 测试贯穿于始终
  • 测试分阶段,测试计划提前

4.5 喷泉模型

在这里插入图片描述

  • 早期著名的面向对象模型

4.6 W模型

- 测试和开发并行进行
在这里插入图片描述

4.7 迭代与增量

在这里插入图片描述

  • 增量开发:逐步交付完整的子系统,每个增量都是独立的
  • 迭代开发:通过多个迭代周期逐步改进和扩展系统,每个迭代都是一个完整的开发周期

4.8 增量模型与螺旋模型

  • 原型为基础+瀑布模型
  • 考虑了风险问题
    在这里插入图片描述

4.9 构建组装模型

在这里插入图片描述

  • 需求分析和定义
  • 软件架构设计
  • 构件库的建立
    • 构建标准:CORBA、COM/DCOM、EJB
    • 构件库:构建获取、构建管理
  • 应用软件构件
  • 测试和发布

4.10 快速应用开发模型(RAD)

在这里插入图片描述

4.11 统一过程

在这里插入图片描述

  • 统一过程:UP(Unified Process)或RUP(Rational Unified Process)
  • 特点:用例驱动、以架构为中心、迭代和增量;
  • 各阶段及其特点
    • 初始
      定义最终产品视图和业务模型
      确定系统范围

    • 细化
      设计及确定系统架构
      制定工作计划及资源要求

    • 构建
      开发剩余构件和应用程序功能,把这些构件组装为产品,并进行详细测试

    • 交付
      确保软件对最终用户是可用的,进行β测试,制作产品发布版本

例2
()把整个软件开发流程分成多个阶段,每一个阶段都由目标设定、风险分析、开发和有效性验证以及评审构成。
A:原型模型
B:瀑布模型
C:螺旋模型
D:V模型

解析

  • 螺旋模型是一种风险驱动的软件开发过程模型,它将整个软件开发流程分成多个阶段,每个阶段都包括目标设定、风险分析、开发和有效性验证以及评审;
  • 原型模型:通过快速构建原型来验证需求,但不强调风险分析和评审;
  • 瀑布模型:线性顺序的开发模型,每个阶段完成后进入下一个阶段,不强调风险分析和评审;
  • V模型:强调测试和开发的对应关系,但不强调风险分析和评审。

答案:C。

例3
基于RUP的软件过程是一个迭代过程。一个开发周期包括初始、细化、构建和移交四个阶段,每次通过这四个阶段就会产生一代软件,其中建立完善的架构是()阶段的任务。采用迭代式开发,()。

A:初始
B:细化
C:构建
D:移交

A:在每一轮迭代中都要进行测试与集成
B:每一轮迭代的重点是对特定的用例进行部分实现
C:在后续迭代中强调用户的主动参与
D:通常以功能分解为基础

解析
RUP(Rational Unified Process)是一种迭代和增量的软件开发过程框架,它将软件开发过程分为四个主要阶段:初始、细化、构建和移交。

  • 初始阶段:确定项目的范围、目标和可行性,制定初步的项目计划。
  • 细化阶段:详细分析需求,建立系统的架构,识别和解决主要风险。
  • 构建阶段:实现系统的功能,进行集成和测试,逐步完善系统。
  • 移交阶段:准备系统的发布,进行用户培训和部署,确保系统顺利交付

  • 建立完善的架构是细化阶段的任务。在细化阶段,开发团队会详细分析需求,设计系统的架构,并解决主要的技术和业务风险。
  • 迭代式开发的特点是每个迭代周期都要进行测试与集成,以确保系统的质量和稳定性

答案:B、A。

4.12 敏捷方法

在这里插入图片描述

  • 无软件开发方法 => 传统软件开发方法 =>敏捷方法

  • 敏捷宣言

    • 个体和交互胜过过程和工具
    • 可工作的软件胜过大量的文档【实现与测试是核心
    • 客户合作胜过合同谈判
    • 响应变化胜过遵循计划
  • 传统软件开发方法和敏捷方法的对比

    • 传统软件开发方法

      • 预设性的
      • 以开发过程为本
      • 整体分阶段
    • 敏捷方法

      • 适应性的
      • 以人为本
      • 增量迭代,小步快跑
      • 适合小型项目

例4
下列关于敏捷方法的叙述中,正确的是( ) 。
A:敏捷方法强调软件过程与工具胜过个体和交互
B:敏捷方法的思想是预设性,而不是适应性
C:敏捷方法尤其适合于开发团队比较大的项目
D:敏捷方法强调响应变化胜过遵循计划

解析

  • 敏捷方法强调软件个体和交互胜过过程与工具
  • 敏捷方法的思想是适应性,而不是预设性
  • 敏捷方法尤其适合小型项目
  • 敏捷方法强调响应变化胜过遵循计划

答案:D。

4.12.1 敏捷开发方法XP:4大价值观

  • 沟通【加强面对面沟通】
  • 简单【不过度设计】
  • 反馈【及时反馈】
  • 勇气【接受变更的勇气】

4.12.2 敏捷开发方法XP:12条过程实践规则

  • 简单设计
  • 测试驱动
  • 代码重构
  • 结对编程
  • 持续集成
  • 现场客户
  • 发行版本小型化
  • 系统隐喻
  • 代码集体所有制
  • 规划策略
  • 规范代码
  • 40小时工作机制

4.13 敏捷开发方法

  • 极限编程(XP):一些对费用控制严格的公司中的使用,非常有效
  • 水晶方法:探索了用最少纪律约束而仍能成功的方法,从而在产出效率与易于运作上达到一种平衡。
  • 开放式源码:程序开发人员在地域上分布很广【其他方法强调集中办公】
  • SCRUM:明确定义了的可重复的方法过程
  • 功用驱动开发方法(FDD):编程开发人员分成两类︰首席程序员和“类”程序员
  • ASD方法:其核心是三个非线性的、重叠的开发阶段:猜测、合作与学习
  • 动态系统开发方法(DSDM):倡导以业务为核心。

例5
()适用于程序开发人员在地域上分布很广的开发团队。()中,编程开发人员分成首席程序员和“类”程序员。

A:水晶系列(Crystal)开发方法
B:开放式源码(Open Source)开发方法
C: scrum开发方法
D:功用驱动开发方法(FDD)

A:自适应软件开发(ASD)
B:极限编程开发方法(XP)
C:开放统一过程开发方法(Open uP)
D:功用驱动开发方法(FDD)

解析

  • 开放式源码:程序开发人员在地域上分布很广【其他方法强调集中办公】
  • 功用驱动开发方法(FDD)∶编程开发人员分成两类︰首席程序员和“类”程序员

答案:B、D。

4.13.1 敏捷开发方法 - SCRUM

在这里插入图片描述

SCRUM 是一种广泛使用的敏捷开发方法,它强调迭代和增量式的开发过程,通过短周期的迭代(称为“冲刺”或“Sprint”)来交付可工作的软件。SCRUM 的核心理念是通过自组织和跨职能团队的合作,快速响应变化,持续交付高质量的软件。

SCRUM 的核心组件

  1. 角色

    • 产品负责人(Product Owner):负责定义产品的需求和优先级,确保团队理解并专注于最有价值的功能。
    • SCRUM 主管(SCRUM Master):负责确保 SCRUM 过程的正确执行,帮助团队消除障碍,提高效率。
    • 开发团队(Development Team):负责实际的开发工作,通常由跨职能的成员组成,如开发人员、测试人员、设计师等。
  2. 工件

    • 产品待办列表(Product Backlog):包含所有需要完成的需求和功能,由产品负责人维护和优先级排序。
    • 冲刺待办列表(Sprint Backlog):在每个冲刺开始时,从产品待办列表中选择一部分需求,形成冲刺待办列表,开发团队在此基础上进行工作。
    • 增量(Increment):每个冲刺结束后,团队交付的可工作的软件部分,称为增量。
  3. 仪式

    • 冲刺计划会议(Sprint Planning Meeting):在每个冲刺开始时举行,团队选择产品待办列表中的需求,制定冲刺目标和计划。
    • 每日站会(Daily Stand-up):每天举行,团队成员简短汇报昨天的工作、今天的工作计划和遇到的障碍。
    • 冲刺评审会议(Sprint Review Meeting):在每个冲刺结束时举行,团队展示完成的增量,获取反馈。
    • 冲刺回顾会议(Sprint Retrospective Meeting):在每个冲刺结束时举行,团队回顾冲刺过程,识别改进点。

SCRUM 的优势

  • 灵活性:通过短周期的迭代,快速响应需求变化。
  • 透明性:所有工作都记录在产品待办列表中,团队和利益相关者可以随时了解进度。
  • 持续改进:通过冲刺回顾会议,团队不断识别和改进工作流程。
  • 客户满意度:通过频繁的增量交付,客户可以尽早看到和使用产品,提供反馈。

SCRUM 的挑战

  • 团队成熟度:SCRUM 需要团队成员具备较高的自组织能力和跨职能技能。
  • 需求管理:产品负责人需要有效地管理和优先级排序产品待办列表。
  • 文化适应:组织需要适应敏捷文化和价值观,如透明性、协作和持续改进。

5 逆向工程

在这里插入图片描述

  • 逆向工程是设计的再恢复过程
  • 实现级:包括程序的抽象语法树、符号表、过程的设计表示
  • 结构级:包括反映程序分量之间相互依赖关系的信息,例如调用图、结构图、程序和数据结构
  • 功能级:包括反映程序段功能及程序段之间关系的信息,例如数据和控制流模型
  • 领域级:包括反映程序分量或程序诸实体与应用领域概念之间对应关系的信息,例如实体关系模型

相关概念
与逆向工程相关的概念有重构、设计恢复、再工程和正向工程

  • (1)重构(restructuring)。重构是指在同一抽象级别上转换系统描述形式
  • (2)设计恢复(design recovery)。设计恢复是指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计等方面的信息
  • (3)逆向工程(reverse engineering) :逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序的表示过程,逆向工程是设计的恢复过程
  • (4)正向工程(forward engineering)。正向工程是指不仅从现有系统中恢复设计信息,而且使用该信息去改变或重构现有系统,以改善其整体质量
  • (5)再工程(re-engineering)。再工程是对现有系统的重新开发过程,包括逆向工程、新需求的考虑过程和正向工程三个步骤

例6
软件逆向工程就是分析已有的程序,寻求比源代码更高级的抽象表现形式。在逆向工程导出信息的四个抽象层次中,()包括反映程序各部分之间相互依赖关系的信息;()包括反映程序段功能及程序段之间关系的信息。

A:实现级
B:结构级
C:功能级
D:领域级

A:实现级
B:结构级
C:功能级
D:领域级

解析

  • 实现级:包括程序的抽象语法树、符号表、过程的设计表示
  • 结构级:包括反映程序分量之间相互依赖关系的信息,例如调用图、结构图、程序和数据结构
  • 功能级:包括反映程序段功能及程序段之间关系的信息,例如数据和控制流模型
  • 领域级:包括反映程序分量或程序诸实体与应用领域概念之间对应关系的信息,例如实体关系模型

答案:B、C。

6 附录:思维导图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2166469.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL Server的关系代数(选择投影连接除)

目录 1.博客素材来源 2.传统的关系运算 3.专门的关系运算 3.1选择: 3.2投影: 3.3自然连接: 3.4等值链接: 3.5自然连接: 3.6除法: 1.博客素材来源 这个是某个大学老师在新冠时候的这个线上课程&am…

Redisson分布式锁的概念和使用

Redisson分布式锁的概念和使用 一 简介1.1 什么是分布式锁?1.2 Redisson分布式锁的原理1.3 Redisson分布式锁的优势1.4 Redisson分布式锁的应用场景 二 案例2.1 锁竞争案例2.2 看门狗案例2.3 参考文章 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff…

maven报错:Unresolved plugin ‘org.apache.maven.pluginsmaven-resources-plugin‘

maven报错:Unresolved plugin: ‘org.apache.maven.plugins:maven-resources-plugin‘ 最近初学java,这里记录一下报错出现的原因以及解决办法 问题示例 如图所示,就是在创建一个项目之后对应插件的部分有爆红 问题出现的原因 简单来说就…

Pygame中Sprite实现逃亡游戏3

在《Pygame中Sprite实现逃亡游戏2》中实现了飞龙和飞火的显示。接下来实现玩家跳跃效果,如图1所示。 图1 玩家跳跃效果 1 按键响应 当玩家按下键盘中空格按键后,游戏中的玩家就会跳跃,用于躲避飞火。在while True循环判断按键的代码中&…

开放原子开源基金会网站上的开源项目EasyBaaS存在内存泄露缺陷

今天我仍然发布一个开放原子开源基金会网站上的开源项目EasyBaaS,这个开源项目的捐赠主体是招商银行股份有限公司。该项目的是一个基于Linux环境的区块链节点管理工具,提供一键部署节点、实时监控及管理运维等功能,从搭建节点、启停节点、节点…

Python | Leetcode Python题解之第436题寻找右区间

题目: 题解: class Solution:def findRightInterval(self, intervals: List[List[int]]) -> List[int]:n len(intervals)starts, ends list(zip(*intervals))starts sorted(zip(starts, range(n)))ends sorted(zip(ends, range(n)))ans, j [-1]…

Qt网络编程——QTcpServer和QTcpSocket

文章目录 核心APITCP回显服务器TCP回显客户端 核心API QTcpServer用于监听端口和获取客户端连接 名称类型说明对标原生APIlisten(const QHostAddress&, quint16 port)方法绑定指定的地址和端口号,并开始监听bind和listennextPendingConnection()方法从系统中获…

【2024/9/25更新】最新版植物大战僵尸V2.5.1发布啦

下载链接⬇️⬇️ 最新版V2.5.1下载 点击下载 历史版本下载 点击下载 更新公告 2.5.1版本更新公告: 关卡阅整 两面夹击关卡系列关卡降低出怪倍率 两面夹击关卡出怪种类调整 两面夹击部分关卡初始阳光调整 两面夹击关卡中可使用投手类植物- 两面夹击关卡中的脑子血量…

远程升级频频失败?原因竟然是…

最近有客户反馈在乡村里频繁出现掉线的情况。 赶紧排查原因! 通过换货、换SIM卡对比排查测试,发现只有去年采购的那批模块在客户环境附近会出现掉线的情况,而今年采购的模块批次就不会掉线。。。 继续追究原因,联系对应的销售工…

基于springboot vue 大学生竞赛管理系统设计与实现

博主介绍:专注于Java vue .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的…

路径报错问题

项目场景: 假设这是我的项目结构,我现在需要在aa.js文件中引入并使用aa.geojson文件, 问题: 当我引入路径是const filePath ../geo/aa.geojson;的时候,系统报错 "aa.geojson is not Found",找不…

【WRF数据介绍第二期】气象驱动场数据介绍及下载

WRF数据介绍第二期:气象驱动场数据介绍及下载 WRF官网-Free Data数据下载 EAR5数据数据下载 参考 WRF运行流程如下,所需的外部数据源包括静态地理数据(Static Geography Data)和网格气象数据(Gridded Meteorological D…

基于AI网关的智慧煤矿安全监测应用

煤矿安全一直是矿业管理的重中之重。由于煤矿环境的恶劣与复杂性,例如工作中间环节多、设施设备多样且集中、空间狭小、环境闭塞、有害气体隐患、粉尘聚集等,针对煤矿的安全监测和防范时常面临着极大的挑战。 随着AI技术的发展与普及,依托AI实…

关于前端框架的对比和选择

成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于【前端框架的对比和选择】相关内容&…

力扣 中等 275.H指数

文章目录 题目介绍题解 题目介绍 题解 h指数不一定都满足citations[mid] n - mid,例如[0,1,4,5,6]的h指数是3。 题目说了用对数时间复杂度来实现,说明一定是用二分法,草纸上推导一下即可得出以下代码。 class Solution {public int hInde…

MySQL自动测试框架Test Framework工具实践

导读 之前的文章(《MySQL自动测试框架Test Framework浅析》)从源码级别对MySQL自动测试框架Test Framework进行了简要分析,本文接下来从实践的角度介绍Test Framework工具的使用方法。 1 简介 Test Framework主要应用于MySQL等相关数据库项…

Docker 容器技术:颠覆传统,重塑软件世界的新势力

一、Docker简介 什么是docker Docker 是一种开源的容器化平台,它可以让开发者将应用程序及其所有的依赖项打包成一个标准化的容器,从而实现快速部署、可移植性和一致性。 从功能角度来看,Docker 主要有以下几个重要特点: 轻量…

用Python实现运筹学——Day 3: 线性规划模型构建

一、学习内容 线性规划模型构建的步骤与技巧 线性规划(Linear Programming, LP)模型构建是运筹学中的核心内容,通常用于求解资源的最优分配问题。要从实际问题中提取出一个线性规划模型,需要按照以下步骤进行: 问题描…

JavaWeb——Vue组件库Element(1/6):快速入门(什么是Element,安装,引入ElementUI组件库,复制组件代码,启动项目 )

目录 什么是Element 快速入门 安装 引入ElementUI组件库 访问官网,复制组件代码 启动项目 小结 了解完前端的工程化之后,接下来了解一门新的前端技术:Vue 的组件库 Element。 学习完 Element 之后,即使作为一名 Java 后…

VMware 如何上网

需求 在PC window中下载了VMware,并且加载的是Ubuntu系统。PC电脑连接的是手机热点。 可以看出WLAN连接的名称是:Wi-Fi 6 AX201 16MHz 如何让Ubuntu系统也能够上网。并且更新库,能够sudo apt-get install xxx相关库。 目前虚拟机中的Ubun…