西门子KTP600控制面板
档的不规范、不健全是造成软件开发的进度、成本不可控制和软件的维护、管理困难的重要原因。
软件危机实际上是软件开发与维护中存在的具有共性的种种问题的汇总。近40年来,为解决这些问题,计算机科学家和软件产业从业者已经做出了巨大的努力。
软件危机产生的原因可以从两个方面加以认识,一是软件产品的固有特性;二是软件专业人员自身的缺陷。
软件的不可预见性是软件产品的固有特点之一。与硬件产品不同,软件是计算机系统中的逻辑部件。在程序代码运行之前,开发工作的质量、进度难以度量。软件产品*终的使用价值是在软件运行过程中体现出来的。软件产品的故障隐蔽性强,可靠性难以度量,对原有故障的修改可能导致新的错误。
软件产品的固有特点之二是软件的规模较大并且逻辑较复杂。现代的软件产品往往规模庞大,功能多种多样、逻辑结构十分复杂。从软件开发管理的角度看,软件生产率常随软件规模和复杂性的增加而下降。就目前的软件技术水平而言,软件开发的工作量随软件规模的增大而呈几何级数上升。
来自于软件开发人员的弱点主要是,软件产品是人的思维结果,因此软件生产水平*终在相当程度上取决于软件人员的教育、训练和经验的积累;对于大型软件往往需要许多人合作开发,甚至要求软件开发人员深入应用领域的问题研究,这
难免发生理解的差异,从而导致后续错误的设计或实现,而要消除这些误解和错误往往需要付出巨大的代价;另外,由于计算机技术和应用发展迅速,知识更新周期加快,软件开发人员经常处在变化之中,不仅需要适应硬件更新的变化,而且还要涉及日益扩大的应用领域问题研究,软件开发人员所进行的每一项软件开发几乎都必须调整自身的知识结构以适应新的问题求解的需要。
为了解决软件危机,既要有技术措施,又开始,经过开发、测试、使用和维护,直到*后退出使用的全过程称为软件生存周期。软件工程采用的生存周期方法,对软件产品的质量保障以及组织好软件开发工具有重要意义。首先,由于能够把整个开发工作明确地划分成若干个开发步骤,这样就能把复杂的问题按阶段分别加以解决,使得对问题的认识与分析、解决的方案与采用的方法以及如何具体实现等工作在各个阶段都有着明确的目标。其次,把软件开发划分成阶段,就为中间产品提供了检验的依据。一般软件生存周期包括问题的定义、软件开发、软件测试、软件使用与维护等几个阶段。1. 问题的定义
问题的定义可分为软件系统的可行性研究和需求分析两个阶段,其基本任务是确定软件系统的工程需求。
可行性研究的任务是了解用户的要求及实现环境,从技术、经济和社会等几个方面研究并论证软件
现环境作详细的调查,并在调查研究的基础上撰写调查报告,然后根据调查报告及其他相关资料进行可行性论证。可行性论证一般包括技术可行性、操作可行性和经济可行性3个部分。在可行性论证的基础上制定初步的项目开发计划,大致确定软件系统开发所用的时间、资金和人力。
需求分析的任务是确定所要开发软件的功能需求、性能需求和运行环境约束,编制软件需求规格说明书、软件系统的确认测试准则。软件的功能需求应给出软件必须完成的功能,软件的性能需求包括软件的适应性、安全性、可靠性、可维护性、错误处理等,软件系统在运行环境方面的约束是指所开发的软件系统必须满足的运行环境方面的要求。软件需求不仅是软件开发的依据,也是软件验收的标准。因此,确定软件需求是软件开发的关键和难点,确定软件需求通常需要开发人员与用户多次反复沟通、讨论才能确认,完成需求分析工作是一项十分艰巨的任如计算机硬、软件、人力等)、成本、可取得的效益和开发的进度作出估计;制定完成开发任务的实施计划。
需求分析是指收集产品的需求,对开发的软件进行详细的定义,由软件人员和用户共同讨论决定哪些需求是可以满足的,并且给予确切的描述;写出软件需求规格说明书等文档,提交管理机构审查。
设计是软件过程的技术核心。在的反馈意见纠正过去交互中的误解和分析中的错误,增补新的要求,并针对因环境变化或用户的新设想而引起系统需求的变动提出全面的修改意见。大多数原型系统中不合适的部分可以修正,修正后就成为新模型
软件的性能达到用户需求为止,因而快速原型过程模型能帮助开发人员快速完成所需要的目标系统。
快速原型过程模型的主要优点在于它是一种支持用户的方法,它使用户在系统生存周期的设计阶段起到积极的作用,并能减少系统开发的风险。特别是在大型项目的开发中,由于对项目的需求分析难以一次完成,应用快速原型过程模型效果更为明显。5. 敏捷过程模型
是一种逐渐引起广泛关注的一些新型软件开发方法,由于其具有动态性且很容易适应环境。敏捷软件过程模型是一种迭代式增量软件开发过程。敏捷开发方法是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
敏捷软件开发是一个用来替代以文件驱动开发的瀑布开发模式。瀑布模型式是*典型的预见性的方法,严格遵循预先计划的需求、分析、设计、编码、测试的步骤顺序进行。步骤成果作为衡量进度的方法,例如需求规格,设计文档,测试计划和代码审阅等。瀑布式的主要的问题是它的严格分级导致的自由度降低,项目早期即作出的分析导致对后期需求的变化难以调整,代价高昂。瀑布式方法在需求不明并且在项目进行过程中可能变化的情况下基本是不可行的。
相对来讲,敏捷方法则在几周或者几个月的时间内完成相对较小的功能,强调的是能将尽早将尽量小的可用的功能交付使用,并在整个项目周期中持续改善和增强。