已阅读5页,还剩62页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
智能仪器软件设计 1 智能仪器仪表已不再是简单的硬件实体 而是硬件 软件相结合 软件决定仪器智能高低的新型仪器 2 智能仪器中软件的主要功能 采集信息与外界对话记忆信息处理信息控制功能自我测试自补偿自适应 自校正自学习 3 主要内容 软件设计方法概述基于裸机的软件设计基于操作系统的软件设计软件测试 4 第一节软件设计方法概述 软件的含义 特点 种类软件工程及其开发模式软件开发的三个阶段模块化与结构化程序设计面向对象程序设计 5 一 软件的含义 特点 种类 一 软件的含义软件在计算机系统中的比重越来越大 而且这种趋势还在增长 所以人们感到传统的软件生产方式已不适应发展的需要 于是提出把工程学的基本原理和方法引进到软件设计和生产中 即 软件工程 软件生产也被分成几个阶段 每个阶段都有严格的管理和质量检验 科学家们研制了软件设计和生产的方法与工具 并在设计和生产中用书面文件作为共同遵循的依据 这时软件的含义就成了文档加程序 文档是软件的 质 的部分 程序则是文档代码化的表现形式 6 软件的正确含义应该是 1 当运行时 能够提供所要求功能和性能的指令 Instruction 或计算机程序 Program 集合 2 该程序能够满意地处理信息的数据结构 DataSrtuctures 3 描述程序功能需求以及程序如何操作和使用所要求的文档 Documents 二 软件的特点软件是一个逻辑部件 所以软件具有硬件不同的特点 表现形式不同生产方式不同要求不同维护不同 7 三 软件的种类1 系统软件2 应用软件3 工具软件4 可重用软件 事务软件实时软件工程和科学软件嵌入式软件个人计算机软件人工智能软件 8 应需而生的软件工程 软件工程是一类工程 工程是将理论和知识应用于实践的科学 就软件工程而言 它借鉴了传统工程的原则和方法 以求高效地开发高质量软件 其中应用了计算机科学 数学和管理科学 计算机科学和数学用于构造模型与算法 工程科学用于制定规范 设计范型 评估成本及确定权衡 管理科学用于计划 资源 质量和成本的管理 二 软件工程及其开发模式 采用先进的技术即可以提高软件开发的效率 又可以减少软件维护的成本 9 一 软件工程的四个关键元素 方法 Methods 语言 Languages 工具 Tools 过程 Procedures 1 方法 是提供如何构造软件的技术 包括一组广泛的任务 其中有与项目有关的计算和各种估算 系统和软件需求分析 数据结构设计 程序体系结构 算法过程 编码 测试和维护等 软件工程的方法通常引入多种专用的图形符号 以及一套软件质量的准则 2 语言 用以支持软件的分析 设计和实现 随着编译程序和软件技术的完善 传统的编程语言表述能力更强 更加灵活 而且支持过程实现更加抽象的描述 与此同时 规格说明语言和设计语言也开始有更大的可执行子集 现在还发展了原型开发语言 原型开发语言除必须具有可执行的能力之外 还必须具有规格说明和设计这两种语言的能力 10 3 工具 为方法和语言提供自动化或半自动化的支持 当这些工具集成起来 由一个工具产生的信息可以被另一个工具使用时 就形成了一个支持软件开发的系统 这个系统我们称之为计算机辅助软件工程 Computer AidedSoftwareEngineering 系统 简称CASE CASE把软件 硬件 软件工程数据库 包括分析 设计 编码和测试等重要信息的数据结构 组成一个软件工程环境 Environment 类似与硬件的计算机辅助设计 计算机辅助工程 CAD CAE 4 过程 是粘结剂 Glue 把方法 语言和工具粘结在一起 它能使计算机软件开发理性化和适时化 过程定义了方法使用的顺序 可交付产品 文档 报告以及格式等 的要求 帮助确保质量和变更的控制 使软件管理人员能对它们的进展进行评价 11 软件工程由上面所讨论的一系列方法 语言 工具和过程的步骤所组成 这些步骤通常叫做软件工程模式 Paradigms 软件工程模式是根据项目和应用的性质 方法 语言和工具的使用 控制和可交付产品的要求来选择的 12 软件工程主要环节 13 1 线型模型 二 软件工程开发模式 2 渐增式模型模型 14 3 瀑布式模型 系统需求分析 软件需求分析 设计 编码 调试 维护 可以看到 这种模式的实质是面向阶段的 线性的或传统的开发策略 每个阶段只有当其前一个阶段完成以后才能开始 15 4 原型开发模型 原型开发的主要哲学论点就是允许失败 原型开发方法的目标之一 就是减少维护的工作量 原型开发能够生产出可维护性更高的产品 16 5 螺旋模型 四个象限表示了定义的四个主要活动 计划 风险分析 工程 用户评价 它采用一种软件工程逐步逼近的演化 Evolutionary 方法 是开发人员和用户能了解每一个演化级的风险 并作出反应 螺旋模型要求对项目所有阶段的技术风险进行直接研究 如果应用正确 将减少它们成为问题的风险 17 四代技术 4GT 面向对象生存期模型过程开发模型 混合模型 其它开发模型 18 三 软件开发三阶段 一 定义阶段定义阶段主要是要弄清软件做什么 功能 Functions 性能 Performances 界面 Interfaces 设计限制 DesignConstraints 确认准则 ValidationCriteria 关键需求 KeyRequirements 不管选用哪种软件工程模式 不管软件的应用领域 项目规模或复杂程度如何 软件开发过程都要经过三个典型阶段 即定义 Definition 开发 Development 和维护 Maintenance 三个基本步骤 系统分析软件项目计划需求分析 19 二 开发阶段数据结构 DataStructure 体系结构 Architecture 过程细节 ProceduralDetails 进行测试 Testing 三个具体步骤 软件设计编码测试 三 维护阶段改正 Corretion 适应 Adaptation 提高 Enhancement 20 1 结构化方法 结构化开发方法是由E Yourdon和L L Constantine提出的 即所谓的SASD方法 也可称为面向功能的软件开发方法或面向数据流的软件开发方法 Yourdon方法是80年代使用最广泛的软件开发方法 它首先用结构化分析 SA 对软件进行需求分析 然后用结构化设计 SD 方法进行总体设计 最后是结构化编程 SP 它给出了两类典型的软件结构 变换型和事务型 使软件开发的成功率大大提高 四 模块化与结构化程序设计 一 软件开发方法综述 程序设计通常分为五个步骤 即问题定义 程序设计 编码 调试 改进和再设计 21 2 面向数据结构的软件开发方法 三种基本的结构形式就是顺序 选择和重复 Jackson方法是最典型的面向数据结构的软件开发方法 Jackson方法把问题分解为可由三种基本结构形式表示的各部分的层次结构 三种数据结构可以进行组合 形成复杂的结构体系 这一方法从目标系统的输入 输出数据结构入手 导出程序框架结构 再补充其它细节 就可得到完整的程序结构图 这一方法对输入 输出数据结构明确的中小型系统特别有效 如商业应用中的文件表格处理 该方法也可与其它方法结合 用于模块的详细设计 22 3 面向问题的分析法 80年代末由日立公司提出的一种软件开发方法 它的基本思想是考虑到输入 输出数据结构 指导系统的分解 在系统分析指导下逐步综合 这一方法的具体步骤是 从输入 输出数据结构导出基本处理框 分析这些处理框之间的先后关系 按先后关系逐步综合处理框 直到画出整个系统的PAD图 这一方法本质上是综合的自底向上的方法 但在逐步综合之前已进行了有目的的分解 这个目的就是充分考虑系统的输入 输出数据结构 PAM方法的另一个优点是使用PAD图 这是一种二维树形结构图 是到目前为止最好的详细设计表示方法之一 当然由于在输入 输出数据结构与整个系统之间同样存在着鸿沟 这一方法仍只适用于中小型问题 23 4 原型化方法 能够采用原型化方法是因为开发工具的快速发展 迅速的开发出一个可以让用户看的见 摸的着的系统框架 对于计算机不是很熟悉的用户就可以根据这个样板提出自己的需求 开发原型化系统一般由以下几个阶段 1 确定用户需求 2 开发原始模型 3 征求用户对初始原型的改进意见 4 修改原型 适合于用户需求不清 业务理论不确定 需求经常变化的情况 当系统规模不是很大也不太复杂时采用该方法是比较好的 24 5 面向对象的软件开发方法 这是一种自底向上和自顶向下相结合的方法 而且它以对象建模为基础 从而不仅考虑了输入 输出数据结构 实际上也包含了所有对象的数据结构 彻底实现了PAM没有完全实现的目标 不仅如此 其在需求分析 可维护性和可靠性这三个软件开发的关键环节和质量指标上有了实质性的突破 基本地解决了在这些方面存在的严重问题 25 面向对象系统采用了自底向上的归纳 自顶向下的分解的方法 它通过对对象模型的建立 能够真正建立基于用户的需求 而且系统的可维护性大大改善 当前业界关于面向对象建模的标准是UML UnifiedModelingLanguage 微软的MFC 简单的把系统设计分成三个阶段 概念设计 逻辑设计和物理设计 26 概念设计阶段就是从用户的角度出发可以得到多少个对象 并且以对象为主体 画出业务框架 逻辑设计阶段就是对概念设计阶段的对象进行再分析 细分 整合 删除 并建立各个对象的方法属性以及对象之间的关系 而物理设计实际上就是要确定我们实际需要的组件 服务和采用的框架结构 具体的编程语言等 MFC整个结构比较清楚是基于对象开发的一个比较好的可操作的框架系统 27 6 可视化开发方法 可视化开发使我们把注意力集中在业务逻辑和业务流程上 用户界面可以用可视化工具方便的构成 通过操作界面元素 诸如菜单 按钮 对话框 编辑框 单选框 复选框 列表框和滚动条等 由可视开发工具自动生成应用软件 28 二 模块化程序设计模块化程序设计的出发点是把一个复杂的系统软件 分解为若干个功能模块 每个模块执行单一的功能 并且具有单入口单出口结构 1 自底向上模块化设计2 自顶向下模块化设计上述两种方法各有优缺点 在自底向上开发中 高层模块中的根本错误也许要很晚才能发现 在自顶向下开发中 程序大小和性能往往要开发关键性的低层模块时才会表现出来 29 三 结构化程序设计 三种基本的控制结构是 顺序 选择 循环 结构化程序设计是一种程序设计技术 它采用自顶向下逐步求精的设计方法和单入口和单出口的控制结构 在总体设计阶段采用自顶向下逐步求精的方法 可以把一个复杂问题的解法分解和细化成一个由许多模块组成的层次结构的软件系统 在详细设计或编码阶段采用自顶向下逐步求精的方法 可以把一个模块的功能逐步分解细化为一系列具体的处理步骤或某种高级语言的语句 30 基于裸机的软件设计是指以 空白 的微处理器 控制器为基准 完成全部的软件设计 没有将系统软件和应用软件分开处理 其实时性和可靠性与设计人员水平密切相关 适用于功能较为简单的智能仪器 第二节基于裸机的软件设计 一 设计步骤 一 设计任务书的编写 在设计任务书中填写有关技术指标的具体数据时要非常慎重任务书中除说明系统的各项技术指标外 还应对设备规模作出规定任务书中还应说明操作规范 设计步骤程序流程图与子程序设计系统监控程序设计常用功能模块的设计 编写设计任务书设计硬件任务分析数据类型和数据结构规划资源分配编程调试 31 二 硬件电路设计 1 尽可能采用功能强的芯片 以简化电路 2 留有余地 在设计硬件电路时 要考虑到将来修改 扩展的方便 3 以软代硬 4 监测电路的设计 5 工艺设计 为使硬件设计尽可能合理 应注意以下几方面 32 三 软件任务分析 软件任务分析和硬件电路设计结合进行 哪些功能由硬件完成 哪些任务由软件完成 在硬件电路设计基本定型后 也就基本上决定下来了 软件任务分析环节是为软件设计做一个总体规划 从软件的功能来看可分为两大类 一类是执行软件 它能完成各种实质性的功能 如测量 计算 显示 打印 输出控制 通信等 另一类是监控软件 它是专门用来协调各执行模块与操作者的关系 在系统软件中充当组织调度角色的软件 这两类软件的设计方法各有特色 执行软件的设计偏重算法效率 与硬件关系密切 千变万化 监控软件着眼全局 逻辑严密 33 软件任务分析时 应将各执行模块逐一列出 并为每个执行模块进行功能定义和接口定义 输入 输出定义 各执行模块规划好后 就可以规划监控程序了 软件任务分析的另一个任务是如何安排监控软件和各执行模块 34 汇编语言高级语言 四 数据类型和数据结构规划 五 资源分配 六 编程与调试 七 编程语言与编程环境的选择 35 二 程序流程图与子程序设计 提高软件设计总体效率的有效方法是熟练绘制程序流程图和养成良好的程序设计风格 一 程序流程图 程序流程图与相对应的源程序是等效的 但给人的感受是不同的 1 程序流程图的画法 正确的流程图画法是先粗后细 一步一个脚印 只考虑逻辑结构和算法 不考虑或少考虑具体指令 这样画流程图就可以集中精力考虑程序的结构 从根本上保证程序的合理性和可靠性 剩下来的任务只是进行指令代换 这时只要消除语法错误 一般就能顺利编出源程序 并且很少大返工 36 例 有一数据采集系统 将采集到的一批数据存放在片外RAM中 数据类型为双字节十六进制正整数 存放格式为顺序存放 高字节在前 低地址 低字节在后 高低址 数据块的首址已知 数据总个数 不超过256个 也已知 现在需要设计一个程序 计算下列公式的值 式中 为数据总个数 为某个数据值 为n个数据的平均值 要求最后结果以BCD码百分数表示 并精确到0 1 第一步 先进行最原始的规划 画出第一张程序流程图 这一步看起来简单 但千万不能出错 这一步的错误是属于宏观决策错误 有可能造成整体推倒重来 37 第一张程序流程图 第二步 将第一张流程图的各个子任务进行细化 决定每个子任务采用哪种算法 而暂不考虑如何为数据指针 计数器 中间结果配置存放单元等具体问题 通常第二张流程图已能说明该程序的设计方法和思路 用来向他人解释本程序的设计方法是很适宜的 第一步 先进行最原始的规划 画出第一张程序流程图 这一步看起来简单 但千万不能出错 这一步的错误是属于宏观决策错误 有可能造成整体推倒重来 38 第二张程序流程图 39 第三张流程图以资源分配为策划重点 要为每一个参数 中间结果 各种指针 计数器分配工作单元 定义数据类型和数据结构 设数据块首址在3EH和3FH中 数据总个数在3DH中 在求平均值的子任务中 用R2 R3 R4存放累加和 用DPTR作数据指针 用R7作计数器 R5和R6作机动单元 这样规划后 第三张流程图的求平均值的子程序部分就可以画出来了 与第二张程序流程图相比 每一个量都是具体的 由此来编程就很容易了 40 二 子程序设计 1 参数的使用 子程序在执行过程中 要使用一些数据 主程序如何将这些数据交给子程序呢 基本上可分为三种方法 第一种方法是复制一份参数给子程序 子程序有自己的参数存放单元 主程序将要传递的参数复制到工作寄存器指定的单元中 41 第二种方法是通过指针来传递参数 主程序对指针进行赋值 使它指向要传递的参数存放位置 然后调用子程序 子程序通过指针来使用参数 第三种方法是隐含参数方式 主程序直接调用子程序 要使用的参数已经隐含在子程序之中了 2 算法的合理性和可靠性 42 43 三 系统监控程序设计 一 监控程序的任务系统监控程序是控制系统按预定操作方式运转的程序 它完成人机对话和远程控制等功能 使系统按操作者的意图或遥控命令来完成指定的作业 它是系统程序的框架 44 作业顺序调度型作业优先调度型键码分析作业调度型 二 监控程序的结构 45 四 常用功能模块的设计 自检模块初始化模块时钟模块通信模块信息采集模块数据处理模块控制决策模块显示模块 46 1 程序模块的组织安排 自检和初始化模块时钟模块通信模块监控 显示 信息采集 数据处理 控制决策 输出等模块 2 自检模块 程序代码自检数据存储器自检A D通道自检D A通道自检显示自检蜂鸣器自检 47 外部硬件初始化功能部件初始化堆栈初始化变量初始化软件标志初始化系统时钟初始化数据区初始化 3 初始化模块的设计 48 时钟源定时周期的决定时钟单元的安排时钟的设置与校对系统时钟的使用计时器的使用闹钟的使用 4 时钟模块的设计 49 波特率的设置通信协议 帧结构 的设计通信缓冲区通信过程通信命令的执行 5 通信模块的设计 50 采样周期的选择数字信号的采集模拟信号的采集多路信号的采集随机信号的采集 6 信息采集模块的设计 51 数据格式的选择数据格式的转换数据处理过程 7 数据处理模块的设计 8 控制决策模块的设计 控制决策模块的位置控制决策算法的选择控制决策模块的输出 52 输出信号的缓冲控制异步决策 同步捆绑输出状态输出 9 信号输出模块的设计 10 显示模块的设计 显示输出集中处理显示数据的获取显示内容的刷新 53 第三节基于操作系统的软件设计 嵌入式操作系统嵌入式软件开发方法常用开发工具及开发环境 54 一 嵌入式操作系统 许多简单的嵌入式系统并不需要嵌入式操作系统 如单片机控制 但是 随着嵌入式系统复杂性的增加 操作系统显得越来越重要 因此 必须对复杂的嵌入式软件系统进行合理的控制 一 概述目前 对嵌入式实时操作系统 EmbededReal TimeOperatingSystem 有一下几个方面的要求 实时性系统可剪裁轻量型网络支持功能可扩展 55 二 嵌入式操作系统的分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 厂区工厂合租合同范本
- 合伙办公司签合同范本
- 制冷机组转让合同范本
- 古玩收购出售合同范本
- 卡抵货款合同协议范本
- 古玩网络买卖合同范本
- 代持股合同解除协议书
- 前程照明借款合同范本
- 动车出租租赁合同范本
- 光伏公司个人合同范本
- 湖北中医药大学辅导员考试题库
- 个人车位租赁合同电子版下载
- 麻醉科工作制度汇编
- GB/T 10000-1988中国成年人人体尺寸
- GA/T 452.1-2021居民身份证打印技术规范第1部分:打印质量要求
- 纪委书记政治画像
- 雅思词汇一本全(打印珍藏版)
- 2023统编版高中历史必修中外历史纲要上重点知识点归纳总结(复习必背)
- 高速磁浮大跨度桥梁设计关键技术介绍
- 子宫颈癌课件最新版
- 【教学课件】沪科版数学9上:22.1 第3课时比例的性质和黄金分割参考教学课件
评论
0/150
提交评论