西门子PLC模块CPU226CN中央处理器
的,软件的产品要追求创新,要快速地响应用户的变化。
敏捷开发就是一种有效应对快速变化需求、快速交付高质量软件的迭代和增量的新型开发方法。它强调更紧密地团队协作,关注可工作的软件产品。这是一种基于实践而非理论的开发方法。
敏捷方法强调适应而非预测。由于软件需求很难预测,那么按照预测产生的结果,往往不是用户需要的产品,所以软件开发应该是一个自适应的跟踪过程,通过适应和逼近,*终产生用户满意的产品。
2.3.1 敏捷方法的由来
从20世纪70年代到90年代提出并使用的许多软件开发方法都试图在软件构思、文档化、开发和测试的过程中强加某种形式的严格性。在20世纪90年代后期,一些抵制这种严格性的开发人员系统地阐述了他们的原则,试图强调灵活性在快速有效的软件生产中所发挥的作用。
2001年,这群关注迭代和敏捷方法的人(铸就了“敏捷”这一术语)为寻求共识汇聚一
尽管迭代开发有很多优点,但也不是没有问题。从管理的角度来看,增量方法存在两个问题:
(1)过程不可见。管理者需要通过经常性的可交付文档来把握进度,如果系统开发速度太快,要产生反映系统每个版本的文档就很不划算。
(2)伴随着新的增量的添加,系统结构在逐步退化。除非投入时间和金钱用在重
浔之漫智控技术(上海)有限公司(w)是中国西门子的合作伙伴,公司主要从事工业自动化产品的集成,销售和维修,是全国的自动化设备公司。公司坐落于中国城市上海市,我们真诚的希望在器件的销售和工程项目承接、系统开发上能和贵司开展多方面合作。以下是我司主要代理西门子产品,欢迎您来电来函咨询,我们将为您提供优惠的价格及快捷细致的服务!
构上以改善软件,否则定期的变更会损坏系统的结构。随着时间的推移,越往后变更系统越困难,而且成本也将逐步上升。瀑布开发的主早期迭代过程的思想是螺旋式开发和进化式开发。螺旋模型将瀑布模型与原型法模型结合起来,并且加入风险分析,构成具有特色的模式,弥补了前两种模型的不足。螺旋模型将工程划分为制定计划、风险分析、实施工程、用户评价四个主要活动。这四个活动螺旋式地重复执行,直到*终得到用户认可的产品要不同点。增量式,系统是一次一段地增量构造,与演化式原型的*大区别在于增量式开发是在软件总体设计基础上进行的。很显对于大型系统及软件的开发,螺旋模型是一种很好的方法。开发者和客户能够较好地对待和理解每一个演化级别上的风险。但需要相当的风险分析评估的专门技术,且成功与否依赖于这种技术。很明显,一个大的没有被发现的风险问题,将会导致问题的发生,可能导致演化的方法失去控制。然,增量式对付变化比演化式差。
2.2.3 迭代式开发
在早期的软件开发中,客户愿意为软件系统的*后完成等待很长时间。有时,从编写需求文档到系统交付使用会经过若干年,这段时间称为循环周期(cycle time)。但是,今天的商业环境不会再容许长时间的拖延。软件使产品在市场上引人注目,而客户总是期待着更好的质量和新的功能。
一种缩短循环周期的方法是使用迭代式开发。在这种生命周期方法中,开发被组织成一系列固定的短期(如三个星期)小项目,称为一次迭代(iteration);每次迭代都产生经过测试、集成并可执行的局部系统。每
迭代都包括各自的需求分析、设计、实现和测试活限分明的独立阶段,这些活动以线性的方式顺序执行。这是一种计划驱动的软件过程,有利于规范软件开发活动。
(2)原型法模型主要用于解决需求不确定等问题。原型是一个部分开发的产品,通过原型实现对系统的理解,有助于明确需求和选择可行的设计策略。
(3)迭代式开发是将描述、开发和验证等不同活动交织在一起,通过在开发过程中建立一系列版本,将系统进行逐步的交付和演化,从而实现软件的快速交付。
(4)可转换模型是利用自动化的手段,通过一系列的转换将需求规格说明转化为一个可交付使用的系统。
这些模型相互并不排斥,而且经常一起使用,尤其是对大型系统的开发。对于大型系统,综合瀑布和迭代开发模型的优点是有意义的。系统核心需求的获取以及设计系统的软件体系结构以支持需求,这些是不能迭代式开发的。在更大的系统中,子系统的开发可以使用不同的开发方法。对于那些理解得很好的系统部分可以用基于瀑布模型的过程来描述与开发;而对于那些很难提取描述清楚的系统部分,如用户界面,就总是会用迭代式开发方法。
再次,在项目实施过程中,要检查和评价项目的总体进展情况。
*后,控制整个项目范围的变更,监控项目进展过程中出现的问题,并及时地纠正这些问题
(2)软件配置管理
是通过版本的控制、变更的控制并使用合适的配置管理软件,来保证整个开发过程的所有产品配置项(例如代码、文档等)的完整性和可跟踪性。它主要包括四个基本活动。
① 版本管理是跟踪系统中每一个组件的多个版本,来保证开发者对组件的修改不会产生混乱。
② 系统的构建是把不同的组件进行编译、链接,组成了一个可执行的系统。
③ 变更管理是对开发过程中来自用户和开发者的开发请求进行分析和评估,做出适当的决策,决定是否变更和何时变更。
④ 当整个开发完成之后,发布版本管理。需要准备发布的软件,并对用户使用的软件进行持续的跟踪。
在设计完成之后,还需要通过编码活动把设计转换成为程序代码。这就要求程序员根据目标系统的性质和实际环境,选取一种适当的程序设计语言,把详细设计的结果翻译成用选定的语言书写的程序,并且仔细测试编写出的每一个模块。因此程序员需在理解系统模型的基础上编写代码,进行代码的审查和单元的测试。此外,还要进行代码优化,*终要构建系统并且集成连接。这是