Software life cycle development methodology based on

Disclaimer: This article is a blogger original article, follow the CC 4.0 BY-SA copyright agreement, reproduced, please attach the original source link and this statement.
This link: https://blog.csdn.net/qq_30996881/article/details/102752391

Software life cycle development methodology based on

Early software development in a disordered state, after experiencing software crisis, began to use systems engineering methodology to guide the development, according to the software development life cycle of the entire development plan for the five stages ( planning phase, analysis phase, design phase, implementation phase, operation and maintenance phase ), a clear mandate of each stage, reflecting the outcome of the task. Initially they have carried out the task of developing the project in accordance with the order of these stages pass. Later, as companies demand more and more complex and flexible, and more powerful development tools, there are many different variants of the development process of the project based on the life cycle, which have shown various development methods, which come in different development process model completion of the development activities.

Development Method

  1. Waterfall development methodology
  2. Prototyping method
  3. Iterative development methods
  4. Spiral development methodology
  5. Agile development methods

1. waterfall development methodology

This is a development mode before the 1980s, has been used in strict accordance with the development stage of the life cycle, the entire development process looks like, like a waterfall, steadily downward turn through these stages. Each stage has a beginning point and an end point, once it reaches the next stage, usually not allowed to go back on stage, as the same waterfall will not be back up.

Here Insert Picture Description

This method seems simple, too idealistic. Among the biggest feature is the stage of strict order and dependence, only the previous phase is completed before the start of a stage, the previous stage of the output document is the input document later stage. Waterfall method is simple, easy to understand, easy to operate, it forces developers to follow a disciplined approach to eliminate the randomness of program development and completion of each stage of the document will be scrutinized to ensure the quality of the program to some extent, but this ways must be strictly defined or clear user needs, identify and solve problems at an early stage, so if any one part of a problem that would delay all the links back, no initial prototype visible to wait until late in the development cycle to see the program run version, then if significant problems are discovered, then the consequences are disastrous.

Advantages and disadvantages:

1. strictly a software development project is divided into various development phases: requirements analysis, requirements definition, basic design, detailed design, coding, unit testing, combined with testing, system testing.

2. Use the milestone of the way, strictly defines the input and output of each stage of development. If the output is mainly the work of the next phase will not start.

3. attention and emphasis on process documentation, in the late development of prototype software will see, get up early to understand the system can only look through the document. In this case, the importance of the document seems to have exceeded the importance of the code.

4. The waterfall model each stage of development are defined as a black box, hoping each stage of the personnel concerned only with their own stage work, do not need to follow the work of the other phases.

1. Since the various stages developers only have access to what within the scope of their work, so the understanding of customer needs ranging from the level, the developer is more like defined as workers on the assembly line.

2. For customers' needs change, coders will have a strong resentment is easier than designers.

3. At each stage of development will have some information deliberately let people know that other development stages (intention is to mention efficiency, but in fact is sometimes generated mutual understanding deviation).

4. Each stage staff to communicate less, difficult to achieve the perfect development process.

The man is impossible not to make mistakes, in full accordance with the ideal of a top-down cascade method is almost impossible, it will cause a forced flow back, causing more problems and delays.

2. prototyping methods

Not all needs can accurately describe the beginning of the redevelopment, by observation and experience program will eliminate the need be made in advance, and put forward new demands, this situation will occur very frequently at work, this repeatedly it is inevitable and necessary.

Prototyping in the mid-1980s. The basic idea is this: before you invest a lot of manpower, material resources, in a limited time, to construct a prototype system using the most economical way, so that people can see an overview of the future system as soon as possible, then everyone together to discuss and found the problems, propose amendments to continuously improve the prototype , made him meet our requirements.

Here Insert Picture Description

Advantages and disadvantages:
  1. Enhance communication between users and developers, inspiration and discover the real needs of users, people can "see", "tangible", it is clear their feedback to developers or analysts.
  2. Since the user in the system development process leading role, ready to provide first-hand information on the site to help developers realize real demand.
  3. Reduce development risk, because it is more effective to identify the needs of users, developers reduce the misunderstanding of user needs, to avoid the case of larger deviations occur.
  4. It can help developers as soon as possible to verify the validity of the design of the system architecture, key algorithms, human-computer interaction.

1. The prototype method waterfall method is better maturity and ease of control, due to the participation of a large number of users, will also have some new problems, such as the evaluation criteria prototype is completely reasonable, resulting in frequent demand changes.

2. This premature delivery of the product structure, although shortening system development time, but the damage the quality of the system, increasing maintenance costs.

3. iterative development methods

Prototype method described above is only a means to verify the demand, if it is applied to the entire idea development process, so that each phase of the mission after repeatedly or analysis, design, implementation cycle repeated several times, once by iteration, continuous improvement on the basis of the original and revised, more and more close to the target, so the development process is called iterative method.

In the development process, a straight line one-time purpose is always difficult to reach. With the growing scale and complexity, the market competition has become increasingly tight schedule requirements, risk mitigation and risk with stress is to submit a limited version, gradually increase the details, after repeated iterations of complete system development.

Here Insert Picture Description

The system is divided into multiple small, independent functional small projects. Each iteration includes a complete cycle of analysis, design, implementation and testing each iteration cycle is completed by one increment, and then integrate them. The whole process is like the building blocks. Iterative development approach is the most widely used development process.

Advantages and disadvantages:

1.降低风险它以功能递增或进化的方式进行软件开发。不仅可以较快地产生可操作的系统,改善测试效果,而且分析师、设计师和程序员等技术人员都可以实现并行化作用。
  2.得到早期用户反馈,持续的测试和集成可以达到不断求精的下一个迭代周期中,软件质量不断进步,降低开发的总成本。

​ 1.困难的是迭代的定义,包括迭代的长度。

​ 2.进化型迭代或小型项目可以一周一次迭代,项目组必须要有经验丰富的架构师,否则很难规划出每次迭代的内容和要到达的目标,相关交付软件的验证和过程控制也需要投入较多的精力

4.敏捷开发方法

​ 在90年代末期,传统软件开发的方式因为其繁杂的过程,以及对文档的过于严格的要求,造成了很大程度上的效率下降,也就是人们所说的“重型化危机”。因为这一原因,人们开始反思传统方法的利弊,并对其弊端进行了改进,提出了敏捷方法。

​ 敏捷开发流程主要包括:三个角色、四个会议和三个物件(343)。

三个角色:

产品负责人(Product Owner)

​ 主要负责确定产品的功能和达到要求的标准,指定软件的发布日期和交付的内容,同时有权力接受或拒绝开发团队的工作成果。

​ 流程管理员(Scrum Master)

​ 主要负责整个Scrum流程在项目中的顺利实施和进行,以及清除挡在客户和开发工作之间的沟通障碍,使得客户可以直接驱动开发。

​ 开发团队(Scrum Team)

​ 主要负责软件产品在Scrum规定流程下进行开发工作,人数控制在5~10人左右。

四个会议:

​ 1、Sprint计划会议

​ Sprint是短距离赛跑的意思,这里面指的是一次迭代,而一次迭代的周期是1个月时间(即4个星期),也就是我们要把一次迭代的开发内容以最快的速度完成它,这个过程我们称它为Sprint。

​ 2、每日立会

​ 3、Sprint评审会议

​ 4、Sprint回顾会议

三个物件:

​ 1、产品Backlog 产品Backlog指根据初始需求分解出的任务列表,包括功能性和非功能性的所有功能。

​ 2、Sprint Backlog Sprint Backlog就是任务列表,如果映射到传统的项目管理理论中就是WBS(work breakdown structure),而且是典型的采用面向交付物的任务分解方法得到的WBS。

​ 3、燃尽图。

5种敏捷开发的方法:

  1. 极限编程XP
  2. 水晶方法
  3. DSDM-动态系统开发方法
  4. 测试驱动开发
  5. Lean软件开发

1.极限编程XP

​ 极限编程是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法。它的基础和价值观是交流、朴素、反馈和勇气;即,任何一个软件项目都可以从四个方面入手进行改善:加强交流;从简单做起;寻求反馈;勇于实事求是。XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。

2.水晶方法

​ 水晶方法,Crystal ,是由 Alistair Cockburn 和 Jim Highsmith 建立的敏捷方法系列,其目的是发展一种提倡“机动性的”[1]方法,包含具有共性的核心元素,每个都含有独特的角色、过程模式、工作产品和实践。Crystal 家族实际上是一组经过证明、对不同类型项目非常有效的敏捷过程,它的发明使得敏捷团队可以根据其项目和环境选择最合适的 Crystal 家族成员。水晶系列与XP一样,都有以人为中心的理念,但在实践上有所不同。

透明水晶方法的七大体系特征:

体系特征一:经常交付

体系特征二:反思改进

体系特征三:渗透式交流

体系特征四:个人安全

体系特征五:焦点

体系特征六:与专家用户建立方便的联系

体系特征七:配有自动测试、配置管理和经常集成功能的技术环境

3.DSDM-动态系统开发方法

​ 它倡导以业务为核心,快速而有效地进行系统开发。实践证明DSDM是成功的敏捷开发 方法之一。在英国,由于其在各种规模的软件组织中的成功,它已成为应用最为广泛的快速应用开发方法。本书主要讲述这样几方面内容:DSDM如何加快产品的 交付,为什么像DSDM这样的敏捷开发方法能够快速体现所开发系统给业务带来的好处,如何组织用户参与项目以开发出可用的系统,如何将不同知识背景的人组 成一个团队,如何应对常规的业务约束以进行项目管理。

4.测试驱动开发

​ 测试驱动开发的基本思想就是在开发功能代码之前,先编写测试代码,然后只编写使测试通过的功能代码,从而以测试来驱动整个开发过程的进行。这有助于编写简洁可用和高质量的代码,有很高的灵活性和健壮性,能快速响应变化,并加速开发过程。

测试驱动开发的基本过程如下:

1.快速新增一个测试

2.运行所有的测试(有时候只需要运行一个或一部分),发现新增的测试不能通过

3.做一些小小的改动,尽快地让测试程序可运行,为此可以在程序中使用一些不合情理的方法

4.运行所有的测试,并且全部通过

5.重构代码,以消除重复设计,优化设计结构

简单来说,就是不可运行/可运行/重构——这正是测试驱动开发的口号。

测试驱动开发不是一种测试技术,它是一种分析技术、设计技术,更是一种组织所有开发活动的技术。相对于传统的结构化开发过程方法,它具有以下优势:

  1. TDD根据客户需求编写测试用例,对功能的过程和接口都进行了设计,而且这种从使用者角度对代码进行的设计通常更符合后期开发的需求。因为关注用户反馈,可以及时响应需求变更,同时因为从使用者角度出发的简单设计,也可以更快地适应变化。

  2. 出于易测试和测试独立性的要求,将促使我们实现松耦合的设计,并更多地依赖于接口而非具体的类,提高系统的可扩展性和抗变性。而且TDD明显地缩短了设计决策的反馈循环,使我们几秒或几分钟之内就能获得反馈。

  3. 将测试工作提到编码之前,并频繁地运行所有测试,可以尽量地避免和尽早地发现错误,极大地降低了后续测试及修复的成本,提高了代码的质量。在测试的保护下,不断重构代码,以消除重复设计,优化设计结构,提高了代码的重用性,从而提高了软件产品的质量。

  4. TDD提供了持续的回归测试,使我们拥有重构的勇气,因为代码的改动导致系统其他部分产生任何异常,测试都会立刻通知我们。完整的测试会帮助我们持续地跟踪整个系统的状态,因此我们就不需要担心会产生什么不可预知的副作用了。

  5. TDD所产生的单元测试代码就是最完美的开发者文档,它们展示了所有的API该如何使用以及是如何运作的,而且它们与工作代码保持同步,永远是最新的。

  6. TDD可以减轻压力、降低忧虑、提高我们对代码的信心、使我们拥有重构的勇气,这些都是快乐工作的重要前提。

7)快速的提高了开发效率。

5.Lean软件开发(精益软件开发)

和精益制造原则的概念相近,精益开发也可以总结为如下七条原则:

  • 消除浪费
  • 增强学习
  • 尽量延迟决定
  • 尽快发布
  • 下放权力
  • 嵌入质量
  • 全局优化

​ 面对开发团队以及最终的产品大小的额外挑战,可以说软件开发是个持续学习的过程。最佳的改善软件开发环境的做法就是增强学习。在代码完成后马上进行测试可以避免缺陷的累积。不是去做成更多的文档或详细设计,而是对各种各样的想法进行实际的编码尝试。用户需求的收集过程可以简单地通过给最终客户演示,并听取他们的反馈来完成。

Use a short period of iterations (each iteration should include reconstruction and integration testing) can accelerate the learning process. When adjusted in the direction of trying to determine the current stage of development of content and to improve the future, in helping to strengthen client feedback through a brief feedback sessions. Through these brief feedback sessions, customer representatives and development team will be more to discover the main issues in the further development of encounter and possible solutions. Thus, based on a prototype has been developed, customers can better understand their needs, developers can also learn how to better meet customer needs. And another on customer communication, the idea of ​​learning is "based development group", this approach focuses on solutions for the future of constraint rather than a limited range of possible solutions, so customers through dialogue and accelerated solutions produce .

Guess you like

Origin blog.csdn.net/qq_30996881/article/details/102752391