|Author : DAOUDI Samir | Context : MSc Software Engineering – Object Oriented Analysis|
The computing and software development can be considered young if compared to other industry branches. However, the speed in growth of the software development allowed this last to reach a high level of maturity that it can be said to be industrial.
The software became present in every part of our life, we use software-applications for everything, and it is an important component for the industry. They are used for everything, the control system, the tests and errors detections…etc. They vary from the simple software to the large scale systems for telecommunications (Jacobson, 2000). For this reason, the software development as a process became very important due to its impact on business. The term system development can be defined in simple word as three workflows that follow each other:
– Analysis, is the definition of requirements and outputs; it is in fact the development of an application-oriented specifications.
– Design, during this phase, decisions are made on how to design and implement the application-oriented specifications. It also includes all the development tasks of the software from the high-level abstraction to the detailed conception.
– Testing, is the post development phase which consist in conducting a set of tests to verify different aspects of the software.
Figure 1. Simple Software Development Process.
This description of the software development process is very abstract and the simplest view. Things are more complicate and very complex, when we start focus on details. Different software development process have been designed, each process might be suitable for specific situations or requirements. We will concentrate on eXtreme Programming.
What is eXtreme Programming?
XP is software development discipline formulated in 1999 by Kent Beck Ward Cunningham and Ron Jeffries; based mainly on values of simplicity, communication feedback and courage. It provides to whole team with enough feedback to see where the team is compared to the overall goals (Crispin & House, 2003).
XP was also defined as an agile process based on a set of practices and methods for software development; it concentrates in eliminating the unnecessary work and focusing on those which give valuable deliveries to the customer(Burke & Coyner, 2003).
XP is also seen as ‘lightweight, efficient, low-risk, flexible, predictable, scientific and fun way to develop software’(Beck, 2000). Compared to other methodologies, XP can be distinguished by:
– Concentrating in short cycles and continuing feedback.
– Planning approach, this aims to build the overall plan during the life cycle of the project.
– Flexibility in implementing certain functionalities which can be useful for handling business needs.
– Importance of monitoring during the development life-cycle which is based on different tests made by the developers and the end users.
– Rely on a close collaboration between team members’.
In order to ‘do’ XP, we need are certain thing that ‘should’ be done, these can be seen as rules where we don’t have choice whether or not to apply it. Example of these sub-processes is the set of tests to be conducted; those tests are mandatory, if we do not perform them correctly, we can’t consider that we are doing eXtreme Programming. Those rules force XP to be considered as a ‘discipline’ of software development.
Weaknesses of XP
As every method or approach, XP has some cons which are the result of its strict rules. These cons can be summarized in:
– Detailed specifications are not written: reviewing and discussing the specifications can be really painful without written support, as majority of them are spoken only.
– Design after testing: The tests should be created before the
– Constant refactoring: As we do not have the whole requirements and specifications at the beginning, changes are made during the whole development cycle.
– Customer availability: the customers should be available during the development process to continuously provide the developers and all the team with details about specifications and requirements.
– Ivar Jacobson (2000). The road to the unified software development process. ISBN:0-521-78774-2.
– Kent Beck (2000). Extreme Programming explained. ISBN: 201-61641-6.
– Lisa Crispin, Tip House (2003). Testing Extreme Programming. ISBN: 0-321-11355-1.
– Eric M. Burke & Brian M. Coyner (2003). Java Extreme Programming Cookbook. ISBN: 0-596-00387-0