软件构建的前期准备

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

相关文章

一文详解如何从零构建Spring Boot Starter并实现整合

《一文详解如何从零构建SpringBootStarter并实现整合》SpringBoot是一个开源的Java基础框架,用于创建独立、生产级的基于Spring框架的应用程序,:本文主要介绍如何从... 目录一、Spring Boot Starter的核心价值二、Starter项目创建全流程2.1 项目初始化(

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

使用Python和python-pptx构建Markdown到PowerPoint转换器

《使用Python和python-pptx构建Markdown到PowerPoint转换器》在这篇博客中,我们将深入分析一个使用Python开发的应用程序,该程序可以将Markdown文件转换为Pow... 目录引言应用概述代码结构与分析1. 类定义与初始化2. 事件处理3. Markdown 处理4. 转

Java使用Mail构建邮件功能的完整指南

《Java使用Mail构建邮件功能的完整指南》JavaMailAPI是一个功能强大的工具,它可以帮助开发者轻松实现邮件的发送与接收功能,本文将介绍如何使用JavaMail发送和接收邮件,希望对大家有所... 目录1、简述2、主要特点3、发送样例3.1 发送纯文本邮件3.2 发送 html 邮件3.3 发送带

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

nginx-rtmp-module构建流媒体直播服务器实战指南

《nginx-rtmp-module构建流媒体直播服务器实战指南》本文主要介绍了nginx-rtmp-module构建流媒体直播服务器实战指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. RTMP协议介绍与应用RTMP协议的原理RTMP协议的应用RTMP与现代流媒体技术的关系2

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件

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

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