软件开发文档流程,指导怎样从那些方面构建一个完善的软件使用指南

来源:互联网 发布:尚学堂 大数据视频 编辑:程序博客网 时间:2024/06/06 02:50

1.在软件文档中最主要包括以下几点,能够帮助客户和开发人员理解产品如何工作,如何演化

语境、功能性概览、质量属性、约束、原则、软件架构、外部接口、代码、数据、基础设施架构、部署、运营和支持、决策和日记

(1)语境(必须)

*这个软件/产品/系统是关于什么的

*构建的是什么(愿景)

*如何融入现有环境

*谁在使用(用户、角色、参与者)

(2)功能性概览,了解系统的关键功能是什么,能够解释为什么让你可以在系统的功能切片之间建立明确的链接

*系统实际上做什么是否清楚

*那些特性、功能、用列、用户过时等对架构是重要的,是否清楚

*重要的用户是谁,以及系统如何满足他们的需求是否清楚

*上述已用于塑造和定义架构是否清楚

*从流程的角度系统做什么是否清晰

*系统的主要流程和信息流是什么

(3)质量属性

*架构必须满足的质量属性有清晰的认识

*质量属性是否满足(可衡量、可达成、相关、及时)

*明确标出一些有影响的质量属性(如多语言支持)

*列出每个质量属性时一个很好的起点

性能(延迟和吞吐)、可伸缩性(数据和流量)、可用性(运行时间、停机时间、定期维护、全天)、安全性(认证、授权、数据保密性)、可扩展性、灵活性、审计、监测和管理、可依赖性、故障转移、业务连续性、户操作性、遵守法律法规、国际化、可访问性、易用

(4)约束

*时间、预算和资源

*允许使用的技术清单和技术约束

*目标部署平台

*已有系统和继承标准

*局部标准(开发、编码)

*公共标准(交换数据格式、请求方式等HTTP/SOAP/XML/XML机构/WSDL等)

*标准协议

*标准格式

*软件开发团队的规模、技能配置

*所构建的软件的本质(比如战术和战略);

*政治约束;

*内部知识产权的使用;

(5)、开发原则

*架构分层原则

*视图中业务逻辑

*接口的使用

*始终使用ORM

*依赖注入

*高内聚低耦合

*SOLID原则(单一职责原则,开闭原则,里氏代换原则,接口隔离原则,依赖倒置原则)

*所有组件都是无状态的(让伸缩性更容易)

*富域模型、贫血域模型、选择存储过程、不使用存储过程、错误处理、日记等的通用方法、购买而非构建

(6)软件架构

*关键内部接口是那些

*展示了主要的组件及其交互

*展示了主要的容器和技术选择

*是否有清晰的结构,对于软件架构图的说明

(7)代码

*生成、渲染HTML,对生成HTML的内部框架的简短描述,包括主要的类和概念

*数据绑定:根据HTTPPOST 请求更新业务对象的方法

*多页数据采集:描述构建网页表单的内部框架

*web mvc

*安全性:使用windows身份基础(WiF)进行认证和授权的方法

*域模型:域模型重要部分的概览

*组件框架:简短描述了正在运行时重新配置组件而构建的框架

*配置:简短描述为了在运行时重新配置组件而构建的框架

*架构分层:分层策略和用来实现的模式的概览

*异常和日记

*模式和原则

(8)数据

*数据模型、数据存储、数据需要多少存储空间

*归档和备份

*日志文件和审计跟踪是否有相似的要求

*是否用单文件来存储

(9)基础设施架构

*是否有清晰的物理架构

*在所有层中,什么硬件做了这件事

*如果使用,他是否满足冗余,故障转移,和灾难恢复

*选择的硬件组件如何改变大小和被选中是否清楚

*如果使用了多个服务器和网站,他们之间的网络联系是什么

*谁负责基础设施的支持和维护

*有照管通用基础架构(比如,数据库,消息总线、应用服务器、网络、路由器,交换机、负载均衡器、方向代理、互联网连接)

*谁拥有资源

*开发、测试、验收、试制、生产等是否有合适的环境

(10)部署,软件和基础设施之间的一个映射

用来描述软件(容器)和基础设施之间的映射,有时候这是简单的一对一映射,(如把一个Web应用程序部署到单个web服务器上),其它时候回更复杂,一个web应用程序部署到服务器的集群的多个服务器上

*软件安装和配置软件在哪里,怎么做

*软件如何部署到基础设施脚骨部分描述的基础设施元素上是否清楚(一对一映射,每个服务器多个容器等)

*内存和CPU在运行于单块基础设施上的进程间如何分配是否清楚

*有容器和组件以主动-主动、主动-被动、热备用、冷备用等形态运行吗

*部署和回滚策略是否已经定义

*软件或基础设施出现故障时会发生什么

*跨站点的数据如何复制是否清楚

(11)运营和支持,描述人们如何运行、监测和管理你的软件

*软件如何为运营、支持团队提供监测和管理系统的能力是否清楚

*在架构的各个分层中这是如何实现的

*运营人员要如何诊断问题

*错误和信息的纪录在哪里

*更改配置是否需要重新启动

*有需要定期执行的手动管理任务吗

*旧数据需要定期归档吗

(12)、决策日记

简单纪录所做的重要决策,包括技术选择(产品、框架),整体架构(软件结构、架构风格、分解、模式)

*你为什么选择技术或框架X,而不是Y和Z

*你是怎么做的,产品评估还是概念证明

*你是否根据公司政策和企业架构战略而被迫做出关于X的决策

*你为什么选择所采用的软件架构?你考虑过其它那些选项,你怎么知道解决方案满足主要的非功能性需求

1 0
原创粉丝点击