热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

软件概要设计的过程与任务

在完成对软件系统的需求分析之后,接下来需要进行的是软件系统的概要设计。一般说来,对于较大规模的软件项目,软件设计往往被分成两个阶段进行。首先是前期概要设计,用于确定软件系统的基本框架;然后是在概要设计

在完成对软件系统的需求分析之后,接下来需要进行的是软件系统的概要设计。一般说来,对于较大规模的软件项目,软件设计往往被分成两个阶段进行。首先是前期概要设计,用于确定软件系统的基本框架;然后是在概要设计基础上的后期详细设计,用于确定软件系统的内部实现细节。

概要设计也称总体设计,其基本目标是能够针对软件需求分析中提出的一系列软件问题,概要地回答如何解决。例如,软件系统将采用什么样的体系构架、需要创建哪些功能模块、模块之间的关系如何、数据结构如何?软件系统需要什么样的网络环境提供支持、需要采用什么类型的后台数据库等。

应该说,软件概要设计是软件开发过程中一个非常重要的阶段。如果软件系统没有经过认真细致的概要设计,就直接考虑它的算法或直接编写源程序,这个系统的质量就很难保证。许多软件就是因为结构上的问题,使得它经常发生故障,而且很难维护。

设计过程

概要设计基本过程如下图所示,它主要包括三个方面的设计。首先是系统构架设计,用于定义组成系统的子系统,以及对子系统的控制、子系统之间的通信和数据环境等;然后是软件结构和数据结构的设计,用于定义构造子系统的功能模块、模块接口、模块之间的调用与返回关系,以及数据结构、数据库结构等。

概要设计要求建立在需求分析基础之上,软件需求文档是软件概要设计的前提条件。只有这样,才能使得开发出来的软件系统最大限度地满足用户的应用需要。

实际上,概要设计的过程也就是将需求分析之中产生的功能模型、数据模型和行为模型等分析结论进行转换,由此产生设计结论的过程。在从分析向设计的转换过程中,概要设计能够产生出有关软件的系统构架、软件结构和数据结构等设计模型来。这些结论将被写进概要设计文档中,作为后期详细设计的基本依据,能够为后面的详细设计、程序编码提供技术定位。

需要注意的是,概要设计所能够获得的还只是有关软件系统的抽象表达式,需要专心考虑的是软件系统的基本结构,至于软件系统的内部实现细节如何,则被放到以后详细设计中去解决。例如模块,概要设计中的模块只是一个外壳,虽然它有确定的功能边界,并提供了通信的接口定义,但模块内部还基本上是空的,诸多具体的功能加工细节则必须等到详细设计完成以后才能确定下来。因此,在有关软件设计的全部工作中,概要设计所提供的并不是最终设计蓝图,而只是一份具有设计价值的具体实施方案与策略,用于把握系统的整体布局。尽管概要设计并不涉及系统内部实现细节,但它所产生的实施方案与策略将会最终影响软件实现的成功与否,并影响到今后软件系统维护的难易程度。

设计任务

概要设计阶段的任务主要有以下几个方面:

1.制定规范

具有一定规模的软件项目总是需要通过团队形式实施开发,为了适应团队式开发的需要,在进入软件开发阶段之后,首先应该为软件开发团队制定在设计时应该共同遵守的规范,以便协调与规范团队内各成员的工作。

概要设计时需要制定的规范主要有:

(1)设计文档的编制标准,包括文档体系、文档格式、图表样式等。

(2)信息编码形式,硬件、操作系统的接口规约,命名规则等。

(3)设计目标、设计原则。

2.系统构架设计

系统构架设计就是根据系统的需求框架,确定系统的基本结构,以获得有关系统创建的总体方案。其主要设计内容包括:

(1)根据系统业务需求,将系统分解成诸多具有独立任务的子系统。

(2)分析子系统之间的通信,确定子系统的外部接口。

(3)分析系统的应用特点、技术特点以及项目资金情况,确定系统的硬件环境、软件环境、网络环境和数据环境等。

(4)根据系统整体逻辑构造与应用需要,对系统进行整体物理部署与优化。

很显然,当系统构架被设计完成之后,软件项目就可按每个具有独立工作特征的子系统为单位进行任务分解了,由此可以将一个大的软件项目分解成许多小的软件子项目。

3.软件结构设计

软件结构设计是在系统构架确定以后,对组成系统的各个子系统的结构设计。例如,将子系统进一步分解为诸多功能模块,并考虑如何通过这些模块来构造软件。

软件结构设计主要内容包括:

(1)确定构造子系统的模块元素。

(2)根据软件需求定义每个模块的功能。

(3)定义模块接口与设计模块接口数据结构。

(4)确定模块之间的调用与返回关系。

(5)评估软件结构质量,进行结构优化。

4.公共数据结构设计

概要设计中还需要确定那些将被许多模块共同使用的公共数据的构造。例如,公共变量、

数据文件以及数据库中数据等,可以将这些数据看作为系统的公共数据环境。

对公共数据的设计包括:

(1)公共数据变量的数据结构与作用范围。

(2)输入、输出文件的结构。

(3)数据库中的表结构、视图结构以及数据完整性等。

5.安全性设计

系统安全性设计包括:操作权限管理设计、操作日志管理设计、文件与数据加密设计以及特定功能的操作校验设计等。概要设计需要对以上方面的问题作出专门的说明,并制定出相应的处理规则。

例如操作权限,假如应用系统需要具有权限分级管理的功能,则概要设计就必须对权限分级管理中所涉及的分级层数、权限范围、授权步骤以及用户账号存储方式等,从技术角度作出专门的安排。

6.故障处理设计

软件系统工作过程中难免出现故障,概要设计时需要对各种可能出现的来自于软件、硬件以及网络通信方面的故障作出专门考虑。例如,提供备用设备、设置出错处理模块、设置数据备份模块等。

7.可维护性设计

软件系统在投入使用以后必将面临维护,如改正软件错误、扩充软件功能等。对此,概要设计需要作出专门安排,以方便日后的维护。例如,在软件中设置用于系统检测维护的专用模块;预计今后需要进行功能扩充的模块,并对这些接口进行专门定义。

8.编写文档

概要设计阶段需要编写的文档包括:概要设计说明书、数据库设计说明书、用户操作手册。此外,还应该制定出有关测试的初步计划。

上述文档中,概要设计说明书是概要设计阶段必须产生的基本文档,涉及系统目标、系统构架、软件结构、数据结构、运行控制、出错处理、安全机制等诸多方面的设计说明。

9.概要设计评审

在诸多概要设计任务完成之后,应当组织对概要设计的评审。

概要设计评审内容主要包括:

(1)需求确认:确认所设计的软件是否已覆盖了所有已确定的软件需求。

(2)接口确认:确认该软件的内部接口与外部接口是否已经明确定义。

(3)模块确认:确认所设计的模块是否满足高内聚、低耦合的要求,模块的作用范围是否在其控制范围之内。

(4)风险性:该设计在现有技术条件下和预算范围内是否能按时实现。

(5)实用性:该设计对于需求的解决是否实用。

(6)可维护性:该设计是否考虑了今后的维护。

(7)质量:该设计是否表现出了良好的质量特征。


推荐阅读
  • 本文档提供了详细的MySQL安装步骤,包括解压安装文件、选择安装类型、配置MySQL服务以及设置管理员密码等关键环节,帮助用户顺利完成MySQL的安装。 ... [详细]
  • 本文详细介绍了MySQL表分区的概念、类型及其在实际应用中的实施方法,特别是针对Zabbix数据库的优化策略。 ... [详细]
  • 本文旨在探讨计算机机房的有效管理与维护方法,包括合理的机房布局设计、高效的操作系统安装与恢复技术以及数据保护措施。随着信息技术教育的发展,计算机机房作为教学的重要组成部分,其稳定性和安全性直接影响到教学质量。文章分析了当前机房管理中存在的问题,并提出了针对性的解决方案。 ... [详细]
  • PHP网站部署指南:从零开始搭建PHP网站
    本文提供了详细的步骤指导,帮助开发者在不同环境下成功部署PHP网站,包括在IIS和Apache服务器上的具体操作。 ... [详细]
  • 本文详细介绍如何在Spring Boot项目中集成和使用JPA,涵盖JPA的基本概念、Spring Data JPA的功能以及具体的操作步骤,帮助开发者快速掌握这一强大的持久化技术。 ... [详细]
  • 美国网络安全:MITRE Shield 积极防御知识库解析
    本文深入解析了MITRE Shield积极防御知识库,探讨其在网络安全领域的应用及意义。 ... [详细]
  • J2EE平台集成了多种服务、API和协议,旨在支持基于Web的多层应用开发。本文将详细介绍J2EE平台中的13项关键技术规范,涵盖从数据库连接到事务处理等多个方面。 ... [详细]
  • 深入解析 Zend Guard 4 功能与配置
    本文旨在通过图文并茂的方式详细介绍 Zend Guard 4 的核心功能及其配置方法,特别适合英文阅读能力有限的技术人员。文中不仅提供了详细的步骤说明,还附带了实际操作中的注意事项,帮助读者更好地理解和应用这一工具。 ... [详细]
  • 深入理解Git与GitHub:分支管理与冲突解决
    本文详细探讨了Git中的分支管理技术,包括如何创建、切换和合并分支,以及如何有效解决分支合并时可能遇到的冲突。同时,文章还介绍了Git的基本原理,如哈希算法的应用和文件管理机制。 ... [详细]
  • 本文深入探讨了分布式文件系统的核心概念及其在现代数据存储解决方案中的应用,特别是针对大规模数据处理的需求。文章不仅介绍了多种流行的分布式文件系统和NoSQL数据库,还提供了选择合适系统的指导原则。 ... [详细]
  • WordPress FileManager 插件远程代码执行漏洞通告
    FileManager 是一款流行的 WordPress 文件管理插件。最近的安全更新揭示了该插件在6.9版本之前存在严重的远程代码执行漏洞。本文将详细介绍此漏洞的影响、原因及解决措施。 ... [详细]
  • 本文总结了几个常用的Android开发技巧,包括检测设备上是否安装特定应用、获取应用的版本名称、设置状态栏透明以及如何从一个应用跳转至另一个应用的方法。 ... [详细]
  • 深入解析Spring Boot项目的启动机制
    在Java后端开发中,Spring Boot框架以其简洁性和强大的功能受到了广泛欢迎。本文将探讨Spring Boot项目启动的核心——SpringApplication类及其run()方法的工作原理。 ... [详细]
  • 本文详细介绍了如何在阿里云 ECS 实例上安装和配置 MySQL 数据库,包括安装 MySQL 的 Yum 仓库、解决常见安装问题、启动服务以及设置初始用户权限等步骤。 ... [详细]
  • 解决Xcode PBXcp 错误:找不到文件或目录
    当在Xcode中遇到PBXcp错误提示'No such file or directory'时,通常是由于文件引用问题导致的。本文将介绍两种有效的方法来解决这一常见问题。 ... [详细]
author-avatar
单纯的猪猪zhu
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有