架构师备考-软件工程相关补充

news2024/11/5 16:49:21

目录

软件开发生命周期

软件工程过程

软件维护分类

遗留系统

软件重用

逆向工程

相关概念

抽象层次

需求工程

需求工程主要活动

需求管理的主要活动

需求获取的主要步骤

需求获取方法

需求变更管理的过程

净室软件工程

定义

理论基础

技术手段

应用

缺点


软件开发生命周期

        按照传统的软件生命周期方法学,可以把软件生命周期划分为软件定义、软件开发、软件运行与维护三个阶段

  • 软件定义:软件定义包括可行性研究和详细需求分析过程,任务是确定软件开发工程必须完成的目标。具体可分为问题定义、可行性研究、需求分析等。
    • 问题定义:问题定义就是人们常说的软件的目标系统是什么,系统的定位以及范围等。也就是要按照软件系统工程需求来确定空间的性质(说明是一种什么性质的系统)。
    • 可行性研究:软件系统的可行性研究包括技术可行性、经济可行性、操作可行性和社会可行性等,确定问题是否有解,解决办法是否可行。
    • 需求分析:需求分析的任务是确定软件系统的功能需求、性能需求和运行环境的约束,写出软件需求规格说明书、软件系统测试大纲、用户手册概要。
      • 功能需求是软件必须完成的功能;
      • 性能需求是软件的安全性、可靠性、可维护性、结果的精度、容错性、响应速度和适应性等;
      • 运行环境是软件必须满足运行环境的要求,包括硬件和软件平台。
  • 软件开发:软件开发时期就是软件的设计与实现,可分成概要(总体)设计、详细设计、编码、测试等。
    • 概要设计: 概要设计就是在软件需求规格说明的基础上,建立系统的总体结构(含子系统的划分)和模块间的关系,定义功能模块及各功能模块之间的关系。
    • 详细设计:详细设计对概要设计产生的功能模块逐步细化,把模块内部细节转化为可编程的程序过程性描述。详细设计包括算法与数据结构、数据分布、数据组织、模块间接口信息和用户界面等的设计,并写出详细设计报告。
    • 编码:又称编程,编码的任务是把详细设计转化为能在计算机上运行的程序。
    • 测试:测试可分成单元测试、集成测试、确认测试和系统测试等。通常把编码和测试称为系统的实现。
  • 软件运行与维护
    • 软件运行就是把软件移交给用户使用。软件投入运行的主要任务就是使软件持久满足用户的要求。
    • 软件维护是对软件产品进行修改或对软件需求变化做出响应的过程,也就是尽可能地延长软件的寿命,当软件已没有维护的价值时,宜告退役,软件生命随之宣告结束。

软件工程过程

        软件工程过程是指为获得软件产品,在软件工具的支持下由软件工程师完成的一系列软件工程活动,包括以下4个方面

  1. P(plan)-软件规格说明。规定软件的功能及其运行时的限制。
  2. D(DO)-软件开发。开发出满足规格说明的软件。
  3. C(Check)- 软件确认。确认开发的软件能够满足用户的需求。
  4. A(Action)-软件演进。软件在运行过程中不断改进以满足客户新的需求。

软件维护分类

        软件维护可以分为:改正性维护、适应性维护、完善性维护、预防性维护。

  • 改正性维护:修改软件错误、改正软件性能上的缺陷、排除实施中的误使用。
  • 适应性维护:在使用过程中,外部环境(新的硬、软件配置)、数据环境(数据库、数据格式、数据输入/输出方法、数据存储介质)可能发生变化。为使软件适应这种变化而修改软件的过程称为适用性维护。
  • 完善性维护:扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性
  • 预防性维护:指预先提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好的基础。采用先进的软件工程方法对需要维护的软件或软件中的某一部分进行设计、编码和测试。

遗留系统

        把对遗留系统的评价结果分列在4个象限内。对处在不同象限的遗留系统采取不同的演化策略。四个策略分别是:淘汰策略(低水平、低价值)、继承策略(低水平、高价值)、改造策略(高水平、高价值)、集成策略(高水平、低价值)

  • 淘汰策略:第四象限为低水平、低价值区,即遗留系统的技术含量较低,具有较低的业务价值。对这种遗留系统的演化策略为淘汰,即全面重新开发新的系统以代替遗留系统
  • 继承策略:第二象限为低水平、高价值区即遗留系统的技术含量较低,已经不能满足企业运作的功能或性能要求,但具有较高的商业价值,目前企业的业务尚紧密依赖该系统。称这种遗留系统的演化策略为继承。在开发新系统时,需要完全兼容遗留系统的功能模型和数据模型。为了保证业务的连续性,新老系统必须并行运行一段时间,再逐渐切换到新系统运行。
  • 改造策略:第一象限为高水平、高价值区,即遗留系统的技术含量较高,本身还有强大的生命力。系统具有较高的业务价值,基本上能够满足企业业务运作和决策支持的需要。这种系统可能建成的时间还很短,称对这种遗留系统的演化策略为改造。改造包括系统功能的增强和数据模型改造两个方面。
    • 系统功能的增强是指在原有系统的基础上增加新的应用要求,对遗留系统本身不做改变;
    • 数据模型的改造是指将遗留系统的旧的数据模型向新的数据模型的转化。
  • 集成策略:第三象限为高水平、低价值区,即遗留系统的技术含量较高,但其业务价值较低,可能只能完成某个部门的的业务管理。这种系统在各自的领域里工作良好,但对于整个企业来说,存在多个这样的系统,不同的系统基于不同的平台、不同的数据模型,形成了一个个信息孤岛,对这种遗留系统的演化策略为集成。

软件重用

        软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括需求分析文档、设计过程、设计文档、程序代码、测试用例和领域知识等。

  • 横向重用:指重用不同应用领域中的软件元素,例如数据结构、分类算法和人机界面构建等
  • 纵向重用:指在一类具有较多公共性的应用领域之间进行软件重用

逆向工程

相关概念

  • 重构:是指在同一抽象级别上转换系统描述形式
  • 设计恢复:是指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计等方面的信息
  • 正向工程:正向工程是指不仅从现有系统中恢复设计信息,而且使用该信息去改变或重构现有系统,以改善其整体质量。
  • 再工程:是指在逆向工程所获得信息的基础上,修改或重构已有的系统,产生系统的一个新版本。再工程是对现有系统的重新开发过程,包括逆向工程、新需求的考虑过程和正向工程三个步骤。它不仅能从已存在的程序中重新获得设计信息,而且还能使用这些信息来重构现有系统,以改进它的综合质量。在利用再工程重构现有系统的同时,一般会增加新的需求,包括增加新的功能和改善系统的性能。

抽象层次

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

        逆向工程的完备性可以用在某一个抽象层次上提供信息的详细程度来描述。抽象层次越高完备性越低,通过逆向工程恢复的难度越大。

需求工程

需求工程主要活动

  • 需求获取
  • 需求分析
  • 需求文档化
  • 需求确认与验证
  • 需求管理

需求管理的主要活动

  • 变更控制
  • 版本控制
  • 需求跟踪
  • 需求状态跟踪

需求获取的主要步骤

  1. 开发高层的业务模型
  2. 定义项目范围和高层需求
  3. 识别用户角色和用户代表
  4. 获取具体的需求
  5. 确定目标系统的业务工作流
  6. 需求整理与总结

需求获取方法

  • 用户面谈
  • 需求专题讨论会
  • 问卷调查
  • 现场观察
  • 原型化方法
  • 头脑风暴法

需求变更管理的过程

  • 需求变更管理的主要过程包括:问题分析和变更描述、变更分析和成本计算、变更实现

净室软件工程

定义

  • 净室软件工程是软件开发的一种形式化方法,它可以生成质量非常高的软件。它使用盒子结构规约进行分析和设计建模,并且强调将正确性验证(而不是测试)作为发现和消除错误的主要机制
  • 净室软件工程是一种应用数学与统计学理论以经济的方式生产高质量软件的工作方式,力图通过严格的工程化的软件过程达到开发中的零缺陷或接近零缺陷。净室方法不是先制作一个产品,再去消除缺陷,而是要求在规约和设计中消除错误,然后以“净”的方式制作,可以降低软件开发中的风险,以合理的成本开发出高质量的软件。
  • 净室是一种以合理的成本开发高质量软件的基于理论、面向工作组的方法。
    • 净室是基于理论的,坚实的理论是任何工程学科所不可缺少的。再好的管理也代替不了理论基础。
    • 净室是面向工作组的,因为软件是由人开发出来的,并且理论必须简化到实际应用才能引导人的创造力和协作精神。
    • 净室是针对经济实用软件的生产的,因为在现实生活中,业务和资源的限制必须在软件工程中予以满足。
    • 净室是针对高质量软件的生产的,因为高质量改进管理,降低风险及成本,满足用户需求,提供竞争优势。

理论基础

  • 函数理论:一个函数定义了从定义域到值域的映射。一个特定的程序好似定义了一个从定义域(所有可能的输入序列的集合)到值域(所有对应于输入的输出集合)的映射。这样一个程序的规范就是一个函数的规范。
    • 一个明确定义的函数应当具有以下特性:
    • 完备性:对定义域中的每个元素,值域中至少有一个元素与之对应。对程序而言,每种可能的输入都必须定义,并有一个输出与之对应。
    • 一致性:在值域中最多有一个元素与定义域中的同一元素对应。对程序而言,每个输入只能对应一个输出。
    • 正确性:函数的正确性可以由上述性质判断。对程序而言,某项设计的正确性可以通过基于函数理论的推理来验证。
  • 抽样理论:不可能对软件的所有可能应用都进行测试。把软件的所有可能的使用情况看作总体,通过统计学手段对其进行抽样,并对样本进行测试,根据测试结果分析软件的性能和可靠性。

技术手段

        净室软件工程的技术手段包括:统计过程控制下的增量式开发、基于函数的规范与设计、正确性验证、统计测试和软件认证。

  • 统计过程控制下的增量式开发:增量开发基于产品开发中受控迭代的工程原理-控制迭代。增量开发不是把整个开发过程作为一个整体,而是将其划分为一系列较小的累计增量。小组成员在任何时刻只需把注意力集中于工作的一部分,而无须一次考虑所有的事情。
  • 基于函数的规范与设计:盒子结构方法按照函数理论定义了3种抽象层次,行为视图、有限状态机试图和过程试图。规范从一个外部行为视图(称为黑盒)开始,然后被转化为一个状态机视图(称为状态盒),最后由一个过程视图(明盒)来实现。盒子结构是基于对象的,并支持软件工程的关键原则:信息隐藏和实现分离。
  • 正确性验证:正确性验证被认为是CSE 的核心,正是由于采用了这一技术,净室项目的软件质量才有了极大的提高
  • 统计测试和软件认证:净室测试方法采用统计学的基本原理,即当总体太大时必须采取抽样的方法。首先确定一个使用模型来代表系统所有可能使用的总体。然后由使用模型产生测试用例。因为测试用例是总体的一个随机样本,所以可以得到系统预期操作性能的有效统计推导。

应用

  • COBOL 结构化设施项目开发出一项商业软件再工程产品
  • IBM 运用净室方法开发的海量存储控制单元适配器

缺点

  • CSE 太理论化,需要更多的数学知识。其正确性验证的步骤比较困难且比较耗时。CSE 要求采用增量式开发、盒子结构、统计测试方法,普通工程师必须经过加强训练才能掌握,开发软件的成本比较高昂。
  • CSE 开发小组不进行传统的模块测试,这是不现实的。工程师可能对编程语言和开发环境还不熟悉,而且编译器或操作系统的bug 也可能导致未预期的错误。
  • CSE 毕竟脱胎于传统软件工程,不可避免的带有传统软件工程的弊端。

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

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

相关文章

基于SSM+VUE小型企业财务报销管理系统JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解

源代码数据库LW文档(1万字以上)开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统:Window操作系统 2、开发工具:IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

站大爷代理IP工具的导入功能介绍

在数字化时代,代理IP成为了网络爬虫、数据挖掘等网络活动中不可或缺的工具。站大爷代理IP工具深刻理解用户的需求,提供了多种代理IP导入方式,让代理IP的管理变得简单高效。下面就来详细了解一下这些便捷的导入方法: 一、站大爷AP…

CSP-J2023T4 旅游巴士(同余最短路)

题目链接:https://www.luogu.com.cn/problem/P9751 题意:给定 n 个点, m 条单向边,一个时间间隔 k 。有这样一些限制条件: 1)1号点是入口, n 号点是出口; 2)经过一条边…

React系列教程(2)React哲学

豆约翰习惯将掌握某一技术分为5个层次:初窥门径,小试牛刀,渐入佳境,得心应手,玩转自如 本篇属于React框架中的第1层次即初窥门径 我们认为,React 是用 JavaScript 构建快速响应的大型 Web 应用程序的首选方…

「Mac畅玩鸿蒙与硬件29」UI互动应用篇6 - 多选问卷小应用

本篇将带你实现一个多选问卷小应用,用户可以勾选选项并点击提交按钮查看选择的结果。通过本教程,你将学习如何使用 Checkbox 组件、动态渲染列表、状态管理及用户交互,构建完整的应用程序。 关键词 UI互动应用Checkbox 组件状态管理动态列表…

【linux 多进程并发】0203 网络资源的多进程处理,子进程完全继承网络套接字,避免“惊群”问题

0203 网络资源的多进程处理 ​专栏内容: postgresql使用入门基础手写数据库toadb并发编程 个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 一、概…

江协科技STM32学习- P32 MPU6050

🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​…

程序设计方法与实践-时空权衡

什么是时空权衡? 时空权衡是算法设计中的一个众所周知的问题,也就是对算法的空间和时间效率做出权衡,它大概有分两种形式: 对输入的部分数据或者全部数据作预处理,然后对于获得额外信息储存起来,从而加快…

STM32F1学习——TIM

一、STM32中的定时器 在STM32中分为三种定时器,分别是基本定时器,通用定时器和高级定时器,每种定时器都是向下兼容的。 二、定时器详细介绍 a、基本定时器 基本定时器主要由下面与分频器、计数器 和 自动重装寄存器三个组成的时基单元&#…

W5500-EVB-Pico2评估板介绍

目录 1 概述 2 板载资源 2.1 硬件规格 2.2 硬件规格 2.3 工作条件 3 参考资料 3.1 RP2350 数据手册 3.2 W5500 数据手册 3.3 原理图 原理图 & 物料清单 & Gerber 文件 3.3 尺寸图 (单位 : mm) 3.4 参考例程 认证 CE FCC AWS 资质 Microsoft Azure 认证…

FFmpeg 4.3 音视频-多路H265监控录放C++开发十二:在屏幕上显示多路视频播放,可以有不同的分辨率,格式和帧率。

上图是在安防领域的要求,一般都是一个屏幕上有显示多个摄像头捕捉到的画面,这一节,我们是从文件中读取多个文件,显示在屏幕上。

Oracle视频基础1.4.3练习

15个视频 1.4.3 できない dbca删除数据库 id ls cd cd dbs ls ls -l dbca# delete a database 勾选 # chris 勾选手动删除数据库 ls ls -l ls -l cd /u01/oradata ls cd /u01/admin/ ls cd chris/ ls clear 初始化参数文件,admin,数据文件#新版本了…

一个由Deno和React驱动的静态网站生成器

大家好,今天给大家分享一个由 Deno React 驱动的静态网站生成器Pagic。 项目介绍 Pagic 是一个由 Deno React 驱动的静态网站生成器。它配置简单,支持将 md/tsx 文件渲染成静态页面,而且还有大量的官方或第三方主题和插件可供扩展。 核心…

1分钟解决Excel打开CSV文件出现乱码问题

一、编码问题 1、不同编码格式 CSV 文件有多种编码格式,如 UTF - 8、UTF - 16、ANSI 等。如果 CSV 文件是 UTF - 8 编码,而 Excel 默认使用的是 ANSI 编码打开,就可能出现乱码。例如,许多从网络应用程序或非 Windows 系统生成的 …

发布天工AI高级搜索功能,昆仑万维做最懂科研学术的AI搜索

今天,昆仑万维天工AI正式发布最新版本的AI高级搜索功能。 一年时光,栉风沐雨。昆仑万维致力于通过领先的AI技术,为全球用户提供创新的智能搜索和信息处理解决方案。无论是金融、科技领域的专业搜索还是文档分析,「天工AI高级搜索…

mac找到主目录下的文件夹

访达-(上方状态栏显示)-然后在

安装fpm,解决*.deb=> *.rpm

要从生成 .deb 包转换为 .rpm 包,可以按照以下步骤修改打包脚本 1. 使用 fpm 工具 fpm 是一个强大的跨平台打包工具,可以将 .deb 包重新打包成 .rpm,也可以直接从源文件打包成 .rpm。 安装 fpm sudo apt-get install ruby-dev sudo gem in…

分布式光伏管理办法

随着分布式光伏项目的不断增加,传统的管理方式已经难以满足高效、精准的管理需求。光伏业务管理系统作为一种集信息化、智能化于一体的管理工具,正在逐步成为分布式光伏项目管理的重要支撑。 光伏业务管理系统通过数字化手段实现对光伏业务全流程的精细化…

数据结构:LRUCache

什么是LRUCache 首先我们来看看什么是cache 缓存(Cache)通常用于两个速度不同的介质之间,以提高数据访问的速度和效率。这里有几个典型的应用场景: 处理器和内存之间: 处理器(CPU)的运算速度远…

智能提醒助理系列-springboot项目彩虹日志+TraceID

本系列文章记录“智能提醒助理”产品建设历程,记录实践经验、巩固知识点、锻炼总结能力。 本篇介绍如何让springboot启动日志“彩打” 提升日志识别度,同时增加TraceID,便于同一请求,全链路的追踪。 一、需求出发点 提升日志识别度…