软件构建的前期准备

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

相关文章

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

基于Python构建一个高效词汇表

《基于Python构建一个高效词汇表》在自然语言处理(NLP)领域,构建高效的词汇表是文本预处理的关键步骤,本文将解析一个使用Python实现的n-gram词频统计工具,感兴趣的可以了解下... 目录一、项目背景与目标1.1 技术需求1.2 核心技术栈二、核心代码解析2.1 数据处理函数2.2 数据处理流程

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Python FastMCP构建MCP服务端与客户端的详细步骤

《PythonFastMCP构建MCP服务端与客户端的详细步骤》MCP(Multi-ClientProtocol)是一种用于构建可扩展服务的通信协议框架,本文将使用FastMCP搭建一个支持St... 目录简介环境准备服务端实现(server.py)客户端实现(client.py)运行效果扩展方向常见问题结

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

一文教你Java如何快速构建项目骨架

《一文教你Java如何快速构建项目骨架》在Java项目开发过程中,构建项目骨架是一项繁琐但又基础重要的工作,Java领域有许多代码生成工具可以帮助我们快速完成这一任务,下面就跟随小编一起来了解下... 目录一、代码生成工具概述常用 Java 代码生成工具简介代码生成工具的优势二、使用 MyBATis Gen

Python使用Reflex构建现代Web应用的完全指南

《Python使用Reflex构建现代Web应用的完全指南》这篇文章为大家深入介绍了Reflex框架的设计理念,技术特性,项目结构,核心API,实际开发流程以及与其他框架的对比和部署建议,感兴趣的小伙... 目录什么是 ReFlex?为什么选择 Reflex?安装与环境配置构建你的第一个应用核心概念解析组件