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

软件开发生命周期

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

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

软件工程过程

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

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

软件维护分类

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

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

遗留系统

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

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

软件重用

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

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

逆向工程

相关概念

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

抽象层次

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenGL入门003——使用Factory设计模式简化渲染流程

前面两节已经学会了如何使用opengl创建窗口并绘制三角形,我们可以看出有些步骤是固定的,而且都写在main.cpp,这一节我们将了解如何使用Factroy设计模型。将模型渲染逻辑封装在一个单独的类中,简化开发流程,且提高代码复…

音频中sample rate是什么意思?

‌sample rate‌在数字信号处理中,指的是‌采样频率‌,即每秒钟从连续信号中抽取的样本数量。采样频率越高,信号的还原度越高,但同时也会增加计算负担和存储需求‌。 实际应用场景 在音频处理中,设置合适的采样率可以…

分享一下面试中常用的10 个面试点全解析,面试成功的秘诀

大家好,我是一颗甜苞谷,今天分享一下面试中常用的10 个面试点全解析,助你面试中脱颖而出 问题1:微服务架构和传统架构有什么区别,现在市场上的微服务架构有哪些? 答:传统的单体架构可维护性、可读性低,维…

构建品牌影响力:知识库工具在市场营销中的创新应用

在当今这个信息爆炸的时代,品牌影响力成为了企业市场竞争力的核心要素。为了有效提升品牌影响力,企业不仅需要精准的市场定位和优质的产品服务,还需要借助高效、智能的知识库工具来优化其市场营销策略。本文将探讨知识库工具在市场营销中的创…

Python Matplotlib 子图绘制

Python 中的子图绘制 在数据可视化中,展示多个图表在同一个画布上是常见的需求,这样可以更直观地比较不同数据集之间的关系。Python 中的 Matplotlib 库为我们提供了强大的功能来实现这一点。在本篇文章中,我们将详细介绍如何使用 Matplotli…

探索设计模式:命令模式

探索设计模式:命令模式 🧐1. 概念🎯2. 作用📦3. 实现3.1 定义命令接口3.2 实现具体命令3.3 实现接收者3.4 实现调用者3.5 使用 💻4. 应用场景 命令模式(Command Pattern)就是一种行为型设计模式…

Python-创建并调用自定义文件中的模块/函数

背景:在Python编程中,我们常常需要创建自己的专属文件,以便帮助我们更高效,快捷地完成任务。那么在Python中我们怎么创建并调用自己文件中的模块/函数呢? 在Python中调用自定义文件,通常是指调用自己编写的Python模块…

springboot 修复 Spring Framework 特定条件下目录遍历漏洞(CVE-2024-38819)

刚解决Spring Framework 特定条件下目录遍历漏洞(CVE-2024-38816)没几天,又来一个新的,真是哭笑不得啊。 springboot 修复 Spring Framework 特定条件下目录遍历漏洞(CVE-2024-38816)https://blog.csdn.ne…

AutoDIR: Automatic All-in-One Image Restoration with Latent Diffusion论文阅读笔记

AutoDIR: Automatic All-in-One Image Restoration with Latent Diffusion 论文阅读笔记 这是ECCV2024的论文,作者单位是是港中文和上海AI Lab 文章提出了一个叫AutoDIR的方法,包括两个关键阶段,一个是BIQA,基于vision-language…

CDN加速实战:使用七牛云CDN加速阿里云OSS资源访问

今天是双11搞活动,在阿里云1元注册了个域名,想着在学CDN,想使用CDN做个加速项目,但是阿里的要收费,上网查了下七牛云的不收费,想着将七牛云的CDN结合阿里的DNS做个访问加速,刚好看到了阿里的一个文章,照着改了改,实践成功了。 阿里文章:使用CDN加速OSS资源访问_对象…

MacBook 如何设置打开json格式文件的默认程序是vs code

首先右键选中文件,然后选中显示简介 然后选中打开方式 设置成vs code

HTML 基础标签——文本内容标签 <ul>、<ol>、<blockquote> 、<code> 等标签的用法详解

文章目录 1. 标题标签2. 段落标签3. 文本格式化标签4. 列表标签4.1 无序列表 `<ul>`4.2 有序列表 `<ol>`5. 引用标签5.1 块引用 `<blockquote>`5.2 行内引用 `<q>`5.3 作品引用 `<cite>`6. 代码和预格式文本标签6.1 代码标签 `<code>`6.2 …

git 删除远程不存在本地命令却能看到的分支

要删除远程不存在但本地却能看到的分支&#xff0c;你可以按照以下步骤操作&#xff1a; 删除本地分支&#xff1a; 如果你确定要删除的分支已经没有用处&#xff0c;可以使用以下命令来删除本地分支&#xff1a; git branch -d <branch-name>这里的 <branch-name>…

【Oracle APEX开发小技巧10】CSS样式控制交互式报表列宽和自动换行效果

在实际开发中使用交互式报表可能会出现某些字段的列宽过长&#xff0c;某些字段的列宽只有缩到一角的情况&#xff0c;那么如何解决这种情况呢&#xff1f;有没有方法可以控制交互式报表的列宽呢&#xff1f;下面就来介绍一下解决方法&#xff1a; 页设置-页-CSS-内嵌 输入如下…

Linux内核、线程、进程同步互斥方法及IPC方法的总结

前段实践在B站进行模拟面试时发现&#xff0c; 模拟面试第四期-已经拿到大厂OFFER的研究生大佬-LINUX卷到飞起 自己对Linux中的同步互斥方法&#xff0c;以及IPC方法&#xff0c;没有很好的理解和总结过。因此&#xff0c;本笔记将总结这部分内容。 内核线程进程机制原子操作、…

Automated Isotope Identification Algorithm UsingArtificial Neural Networks-论文阅读

Automated Isotope Identification Algorithm Using Artificial Neural Networks 使用人工神经网络的自动同位素识别算法 M.Kamuda, J. Stinnett, and C.J. Sullivan 摘要 需要开发一种算法,以确定包含多种放射性同位素混合物的大量低分辨率伽马射线光谱数据集中放射性同位素…

MybatisPlus - 核心功能

文章目录 1.MybatisPlus实现基本的CRUD快速开始常见注解常见配置 2.使用条件构建造器构建查询和更新语句条件构造器自定义SQLService接口 官网 MybatisPlus无侵入和方便快捷. MybatisPlus不仅仅可以简化单表操作&#xff0c;而且还对Mybatis的功能有很多的增强。可以让我们的开…

数据结构:并查集

并查集的原理 在一些应用问题中&#xff0c;需要将n个不同的元素划分成一些不相交的集合。开始时&#xff0c;每个元素自成一个 单元素集合&#xff0c;然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一 个元素归属于那个集合的运算。适合于描述这类…

ChatGPT新体验:AI搜索功能与订阅支付指南

就在凌晨&#xff0c;在ChatGPT迎来两周岁生日之际&#xff0c;OpenAI重磅发布了ChatGPT的全新人工智能搜索体验。 期待已久的时刻终于到来&#xff0c; ChatGPT正式转型成为一款革命性的AI搜索引擎! 先来看看ChatGPT搜索&#xff1a;这次不是简单的加个搜索框&#xff0c;而…

JS | 如何更好地优化 JavaScript 的内存回收?

目录 一、理解JavaScript内存生命周期 ● 创建对象和分配内存 ● 内存的使用 ● 内存回收 二、减少内存泄露 ● 避免全局变量 ● 正确使用闭包 三、合理管理内存 ● 局部变量和即时函数 ● 解绑事件监听器 四、使用现代JavaScript特性辅助内存回收 ● 使用WeakMap和…