
The Dance of Software Development Methodologies
The performing art called dance. Where movement is meant to send a message or an expression of feeling. A sequence of movement that when done right can show beautiful results, Just like software development.
Like any practice in the world dance evolves and with this evolution new types of dance come about. As dancers we need to learn new moves or new dance styles to be competitive, keep practicing until we think or feel that we are good enough to go compete with other dancer… Does dance moms come to mind? Or maybe continuous software development.
Software development is done using a variety of methods, these methods are known as software development methodologies. Software development methodologies are acknowledged as blueprints that are used to plan, build, organise and control all development processes of a software system. These development methodologies are diverse, each have their own advantages and disadvantages and have gone through advancements throughout the years.
There are certain software methodologies that take a controlled “engineering-based” method. Usually a plan detailing everything that is to be done during and after development is published before the implementation stage begins. Other methodologies develop a software product in parts until they have a finished product, this is referred to as the incremental method. Incremental method promote spending a lot of time on implementation, automating tests, having a working system and continuous testing.
Software development is usually done through stages and these stages are (Select Business Solutions, Inc., 2016):
· Problem identification and analysis.
· Market Enquiries (Research)
· Requirements extraction and collection.
· Design.
· Implementation.
· Testing.
· Deployment.
· Maintenance and the fixing of bugs.
These stages are usually used as steps in the development methodologies. Some methodologies used these steps in a linear or consecutive manner and other methodologies use some of these step or additional steps added to the ones above.
In this report, a discussion will be held about software continuous integration, continuous delivery, different software development methodologies, their strengths and weakness and their relation to one another. The software methodologies that will be covered in this report are:
· Waterfall software development
· Agile software development
· Lean software development
· DevOps software development
Let’s stay competitive (Continuous Software Development)
Like any practice in the world dance evolves and with this evolution new types of dance come about. As dancers we need to learn new moves or new dance styles to be competitive and keep practicing until we think or feel that we are good enough to go compete with other dancer… Does dance moms come to mind? Or maybe continuous software development.
Continuous software development refers to different characteristics of software development and when combined they are the product of iterative software development. These characteristics are; continuous integration, continuous delivery, continuous testing and continuous deployment (TechTarget, 2016).
During Continuous integration, new code commits are gradually added to sources code. Continuous integration involves conducting builds when an important change in the software is done and team members’ submitted work when they complete it. To ensure that new code does not cause a build to break automated unit and integration testing is conducted as a baseline (TechTarget, 2016). This baseline is an indicator of whether a developer’s code meet its criteria, alerting the developer to fix problems in their code. According to TechTarget (2006), “An important advantage of continuous integration is that it provides developers with immediate feedback and status updates for the software they are working on”.
Continuous delivery = continuous integration + functional tests + regression tests+ pre-generated acceptance tests.
Continuous delivery is the method of producing working software in small, incremental phases. These software increments are frequent and are built, tested and released quickly. In order for the software system to be deployed, the code alterations that are received from automated tests are sent to a staging environment (TechTarget, 2016).
Continuous testing = continuous delivery + manual testing. The newest version of the code available is what is tested by the testing team. User acceptance and investigative tests are performed in continuous testing. Continuous testing and traditional testing is not the same because the tested software is continuously modified and this modification is not dependent on a test-release plan that has been defined (TechTarget, 2016).
The Waltz (Waterfall Software Development)
1–2–3, 1–2–3, 1–2–3, 1–2–3. When doing the waltz, this is the three beat count that is usually used. Your posture needs to be correct and you need to follow a sequence of steps that constantly form a square on the floor. Following the sequence guarantees success much like what is done when using the waterfall model.
The waterfall development methodology has been a well-known and commonly used development method since its definition in 1970 by Winston W. Royce (Manifesto Digital, 2016). This methodology uses the planned approach, it is also known as the “linear-sequential life cycle model”.
A descriptive document has to be completed and all requirements identified before the implementation phase can begin. Each stage (including the documentation) in the model has to be completed (“signed-off”) before another can begin, the stages cannot be run concurrently. Waterfall model stages are (Sommerville, 2010):
- Requirements analysis and definition: Clients have discussions with business consultants to define the systems’ goals, restrictions and services.
- System and software design: The complete system architecture is recognised and requirements are distributed to either hardware or software systems. The identification and descriptions of essential software system abstractions and the relationships between them are established in the software design.
- Implementation and unit testing: Programs and program units are established from the software design and coding begins. Checking if each unit has met its requirements is done doing unit testing.
- Integration and system testing: A complete system is created by integrating program units/programs. This complete system is then tested to check if it meets the system specifications that were established during the analysis stage.
- Operation and maintenance: This stage is usually the longest in the life cycle. The system is released into its working environment. If errors are not discovered in other stages of the life cycle the maintenance function will establish the errors and correct them. In correcting these errors the implementation of system units will be enhanced and new requirements will be established, improving the system’s services.

Waterfall Model Strengths
Before coding begins design faults that might cause problems in the system are documented. Technical documentation that is outstanding form part of the systems deliverables and progress can be measured by reference to clearly defined milestones. Through detailed documentation of every stage new stakeholders or developers that get involved in the development of the system can get up to speed. After the requirements are defined and analysed a precise estimation of the projects total cost can be given.
Waterfall Model Weaknesses
If requirements change during the development stage of the project, the waterfall model does not accommodate these changes. Requirements from clients are not usually communicated in a descriptive manner and clients usually communicate what they really want once the system has been delivered. At this stage it is very challenging and expensive to re-engineer the system. If things are not well thought out in the design and requirements analysis stage changes are then difficult to make and with this we can see that the waterfall model has not adopted the culture of continuous software development. Reflection and revision of the system is not catered for in this model.
Breakdancing (Agile Software Development)
B-boying, b-girly, breaking, a dancing style that requires the dancer to perform powerful jerking moves and then “freeze” (result). Like every dance breakdancing has certain steps that need to be followed like the windmill, headspin and airflare but all of these moves always result or end with a freeze well in this case let’s think of the freeze as an iteration.
Agile software development is not seen as a methodology but more of a movement (agilemethodology.org, 2016). This movement is different from traditional software development methods (waterfall model) and is more of an incremental model. The agile movement supports rapid cycles of development, releases that come in short increments with each release having additional functionality to previous releases. Each release is tested systematically to ensure that requirements are met and the conservation of quality. Agile methods do not usually prefer written documents but would rather have face-to-face communication between project stakeholders and the development team. Pressman (2003) notes that, “agile teams organize themselves for the work to be done, the team organizes the process to best accommodate its local environment and the team organizes the work schedule to best achieve delivery of the software increment” (p. 72).
The Agile movement was developed as an improvement from traditional development methods. Continuous improvement and continuous software development is an important part of the agile movement (Leffingwell, 2007). Agile involves quick responses to change as well as planning that can be flexible, progressive development and early delivery. If changes need to be made or new functionality needs to be added the developers can roll back a few days or even hours to implement it (ISTQB EXAM CERTIFICATION, 2016). Scrum and Extreme Programming (XP) are approaches of agile software development.
Scrum
Scrum is an agile software development approach also known as a management framework developed by Ken Schwaber and Jeff Sutherland (Dodge & Futcher, 2013). Scrum encourages teams to build thoroughly tested product increments, rapid responses and team self-organization. Rules, artefacts, meeting and role structures are provided by this approach. Scrum has iterations that have fixed lengths, these iterations are called sprints and shorts sprints are normally 2–3 weeks long. Sprints are often a mark of progress.

There are three roles in scrum, these are; Product Owner, Development Team, and Scrum Master (agilemethodology.org, 2016). The scrum master is responsible for organising the team that uses scrum as well as managing communication and the exchange of information. The product owner is an individual representing the business that the software product is built for and is a tool of communication between the client and the development team, making sure the iterations that are released are what the client wants.
Each sprint is structured through scrums four meetings:
• Sprint planning
• Daily stand-up
• Sprint demo
• Sprint retrospective
Task boards and burndown charts are visual tools that are used during sprints to view progress and also as a form of motivation.
Extreme Programming (XP)
Extreme Programming (XP) is a development approach that is very pragmatic that emphasises on product revision and continual testing. This approach focuses on getting results out there and releases products in increments. Extreme programming has four practices that are described in Extreme Programming Explained (Beck, 2004):

The Waltz and Breakdancing
Even though the waterfall methodology and the agile philosophy have distinct differences they are similar in the fact that with both of them the aim to deliver a product that has great quality in an efficient way. These two models also share the same type of process and both usually follow similar scopes. In both of these processes, requirements are collected and defined. After that, analysis, coding and testing is done.
The differences between the two concepts is that the waterfall model delivers a single large project whereas agile delivers a lot of small projects, where functionality is added on with each increment resulting in a final project. The waterfall model is a sequential process whereas the agile model is more dynamic and iterative. Collaboration is supported in the agile approach and not in the waterfall model.
Agile expects changes to be made and the waterfall model works best when there is no change in requirements. Agile encourages customer integration whereas the waterfall model does not. The waterfall works best with complex project as well as projects that are small. The Agile philosophy works best with large projects that can be broken up into mini project.
Tutting (Lean Software Development)
Tutting is a type of dance requiring a dancer to make geometric movements with their arms and fingers. It is a contemporary interpretive dance that is performed using precise moves that are necessary. Tutting moves are very expressive with the little that they do, like in lean only feature that are of value are used.
Lean is a software development methodology that puts emphasis on the development of software that can be tolerant to change. Enhancement of productivity and waste minimization are encouraged in lean. Productivity can be enhanced and waste managed at all levels (TechTarget, 2016): each person, every division in the organisation, operations between divisions, the whole organisation, and the relationships of the organization with clients and suppliers.
The lean software development methodology was originally developed by Mary and Tom Poppendieck and takes an iterative approach. Most of the methodologies concepts, principles and practices are derived from company practices (e.g. Toyota)principles and practices from the Lean Enterprise movement. The main lean concepts are (Wanga, Conboyb, & Cawleyc, (2012)):
· Value: Customers give definition for the value and having a clear understanding of what the value is, is very important.
· Value Stream: Every period in the process is identified by the value stream and is categorised according to its value it adds.
· Flow: The constant flow of production is imperative.
· Pull: The product is requested by the customer, guaranteeing that products are only built when they are needed.
· Perfection: Constant waste detection and elimination leads to product perfection.
Three Japanese terms give the clear definition of “waste”:
• Muda: An activity that does not add value to the production. The direct translation of muda is waste.
• Mura: The inconsistency of flow. The direct translation of mura is unevenness.
• Muri: The direct translation of muri is “overstraining” or “unreasonableness”
The selection of system features that are really valuable, ranking these features and small batch deliveries of these features helps to remove waste. The feedback between the customers and development team needs to be quick and trustworthy and the development workflow needs to be fast and very productive. Lean development teams are self-organised and every individual has to be productive for as much time as possible, ensuring the team resources are efficiently utilised. Intra-team workflow dependencies are frowned upon and concurrent work and the coding of unit tests at the same time as the product code is promoted. Lean takes on the continuous software development approach.

Breakdancing and Tutting
The Lean method rose from the manufacturing industry and was developed in the software industry and the agile philosophy was hypothesized, established and developed in the software industry. Between lean and agile, lean is more of a philosophy with different change aspects in culture, mind-set and toolkits are added to the mix and agile is structured on the philosophy of efficient project management that focuses on system development. Agile uses lean toolkits and these are multitasking, Kanban, etc.

So You Think You Can Dance (DevOps)
Many different dancers, each knowing different dance styles take part in a TV show called so you think you can dance. As a challenge each dancer gets taught a new dance style and depending on whether they master the style or are fairly good at it they get to stay and compete until a winner is found. When a dancer gets taught a new dance style they integrate that style into the style that they know just like the integration of development and operations.
DevOps is a practice, culture and philosophy that supports the improvement of communication between development and operations. This improvement is needed when more operational features become programmable (TechTarget, 2016). This philosophy strives to enable continuous development, continuous integration, continuous delivery and continuous observations by streamlining the processes of development and deployment. In doing this the responsibilities of the operations team can be shifted to some development team members and vice versa. In doing this, the system can be released faster and frequently.
Most people view DevOps as a technological tool or a communication medium used in organisations. DevOps is not just a seamless integration it is a cultural movement that enhances product quality as well as improve organisational productivity.
DevOps is a term that was invented by Patrick DeBois (Wurster et al., 2013). This philosophy was meant to transform from development operations that were focused on processes to an approach that is more dynamic. DevOps intends to remove weaknesses in systems and disadvantages in service delivery.
DevOps Practice Fundamentals
Cross-functional teams and skills: DevOps incorporates operation roles with functional processes. DevOps encourages individuals to have multiple skills so that the team has end-to-end focus.
Optimum utilization of toolsets: In DevOps when needed cross functional teams use similar toolsets (e.g. the same repository) (Wurster et al., 2013).
Automated deployment pipeline: The creation of automated deployment model pipeline is needed in DevOps. This pipeline embodies a techniques that can be used to model and deploy the product and ensure that the service model across the software’s life cycle is reliable (Wurster et al., 2013).
All the characteristics of continuous software delivery are also fundamentals of DevOps practice.
A Breakdancing Episode in So You Think You Can Dance
DevOps is a culture that describes how functional and operational characteristics of software development whereas agile produces software using the principles of the agile manifesto as a guide.

Waltz alongside Breakdancing and Tutting
Building a whole project to deliver it to the end user is the aim of waterfall and agile processes. However, Lean is focused on producing small subsets of features and giving the customer mini project at a faster pace. The focus is also on end to end system view. With leans quick delivery it is quicker feedback thus eliminating more potential waste. In lean, having a good flow in production and removing bottlenecks in processes is ideal.
The Show Stopper
Software development methodologies are guidelines of:
WHAT (Processes and deliverables).
HOW (methods).
WHO (Roles each individual should take).
For every software development project. Evolution of the software industry has happened throughout the years and with this, the evolution of software methodologies came about. These methodologies are not just theories, they have been tried and tested. For the effective use of these methodologies it is imperative that all the processes defined by those methodologies are thoroughly followed.
The use of one methodology is not essentially appropriate for all projects. Each methodology works well with a particular project depending on the different teams, techniques and companies producing the software. The type of problem determines what software development methodology to choose by weighing the pros and the cons.
A Tap Dance and Hat Tilt to these Awesome People

You took the time off your schedules to recommend thought provoking and inspirational books to me and for that I will always be grateful. Thank you very much.
References
Agilemethodology.org. (Accessed: 2016, March 19). The Agile Movement. Retrieved from agilemethodology.org: http://agilemethodology.org/
Beck, K. (2004). Extreme Programming Explained: Embrace Change. 2nd Edition (The XP Series): Addison-Wesley.
Dodge, R., & Futcher, L. (2013). Information Assurance and Security Education and Training: 8th IFIP WG 11.8 World Conference on Information Security Education, WISE 8, Auckland, New. Springer Publishing Company, Incorporated.
ISTQB EXAM CERTIFICATION. (Accessed: 2016, March 20). What is Agile model — advantages, disadvantages and when to use it? Retrieved from ISTQB EXAM CERTIFICATION: http://istqbexamcertification.com/what-is-agile-model-advantages-disadvantages-and-when-to-use-it
Leffingwell, D. (2007). Scaling Software Agility: Best Practices for Large Enterprises. 1 Edition: Addison-Wesley Professional.
Levison, M. (Accessed: 2016, March 21). CHOOSING A SPRINT LENGTH — SHORTER TRUMPS LONGER. Retrieved from Agile Pain Relief Consulting : https://agilepainrelief.com/notesfromatooluser/2013/07/choosing-sprint-length-shorter-trumps-longer.html#.Vyr8uoSF6M9
Lochan, R. (Accessed: 2016, March 28). Lean or Agile? A Comparison of Approach. Retrieved from Process Excellence Network: http://www.processexcellencenetwork.com/lean-six-sigma-business-transformation/articles/using-lean-in-agile-software-development-a-comparison
Manifesto Digital. (2016, March 19). Agile vs Waterfall — Comparing project management methods. Retrieved from Manifesto: https://manifesto.co.uk/agile-vs-waterfall-comparing-project-management-methodologies
Misra, S., Kumar, V., Kumar, U., Fantazy, K., & Akhter, M. (2012). Agile software development practices: evolution, principles, and criticisms. International Journal of Quality & Reliability Management, 972–980.
Pressman, S. (2014 ). Software Engineering: A Practitioner’s Approach with Bonus Chapter on Agile Development. 7th Edition: McGraw-Hill Education.
Select Business Solutions, Inc. (Accessed: 2016, March 14). What is a Software Development Process. Retrieved from Select Business Solutions: http://www.selectbs.com/
Sommerville, I. (2010). Software Engineering. 9 Edition: Pearson.
TechTarget. (Accessed: 2016, 04 13). Continuous Software Development. Retrieved from WhatIs.com: http://searchsoftwarequality.techtarget.com/definition/Continuous-Software-Development
Wanga, X., Conboyb, K., & Cawleyc, O. ((2012)). “Leagile” software development: An experience report analysis of the application. “Leagile” software development: An experience report analysis of the application, 1287– 1299.
Wurster, L., Colville, R., Haight, C., Tripathi, S., & Rastogi, A. (2013). Emerging Technology Analysis: DevOps a Culture Shift, Not a Technology. Gartner.