Introduction
Software development models describe the different methodologies or techniques that are identified for developing projects depending on their objectives. There are various software development models required to achieve different outcomes. The models explain the various phases of the process and how they are carried out. The model that is selected has a high impact on the tests that are undertaken. It determines the when, what, and where of the planned tests ( Moniruzzaman & Hossain, 2013) . It determines the techniques used, and it will influence the regression testing. The essay will evaluate three software development models and determine the best technique.
Waterfall Model
It is also known as the life sequential life cycle model. It is one of the easiest models to understand and use. In the model, one phase should be completed before the next phase begins because there should be no overlapping during the processes. It explains the software development process in a flow that is linear sequential. It means that the next phase of the development process can only begin if the previous phase is completed and the phases can never overlap ( Moniruzzaman & Hossain, 2013) . It was among the initial models to be used in software engineering. The whole process is divided into phases or stages. The outcome that is received from one stage is used as the input for the next phase. It is mainly used for small projects whose requirements are uncertain. After each stage, the output is reviewed, and they decide whether to continue or discard the project.
Delegate your assignment to our experts and they will do the rest.
The above illustration represents the different phases that exist in the model. The first phase is requirement gathering and analysis. All the requirements to develop the system are captured and documented in a document. The second phase is system design where the requirements from the first phase are evaluated for creating a system design. The system design is vital for coming up with hardware and system requirements that define the overall system architecture. Implementation involves the developing of small programs called units that were acquired from previous phases. All units are developed and tested. The fourth stage is the integration and testing where all the units are integrated into the developed system and then tested ( Paternoster et al., 2014) . Deployment of the system involves deploying the system in a customer environment after all the nonfunctional and functional testing is complete. The final stage is the maintenance of issues that may appear in the customer environment. It also involves coming up with upgrades of the available versions.
All the stages always cascade into each other therefore makes progress appear as flowing steadily downwards, similar to a waterfall, through the various stages. The model is suitable for applications where the requirements are fixed, well documented, and clear such as medical, military, space, and life-critical systems such as airbag systems and flight control software ( Moniruzzaman & Hossain, 2013) . The product definition should be stable. It is applicable in areas where the technology is well understood and does not change spontaneously. There should be adequate resources and expertise to support the product development.
The model has various advantages that allow for control and departmentalization. Each phase can have deadlines that allow a product to be developed seamlessly across the different phases. It is quite easy and simple to understand and use. It can be easily managed because of the rigidity of the system. Every phase contains specific deliverables. Furthermore, the stages can be easily processes and completed each phase at a time. It is vital for small projects whose requirements are specific and well understood. The tasks can easily be arranged and are well understood. However, the process has various disadvantages because it does not allow much revision or reflection ( Paternoster et al., 2014) . After a software of application has passed the testing stage, it becomes difficult to modify or go back. It involves high levels of risks and uncertainties. It is not essential for products whose clients are dynamic. Due to its rigid nature, it becomes difficult to measure its progress through the stages. Moreover, it does not accommodate changing needs of its clients. Attempts to adjust the scope of the project may lead to the collapse of the project. Due to its rigid structure, it is difficult to identify challenges and bottlenecks in the early stages.
Extreme Programming (XP) Model
It is a software development model that is the most popular of agile software development models. It differs from other traditional models because it focuses on adaptability rather than predictability. The proponents of the model insist that that changes are a natural process in the software development model and cannot be escaped during project development. They insist that the ability to adapt to varying requirements at any stage of the project development cycle is a better and realistic approach than trying to come up with all the requirements at the beginning of the project and spending a lot of energy attempting to control the requirements ( Dubois & Tamburrelli, 2013) . It is the best model for developers and managers who need to make various adjustments during the product development process. It is the best software development model because it is responsive to customer requirements.
XP programming has five main values: respect, communication, simplicity, courage, and feedback. Developing software systems needs proper communication among program developers. XP programming techniques are perceived as the best method for proper building and dissemination of information among the software development team. Therefore, it favors the development of simple designs. Throughout the system development, it relies on feedback from the team, system, and the customers. Any flaws in the system are identified and easily communicated through writing a unit test. The model requires courage to allow developers to modify their codes when required ( Paternoster et al., 2014) . It requires reviewing all the current and existing systems to modify and ensuring that future changes are implemented more easily. Courage requires the developers to modify their codes when they are obsolete and to throw it away when necessary. It also requires the developers to be persistent when coming up with products that will satisfy their clients’ needs.
The principles of XP are dependent on the five values and assist in the decision-making process. Feedback is quite essential if done effectively. Unit tests are important to the rapid feedback process. The unit tests are vital in determining how the system may react to various changes. Simplicity ensures that every problem is treated. The proponents of the XP model insist that making major changes instantaneously is not productive. Minor changes should be changed after a certain period so that the developers have control over the development process. The principle of accepting and embracing changes is vital in the model ( Paternoster et al., 2014) . The model entails four basic activities: coding, testing, listening and designing. Coding may involve drawing diagrams to generate code that will figure out the best solution. Testing is used for solving uncertainties. The developer carries out as many tests as possible that may break the code and if the tests are run successfully, the coding is complete. Listening involves complying with the clients’ needs while designing involves coming up with an effective system that addresses the problem or need.
XP model is appropriate for projects that involve prototypes, coming up with discoveries, or where the requirements continuously change. It is also suitable for research projects or where there the projects are small and can be better managed through informal techniques. However, it has various limitations. It faces difficulty when coordinating bigger teams ( Paternoster et al., 2014) . Due to the frequent communication, there is a tendency to have improper documentation. Furthermore, if it is improperly managed it may result in projects that may never be complete. There is a major problem when predicting the exact features that should be predicted within a certain period.
UML Model
The Unified Modelling language was created to forge a common visual language in the software development industry. It is vital for all users who wish to understand software development systems. The model has diverse applications beyond software development and can be used in process flow manufacturing. It includes different types of diagrams that are analogous to the blueprints utilized in various fields. The UML diagrams evaluate the boundary structure, the traits of the system, and the objects in the system. Despite the fact that it is not a programming language, it has tools that are essential in generating codes in different languages through the UML diagrams ( Dubois & Tamburrelli, 2013) . The model possesses a direct connection with object-oriented design and analysis. Object-oriented languages have become dominant in the programming industry because they come up with models of real-world objects. UML uses a combination of many object-oriented languages such as object-oriented software engineering, object-oriented design, and object modeling technique. The UML models utilize the three approaches to come up with a technique that is easier to use.
The strategic value of software has increased, and different companies are looking for methods that will automate software production and improve its quality while reducing their production costs. Moreover, businesses search for methods that will simplify their complex systems while enhancing their scale and scope. UML was developed to address the needs of both software developers and businesses. The main goals of the model include integrating the best practices while offering specialization and extensibility mechanisms that will improve the core concepts ( Dubois & Tamburrelli, 2013) .
The model has many diagrams to address the needs of many stakeholders such as technical authors, analysts, clients, analysts, and designers. All the stakeholders have interests in different aspects of the system, and they require varying levels of detail. Structure diagrams indicate the static structure, and how different implementation and abstraction levels are related. All the elements in the structure diagram represent meaningful aspects of the system and may involve implementation, abstract, or real-world concepts. There are seven classes of structure diagrams that include profile diagram, class diagram, composite structure diagram, component diagram, package diagram, deployment diagram, and object diagram ( Dubois & Tamburrelli, 2013) . Behavior diagrams indicate the dynamic behavior of all objects within the system. The dynamic behaviors are the series of changes made to the system within the lifespan of the system. There are seven classes of behavior diagrams that include the timing diagram, use case diagram, interactive overview diagram, activity diagram, communication diagram, state machine diagram, and the sequence diagram.
Conclusion
The essay has evaluated three software development models and determined the best technique. Selecting the correct model for developing an application or product is quite necessary for clients. Different developers select a software development model depending on their needs. The agile methodology is the most frequently used model while the waterfall model is the oldest. The XP model is the most robust model because it focuses on adaptability rather than predictability ( Moniruzzaman & Hossain, 2013) . It focuses on the changing and dynamic needs of its clients. The waterfall model has many defects that are only detected at the end when it fails to come up with a solution. Ultimately, a model should be flexible to address the changing requirements of its clients.
References
Moniruzzaman, A. B. M., & Hossain, D. S. A. (2013). Comparative study on agile software development methodologies. arXiv preprint arXiv:1307.3356 .
Paternoster, N., Giardino, C., Unterkalmsteiner, M., Gorschek, T., & Abrahamsson, P. (2014). Software development in startup companies: A systematic mapping study. Information and Software Technology , 56 (10), 1200-1218.
Dubois, D. J., & Tamburrelli, G. (2013, August). Understanding gamification mechanisms for software development In Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering (pp. 659-662) ACM.