软件工程与计算总结(十七)软件构造

news2024/11/20 10:24:09

一.概述

1.定义

软件构造是以编程为主的活动,类似于软件实现。但软件构造又不止编程这么简单,除了核心的编程任务之外,还设计详细设计(数据结构与算法设计)、单元测试、集成与集成测试以及其他活动~

2.软件构造是设计的延续

传统上,将软件开发的编程阶段统称为软件实现,认为它是将软件构建方案映射为机器语言的过程,属于软件开发的次要任务~

仔细区分设计与实现的界限:

  • 设计是规划软件构建方案的过程,实现是依据规划的软件构建方案建造真正产品的过程
  • 源程序是软件构建方案的最后一个规划,不是产品本身,真正的产品是运行于计算机上的由二进制代码组成的可执行程序
  • 源程序的生产过程——编程,属于设计活动,编译器完成的编译和链接才是依据规划 建造软件产品的实现活动~

软件设计阶段的设计工作是对软件系统总体结构和细节结构的规划,但是并没有产生最终的规划——还没有进行到源代码级别;而软件构造阶段的设计就是在较低的代码层次上的设计活动,将软件设计阶段产生的设计规划深入和细化到表现为源代码的最终机制~

编程从来就不是一种简单的活动,它的核心是设计代码,并验证设计的效果;过去的经验也一再表明,忽视编程工作的复杂性和重要性,会付出低质量的代价~

二.软件构造活动

1.详细设计

有些项目会将主要的详细设计工作分配在软件构造阶段完成,也有一些项目要求在软件设计阶段完成非常详细的详细设计工作,其详细设计方案能详细到让编程工作近乎无机械化;还有一些项目在软件设计阶段完成主要的详细设计工作,将剩余的详细设计工作遗留给软件构造阶段~

软件构造阶段详细设计使用的方法与技术与设计阶段是一样的,只是应用在更小的规模上~

2.编程

软件构造的核心活动,目的是生产高质量的代码:

  • 易读性:程序代码必须是易读的,看上去“显而易见是正确的”
  • 易维护性:易读易修改
  • 可靠性:执行正确,妥善处理故障
  • 性能:时间性能和空间性能
  • 安全性:不要遗留程序漏洞

3.测试

通过单元测试和集成测试,验证设计的正确性

4.调试

通过调试找到程序代码中的缺陷并加以修复,总的来说 ,调试是非常依赖于经验的工作,过程可以分为如下3个部分:

  • 重现问题:发现问题后先不要着急寻找缺陷,要通过重现问题来确定错误的出处
  • 诊断缺陷:对于重现的问题,不能考猜测和直觉来确定缺陷所在
  • 修复缺陷:一次只需改一个缺陷,修改前保留旧版本的备份,并使用测试和评审验证修复的有效性

5.代码评审

代码评审是对代码的系统检查,通过是通过同行专家评审来完成的,通过评审会议可以发现并修正之前忽略的代码错误,从而提高软件的质量和开发者的技巧~

6.集成与构建

在以分数的方式完成程序基本单位之后,软件构造还需要将这些分散单位集成和构建为构件,子系统和完整系统~

7.构造管理

  • 构造计划:根据整个项目的开发过程安排,定义要开发的构件与次序,选择构造方法、明确构造任务并分配给程序员。
  • 度量:软件构造阶段的产品度量主要围绕源代码展开
  • 配置管理:出于团队协作开发的要求

三.软件构造实践方法

1.重构

原因:最早用来进行软件维护的方法,因为无法预计到后续数年的修改导致设计方案不能满足修改需求,亦或随着修改次数的增加,软件设计结构的质量越来越脆弱,很难继续维持可修改性

常见时机:

  • 增加新的功能时
  • 发现了缺陷进行修复时
  • 进行代码评审时

 注意事项:

  • 重构是基于已有代码的设计改进,不是开发新代码的方法
  • 重构要防止副作用
  • 重构的重点是改进详细设计结构

2.测试驱动开发

又称为测试优先的开发,它随着极限编程方法的普遍应用而得到发展和普及~

优点:

  • 提高程序的正确性和可靠性
  • 提高设计质量
  • 提高生产力

过程:

  • 编写一段测试代码
  • 编译测试代码
  • 最小化编写正常程序代码
  • 运行测试代码
  • 最小化修改正常程序代码
  • 运行测试代码
  • 重构正常程序代码
  • 重复以上步骤

3.结对编程

由极限编程推广的方法,思想是:两个程序员挨着坐一起,共同协作进行软件构造活动~

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

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

相关文章

mac电脑文献管理 EndNote 21最新 for Mac

EndNote 21 Mac版不仅能够快速有效的的帮助用户管理自己的文献,而且还可以用来创建个人参考文献库,添加各种文本,图像,连接,表格等等内容! - 搜索数百个在线资源以获取参考和PDF - 只需点击一下即可查找参…

centos 内核对应列表 内核升级 linux

近期服务器频繁出现问题,找运维同事排查,说是系统版本和内核版本和官方不一致,如下: Release 用的是7.8, kernal 用的是 5.9 我一查确实如此: 内核: Linux a1messrv1 5.9.8-1.el7.elrepo.x86_64 发行版 Cen…

怎么使用动态代理IP提升网络安全,动态代理IP有哪些好处呢?

目录 一、什么是动态代理IP 二、动态代理IP的优势 三、动态代理IP的代码实现 1. 安装依赖库 2. 获取代理IP 3. 使用代理IP请求目标网站 4. 动态更换代理IP 五、总结 一、什么是动态代理IP 动态代理IP是指在网络通信过程中,代理服务器不是固定IP地址&#x…

Java前后端分离项目中跨域问题 讲解

Java前后端分离项目中跨域问题 讲解 前言什么是跨域问题?CORS解决跨域问题使用Servlet过滤器使用Spring Framework的CrossOrigin注解 总结 我是将军我一直都在,。! 前言 当在Java前后端分离项目中工作时,跨域问题是一个常见的挑战…

如何通过SK集成chatGPT实现DotNet项目工程化?

智能助手服务 以下案例将讲解如何实现天气插件 当前文档对应src/assistant/Chat.SemanticServer项目 首先我们介绍一下Chat.SemanticServer的技术架构 SemanticKernel 是什么? Semantic Kernel是一个SDK,它将OpenAI、Azure OpenAI和Hugging Face等大…

2023年中国婚礼仪式服务行业发展趋势分析:市场集中度有望持续提升[图]

婚礼仪式服务指为备婚人群提供从婚礼筹备到结婚典礼所需的一系列相关产品及服务,婚礼仪式服务提供商包括一站式婚礼仪式服务提供商和垂直婚礼仪式服务提供商。 婚礼仪式服务提供商分类 资料来源:共研产业咨询(共研网) 婚礼仪式服…

将AirPods恢复到出厂设置方便快捷,用时不会超过一分钟

苹果最初的AirPods、AirPods 2、AirPod 3和AirPods Pro都有重置功能,可以将其恢复到出厂设置。如果你把无线耳机交给别人,或者你对它们有任何问题,这会派上用场。 以下是如何重置AirPods和‌AirPods Pro‌: 如何重置AirPods和AirPods Pro …

美芯片禁令再次扩大,波及英伟达、AMD以及intel等科技公司 | 百能云芯

拜登政府17日宣布,计划停止英伟达(Nvidia)、超微半导体以及英特尔等科技公司设计的先进AI芯片输出中国大陆,英伟达(Nvidia)昨日股价重挫4.68%至每股439.38美元;天风国际证券分析师郭明錤表示&am…

基于SVM+Webdriver的智能NBA常规赛与季后赛结果预测系统——机器学习算法应用(含python、ipynb工程源码)+所有数据集(二)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据预处理2. 特征提取1)常规赛特征提取2)季后赛特征提取(1)常规赛球队得分(2)球员、教练数据及数据整合 相关其它博客工程源代码下载其它资…

WebSocket:实现实时互动、数据推送的利器,你了解多少

WebSocket技术是一种基于TCP协议的全双工通信协议,它允许浏览器和服务器之间进行实时、双向的通信。相比传统的HTTP请求-响应模式,WebSocket提供了持久连接,可以实时地推送数据,减少了通信的延迟。 WebSocket的工作原理是通过建立…

视觉Slam面试题(不定时更新)

文章目录 0 引言1 单目、双目、深度相机和RGBD相机的区别2 特征点法与直接法的优缺点3 等距变换、相似变换、仿射变换、射影变换的区别4 单应矩阵、本质矩阵和基础矩阵的区别5 Slam中为什么用李群李代数6 解释Slam中的绑架问题7 ORB、SIFT和SURF特征点检测算法的区别8 什么是对…

QGIS如何给元素添加属性

选中图层,右键,属性

汽车上的A/C按键是做什么用的?

汽车上的A/C按键是做什么用的? 汽车上的a/c 键是空调制冷开关。A/C是空调的缩写,它的全称是air condition,理解为空气调节。它通过空调压缩机的不同运转方式来达到制冷或制暖的目的。 打开a/c 按键之后,因为空调压缩机是靠发动机工作的&…

【小白专用】安装Apache2.4+ 安装PHP8.2+ php与sql server 2008 r2连接测试教程

PHP安装 1、PHP下载 PHP For Windows: Binaries and sources Releases 注意: 1.要下载Thread Safe,否则没有php7apache2_4.dll这个文件 2.如果是64位系统要下载x64的,x86的不行 3.下载Zip 2、PHP解压安装 将Zip进行解压,里…

【六、docker中hyperf项目怎么进行跨域设置】

1、第一步就是新建跨域文件,即跨域中间件 跨域中间件的代码如下 <?phpdeclare(strict_types=1);namespace App\Middleware; namespace App\Middleware; namespace App\Middleware;use Hyperf\Context\Context; use Psr\Http\Message\ResponseInterface;

Linux文件管理与用户管理

一、查看文件内容 1、回顾之前的命令 cat命令、tac命令、head命令、tail命令、扩展&#xff1a;tail -f动态查看一个文件的内容 2、more分屏显示文件内容&#xff08;了解&#xff09; 基本语法&#xff1a; # more 文件名称 特别注意&#xff1a;more命令在加载文件时并不…

爆肝整理,性能测试-非GUI模式执行Jemter压测,看这篇就够了...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、上传脚本 把在…

如何利用vscode进行断点调试后端node开发的项目,如express或koa?

介绍 在我们平常开发中前端可以通过浏览器断点调试代码执行的过程&#xff0c;但是node项目后端通常用命令启动&#xff0c;但命令启动项目也只能打印日志信息&#xff0c;不能断点。所以这一章节教大家如何利用vscode进行断点调试。 步骤 配置launch.json文件 代码如下&…

matlab奇技淫巧——绘制三维地图

在数据处理工作中&#xff0c;常常会用到地图的绘制&#xff0c;最常用的自然是绘制平面的区域/全球地图&#xff0c;通过 worldmap(world) % 创建世界地图坐标区域 load coastlines % 导入海岸线数据 plotm(coastlat,coastlon)即可绘制&#xff0c;效果…

【eNSP】VLAN间通信

VLAN间通信 文章目录 一、使用路由器物理接口实现VLAN间通信实验拓扑图1、配置交换机Access接口和路由器IP地址LSW1AR1 2、验证 二、使用路由器子接口实验拓扑图1、路由器、交换机基本配置LSW1AR1 2、配置路由器子接口AR1 3、验证 三、使用VLANIF技术实现VLAN间通信原理图实验拓…