Software Development Process
Today, the software is a phenomenon that has taken its place in every aspect of our lives, from day-to-day to the most complex business processes - its impact is felt everywhere.
Companies need effective software systems for business process management and produce these systems through their information systems departments or purchase them from software companies. In both cases, creating the software requires a series of engineering and project management processes. When choosing the method of these processes, the characteristics of the software to be created such as size, complexity, and purpose, the structure of the organization and the project team that will create the software, and the resources that can be used are important.
What is software development?
Software development provides guidelines for software development teams to create high-quality software. Software comprises not only lines of code written in a programming language but also concrete documentation. Software projects are specialized projects and, while they share the basics of project management, require special management techniques due to their content.
There are important differences that distinguish software projects from other projects. While the end product created in other technical fields has a physical existence, the product created in software projects is intangible as it is a manifestation of intellectual processes. This intangibility not only hinders the traceability of project management processes but also negatively affects the correct definition of requirements that should be defined at the beginning of the project.
It increases the uncertainty of the project as it is often difficult for the customer to precisely explain what they want. This problem generates more uncertainty than in general project management. Since uncertainties are higher than in general project management, the workload and cost estimation in software projects are more difficult to calculate, and the probability of failure is higher.
As projects carried out in other engineering fields hardly differ in terms of time and space, experience is gained in project management and this experience is applied to new projects. In software projects, the rapid development of information technologies and changing customer requirements can lead to changes within the ongoing project and nullify the experience gained from previous projects.
For these reasons, success rates in software projects are low. The criteria that determine the success of agile software development projects are the elements of time-resources-scope, also known as the project management triangle. CHAOS reports on the success rates of software projects have been published every year since 1994 by the Standish Group International. According to the latest report, "Beyond Infinity in 2020," the probability of success in agile projects is twice as high as in traditional projects.
The history of software development
Agile vs. Waterfall
Classic project management is the oldest and basic model of software development, in which the activities carried out in software projects are carried out in successive phases. The first method of classic software development, which was implemented in the 1950s, was “Code and Fix”. It was based on the principle of coding the requirements directly and correcting the errors occurring in the process or after the product delivery without planning or design phase. As a result of the software crisis in the 1960s, a software engineering conference was organized by the NATO Science Committee in Germany. The main topics of this conference are the definition of the concept of software development and the determination of the standards that should be used in the processes of software development.
The Waterfall Model
The Waterfall model was described in a paper published by Dr. Winston Royce in 1970. Over time, the Waterfall method took the form we know today and became the basis for classical software development. In projects that use the Waterfall model, the phase ends are clearly defined and the project is carried out under intensive monitoring with controls such as strict reviews, intensive documentation, and management approval at each phase change.
Therefore, its implementation requires strict discipline. The main purpose of this approach is to establish factors such as scope, time, and resources from the outset, by not allowing changes during the project and neutralizing changes that pose a significant risk factor. When the Waterfall model emerged and the conditions were evaluated, business processes were not as dependent on information systems as they are today.
To eliminate the disadvantages of classical software development, 17 software development experts came together in 2001 to discuss the concepts around the idea of agile software development and create the Agile Manifesto. This laid the foundations and backbone of agile software development. Projects created based on the agile mindset are much more than classical software development today.
What does agile software development mean?
Agile project management has emerged as an alternative solution for the problems in which classic project management failed. Agility began when a group of innovative people came together and tried to find a different way of thinking about the problems in project management. This group has identified four common values for successful projects and teams, which they called the Agile Software Development Manifesto. After a day-long discussion, the experts agreed on a number of basic ideas and principles to find solutions to the software development problems with which they faced during their careers. Bringing these principles together in a single document led to a rethink in the world of software project development.
Agile software development is an iterative and incremental (evolutionary) approach to self-organizing teams in a highly cooperative way, with an effective management framework and timely, inexpensive, and high-quality solutions that meet the changing needs of interest groups.
The functioning of agile software development
Iterations that are used in agile methods are designed in accordance with the experience from previous iterations and the identified problems. Tasks that need to be done are prioritized according to their business value. The project team determines how best to do the work as part of the available resources and restrictions. The team has to do certain tasks in a certain time (within the iteration time). It is solely the team with its strengths and weaknesses, which is responsible for the creation of the product that must be delivered at the end of the iteration. Therefore, cooperation in the team is important. In this context, experimenting, prioritization, self -organization, time frame, and cooperation can be performed as basic principles on which agile methods are based.
In agile methods, activities of agile software development are carried out in iterative phases. As a result of these iterations, a useful product is created and the development processes are repeated taking into account customer or user feedback and, if necessary, changed requirements. These iterative processes are continued until the product that the customer wants is produced.
What are the values and principles of agile software development?
Agile software development builds on 12 principles and 4 values that are defined in the agile manifesto. These 4 core values are:
Agile software development takes an iterative approach to software development. Unlike a simple linear waterfall model, agile projects consist of a series of small cycles (defined as sprints in Scrum). Each one is a miniature project. It has a backlog and consists of design, implementation, testing and deployment phases within the predefined scope of work. At the end of each sprint, a potentially shippable increment is delivered. Thus, new features are added to the product with each iteration, resulting in gradual project growth. By reviewing feature development at every stage, the risk of delivering a potentially unsuccessful product is significantly eliminated.
What are the phases of agile software development (life cycles)?
Agile software development is a mindset that iteratively repeats all phases from the design, development, testing, deployment, and maintenance of a software project to re-planning. This method focuses on rapid and flexible software development and aims to adapt and respond to customer needs and changing conditions.
The agile software development method starts with creating a vision for the project that is shared by all relevant stakeholders. Together, these stakeholders create a roadmap that outlines the expected outcomes at each iteration of the execution phase of the process. These stages are as follows.
- Project planning: The customer needs and expectations, the purpose, and the goals of the software project are defined. In this phase, there are answers to questions such as what is intended to be done with the software. Product owners define how the software should look and work. He also estimates the time and cost of the potential project. Project managers or business analysts meet with the customer and request software specifications. The key here is to gather as much detail as possible. This ensures that more information is gathered about the customer's expectations.
- Creation of a product roadmap: It is determined which agile framework method should be used, the project team and their roles in the team as well as which tools and technologies should be used. Visual design and software architecture are discussed. Product Owners identify the right people for the project and provide them with all the necessary tools and resources to begin design.
- Design: The interface and functionality of the software are designed. In this phase, the project team finds answers about how the software will be used, what functions it will contain, and how to proceed in which scenarios.
- Development: In this phase, the project team codes the software - an important step in agile transformation. During development, the project team constantly takes into account customer needs and changing conditions. After project teams and stakeholders review the product backlog, developers can complete each task described in the backlog. Only then does the team move on to the next sprint?
- Test: In this phase, the software is tested and errors are corrected. Testing evaluates factors such as performance, security, and ease of use of the software.
- Feedback: After the working product has been tested and completed, project management teams and stakeholders review the results of the sprint. This review occurs at the end of each Agile development cycle. Agile project management teams receive feedback during these reviews to make necessary changes and prioritize requirements for upcoming sprints.
- Delivery: Once the project management teams are satisfied with the achievements in the sprint after the development and testing phases, the developers can start creating the necessary integrations between the software product and other applications or services required for its smooth operation. At the end of each sprint, the developers hand the working code over to the project stakeholders for review.
- Evaluation: The project team evaluates the success of the project and makes recommendations for future improvements. This phase evaluates questions such as how well the project is performing, which features are working, and which features need improvement. The product owner also collects feedback from stakeholders and compares it to the requirements of the next iteration. During the assessment phase, it's easier for teams to address future issues because they now know more about what is and isn't working in their workflow.
- Interaction: The loop begins again. Requirements, plans, and designs are updated.
Advantages of agile software development
Agile software development can bring many advantages to a company and its customers. Such as:
- + Better products are produced. The opportunity to provide software before it is finished enables the team to react better to customer feedback and inquiries. This is reflected in the quality.
- + It is cheaper. The possibility of increasing productivity and using feedback by focusing on the functions that the users want makes the process more cost-effective.
- + User satisfaction is at the highest level. Satisfaction is high because agile software development is oriented toward customer feedback.
- + Extended control mechanisms are available. Continuous improvement, iteration, and cooperation between teams keep control at a high level.
- + Better product predictions are achieved.
- + Offers improved flexibility and speed.
What are the popular agile software development frameworks?
● Scrum
● Extreme programming (XP)
● Kanban
● Dynamic Systems Development Method (DSDM)
● Feature Drive Development (FDD)
● Lean software development (LSD)
● Adaptive software development (ASD)
● Crystal agile framework
● The scaled agile framework (safe)
The Differences Between Agile Software Development and Classic Software Development are As Follows:
Classic software development | Agile software development |
First release carefully planned | Fast and adaptable processes |
Limited transparency | Full transparency between members |
Top-down responsibility | Shared responsibility and ownership |
Research and plan first | Ongoing research, planning and testing |
Different teams in different stadiums | Continuous collaboration within and between teams |
Focused on delivering the finished (complete) product | Product features with a focus on iteration |
Restrictions on agile software development
Although agile software development today has many advantages over classic software development, it is not free of restrictions. However, these restrictions are not restrictions that, like conventional projects, result from the structure of the system.
- Since the processes in agile software development are communication-centered, the requirements may not be correctly defined if communication between the customer and the team does not work properly. This can disturb the software development process.
- Customers who cannot precisely determine their priorities and who often want to change the priorities on their to-do list can have a negative impact on planning.
- Large and complex systems that require functional integrity may not be divided into parts that are suitable for iterations.
Conclusion
In summary, agile software development can be an effective approach to developing high-quality software in a short period of time. By using agile methods, teams can react faster to changes, improve the quality of the software and achieve higher customer satisfaction.
If you want to learn more about how agile software development works and how to introduce this method to your team, you should visit our Scaled Agile Framework page. There you will find various SAFe courses, including our "SAFe Agile Software Engineering" course, which teaches you the basics of agile software development.
And if you are also interested in other IT topics, we have a variety of training courses and certifications on our "Academy" page that can help you expand your knowledge and skills. Have a look and discover the possibilities that are available to you!
Credentials
- Manifesto for Agile Software Development. (n.d.). Agile Manifesto. http://agilemanifesto.org/
- agile modelling. (n.d.). agile modelling. http://www.agilemodeling.com/
- Scrum.org. (n.d.). scrum https://www.scrum.org/
- Scrum.org. (2020). The Scrum Guide. https://scrumguides.org/scrum-guide.html
- Scaled Agile, Inc. (n.d.). Scaled Agile Framework. https://www.scaledagileframework.com/
- Scaled Agile, Inc. (2023). Scaling Agile [website]. https://scaledagile.com/
- kiss flow (n.d.). Benefits of Agile: How to benefit from the Agile methodology [blog post]. https://kissflow.com/project/agile/benefits-of-agile/