软件系统设计步骤与原理

2023-11-05

软件系统设计步骤与原理

在系统分析阶段,我们已经搞清楚了系统做什么的问题,其中最主要的是需求分析(确定用户需求、功能需求、系统性能、系统安全等方面的需求)、数据流图(可以确定数据需求与转换过程);那么在系统设计阶段,就是着手实现需求的过程,即解决怎么做的问题。


1 软件系统设计内容和步骤

软件系统设计的主要内容包括新系统总体结构设计代码设计输出设计输入设计处理过程设计数据存储设计用户界面设计安全控制设计等。系统设计的基本任务大体上可以分为概要设计详细设计两个步骤。

1.1 概设计的基本任务

  • 设计软件系统总体结构

    其基本任务是采用某种设计方法,将一个复杂的系统按功能划分成模块;确定每个模块的
    功能
    :确定模块之间的调用关系;确定模块之间的接口,即模块之间传递的信息;评价模块结
    构的质量。软件系统总体结构的设计是概要设计关键的一步,直接影响到下一个阶段详细设计与编码
    的工作。软件系统的质量及一些整体特性都在软件系统总体结构的设计中决定。

  • 数据结构及数据库设计

    1)数据结构的设计。逐步细化的方法也适用于数据结构的设计。在需求分析阶段,已经通过数据字典对数据的组成、操作约束和数据之间的关系等方面进行了描述,确定了数据的结构特性,在概要设计阶段要加以细化,详细设计阶段则规定具体的实现细节。在概要设计阶段宜使用抽象的数据类型。

    2)数据库的设计。数据库的设计是指数据存储文件的设计,主要进行以下几方面设计:
    概念设计。在数据分析的基础上,采用自底向上的方法从用户角度进行视图设计,一般用ER模型来表述数据模型。ER模型既是设计数据库的基础,也是设计数据结构的基础。
    逻辑设计。ER模型是独立于数据库管理系统(DBMS)的,要结合具体的DBMS特征来建立数据库的逻辑结构。
    物理设计。对于不同的DBMS,物理环境不同,提供的存储结构与存取方法各不相同。物理设计就是设计数据模式的一些物理细节,如数据项存储要求、存取方法和索引的建立等。

    3)编写概要设计文档
    文档主要有概要设计说明书、数据库设计说明书、用户手册以及修订测试计划。

    4)评审
    对设计部分是否完整地实现了需求中规定的功能、性能等要求,设计方法的可行性,关键
    的处理及内外部接口定义的正确性、有效性、各部分之间的一致性等都一一进行评审,

1.2 详细设计的基本任务

详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统,也就是说,经过这个
阶段的设计工作,应该得出对目标系统的精确描述。详细设计阶段的任务不是具体地编写程序,而是要设计出程序的“蓝图”,以后根据这个蓝图写出实际的程序代码。详细设计阶段的主要任务有:

  • 每个模块进行详细的算法设计。用某种图形、表格和语言等工具将每个模块处理过程的详细算法描述出来。
  • 模块内数据结构进行设计
  • 数据库进行物理设计,即确定数据库的物理结构。
  • 其他设计。根据软件系统的类型,还可能要进行以下设计:

    代码设计
    代码是用来表征客观事物的一组有序的符号,以便于计算机和人工识别与处理。为了提
    高数据的输入、分类、存储和检索等操作,节约内存空间,对数据库中某些数据项的值要进
    行代码设计。代码设计的原则是:唯一性、合理性、可扩充性、简单性、适用性、规范性和
    系统性。
    输入输出设计
    用户界面设计

  • 编写详细设计说明书。
  • 评审

    对处理过程的算法和数据库的物理结构都要评审。
    系统设计的结果是一系列的系统设计文件,这些文件是物理实现一个信息系统(包括硬件
    设备和编制软件程序)的重要基础。


2 软件系统设计的基本原理

2.1 抽象

抽象是一种设计技术,重点说明一个实体的本质方面,而忽略或者掩盖不很重要或非本质的方面。抽象是一种重要的工具,用来将复杂的现象简化到可以分析、实验或者可以理解的程度。软件工程中从软件定义到软件开发要经历多个阶段,在这个过程中每前进一步都可看作是对软件解法的抽象层次的一次细化。抽象的最低层就是实现该软件的源程序代码。在进行模块化设计时也可以有多个抽象层次,①最高抽象层次的模块用概括的方式叙述问题的解法,②较低抽象层次的模块是对较高抽象层次模块对问题解法描述的细化。

2.2 模块化

模块在程序中是数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素,如高级语言中的过程、函数和子程序等。在软件的体系结构中,模块是可组合、分解和更换的单元。模块化是指将一个待开发的软件分解成若干个小的简单部分一模块,每个模块可独立地开发、测试,最后组装成完整的程序。这是一种复杂问题“分而治之”的原则。模块化的目的是使程序的结构清晰,容易阅读、理解、测试和修改。

2.3 信息隐蔽

信息隐蔽是开发整体程序结构时使用的法则,即将每个程序的成分隐蔽或封装在一个单一的设计模块中,定义每一个模块时尽可能少地显露其内部的处理。在设计时首先列出一些可能发生变化的因素,在划分模块时将一个可能发生变化的因素隐蔽在某个模块的内部,使其他模块与这个因素无关。在这个因素发生变化时,只需修改含有这个因素的模块,而与其他模块无关。信息隐蔽原则对提高软件的可修改性、可测试性和可移植性都有重要的作用。

2.4 模块独立

模块独立是指每个模块完成一个相对独立的特定子功能,并且与其他模块之间的联系简
单。衡量模块独立程度的标准有两个:耦合性内聚性

  • 耦合

    耦合性是指模块之间联系的紧密程度耦合性越高,则模块的独立性越差模块间耦合的
    高低取决于模块间接口的复杂性、调用的方式及传递的信息
    。模块的耦合有以下几种类型:
    (1)无直接耦合:指两个模块间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息。因此,模块间耦合性最弱,模块独立性最高。
    (2)数据耦合:指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中的值传递。这种耦合程度较低,模块的独立性较高。
    (3)标记耦合:指两个模块之间传递的是数据结构,如高级语言中的数据组名、记录名、文件名等这些名字即为标记,其实传递的是这个数据结构的地址。
    (4)控制耦合:指一个模块调用另一个模块时,传递的是控制变量,被调模块通过该控制
    变量的值有选择地执行块内的某一功能。
    (5)公共耦合:指通过一个公共数据环境相互作用的那些模块之间的耦合。
    (6)内容耦合:这是程度最高的耦合。当一个模块直接使用另一个模块的内部数据,或通
    过非正常入口而转入另一个模块内部,这种模块之间的耦合为内容耦合,这种情况往往出现在
    汇编程序设计中。

  • 内聚

    内聚是指模块内部各元素之间联系的紧密程度,例如一个完成多个功能的模块的内聚度就
    比完成单一功能的模块的内聚度低。内聚度越低,模块的独立性越差。内聚性有以下几种类型:
    (1)偶然内聚:指一个模块内的各个处理元素之间没有任何联系
    (2)逻辑内聚:指模块内执行几个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。
    (3)时间内聚:把需要同时执行的动作组合在一起形成的模块为时间内聚模块。
    (4)通信内聚:指模块内所有处理元素都在同一个数据结构上操作,或者指各处理使用相同的输入数据或者产生相同的输出数据。
    (5)顺序内聚:指一个模块中各个处理元素都密切相关于同一功能且必须顺序执行,前一
    功能元素的输出就是下一功能元素的输入。
    (6)功能内聚:这是最强的内聚,指模块内所有元素共同完成一个功能,缺一不可。
    耦合性和内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚、
    低耦合,提高模块的独立性


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件系统设计步骤与原理 的相关文章

  • 项目安全问题-SM4加解密

    本篇建议与下方链接文章一起观看 http t csdn cn tjmeS 项目安全问题一直被人们研究 当前端路径上通过 status这种拼接参数时 参数的值在浏览器路径栏上非常醒目 是很容易被人恶意修改的 比如该用户并没有编辑权限 但有心之
  • java枚举的集中管理

    java枚举的集中管理 一 产品中遇到的实际情况 枚举类泛滥 这个 这个 这个 这个 在 JDK 1 5 之前没有枚举类型 那时候一般用接口常量来替代 而使用 Java 枚举类型 enum 可以更贴近地表示这种常量 但是在项目中 就变成这样
  • 应用 POI 解析 Excel 表格并批量上传到数据库

    在日常生活中 我们时常会遇到添加用户之类的操作 但是这类操作 只能一位一位的添加 遇到向我这种强迫症晚期患者 会被烦死 那么应用 POI 解析含有用户信息的 EXCEL 表格会省很多时间 本文针对解析 EXCEL 表格以及将表格上的内容批量
  • 设计模式之UML详解

    文章目录 1 什么是UML 2 UML图之类图 2 1 类 Class 2 2 接口 Interface 2 3 类图中关系 relation 1 泛化 继承 Generalization 2 实现 Realization 4 聚合 Agg
  • 完全详解权限系统设计方案

    1 为什么需要权限管理 日常工作中权限的问题时时刻刻伴随着我们 程序员新入职一家公司需要找人开通各种权限 比如网络连接的权限 编码下载提交的权限 监控平台登录的权限 运营平台查数据的权限等等 在很多时候我们会觉得这么多繁杂的申请给工作带来不
  • No.7软件需求规格说明书及UML

    软件需求规格说明书 SRS 是需求开发活动的产物 编制该文档的目的是使项目干系人与开发团队对系统的初始规定有一个共同的理解 使之成为整个开发工作的基础 软件需求规格说明书 国家标准BG T 8567 2006中 提供了SRS的文档模版和编写
  • 旅游攻略APP外包开发功能

    旅游攻略APP是帮助旅行者计划和享受旅行的工具 下面列出了一些常见的旅游攻略APP功能 以及在上线这类应用时需要注意的问题 希望对大家有所帮助 北京木奇移动技术有限公司 专业的软件外包开发公司 欢迎交流合作 常见功能 目的地信息 提供有关各
  • 17 需求分析是什么?怎么分析?

    什么是需求分析 需求分析就是一个将用户需求变成产品需求的过程 怎么做需求分析 软件项目的用户需求分析过程不是一成不变的 是迭代进行的 如下所示 收集需求 对用户需求进行进行收集整理 分析需求 对需求进行分析 挖掘用户真实需求 需求评估 筛选
  • [需求管理-9]:需求规格说明书SRS

    目录 第1章 需求规格说明书概述 1 1 什么软件项目需求规格说明书 1 2 需要规格说明书在项目中阶段 1 3 需要规格说明书的作用 1 4 主要特点 1 5 衡量标准 1 7 评审注意事项 第2章 需要规格说明书的格式与主要内容 1 引
  • 升级log4j2遇到的那些坑

    升级log4j2遇到的那些坑
  • 【事业单位笔试】zrzyb信息中心-社会招聘-笔试记录

    写在前面的话 虽然说本人在21年校招时有北京银行 农银金科 中信银行研发 京东发 邮储银行 中软 郑州铁路局等的offer 奈何个人原因还是选择了有北京户口的现在的工作单位 虽然只有两年 但也是时候准备考虑一下今后的发展了 感谢大家支持 我
  • 需求分析师如何提高核心竞争力

    本文就自身的工作经历及经验 提出几点如何提高需求分析师的核心竞争力建议 欢迎各位在评论区补充 一 硬实力 业务能力 了解所在行业的基本业务流程 公用模块的设计思路 新模块的设计思维模式 文笔能力 包括PPT材料汇报 PPT立项材料 PPT结
  • 初探支付对账

    大家好 我是老三 好久不见 最近比较忙碌 状态也不是太好 很久没有输出 最近在做对账系统的调研和设计 给大家分享一些对账系统的知识 什么是对账 有个男人叫小帅 娶了个老婆 叫小美 早上 小美给小帅二十块钱买早餐 小帅买了包子 油条 豆浆回来
  • [架构之路-213]- 架构 - 架构设计过程快速概览与在线画图工具

    目录 第一步 业务系统 1 收集目标系统的用户需求 2 定义用例图 第二步 领域建模 1 业务流程定义 2 业务功能分解 3 非功能性架构 支撑架构 第三步 高层架构设计 1 应用展现层 2 业务功能层 3 框架支撑层 第四部 详解架构设计
  • 带你认识一下“京东到家-网关系统”

    京东到家三周年活动已然结束 在这2年里 我们的网关系统经历过了618 1020 双11 双12 415等多个非常有意义的考试 回顾起来依旧让人觉得很刺激 每次考前我们和市场部都做了大量的效果预估 压测 扩容 但是活动当日依旧是惊心动魄 瞬时
  • 如何做好一个BI项目的规划和需求定义?

    正所谓磨刀不误砍柴工 一个项目的启动 先得从金字塔顶端做好规划 摸清楚需求 背景 客观条件 可投入资源等 本文 BI项目详解的第一篇 先来谈谈BI项目的规划和需求定义 全文共3000字 读完需要 8分钟 一 如何启动一个BI项目 Q 一个项
  • 电子科技大学软件工程期末复习笔记(三):需求分析

    目录 前言 重点一览 需求分析 需求的定义 需求的特性 功能性需求与非功能性需求 需求分析的四个步骤 结构化需求分析方法 结构化需求分析建模的核心 围绕该核心建立的三种图 绘制数据流图 重点 绘制数据流图实例 面向对象分析 面向对象分析的三
  • 2-软件生命周期模型

    软件生命周期模型 软件工程过程 工程项目的PDCA循环 戴明环 美国质量管理专家戴明博士针对工程项目的质量目标 将全面质量管理思想引入工程项目过程 提出了PDCA循环 也称为戴明环 即Plan 规划 Do 执行 Check 检查 Actio
  • 软工导论知识框架(二)结构化的需求分析

    本章节涉及很多重要图表的制作 如ER图 数据流图 状态转换图 数据字典的书写等 对初学者来说比较生僻 本贴只介绍基础的轮廓 后面会有单独的帖子详解各图表如何绘制 一 结构化的软件开发方法 结构化的分析 设计 实现 二 需求分析的重要性 1
  • 如果你找不到东西,请先确保你在正确的地方寻找

    之前我们在几篇文章中描述了如何进行 思想 调试 今天的文章我将不会这样做 因为下面的编程错误大部分人都会遇到 如果你看一眼下面的代码 你不会发现有什么问题 这仅仅是因为你的的大脑只给你希望看到的 而不是那些真实存在的东西 有没有一种黑客帝国

随机推荐

  • 【 PMU】信号生成、采样、分割、估计器应用和误差计算(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 PMU 信号生成 采样 分割 估计器应用和
  • 一个简单的虹膜定位程序

    一个简单的虹膜定位实现 虹膜定位程序 clear close all I imread ip1 jpg f rgb2gray I imhist f 求图像的直方图 F Size M F Size N size f 获取f的行和列 T 84
  • Java驱动方式JDBC连接SQL Server

    Java驱动方式JDBC连接SQL Server 第一步 下载微软官方的SQL Server JDBC 驱动程序 6 0 https www microsoft com zh CN download details aspx id 1177
  • 设顺序表va中的数据元素递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性

    设顺序表va中的数据元素递增有序 试写一算法 将x插入到顺序表的适当位置上 以保持该表的有序性 先建立一个待插入的结点 然后依次与与链表中的各结点的数据域比较大小 找到插入该结点的位置 最后插入该结点 算法如下 include
  • 遇到的debug整理20190107

    已解决 最后的链结失败 错误的值 RT0 o relocation R X86 64 PC32 against symbol phgTetFaceVertexi can not be used when making a shared ob
  • Java学习笔记-多线程

    4 5 多线程 线程与进程 进程 是指一个内存中运行的应用程序 每个进程都有一个独立的内存空间 线程 是进程中的一个执行路径 共享一个内存空间 线程之间可以自由切换 并发执行 一个进程最少有一个线程 线程实际上是进程基础之上的进一步划分 一
  • 【算法】回溯

    子集树 include
  • C++ 指向类成员函数的指针

    记录两种可以间接调用类成员函数的方法 一种是直接使用函数指针 另一种使用C 11的function模板配合bind函数实现对固定类对象的成员函数调用 定义类 新建类的对象 class Cfun public void fun int x c
  • 【Matlab】 读取文件各种方法

    本技术支持指南主要处理 ASCII binary and MAT files 要得到MATLAB中可用来读写各种文件格式的完全函数列表 可以键入以下命令 help iofunMATLAB中有两种文件I O程序 high level and
  • 五分钟了解机器学习十大算法

    作者 Fahim ul Haq 译者 刘志勇 策划 赵钰莹 编辑 程序员大白公众号 仅作学术交流 如有侵权 请联系删文 本文为有志于成为数据科学家或对此感兴趣的读者们介绍最流行的机器学习算法 机器学习是该行业的一个创新且重要的领域 我们为机
  • 关于安装第三方包:dpkg: 处理软件包 redis-server (--configure)时出错:----说是redis-server未配置等原因,导致无法安装成功---bug

    在使用memcached 安装时报的redis错误 tarena tarena sudo apt get install memcached sudo tarena 的密码 正在读取软件包列表 完成 正在分析软件包的依赖关系树 正在读取状态
  • 这才是真正的技术,从0到高手的进阶!

    很多人以为学会了urlib模块和xpath等几个解析库 学了Selenium就会算精通爬虫了 但到外面想靠爬虫技术接点私活 才发现寸步难行 今天就告诉你 真正的爬虫高手应该学哪些东西 就算你毫无基础 你也能知道应该怎么去学习 话不多说 我们
  • 【Excel自动化办公Part6】:插入图片、插入柱状图、插入条形图

    目录 一 插入图片 二 插入柱状图 三 插入条形图 一 插入图片 sheet add image 创建的对象 单元格 导入模块 from openpy drawing image import Image 例 将一张云中君的皮肤图片插入到表
  • 部署zabbix分布式监控

    使用zabbix部署分布式监控 一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案 zabbix能监视各种网络参数 保证服务器系统的安全运营 并提供灵活的通知机制以让系统管理员快速定位 解决存在的各种问题 zabb
  • 特征选择 (feature_selection)

    当数据预处理完成后 我们需要选择有意义的特征输入机器学习的算法和模型进行训练 通常来说 从两个方面考虑来选择特征 特征是否发散 如果一个特征不发散 例如方差接近于0 也就是说样本在这个特征上基本上没有差异 这个特征对于样本的区分并没有什么用
  • 各种开源协议

    出处 http www open open com solution view 1319816219625 现今存在的开源协议很多 而经过Open Source Initiative组织通过批准的开源协议目前有58种 http www op
  • 一阶导数/微分和二阶导数/微分算子在图像锐化处理方面的区别

    在仔细思考一阶导数 微分和二阶导数 微分算子在图像锐化处理方面的结果数值区别后 可以得到一阶导数 微分和二阶导数 微分算子对图像处理的区别 斜坡面上 灰度线性增加 因灰度持续增加因此一阶导数一直不为0 二阶导数只有终点和起点不为0 一阶导数
  • 火到爆的扩散模型(Diffusion Model)帮你具象化幻想世界

    Diffusion Model 如果你对人工智能有所了解 想必已经听说过Diffusion Model了 如果还没有 那就一起来了解一下吧 扩散 Diffusion 对于人能智能而言 是一个借用的概念 在热力学中 它指细小颗粒从高密度区域扩
  • 共享虚拟机(VM)教程

    vmware提供的共享虚拟机服务 我搜索了一下基本没有教程教你怎么用和注意事项的 所以我摸索了做了一个 仅供参考 1 VM共享虚拟机是什么 VMware共享虚拟机是基于局域网的云虚拟化操作系统 不是指虚拟机和主机共享文件网络 2 VM共享虚
  • 软件系统设计步骤与原理

    软件系统设计步骤与原理 在系统分析阶段 我们已经搞清楚了系统做什么的问题 其中最主要的是需求分析 确定用户需求 功能需求 系统性能 系统安全等方面的需求 数据流图 可以确定数据需求与转换过程 那么在系统设计阶段 就是着手实现需求的过程 即解