The waterfall process occurs through a sequence. Each phase of a product life cycle needs to be achieved before starting the next phase and so on. The workflow of the project is driven steadily downwards like a waterfall.
The waterfall process has been inherited by software development companies from construction companies. One always start with the foundation and finish by the roof. Nevertheless, the process is not smooth when you want to reverse a sequence which has already already been done. The waterfall process needs all the information about the requirements done beforehand prior to the start of any coding.
Traditionally, the cycle of development and the delivery of a software, follow a pre-established sequential steps. This pre-defined process grants any client a very clear and precise view of the financial cost and budget for him to plan, but not necessarily for the development teams or the IT outsourcing companies.
The following are the main steps of the process of software development in Waterfall model:
1. Analyse the needs of the client (Requirement).
2. Definition of deliveries and functional specifications (Design).
3. Establishment of budget and timetable (Planning).
4. Start of cycle the development: creation of first functionality (Implementation).
5. Validation and correction (Verification).
6. Maintenance of this functionality (Maintenance).
The process restart its cycle between the steps 4 to 6, until the software is fully delivered to the client. Following the delivery, each update of the development follow these steps. This process is known as the Waterfall model. Each component of the software is sequentially developed and completely finished before any other functionality is encoded. This process is generally used most often, but we can’t deny that this doesn’t have any hiccups.
In general, this methodology has stages that deal with what you need to do before a project, particularly during the start-up phase, the planning phase, the execution phase and the closing phase. They also have a series of processes for managing work packages, exceptions, reporting, risks and issues.
Advantages of the waterfall method:
- Issues that may rise during the development phase can be fixed during the design phase. If adviced, other solutions can be selected before the start of any encoding.
- The development process gathers as many documents as possible, because this methodology is favoring on complete documentation like requirements, needs and design.
- Many companies prefer this method to implement and use.
- The waterfall process is linear and easier to understand for non technical person to software development process and project management.
Drawbacks of the waterfall method:
- Quite often, the client doesn’t know exactly what he needs upfront and doesn’t know what are the possibilities with the technology available. Due to these factors, that could generate delay and complications.
- Design providers often aren’t able to anticipate issues that will arise because of the implementation of their graphics and design work.
- Making a modification of the requirements (e.g. if you want to implement a new technology, modification of the business goals or adaptation to a changing market) isn’t really appropriate using a Waterfall method. Nevertheless it’s still possible to make an evaluation according to the new requirements, but it will takes a lot of money and time for new procedures.
AGILE / SCRUM
EasyShoring Solutions uses Agile practices for project management. We offer a pragmatic approach and stay in a very constant touch with our clients throughout the process. The main strength of Agile methodology is to stimulate the activity of constant requests of correction. The top priority in Agile methodology is satisfying the client. A client is free to make any number of revision he seeks in the product.
Agile is based on 3 foundations :
Also, Agile is based on 4 values :
- Individuals and their interactions over the process and their tools.
- Operational software and solutions more than an exhaustive documentation.
- Collaboration with clients more than contractual negotiation.
- Ability to change more than plan follow-up.
Source: Agile manifesto
Agile development is based on iterative and incremental processes, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.
It encourages a rapid and flexible response to changing requirements, a vital factor for us working so closely with our customers.
We work on new functionality during an iteration cycle called a “Sprint”, which lasts from just two to four weeks.
By using an agile development methodology, our customers see results fast. Specific feature requests are discussed with our customers at user forums. If agreed upon at the forum and technically feasible, the feature is scheduled in to a future Sprint.
FOCUS ON PRODUCT OWNER
The key figure and the main point of contact for the customer to centralize the stakeholders needs and requirements is the Product Owner. This person takes on:
- The profitability of the product (Return On Investment).
- Defining the features of the product backlog.
- Prioritizing features according to business value.
- Deciding on release date and content.
- Adjusting features and priority at every iteration, as needed.
- Accepting or rejecting work results.
FOCUS ON SCRUM MASTER
The Scrum master inside the team of experts is the key person responsible for implementing Scrum values and practices:
- Removing impediments and shielding the development team from external interferences to ensure that they are fully functional and productive.
- Enabling close cooperation across all roles and functions.
- Monitoring, tracking and processing check Master.
- Reporting and communication between the different project contributors.
- Resolving conflicts inside the development team.
- Giving feedback of the performance.
- Continuous improvement of the Scrum Team throughout the project.
FOCUS ON DEVELOPMENT TEAM
- Development Teams are the core of the expertise which happens all around us here. They are cross-functional (Business Analyst, programmers, testers, user interface, designers), and are responsible for developing the product.
- Usually our teams are made up of 5 to 9 people, self-organized and highly disciplined to get the work done, often deciding among themselves regarding their roles and responsibilities for the new product increment.
- Our partners and team members are experts in all the latest technologies and software products, combined with their knowledge in many programming languages like : C, C++, JAVA, Python, Ruby, Shellscript, Visual Basic, HTML, CSS, Swift C, Objective C along with expertise in areas like Android , iOS, Oracle,MySQL, Sybase,etc to name a few.
COMPARATIVE OF BOTH METHODS