软件构建的前期准备

2024-08-29 02:32
文章标签 构建 软件 准备 前期

本文主要是介绍软件构建的前期准备,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

注:第三章 三思而行:前期准备

首先要明确: 项目质量的关键不在于后期的测试工作,测试只是占项目的完整质量,排查bug的一小部分,它不会纠正制造的“一个错误的产品”,所以关键在于软件构建活动之前的问题定义和需求分析。

1、辨明自己所开发的软件类型

  1. 小系统,风险低,需求简单
  2. 中型系统,存在风险
  3. 大型系统,风险高,需求变化大

2、在做每一个项目之前,应该为自己细分一下工作量。具体而言,先做一个大概的工作表,然后再对概要的表逐项进行细分考究,评估工作量,汇总,如果还不够清晰,可以再次细分,直至逐项清晰明了。最终要求是外行人一眼就能看懂你的工作内容。

3、问题定义的重要性

在构建之前,首先要满足的一个先决条件就是 :对开发的系统要解决的问题做一个清楚的陈述。问题没找对,可能致使后面的构建解决错误的问题。
要以客户角度,以非计算机语言来描述问题,对问题做一个简单的陈述。

4、需求要明确

1、需求明确,有助于用户(而不是程序员)掌握系统功能,而且用户可以自行评审,校准。
2、需求重在稳定,不稳定的需求在后续编码中会花费相当大的预测开支,而且 系统架构可能会混乱。
3、在构建中处理可能发生的需求变更。
4、需求checklist (p42)

5、架构设计的先决条件

架构师软件设计的高层部分,适用于支撑整个细节设计的框架。
架构的组成部分:
1、程序组织
系统架构首先以概括的形式对有关系统做一个综述。定义程序组成的构造快,以及每个构造快所支撑的功能。

2、主要的类
架构应该详细定义所用的主要的类,每个类的属性,类之间的 关系。

3、数据设计
描述主要的数据文件的访问、存储的设计。

4、业务规则

5、用户界面设计
架构应该定义WEB页面 、GUI、命令接口等主要元素形式。
架构模块化,以便于在替换新用户界面时不影响业务和程序输出,同时还应该轻易做到 交互式界面和命令行之间的切换。

6、错误处理
大部分程序的代码90%是用来处理异常,只有10%的代码是用来处理正常逻辑功能,所以在架构中要制定一种统一一致的错误处理策略。
错处理要考虑的问题,或者是错误处理的checklist

  1. 错误处理是进行纠正还是只是做检测。纠正实际上是容错;检测可以继续运行或者退出。
  2. 检测时主动检测还是被动检测。
    主动检测 如:在用户输入参数时预处理
    被动检测 如:输入参数处理之后产生溢出。

  3. 如何处理错误。
    可以直接丢弃 错误数据
    可以把错误进入到错误处理状态
    可以等程序处理完成,再通知错误

  4. 错误处理约定。应该建立一整套有关错误消息处理的框架

7、容错性
容错的目标是系统出现错误之后,能够通过容错机制从错误中恢复过来。

容错策略

  1. 检测错误直接回退执行之前,再试有限次(具体在网络通信中,网络或者设备不稳定时)
  2. 使用备用代码或者逻辑(实际就是if-else语句)
  3. 使用一种表决算法(根据实际业务逻辑,该功能有多种方法实现,采用多种方法后,取结果的均值)
  4. 可以使系统功能退化或者跳过该错误处的功能(尤其是主功能出错时,可以置一个全局开关,暂时让系统空转)

8、输入输出和安全性
住哟啊包括IO模型的选择、处理非信任数据(包括用户的输入输出、cookies、配置文件和外部接口输入的数据)的规则、加密、错误消息的细致程度、保护内存中的秘密数据。

9、架构性能
指出系统使用的资源:速度、内存、成本之间的优先顺序,以及存在的不可控风险。

10、国际化/本地化
主要考虑 字符集编码的问题,中英文资源文件之间的切换。

11、变更策略
架构最大的挑战是,随时面临需求的变更,所以让架构足够灵活,能够适应变化。所以架构要以系统的可变更性作为首要目标进行设计。
简单的比如:在数据文件中加入版本号、设置保留字段或者将文件设计成能够添加新的文段。
架构设计checklist 参考书本p54

这篇关于软件构建的前期准备的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116592

相关文章

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

免费也能高质量!2024年免费录屏软件深度对比评测

我公司因为客户覆盖面广的原因经常会开远程会议,有时候说的内容比较广需要引用多份的数据,我记录起来有一定难度,所以一般都用录屏工具来记录会议内容。这次我们来一起探索有什么免费录屏工具可以提高我们的工作效率吧。 1.福晰录屏大师 链接直达:https://www.foxitsoftware.cn/REC/  录屏软件录屏功能就是本职,这款录屏工具在录屏模式上提供了多种选项,可以选择屏幕录制、窗口

HomeBank:开源免费的个人财务管理软件

在个人财务管理领域,找到一个既免费又开源的解决方案并非易事。HomeBank 正是这样一个项目,它不仅提供了强大的功能,还拥有一个活跃的社区,不断推动其发展和完善。 开源免费:HomeBank 是一个完全开源的项目,用户可以自由地使用、修改和分发。用户友好的界面:提供直观的图形用户界面,使得非技术用户也能轻松上手。数据导入支持:支持从 Quicken、Microsoft Money

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数