机械系统软件开发心得

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

机械系统软件开发心得在第一章我们通过学习知道了软件是与计算机系统操作有关的计算机程序、规程、规则及相关的文件和数据,软件可分为可执行部分和不可执行部分,可执行部分又包括操作系统(Windows,Unix,DOS等)、语言编译系统(C,Fortran等)、支撑程序(AutoCAD,Ansys等)、应用程序,不可执行部分又包括面向开发者的文档(需求分析规格书,结构图,测试计划等)、面向用户的文档(用户手册、维护手册、用户指南等),计算机软件的发展从程序设计阶段(50年初到60年初),那时的逻辑元件以电子管,体积大,造价高,内存小,速度低为特点,程序语言还是机器语言和汇编语言,非常讲究编程技巧,开发方式是个体生产的方式,然后到程序系统阶段(60年代初到70年代初),这时的逻辑元件有了中小规模集成电路,硬件价格下降,性能提高的特点,程序语言也变成了高级程序设计语言,同时开发方式也变成了计算机软件公司加手工作坊的形式,再到软件工程阶段(70年代中),这时的逻辑元件变为大规模、超大规模集成电路,硬件价格急剧下降,性价比大幅度提高,CPU的速度提高了10的10次幂倍,主机成本每2-3年下降50%,性价比每10年提高一个数量级。程序语言也变成了结构化语言、面向对象语言,开发方式也变成了跨国软件公司加软件工程的形式。随着软件的开发和发展,软件领域也出现了大大小小的问题,主要表现在第一软件的复杂性越来越高,“手工作坊”式的软件开发方式已经无法满足要求,第二软件开发的成本与进度严重估计不足,第三软件开发周期长,第四软件成本在计算机系统总成本中所占的比例逐年上升,第五软件的维护工作量大,第六软件缺乏完整正确的文档资料,第七软件的开发速度远远跟不上计算机应用普及的速度,第八软件产品质量难以保证,第九用户对“已完成的”软件系统极不满意,软件危机产生的根源第一是软件是计算机系统中的逻辑部分,在程序完成之前,是无法掌握进度,无法评价其质量的。因此,管理和控制软件的开发极为困难。第二是软件开发主要涉及两方面的人员:用户和软件开发人员之间的交流时存在着隔阂。第三是开发和管理人员只重视开发而轻视问题的定义。第四是管理技术跟不上。第五是在软件的开发与维护关系问题上存在错误的概念。第六是软件的开发模式仍为“手工作坊”式的开发模式。如何对软件领域进行解救,1968年10月,北约成员国的计算机科学家在德国召开会议,讨论软件的可靠性和软件危机问题,讨论为什么传统的工程例如机械工程、土木工程,不管项目多大,都可以成功完成,而软件项目一大,就不能实现呢?在这次讨论中提出了“软件工程”的思想:把传统工程中的原理、方法和技术用在软件的生产中。软件工程的定义就是指用传统工程的思想和方法来指导软件的生产,它运用了工程的概念、原理、方法、技术来开发和维护软件,把经过时间考验而证明是正确的管理技术和当前能够用到的最好的技术结合起来。软件工程学的研究对象包括软件工程理论、结构、方法、工具、环境、管理、规范,理论和结构是软件开发的基础;方法、工具和开发环境保证了软件开发的效率和成功率;管理技术和规范保证软件能按计划、按要求地开发出所需要的软件。软件工程学的基本目标是研究一套科学的工程方法,设计一套方便实用的工具系统,以达到在软件研制生产中投资少、效率高、质量优的目的,软件工程学的三要素是软件工程方法、软件工程工具和软件工程管理。在第二章我们学习到软件设计中的科学方法,第一抽象方法,第二逐步求精方法,第三模块化方法,模块具有程序代码、内部数据、功能与输入输出。程序代码和内部数据是模块的内部特性,输入输出和功能是模块的外部特性。输入和输出分别是模块需要的和产生的信息,功能是指模块所做的工作,内部数据是仅供该模块使用的数据,模块则用程序代码完成它的功能。所以我们可以得出一个复杂的问题可以通过将其分解为许多容易解决的问题来解决这个结论。第四局部化与信息隐蔽方法,局部化是指把一些有关的、具有特定目的的软件要素放在一起,使程序的一个部分与另一个部分尽量不产生相互牵扯和影响,把所有的相关的信息放在一处。信息隐蔽是指模块将一些具有特定目的的数据及对数据的操作封装起来,使其内部与外界相隔离,模块中所包含的信息对于不需要这些信息的其它模块来说,不允许访问。我们在使用模块时,要考虑到模块独立,模块独立是指一个模块的工作不依赖于另一个模块的存在,模块与模块之间的联系只是不可缺少的必要数据联系,它是抽象、模块化、局部化和信息隐蔽的直接结果。模块独立是非常重要的,首先独立性的模块容易开发出来,由于独立的模块功能单一、接口简单,极易实现多人合作共同开发,这对大型软件的开发尤为重要。其次独立的模块容易测试与维护,由于独立的模块与软件的其它部分联系最少,在各自设计和修改代码时所引起的影响范围小,错误传播的范围小,修改的工作量小,软件容易测试与维护。模块独立程度的衡量,内聚度越高越好,藕合度越低越好。内聚度是指模块内部各个成分之间联系的紧密程度。藕合度是指模块之间互相依赖的程度。在第三章我们可以知道了解一些工程CAD软件的内容,也可以学习一些软件工程学的内容,工程CAD软件又叫做计算机辅助设计,工程CAD软件是一个包含科学计算、图形处理、符号推理、几何造型、动态模拟仿真等多方面知识的复杂的、大型的软件系统,工程CAD软件也与几何图形、拓扑关系、离散数学、计算方法等算法有关,还与工艺技术有关,工程CAD软件在功能模块方面要求有较高的独立性。专业领域工程技术人员需要掌握软件工程学方法,工程CAD系统分析与建模对领域知识结构的要求,决定了CAD软件应该由具有一定的计算机科学知识的专业领域工程师来开发,领域工程师是工程CAD软件维护的主力军。现在目前软件开发模式主要有瀑布模式、渐增型开发模式、快速原型模式、螺旋模式、构件组装模式、转换模式、净室模式、混合模式、目前软件开发的方法多种多样其中最为广泛的就是结构化方法、Jackson方法、功能分解法、面向对象方法,软件质量的评价标准条件是正确性、可靠性、效率、安全性、可用性、可维护性、灵活性或可适应性、连接性,在满足可靠性、可维护性的前提下,追求效率。在第四章我知道了在解决问题之前要去了解这个问题被解决的可能性是多少,去估计解决这个问题要花费的时间和要花费的金钱,首先我们要了解问题的背景,开发系统的现状,开发的理由和条件,开发系统的问题要求、总体要求,问题的性质、类型范围,要实现的目标,功能规模,实现目标的方案,开发的条件,环境的要求等,其次系统分析员要深入现场,去阅读用户的书面报告,听取用户的要求,调查开发的背景理由,还要与用户负责人反复讨论,努力澄清模糊的地方,改正不正确的地方,写出一份双方都满意的问题定义文档,最后确定双方是否可进行下一步,可行性研究的目的用最小的代价在尽可能短的时间内确定问题是否能够解决,是否值得解决,在此同时我们也要考虑技术可行性的问题,技术可行性是指根据用户提出的系统功能、性能及实现系统的各项约束条件,从技术的角度研究系统实现的可行性,而且我们还要考虑社会因素,考察系统的开发是否可能导致违法,软件开发是否会侵占他人、集体或国家的利益,是否违反国家的法律并由此而承担法律责任,如果计算机软件是合作开发的既指两个及以上单位、公民提供物质、技术条件进行的开发,其著作权的享有和行使以事前的书面协议为根据,如无书面协议,其著作权由各合作开发者共同享有,如果计算机软件是委托开发的,那么其著作权的归属由委托者与受委托者签订书面协议约定,如无书面约定,或者在协议中未明确约定的,其著作权属于受委托者,如果是为完成上级单位或者政府部门下达的任务而开发的软件,其著作权的归属由项目任务书或者合同规定;如项目任务书或者合同中未作明确规定,则软件著作权属于接受任务的单位,如果是公民在单位任职期间所开发的软件,如是执行本职工作的结果,即针对本职工作中明确指定的开发目标所开发的,或者是从事本职工作活动所预见的结果或者自然的结果,则该软件的著作权属于单位,如果是公民所开发的软件但不是执行本职工作的结果,并与开发者在单位中从事的工作内容无直接联系,且又未使用单位的物质技术条件,则该软件的著作权归属于开发者自己。可行性研究的步骤第一复查系统的规模和目标、第二研究目前正在使用的系统、第三导出新系统的高层逻辑模型、第四重新定义问题、第五导出和评价供选择的解法、第六推荐行动方针、第七草拟开发计划、第八书写文档提交审查。在第五章我知道了开发一个软件有许多的要求和需求,软件的需求必须要做到第一一致性就是指需求之间不能相互矛盾、第二完整性就是指必须包含用户的每一个需求、第三现实性就是指需求必须是现有软硬件技术可以实现的、第四有效性就是指需求必须经过验证是正确有效的、第五可验证性就是指能验证规定的需求能否满足用户要求,需求分析也要考虑到第一确定软件系统的综合要求、第二分析软件系统的数据要求、第三导出软件系统的逻辑模型、第四修正软件系统开发计划、第五构造原型系统、第六验证软件需求分析的正确性、第七编写软件需求说明书,需求分析的过程需要5步,第一步需要我们去调查研究、第二步要去分析与综合就是指从当前系统的物理模型中抽象出当前系统的逻辑模型,确定输入输出,以数据流图或其它工具表示、第三步要分析当前系统与需求的目标系统的差别,建立更有效的目标系统的逻辑模型,并以图形描述工具表示、第四步对目标系统逻辑模型进行完善和补充,编写软件需求规格书、第五步要需求分析评审。在第六章我知道了编写软件需求规格书的时候要有一套分层的数据流图、一本数据词典和一些补充材料,数据流图(DFD)要有数据流的源点和终点,要有加工同时也要有数据流和文件,数据流的源点是指对系统提供输入数据流的外部实体,数据流的终点是指接收系统输出数据流的外部实体,源点和终点通常是系统之外的人员或组织,所以可画出,也可不画出。画出只是为了帮助理解。加工时加工都要有一个确定的名字来命名,且名字的选取要能够反映加工的全部功能,加工有两种主要的加工方式,第一种是转换数据的结构,对数据重新进行组织,第二种是转换数据中的信息或产生新的信息,数据流是由一组成分固定的数据从一个地方同时流向另一个地方,数据流有一个名字,且名字要包含数据流的全部含义,文件用来存放设计的原始资料或中间结果,就像一个数据仓库一样,文件有一个确定的名字,且名字应能反映数据的内容和性质,便于理解。文件和加工之间的箭头有指向文件、背离文件和双向的三种,指向文件的箭头,表示数据流要写入文件,背离文件的箭头,表示加工要从文件读出数据,双向的箭头,表示加工既要从文件读出数据,又要将加工后的数据再写入文件,画数据流图时是由外向里画系统的顶层数据流图,第一将系统的输入数据和输出数据用一连串的加工连接起来,可以从输入数据流逐步画到输出数据流,也可以从输出数据流逐步追溯到输入数据流,在数据流的值发生变化的地方就是一个加工,第二给各个加工命名并编号,加工的名字应包含该加工的全部功能。如果发现一个加工的命名很困难,意味着数据流图分解不当,可能这个加工中包含着几种不同的功能,此时应考虑重新分解,第三给加工之间的数据命名,加工之间流动的数据有数据流和数据项两大类,数据流的命名要适合于整个数据流,而不能只反映其中的一些成分,如果发现为某个数据流命名困难,这往往也是DFD分解不当的征兆,可以考虑重新分解,第四给文件命名,DFD中应画出有关的文件,给文件命名,并了解有关文件的组成情况,自顶向下逐层分解,绘出分层数据流图,一套数据流图由一张顶层数据流图和若干张分层数据流图组成。数据流图分解的规模反映了软件的大小,在绘图时要考虑到父图和子图,父图是上层数据流图是下层数据流图的父图,子图是下层数据流图是上层数据流图的子图,在画父图和子图时,要考虑到父图和子图的平衡。理想的分解应是将一个问题分解成复杂程度相当的几个部分,即所有的加工抽象程度趋近一致,实际工作中很难做到这点,但一定要有这种意识:尽可能地避免分解极不均匀,如果一张数据流图中,有的加工是非常抽象的,而有的加工则是不可再分具体细节则应考虑重新分解,DFD中所有的成分的命名都应具

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功