软件工程-药学资料-计算机内容摘要:

软件工程-药学资料-计算机 计算机软件开发与应用胡建华2016/11/16计算机教研室胡建华第 1页第 5章 软件工程计算机软件开发与应用胡建华2016/11/16计算机教研室胡建华第 件工程概述1983年 “ 软件工程是开发 、 运行 、维护和修复软件的系统方法 ” , 其中 , “ 软件 ” 的定义为:计算机程序 、 方法 、 规则 、 相关的文档资料以及在计算机上运行时所必需的数据。 后来尽管又有一些人提出了许多更为完善的定义 , 但主要思想都是强调在软件开发过程中需要应用 工程化原则的重要性。 计算机软件开发与应用胡建华2016/11/16计算机教研室胡建华第 3页软件工程包括三个要素: 方法 、 工具 和 过程软件工程方法为软件开发提供了 “ 如何做 ” 的技术。 它包括了多方面的任务 , 如项目计划与估算 、 软件系统需求分析 、 数据结构 、 系统总体结构的设计 、 算法过程的设计 、 编码 、 测试以及维护等。 软件工具为软件工程方法提供了自动的或半自动的软件支撑环境。 目前 , 已经推出了许多软件工具 , 这些软件工具集成起来 ,建立起称之为计算机辅助软件工程 (软件开发支撑系统。 开发机器和一个存放开发过程信息的工程数据库组合起来形成一个软件工程环境。 软件工程的过程则是将软件工程的方法和工具综合起来以达到合理 、 及时地进行计算机软件开发的目的。 过程定义了方法使用的顺序 、 要求交付的文档资料 、 为保证质量和协调变化所需要的管理 、 及软件开发各个阶段完成的里程碑。 计算机软件开发与应用胡建华2016/11/16计算机教研室胡建华第 件的发展和软件危机自 20世纪 40年代中出现了世界上第一台计算机以后 ,就有了程序的概念。 其后经历了几十年的发展 , 计算机软件经历了三个发展阶段:程序设计阶段 , 约为 50至 60年代程序系统阶段 , 约为 60至 70年代软件工程阶段 , 约为 70年代以后几十年来最根本的变化体现在:(1)人们改变了对软件的看法。 (2)软件的需求是软件发展的动力。 (3)软件工作的范围从只考虑程序的编写扩展到涉及整个软件生存周期。 计算机软件开发与应用胡建华2016/11/16计算机教研室胡建华第 5页软件危机在软件技术发展的第二阶段 , 随着计算机硬件技术的进步 , 要求软件能与之相适应。 然而软件技术的进步一直未能满足形势发展提出的要求。 致使问题积累起来 , 形成了日益尖锐的矛盾。 这就导致了软件危机。 问题归结起来有:(1) 缺乏软件开发的经验和有关软件开发数据的积累 ,使得开发工作的计划很难制定。 致使经费预算常常突破 , 进度计划无法遵循 , 开发完成的期限一拖再拖。 (2) 软件需求 , 在开发的初期阶段提得不够明确 , 或是未能得到确切的表达。 开发工作开始后 , 软件人员和用户又未能及时交换意见 , 造成开发后期矛盾的集中暴露。 (3) 开发过程没有统一的 、 公认的方法论和规范指导 , 参加的人员各行其事。 加之设计和实现过程的资料很不完整;或忽视了每个人工作与其他人的接口 , 使得软件很难维护。 (4) 未能在测试阶段充分做好检测工作 , 提交用户的软件质量差 ,在运行中暴露出大量的问题。 如果这些障碍不能突破,进而摆脱困境,软件的发展是没有出路的。 计算机软件开发与应用胡建华2016/11/16计算机教研室胡建华第 件工程过程和软件生存周期许多计算机和软件科学家尝试,把其它工程领域中行之有效的工程学知识运用到软件开发工作中来。 经过不断实践和总结,最后得出一个结论:按工程化的原则和方法组织软件开发工作是有效的,是摆脱软件危机的一个主要出路。 计算机软件开发与应用胡建华2016/11/16计算机教研室胡建华第 7页1 软件工程过程 (件工程过程是为获得软件产品 , 在软件工具支持下由软件工程师完成的一系列软件工程活动。 软件工程过程通常包含四种基本的过程活动:P (: 软件规格说明。 规定软件的功能及其运行的限制;D (: 软件开发。 产生满足规格说明的软件;C (: 软件确认。 确认软件能够完成客户提出的要求;A (: 软件演进。 为满足客户的变更要求 , 软件必须在使用的过程中演进。 事实上 , 软件工程过程是一个软件开发机构针对某一类软件产品为自己规定的工作步骤 , 它应当是科学的 、 合理的 , 否则必将影响到软件产品的质量。 计算机软件开发与应用胡建华2016/11/16计算机教研室胡建华第 8页2软件生存周期 (如同任何事物一样,软件也有一个孕育、诞生、成长、成熟、衰亡的生存过程。 我们称其为计算机软件的生存周期。 根据这一思想,把上述基本的过程活动进一步展开,可以得到软件生存周期的六个步骤。 制定计划需求分析软件设计程序编写软件测试运行维护计算机软件开发与应用胡建华2016/11/16计算机教研室胡建华第 9页3软件生存周期模型软件生存周期模型是从软件项目需求定义直至软件经使用后废弃为止,跨越整个生存周期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。 ( 1)瀑布模型计算机软件开发与应用胡建华2016/11/16计算机教研室胡建华第 10页( 2)演化模型由于在项目开发的初始阶段人们对软件的需求认识常常不够清晰,因而使得开发项目难于做到一次开发成功,出现返工再开发在所难免。 因此,可以先做试验开发,其目标只是在于探索可行性,弄清软件需求;然后在此基础上获得较为满意的软件产品。 通常把第一次得到的试验性产品称为 “ 原型 ”。 计算机软件开发与应用胡建华2016/11/16计算机教研室胡建华第 11页( 3) 螺旋模型计算机软件开发与应用胡建华2016/11/16计算机教研室胡建华第 12页( 4)喷泉模型计算机软件开发与应用胡建华2016/11/16计算机教研室胡建华第 件工程的目标和原则软件工程项目的基本目标组织实施软件工程项目 , 最终希望得到项目的成功。 所谓成功指的是达到以下几个主要的目标:付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发工作 , 及时交付使用。 在具体项目的实际开发中 , 企图让以上几个目标都达到理想的程度往往是非常困难的。 计算机软件开发与应用胡建华2016/11/16计算机教研室胡建华第 14页软件工程的原则以上的软件工程 基本目标适合于所有的软件工程项目。 为达到这些目标 , 在软件开发过程中必须遵循下列软件工程原则。 抽象 : 抽取事物最基本的特性和行为 , 忽略非基本的细节。 采用分层次抽象 , 自顶向下 、 逐层细化的办法控制软件开发过程的复杂性。 信息隐蔽 : 将模块设计成 “ 黑箱 ” , 实现的细节隐藏在模块内部 ,不让模块的使用者直接访问。 这就是信息封装 , 使用与实现分离的原则。 使用者只能通过模块接口访问模块中封装的数据。 模块化 : 模块是程序中逻辑上相对独立的成分 , 是独立的编程单位 , 应有良好的接口定义。 如 C+语言程序中的类。 模块化有助于信息隐蔽和抽象 , 有助于表示复杂的系统。 计算机软件开发与应用胡建华2016/11/16计算机教研室胡建华第 15页局部化 : 要求在一个物理模块内集中逻辑上相互关联的计算机资源 , 保证模块之间具有松散的耦合 , 模块内部具有较强的内聚。 这有助于控制解的复杂性。 确定性 : 软件开发过程中所有概念的表达应是确定的 、 无歧义性的 、 规范的。 这有助于人们之间在交流时不会产生误解 、 遗漏 ,保证整个开发工作协调一致。 一致性 : 整个软件系统 ( 包括程序 、 文档和数据 ) 的各个模块应使用一致的概念 、 符号和术语。 程序内部接口应保持一致。 软件和硬件 、 操作系统的接口应保持一致。 系统规格说明与系统行为应保持一致。 用于形式化规格说明的公理系统应保持一致。 完备性 : 软件系统不丢失任何重要成分 , 可以完全实现系统所要求功能的程度。 为了保证系统的完备性 , 在软件开发和运行过程中需要严格的技术评审。 可验证性 : 开发大型的软件系统需要对系统自顶向下 、 逐层分解。 系统分解应遵循系统易于检查 、 测试 、 评审的原则 , 以确保系统的正确性。 一致性 、 完备性和可验证性的原则可以帮助人们实现一个正确的系统。 计算机软件开发与应用胡建华2016/11/16计算机教研室胡建华第 件需求分析计算机软件开发与应用胡建华2016/11/16计算机教研室胡建华第 件需求分析的目标和任务软件需求分析的目标是深入描述软件的功能和性能,解决目标系统的 “做什么” 的问题。 需求分析阶段研究的对象是软件项目的用户要求。 一方面,必须全面理解用户的各项要求,但 又不能全盘接受所有的要求 ,另一方面,要准确地表达被接受的用户要求。 只有经过确切描述的软件需求才能成为软件设计的基础。 计算机软件开发与应用胡建华2016/11/16计算机教研室胡建华第 求分析的过程需求分析阶段的工作,可以分成以下四个方面:1 问题识别首先系统分析人员要确定对目标系统的综合要求 , 即软件的需求。 并提出这些需求实现条件 , 以及需求应达到的标准。 这些需求包括 功能需求 、 性能需求 、 环境需求 、 可靠性需求 、 安全保密要求 、 用户界面需求 、 资源使用需求 、 软件成本消耗与开发进度需求 , 并预先估计以后系统可能达到的目标。 此外 , 要建立分析所需要的通信途径 , 以保证能顺利地对问题进行分析。 分析所需的通信途径如图 计算机软件开发与应用胡建华2016/11/16计算机教研室胡建华第 19页2分析与综合问题分析和方案的综合是需求分析的第二方面的工作。 分析员必须从信息流和信息结构出发,逐步细化所有的软件功能,找出系统各元素之间的联系、接口特性和设计上的限制,判断是否存在因片面性或短期行为而导致的不合理的用户要求,是否有用户尚未提出的真正有价值的潜在要求。 剔除其不合理的部分,增加其需要部分。 最终综合成系统的解决方案,给出目标系统的 详细逻辑模型。 3 编制需求分析阶段的文档已经确定下来的需求应当得到清晰准确的描述。 通常我们把描述需求的文档叫做软件需求说明书。 同时,为了确切表达用户对软件的输入输出要求,还需要制定数据要求说明书 及编写 初步的用户手册。 4需求分析评审作为需求分析阶段工作的复查手段,应该对功能的正确性、文档的一致性、完备性、准确性和清晰性,以及其它需求给予评价。 为保证软件需求定义的质量,评审应以专门指定的人员负责,并按规程严格进行。 评审结束应有评审负责人的结论意见及签字。 除分析员之外,用户需求者,开发部门的管理者,软件设计、实现、测试的人员都应当参加评审工作。 计算机软件开发与应用胡建华2016/11/16计算机教研室胡建华第 求获取技术获取用户需求的主要方法是1 了解系统的需求。 软件开发常常是系统开发的一部分。 仔细分析研究系统的需求规格说明 , 对软件的需求获取是很有必要的。 2 市场调查。 了解市场对待开发软件有什么样的要求;了解市场上有无与待开发软件类似的系统。 如果有 , 在功能上 、 性能上 、 价格上情况如何。 3 访问用户和用户领域的专家。 把从用户那里得到的信息作为重要的原始资料进行分析;访问用户领域的专。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。