Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

SURFHVV IRU (QJLVXG

2006

Abstract After a careful analysis of the development process in Engisud, in this document XPAME, an XP-based Agile methodology for Engisud, is proposed. XPAME has been thought to meet the several critical issues gathered from interviews of the main representatives of functional, technical and development areas of Engisud.

$JLOH6RIWZDUH'HYHORSPHQWRI (PEHGGHG6\VWHPV Version : Date : Pages : 1.5 2006.06.08 34 $JLOH'HOLYHUDEOH' $QHZGHYHORSPHQW SURFHVVIRU(QJLVXG Authors Marco Alessi Giovanni Aiello Alberto Sillitti Giancarlo Succi Abstract After a careful analysis of the development process in Engisud, in this document XPAME, an XP-based Agile methodology for Engisud, is proposed. XPAME has been thought to meet the several critical issues gathered from interviews of the main representatives of functional, technical and development areas of Engisud. Status Final Confidentiality Public Index Abstract............................................................................................................................................... 3 Chapter 1. ........................................................................................................................................... 5 Agile methodologies for software development, new approaches for Engisud ............................ 5 1.1. Software requirements Management ................................................................................... 6 1.2. Adaptive development process management - Iterations .................................................... 7 1.3. Difficulties to make measures.............................................................................................. 7 1.4. Limitations to adopt agile methodologies............................................................................ 8 1.5. Some best practices of the proposed agile methodology for Engisud ................................. 8 1.5.1. Test Driven Development and Unit test practice........................................................ 8 1.5.2. Refactoring................................................................................................................. 11 Chapter 2. ......................................................................................................................................... 12 The current development process of Engisud ............................................................................... 12 2.1. Interaction with the customer and requirements elicitation............................................... 12 2.2. Requirements analysis ....................................................................................................... 14 2.3. Processes development: technical and development areas ................................................ 15 2.4. Considerations.................................................................................................................... 16 Chapter 3. ......................................................................................................................................... 20 Proposed Methodology for Engisud ............................................................................................... 20 3.1. Proposed Methodology: XPAME practices....................................................................... 20 3.1.1. Basic concepts of Agile Requirements Management .................................................... 20 3.1.2. User stories..................................................................................................................... 20 3.1.3. Writing user stories ........................................................................................................ 23 3.1.4. Estimation of user stories............................................................................................... 23 3.1.5. Iteration and Release Planning....................................................................................... 24 3.1.6. Acceptance tests............................................................................................................. 26 3.1.7. Relationship with the customer...................................................................................... 27 3.1.8. XPAME development process....................................................................................... 28 3.1.9. Tools to support XPAME. ............................................................................................. 32 Conclusions and future work.......................................................................................................... 33 2 ________________________________________________________________________________ Abstract In this document XPAME, an innovative software development process for Engisud, is proposed. XPAME supports an Agile project management and development and is based on some practices of the eXtreme Programming: • • • • • User stories Acceptance test Test driven development Continuous feedback from the customer Team monitoring through the processing of several Agile metrics such as team velocity, iteration length and graphs showing the differences between the real team progress and the planned one. The development process is supported by two tools for Agile software management, described in [4] and [5]. The above mentioned tools support a complete development process: project definition, user story definition, acceptances test definition, software development by Test Driven Development. The two tools devoted to the agile project management and development are called, respectively, eXtreme Project Manager [4] and Test case generator [5] and will be part of a framework available for Engisud at the end of the ITEA-AGILE project, expected on 31st December 2006. Extreme Project Manager supports a complete agile Project Management through customer user stories definition and estimation, acceptance test definition, iteration plans, release plans, responsibilities assignment. Test case generator supports a software development by Test Driven Development through the integration of one or more plug-ins to the development environment used in Engisud (Eclipse 3.0 or later). In this document the terms “customer” and “team of customer” are used as synonyms. During the agile assessment period a set of practices and assumptions, described to the manifesto for agile software development [6], were taken into consideration. XPAME is an iterative and incremental process based on a set of agile best practices used on an XP-based process. The major practices are: • • • • To support a non rigorous requirement elicitation through an involvement of the customer (or customer team) to write User stories and Acceptance tests rather than to introduce use cases. The goal is to minimize the effort spent to write useless analysis and design documentation and to make it consistent with the code, in fact the inconsistent tie between them makes the documentation unusable. XPAME emphasizes the advantages of a requirements elicitation and analysis by user stories "directly written by the customer", acceptance tests and development of the code that satisfies the tests. To perform an Agile Modeling avoiding an up-front architecture definition, performing minimal sketches of the model and starting the development by Test Driven Development practice. Software tests (xUnit tests) are the reflection of customer acceptance tests and their satisfaction assures that the code meets customer expectations. To write test classes before the implementation of any business logic unit satisfying tests. To perform integration and regression testing. ________________________________________________________________________________ 3 • • • To develop high-level features of the software and, then, to evolve software components adding the needed flexibility and removing the needless one. To adopt the Pair Programming practice within the team. To evolve the software development towards the direction performing the maximum value added for the customer. A first version of Extreme Project Manager and Test Case Generator has been released in March 2006. They follow all aforesaid principles, except the pair programming practice which is made at discretion of the project managers. ________________________________________________________________________________ 4 Chapter 1. Agile methodologies for software development, new approaches for Engisud The software development is often a chaotic activity characterized by continuous code updates due to continuous changes of the software requirements. Furthermore, when several design choices are taken, a change of requirements during the development could involve a change of the design. These changes can introduce a low risk level when the software size is small, but when the size increases, it becomes hard to add new features to the software. Often a long test phase after the code development finds several bugs that have to be fixed, involving delays for releases and the customer dissatisfaction, due to the bugs control unpredictability. Conventional software engineering methodologies impose a disciplined development process with the aim to make the process as efficient as possible setting great emphasis to the planning and the modelling. Nevertheless, these methodologies are affected by several drawbacks, due to their bureaucratic nature; too many tasks have to be performed to the software development, often involving a speed decrease. Recently, a new group of methodologies has been proposed. For a brief period they have been known as light-weight methodologies, but now the new term is agile methodologies. They were an attraction for both software and industrial companies due to their agile responsiveness to bureaucratic features of plan based methodologies. Agile methodologies are adaptive rather than predictable, in order to obtain an agile responsiveness to requirement changes. As a result, agile methodologies add the non- predictable feature and avoid redundancies on the code to conventional software development processes (i.e. waterfall) or, generally, to any planbased methodology. The major feature showed by agile methodologies is the incremental software development without any up-front model, and the evolvement of the model releasing software increments that imply value added for the customer. Agile methodologies are code oriented, since they assume as major documentation the implemented code. The iterative feature of agile methodologies provides short-term plans inside the temporal window of a single iteration. Furthermore, agile methodologies are directed to the individual rather than to the process. For this reason they are individual-oriented rather than process-oriented, keeping in mind the developer’s features, represented by his skill. For this reason a skill inventory compilation by developers adds efficiency to an agile methodology. If the software development process has to be adaptive, high trust in the developers and their involvement in the decision making process is needed. ________________________________________________________________________________ 5 1.1. Software requirements Management Conventional methodologies assume that requirements are well formalized before beginning the development process. In this phase a set of documents dealing requirements elicitation and analysis are produced (i.e. the Requirements Analysis Document). When all requirements are gathered and analyzed, the code development will be based on the analysis results, providing a design of the whole software. A plan-based approach can be reliable in a stable environment, where the software requirements are well known. Figure 1 shows the cost of software requirements changes during the phases of a plan-based development process according to the Kent Beck analysis [7]. Figure 1. Cost of requirement changes on a plan-based process In figure 1 it is clearly showed the exponential nature of the cost curve in a waterfall development process. Nevertheless, most of software projects are characterized by continuous requirements changes, making unreliable the predictable solution. The main goal, therefore, was to make adaptive the Engisud software development process aiming to abtain a logarithmic trend of the cost of change during iterations (figure 2). Figure 2. Cost of requirement changes on an agile process (main goal for Engisud) Responsiveness to the requirement changes also involves a reduction of the time-to-market. A careful analysis of the current development process of Engisud has pointed out the natural change of requirements during any business software realization, therefore the adoption of an adaptive development process rather than a predictable development process is needed. Furthermore, the ________________________________________________________________________________ 6 agile assessment has pointed out the need to continually release software increments to the customer. In this way the customer can use the software after the first iterations in order to evaluate it, providing continuous feedbacks. For this reason an iterative development process was proposed as an agile methodology for Engisud The pilot project subjected to an agile assessment was the ERP-Light project because it involved the complete Engisud development process. ERP-Light has been affected by continuous requirements changes involving a total system redesign. The eXtreme Project Manager tool has been realized to meet the business needs, to drive to an XPAME development process, to add the adaptability feature, to continually release software increments, to obtain continuous feedback from the customer in order to develop code satisfying customer expectations. 1.2. Adaptive development process management - Iterations The agile assessment in Engisud has pointed out the need of a reliable feedback method among customers, management and development teams frequently showing the trend of project results. For this reason, XPAME is also an iterative process. Each iteration is devoted to the development of a subset of functional requirements, according to descriptions related to user stories to be developed for the selected iteration. Therefore, the iterations provide increments to the existent code from the customer point of view. When a set of iteration results can form a release, the customer can start to interact with the software release, providing continuous feedback to the developer team. The iterative development can be applied also in predictable processes contexts, but it is required on adaptive ones whose peculiarity is to respond to functional requirements changes with a minimum cost. The iteration length depends on the chosen agile development process: one to three weeks on eXtreme Programming, one month on SCRUM methodology, and more time for Crystal family methodologies. However, the goal is to make iteration as short as possible in order to provide continuous releases and to obtain continuous feedback from the customer. 1.3. Difficulties to make measures Often, project managers do not implement code, they rather assign responsibilities to developers. Therefore a reliable way to monitor the software progress is needed in order to check possible differences between the planned progress and the real one. Nevertheless, performing these measures is a difficult task due to the non-predictable team features. Although the spent effort, often to perform basic software measures, such as the productivity, is very difficult, without which any external control type is destined to fail. The introduction of a measures-based management without good measures implies several problems. Furthermore, a measure of performances requires the evaluation of all considerable factors. The omission of some details involves the alteration of the work from workers in order to gather best measures, even if the work effectiveness decreases. Therefore, there is to choose between a measure-based management and a delegation-based management. In a delegation-based management workers decide how to perform their work. The measure-based management is right for simple and repetitive works, with a low knowledge level and with measurable results, just the opposite of the experience of the software engineering. Therefore, traditional methods assume that the effective management is the measure-based one. ________________________________________________________________________________ 7 Nevertheless, the agile community assume that a measure-based management involves an alteration of measures themselves, while a delegation based management is more effective. All these aspects are supported by the proposed system. 1.4. Limitations to adopt agile methodologies Agile methodologies are thought out for small/medium size development teams. The eXtreme Programming methodology expects team composed by approximately twenty people. Other agile approaches are thought out for more large teams, for example the Feature Driven Development was primarily designed for teams composed by approximately fifty people. Even if the software project is not characterized by requirements changes, several agile best practices would be adopted on the current development process in order to reach a risk decrease and a fast development process. The Test Driven Development best practice assures to implement working and tested code. Furthermore, a set of test types (black box testing, white box testing, integration testing e regression testing) assures the full code coverage by a testing of all software components. 1.5. Some best practices of the proposed agile methodology for Engisud 1.5.1. Test Driven Development and Unit test practice The literature concerning software development is rich of pattern and best practices; but not always what is formalized in literature finds a correct and systematic application in the development practices. To the practical act, important themes are often not included in a systematic way inside the development process. One of these themes, maybe the most important , is related to the tests. The test is verification, a validation of the work in terms of correct development of the functionality of the system from the customer’s point of view. Several testing typologies exist: o White-box testing: also called building test that aims to verify if the class is well built giving incoming varied types of data and testing which exceptions are not thrown. o Black-box testing: also called functional testing, used to verify that the software corresponds to its specifications and that all the functionalities expected are included. o Regression testing: useful to verify that all defined tests pass whenever a code update is done. Therefore, test can be ran when a new feature is added or during a code refactoring, in order to assure the well working of the software and the lack of new bugs. o Integration testing: integration tests are useful to verify that all software components correctly communicate among them. For instance, tests concerning a control class are integration tests. Agile methodologies underline the role of the testing in the Test Driven Development (TDD) practice. Test Driven Development is a technique which tends to express software functionalities in terms of tests. The tests are written before the business code implementation and they should contain the verifications to establish that the code behaviour fits with customer requests. ________________________________________________________________________________ 8 TDD features are: • To provide Unit Tests which correspond to software specifications. • Every test has to verify a functional code unit. • To create a test suite that describes requirements and that reflects acceptance tests written by the customer. These tests will initially fail because specifications have not been implemented yet. • To write the code which satisfies specifications aiming to satisfy tests. • To perform a “Refactoring” to assure good code implementation in terms of both a lack of redundancies and its read easiness. Refactoring is very important because it allows to take design choices and to implement particular design patterns. To perform a development based on a translation of customer requirements in software tests produces several benefits in terms of: • Quality: TDD assures to implement code with minimum bug number related to functionalities to be realized, but a set of well written unit tests has to be available. Therefore, the unit test should be driven by the technical area, which holds greater experience in development and software design. • Functional Requirements Documentation: Each unit test describes appropriate use of the single developed class. • Maintenance: To have well written tests means to continuously maintain the quality of the code without the risk of compromising already working code, involving low maintenance costs. • Continuous feed-back: A cycle in TDD should be very short so that the feedback level is high. The TDD work-flow is the following: 1. To perform a minimal sketching of functionalities to be realized; 2. To implement interfaces of classes to be developed; 3. To add a test before the functionalities coding; 4. To run the test (the first time it will fail); 5. To implement the code related to each functionality; 6. To run the test again; 7. If the test fails, to modify the code implemented on step 5 and to run the test again (Step 6) ________________________________________________________________________________ 9 8. If the test passes 8.1. To verify, through refactoring, the lack of redundanciess and needless statements and to run the test again (Step 6). Go back to step 1 for the development of a new functionality. Figure 3 shows the TDD process. Create a “ compilable” test class extending from the TestCase class of junit.framework package Run test [Fail] Implement the business class [Fail] Run test [ok] Refactoring of the business class Figure 3. Test Driven Development Several frameworks such as JUnit [1] are very useful in order to make the TDD practice and tests execution and management easy. In TDD, the index of test quality is "directly proportional to the amount of bugs found", therefore if initially the tests do not point out any bugs, it means they are not sufficiently rigorous. ________________________________________________________________________________ 10 Furthermore, it is a good practise to add tests related to bugs found before removing them. Even if agile methodologies are not used in the development process, to develop software according to TDD guarantees the availability of a test suite associated with the implemented code must exist, increasing the robustness, simplifying the refactoring phase and the introduction of new functionalities through continuous integration. TDD, opportunely applied, guarantees a test suite allowing to check software regressions, and provides documentations of the implemented code, in fact the tests are, of course, good “use cases” of implemented classes and methods. 1.5.2. Refactoring A code refactoring means to perform several changes to the code keeping characteristics unchanged, so that an improvement of non functional features such as simplicity, flexibility, comprehensibility, performances and the robustness of the code is performed. Therefore, refactoring represents a disciplined way to increase the elegance of the existing code with a lack of new bugs, it adds comprehensibility of the code so that a better management of the code in terms of maintenance, bug fixing and addition of new functionalities is realized. The refactoring consists of several steps of change of the code, whose cumulative effect can drastically improve the entire software project. Every step has to be simple and clear (i.e. to move a method from a class to another class). A pre-requisite of the refactoring practice is the availability of a test suite able to check software regressions. The tests are the principal tool that allows to modify working code without any risk. ________________________________________________________________________________ 11 Chapter 2. The current development process of Engisud In this chapter an analysis of the current development process of Engisud is described. The analysis involves all phases of the current process: interaction with the customer, requirements elicitation and analysis, software development, software testing. The piloting refers to the ERP-Light project. During the analysis several issues were identified and an agile development process was proposed for Engisud in order to add some agile best practices to its current development process. Since the agile development process uses several XP best practices, in this document it is called XPAME. 2.1. Interaction with the customer and requirements elicitation During the requirements elicitation, Engisud performs a set of interviews in order to identify the business process and area of the customer, usually represented by Small/Medium Enterprise (SME). Therefore Engisud identifies and formalizes the SME business process, the ICT system, and critical issues. Such activities are difficult tasks because the customer is not always able to explain its needs, therefore Engisud also aims to drive the customer to express real problems and priorities. All phases related to the interaction between Engisud and the customer are shown in figure 4. The above mentioned activities concern the Focus phase. The next phase is the As is, where a rigorous analysis of current internal processes of the customer company is performed (i.e. marketing, warehouse management, purchases, manufacturing, accounting area). Engisud proposes its solution based on the results of the analysis, and a further verification of critical issues is performed in order to find problems not underlined by the customer. After these activities the customer provides the so-called “acceptance scenarios”, and at this point the involvement of the customer decreases. The interaction with the customer begins again when the To be phase starts. In this phase Engisud shows the customer the proposed system through “use cases” that perform processes, and the value added is underlined. This activity is made easy thanks to the high level of know-how present in Engisud related to processes-based development that is a well thought by potential customers. The output of the To be phase is a document containing the Engisud solution. This document describes improvements to be carried out on the current informative system in terms of processes; furthermore it describes how Engisud will work in order to resolve problems that the customer did not identify. Finally, the Plan phase is devoted to the design of a new process scenario, to perform several estimates in terms of effort and costs to realize each scenario. All plans are discussed with the customer. The Plan phase is also devoted to identify “facilitated finance solutions” in order to make the purchasing of Engisud solutions less expensive for the customer. All the above mentioned phases are applied in an iterative way, based on a priority order provided by the customer. Thanks to this feature, executable software increments are frequently released to the customer and can be evaluated. ________________________________________________________________________________ 12 ERP-Solutions Process phases Focus As is To be Plan 1. Study about the client’s business area 2. Study about the current system 3. Critical issues elicitation of the current system from the client’s point of view 1. Study the work processes to find further critical issues . 2. Present new critical issues not found by the customer 1. The proposed solution is shown. 2. A document containing the scenarios improvement is created and shown to the customer. 1. Planning scenarios realization (time assessment) 2. Planning scenarios cost . 3. Proposing facilitated finance solutions Release (Executable block ) Figure 4. Phases related to the interaction between Engisud and the customer Engisud proposes both ERP solutions and Oracle solutions. For the latter the Electronic Business Suite Special Edition version is proposed. When Oracle solutions are proposed, Engisud realizes customizations, for instance it performs custom user interfaces for the customer company. In order to identify additional features, during first meetings with the customer a set of questionnaires are submitted so that the customer can fill them in with the support of the functional area of Engisud. Furthermore, Engisud performs the Oracle suite installation and functional tests. After the installation, the customer provides several “acceptance use case” so that Engisud can test the code from the customer’s point of view. Nevertheless, the customer does not provide any acceptance tests because the proposed product has standard features. A critical issue during the requirements elicitation is the lack of the participation of the customer. ________________________________________________________________________________ 13 2.2. Requirements analysis Concerning the requirements analysis, Engisud adopts an incremental method (similar to Boehm spiral model). The first experience for Engisud related to ERP solutions is represented by the ERP-Light project. The ERP-Light project, because of its largeness, has been subdivided into several functional areas each of which has been assigned to a single technical designer. For each functional area a processes based design has been performed. Each process provides the following output types: 1. Web Workflow (WWF) 2. Process Workflow (PWF) 3. Software Component (CSW) Note: WWF, PWF and CSW follow a standard WWFs represent process units, therefore these “work units” are tested through unit tests. The PWF represents the description of the product, it contains a set of all WWFs and CSWs involved in the process. For each process two documents are provided containing, respectively, the process description and the “unit test plan” which a single WWF has to pass. The two documents follow a life cycle, described in [2], before their publication to the technical area. When documents are published, the technical designer begins the WWF development. The requirements analysis is shown in figure 5. Functional areas identification Processes identification Task Task Functional analysis Requirements FA 1 ... FA i ... FA n Process 1 ... Process i ... Process n Analysis document WWF development (Technical area) Documentation Unit test plan Figure 5. Requirements analysis process (functional area) During interviews the need to have more feedback from the customer, in order to provide a “better team work integration and to speed up the analysis process”, was underlined . ________________________________________________________________________________ 14 2.3. Processes development: technical and development areas The technical area is made up of technical designers which can access the documentation related to several Web Workflows provided by the functional area. Technical designers examine documents provided by the functional area and they assign activities to the development area. Each activity is assigned to a single developer. At the current stage, no testing tools (i.e. JUnit) are used to perform unit tests of a single activity; when the development area implements a single activity, it performs functional tests described in the unit test plan document provided by the functional area. When unit test plans are passed, the development area assigns the activity to the technical area which performs both the integration of the activity on the system and the integration testing. In the latest phase, the JUnit framework is used. When all tests pass, the technical area assigns integrated WWFs to the functional area which performs all tests again. The development process is shown in figure 6. Development area Technical area Functional area WORKFLOW: 1. It splits processes in activities (components). 2. It provides documentation related to several activities. 3. It publishes documents (tolomeo.eng.it). 4. It opens bugs related to several activities(aziz.eng.it) It assigns outputs WORKFLOW: 1. It assigns each activity to developers (one activity for each developer) 2. It performs design choices - Assigned activities - Activities to be implemented Feedbacks Activity 1 Activity 2 Activity 2 Activity 1 It assigns outputs OUTPUT: OUTPUT: Activity 1 INPUT: Assigned activities INPUT: Opened bugs related to each activity Activity n Activity n WORKFLOW: 1. Implementation 2. Full testing (Unit test) Activity 2 1. Implementation 2. Full testing (Unit test) Activity n 1. Implementation 2. Full testing (Unit test) OUTPUT: Activities implemented and tested by the development area INPUT: Activities implemented and tested by the INPUT: development area 1. Software increment It assigns outputs WORKFLOW: 1. Fulll testing of the software increment It assigns outputs 1. Testing of a set of activities 2. Integration of inputs OUTPUT: OUTPUT: - Software increment releasable - Software increment Feedbacks Figure 6. WORKFLOW: Feedbacks Organizational diagram related to the execution of several activities Every 15 days, a meeting among functional, technical and development areas is performed in order to provide a Work Progress State (WPS). During the WPS meeting there is a debate regarding developed activities and an identification of problems related to delays and/or technologies. WPS is also a good way to perform a planning for the next 15 days, nevertheless requirements changes may involve the plans reliability. Assignment criteria of activities depend on their overhead and on the developers’ skills. This well meets with the agile methodologies principles. Currently, Engisud has a small/medium size development team (about 10 people). This last feature facilitates the deployment of agile best practices. ________________________________________________________________________________ 15 The technical/development areas do not adopt an automatic testing method. Apart from this consideration, technical and development areas do not present critical issues. 2.4. Considerations The analysis of the entire development process has identified some critical aspects inside a few macro-phases: requirements collection, requirements analysis, development and testing. The requirements collection phase, that at present deals with Oracle solutions but it can be considered a general process, highlights some critical aspects related to the direct interaction with the customer. At present, his involvement is low and concentrated only in the requirements collection and in the testing phases. The customer does not provide any feedback during the development and he does not provide any acceptance test during the requirements collection. This approach results in difficulties in verifying the developed modules and the customized solutions. Acceptance test would be an opportunity to identify and ship only the functionalities that provides value to the customer reducing the overhead associated to whatever seems to be necessary but is actually not required. During the analysis of the development process, we have asked the heads of all the development areas of Engisud to fill in a set of questionnaires. Such questionnaires have also been submitted to other 64 software companies located in the European Union and in North America. From the analysis of the answers collected from Engisud and from the other companies, it is possible to identify problems inside Engisud and positioning Engisud in a wider context. This positioning is useful to understand if such problems are only related to Engisud or they are common ones. Have you modified the process or the technique used to collect requirements in the last few years? Is the requirements collection performed mainly at the beginning? Techniques for requirements collection Do you use automated tools to manage requirements? Do the requirements Engisud Other 64 companies Yes, because of the availability 100% yes. The main reasons are of new and better techniques supporting changing requirements and new and better methods for their management Yes Well known techniques such as questionnaires, interviews, documents analysis and group techniques such as workshops. A few tools for data management are used to support the development of functional tests, trace requirements and support requirements analysis. Yes., sometimes the No, during the entire project (100% agile companies and 10% traditional companies). Yes, 90% traditional companies. All companies use well known techniques such as questionnaires, interviews, etc. 100% of the agile companies and 50% of the traditional ones use also techniques based on simulations or models 50% of the traditional companies and 60% of the agile ones use automated tools tot race requirements. For 60% of traditional companies and ________________________________________________________________________________ 16 change during the development? requirements identified at the beginning change due to the increased level of understanding of the problem and the identification of errors and/or misunderstandings What is the impact of change? The main impact is on the organization and control of the development process, in contracts (time and cost), and customer satisfaction Are there communication problems? How are they solved? Yes, with the customer due to the different languages used and due to the communication channel. Problems are solved trying to use a common language, asking more detailed questions, using diagrams and workflows. Yes, between analysts and developers caused by the different points of view, differences of the people involved, emotional and relational aspects. Conflicts are solved through frequent meetings and identifying the reasons for them Are there any conflicts? What kind of collaboration do you have with your customers? The customer is not present during the development process due to his lack of time 100% of the agile ones, requirements change frequently or very frequently. The main causes are: lack of clarity in the objectives (>80%), communication problems (misunderstandings) (>60%), improvement of the level of knowledge of the problem (60%) For 60% of the traditional companies it has an impact on contracts, for 50% on the quality, for 45% on the customer satisfaction, for 30% on the organization of the development process. For 100% of the agile ones the impact is not relevant About 45% of the companies have problems in the communication with the customer due to the language or due to the lack of domain knowledge 45% of the traditional companies and 60% of the agile ones experience conflicts between developers and managers, 10% of the traditional and no agile companies experience conflicts among developers, 50% of the traditional and 20% of the agile companies experience conflicts among the representatives of the functional areas. For about 60% of the agile companies such conflicts are related to the traditional culture of the companies. For 60% of the traditional companies the conflicts are due to the lack of information or due to the differences among the members of the development team 65% of the agile companies and 80% of the traditional ones have a continuous relationship with the customers, 35% of the agile ones and 20% of the traditional ones have the customer onsite. The data analysis identifies the following problems: • Misunderstandings in the collection of the requirements. ________________________________________________________________________________ 17 • • • • • • Instability of the requirements collected at the beginning. Lack of verification of the requirements by the customer. Inability of the customer to provide a clear and complete set of requirements actually needed. Difficult relationship with the customer due to the differences of the involved parties (knowledge, language, etc.) and due to the lack of time of the customer. This last problem is usually solved (partially) through meetings on the most important issues. Sometimes the identification and the management of the requirements create conflicts among the subjects involved in the project. Conflicts related to the analyzed requirements due to the absence of the customer causing lack of information. Comparing Engisud with the other companies analyzed, Engisud has the same problems of the traditional companies. There are no relevant differences in all the questions. About the software development process, the common problems are listed in the following table. Have you changed your development process in the last few years? What are the main development problems? Engisud Yes, because of the change of the technologies used 1) Difficulty in shipping the product according to the plan 2) Development of all the requested features Which are the adopted solutions? Incremental releases and more involvement of the customer in all the development phases How is organized the development process? Precise division of the development phases and incremental development based on the feedback of the customer Are you satisfied with your planning abilities? Not much. How do you plan? On the base of the past Other 64 companies 100% of the companies have changed it. The main reasons are: changes of the technologies used, changes in the customer needs 1) Difficulty of shipping the product in time with all the requested features (70%) 2) Relationship with the customer (35%) 3) Lack of personnel (>25%) Traditional companies: more detailed requirements analysis (50%), incremental releases (70%), more communication (20%), Agile companies: more agile methods (70%), more involvement of the customer (40%). Traditional companies: incremental development with feedback from the customer (55%), precise division of the tasks (45%), prototypes (45%). Agile companies: incremental development with feedback from the customer (75%), planning of only needed functionalities (45%) Very much: 15% agile, 10% traditional Much: 75% agile, 65% traditional Not much: 10% agile, 20% traditional Not at all: 5% traditional Traditional companies: past experience ________________________________________________________________________________ 18 experience (80%), function points (15%) Agile companies: past experience (70%), function points (30%) Comparing Engisud with the other analyzed companies, Engisud shows the same problems of most of the traditional companies. However, in this case, there are some important differences. The main ones are: • Engisud has no problems in recruiting qualified people. This is because it is located in a geographical area with a large university and young graduated have difficulties in finding a good job as computer scientists in the area. • The level of satisfaction with planning is poor. This is mainly due to the specific customers of Engisud: SMEs. Often, SMEs have problems in identifying their needs or they change their expectations during the development. This implies a frequent re-planning of the project after the requirements collection and analysis, therefore there is a need for development methods able to support changes since it is not possible to avoid them. ________________________________________________________________________________ 19 Chapter 3. Proposed Methodology for Engisud On the base of the analysis of the questionnaires, this section proposes a methodology based on some best practices of the agile methods and adapting them to the specific context of Engisud. To support such practices, a tool for project management is proposed. Such tool is able to support the agile practices adapted to Engisud. In this first version XP projects are supported. The developed tool includes two modules: eXtreme Project Manager [4] and Test case Generator [5]. Such modules guide the developers through a process a customized version of XP. In this section, the present development techniques and the proposed new one are presented. The light-weight features of the new method and the usage of the tools are highlighted. The terminology and the main concepts of XP will be introduced contextualizing them in the proposed development method. Such concepts include, among the others: • Requirements collection and analysis: user stories, acceptance tests. • Software development and testing: Test Driven Development. Among these key concepts, iterations and releases plan will be analyzed to guide the development team to improve their planning abilities and ship incremental releases to collect valuable feedback from the customer. Such approach is required to solve the problems related to the frequent changes of the requirements. To support the development method, the usage of the eXtreme Project Manager will be analyzed. 3.1. Proposed Methodology: XPAME practices 3.1.1.Basic concepts of Agile Requirements Management The basic concepts described here below include the assumptions made during the development of eXtreme Project Manager and their meaning in the specific context of Engisud. 3.1.2. User stories A user story describes valuable functionalities from the point of view of the user of the final software product. A user story includes three main aspects: • They remind the assumptions made during the requirements collection. • They are discussed with the customer to identify the details. • They have some test connected to verify their correct implementation. Since a user story is written down on a piece of paper, these three aspects are described as a Card, a Conversation, and a Confirm [3]. The Card is the row paper of the story, the Conversation is the content, and the Confirm is how to test the story. User Stories are described by the customer not by the software analyst. This is because a story has to be written using an understandable business language rather than a technical language not well 20 ________________________________________________________________________________ understood by the customer. In this way the customer is forced to understand and express in a better way his own needs. As described later, the customer decides the priority of the stories he has designed. Such prioritization will be the input for the planning of the iterations and the deadlines for the releases. Here below there is a user story written for the development of the eXtreme Project Manager tool. U Usseerr ssttoorryy:: The developer defines the user stories in collaboration with the customer. User Stories are functionalities that provide a real value to the customer. For this reason, stories containing both functional and non-functional requirement, as reported below, are not well formed: • • The product has to be written in Jana using SWT/JFace Use the MySQL Database To include such information two approaches are suitable: a) Use additional stories. b) If some technical details are deeply connected to a story they can be added as notes, not as main content. If a user story is particularly long it is defined as epic. The identification of epics is done when their length is estimated. In such cases they are split into smaller stories called splits. During the estimation of the stories the presence of the customer is important to make a correct split when needed to discuss the details. An example of user story with a note is the following: U Usseerr ssttoorryy:: Information related to the release plan has to be printable NOTE: The output has to include information related to the total number of story points, in which iteration is planned the shipment, and information related to the velocity of the team 21 ________________________________________________________________________________ The definition of the tests (used for the Test Driver Development) is related to the definition of the Acceptance Tests described in the user story by the customer. Even the acceptance tests are written together with the customer. This is an example: A Acccceeppttaannccee tteesstt • • Building a release plan without user stories (is not allowed) Building a release plan with not estimated stories (is not allowed the inclusion of not estimated stories) • Building a release plan without the computation of the velocity of the team (consider a team with virtual developers and create estimates) • … Acceptance tests should guide developers in the definition of the unit tests in the first phases of the test driven development. When all the tests are executed correctly, the developer can consider the related story “COMPLETED BUT NOT VERIFIED”. When the entire team (project manager + developers) will become confident with the agile development they will realize that using user stories is more productive than use cases for the following reasons: • • • • • • • User stories focus on oral and concise communication rather than on written and long communication. User stories are understandable by both the customer and the developers. User stories allow planning of releases and iterations. User stories are good for iterative development. User stories postpone the specification of the details until requirements are clear to the development team. The related acceptance tests are the base for the development of the test cases. From the test cases is possible to use Test Driven Development. Since user stories focus on oral communication rather than on written communication, important decisions are not hidden into long documents but they are visible in the acceptance tests that have to be executed to consider the story implemented correctly. An iterative development process allows the refinement of a software product through several steps: the development team produces the first implementation with only a few functionalities that are considered important for the customer. Such first release will be extended several times adding a few functionalities each time according to the priorities specified by the customer. User stories are suitable for iterative development because it is possible to iterate through stories: to define a functionality the customer can write an epic and when it has to be implemented it can be split into several splits for which it is possible to plan the implementation. 22 ________________________________________________________________________________ 3.1.3. Writing user stories User stories can be implemented in an iterative way and they can be modified by the customer if needed. For this reason, techniques for lightweight collection and management of the stories are needed. Some techniques are the following: • Interviews • Questionnaires • Observations • Meetings for writing user stories The first three techniques deal with the collection of requirements through a proxy (usually a business analyst) as it happens in the traditional techniques such as waterfall. The meeting for writing the stories is specific for the agile development and involves developers, users, and managers. This meeting is usually done before each release plan. During that the participants write the stories without assigning a priority. 3.1.4. Estimation of user stories During the estimation of the user stories it may happen to identify epics or it is required to modify some of them. In the former case, it is possible to split the stories to allow a better estimation and reduce the effort needed for the first implementation. Such operations can be done in any moment during the project. The unit used for measuring the length of a story is the story point which is a day of development of a senior developer. The day is considered made of 8 hours dedicated completely to development. For every user story two estimates have to be made: one at 50% of confidence level and one at 90% of confidence level. Such information are very important to create a meaningful estimate of the story [3]. The two measures indicate that the development team forecasts that the implementation will be done in that time interval. Each estimation method for user stories is based on different sets of metrics for measuring the velocity and the effort of the team members: • Team velocity: it is the number of story points that the team is able to complete in a working day. To calculate the team velocity developers have to provide estimates of the number of story points that they can implement in a day. • Iteration length: is the number of working days of the iteration. Usually, it is about 20. There are several techniques to estimate user stories: • • • Gut feel estimate: is a qualitative estimate without a definition of specific values Analogy estimate: the estimate is based on similar user stories already implemented are considered. However, this estimate depends on the specific team. Decomposition estimate: sometimes it is useful to decompose a user story into smaller ones in order to make an estimate. At the beginning of the release plan user stories have to be small enough to allow reliable estimates and do not require too much time for their implementation. To allow a high level of flexibility user stories have to be quite small and their implementation have to be feasible in one iteration. If the estimate of a user story is greater than the velocity of the team in the iteration, the story has to be split to allow its 23 ________________________________________________________________________________ implementation is a single iteration. During the iteration plan, described in the next session, tasks for the user story can be defined and assigned to the team members. • Wideband Delphi estimate: as described in [3], it is an iterative and collaborative process that a team uses to estimate the effort that will be spent to realize a set of customer user stories. Generally, actors involved in a Wideband-Delphi meeting are developers, project managers and customers. Few days before the meeting starts, project managers provide, to involved developers, user stories which will be estimated so that they can think about them. Therefore, estimators can be both developers and project managers. The participation of the customer is very useful because she/he can directly interact with developers and share opinions concerning user stories. In a Wideband-Delphi meeting a moderator (generally a project manager) manages the order of user stories to be estimated based on their coherence. When the meeting starts, each estimator read the user story and, in private, provides his 50% and 90% levels of confidence estimates in story points (iteration 1). When all estimators are ready, they publish their estimates. Initially, the estimates will be divergent, the estimators will therefore debate on the reasons of their estimates. It represents a good chance for knowledge sharing among several team members and to clear up misunderstandings, involving also the customer. After the group has discussed the story the moderator asks everyone to re-estimate, keeping old estimates (iteration 2). The estimators erase their old estimates and write new ones on their cards. When all estimators are ready, the estimates are republished. In many cases the estimates will already converge by the second round, otherwise high and low estimators explain the thinking behind their estimates. Iterations go on until estimate will converge, obtaining the final 50% and 90% levels of confidence estimates. The process is repeated for the next user story until all user stories for the iteration are estimated. 3.1.5. Iteration and Release Planning After the estimation phase, it is possible to define iterations and release plans. A release is made by one or more iterations. The Release Plan is a way to define when functionalities are added to the product. Such functionalities are defined through a set of user stories and the related acceptance tests. The Iteration Plan is a way to specify which user stories will be implemented in a single iteration. Such plans are related to the team velocity and the size of the user stories. Both the customer and the development team should be involved in the development of such plans. During the Iteration Planning, the customer orders the user stories according to the following criteria: • • The importance of the feature. The level of connection of a user story with the other ones. For instance, during the development of the eXtreme Project Manager tool, the user story “Insert Task”, describing the possibility of defining tasks, should have a comparable priority of the user story “Insert Sub-Task”, describing the insertion of sub-tasks. The sorting of the user stories should be performed in collaboration with the developers to clarify technical consequences of the decisions of the customer. It is not possible to define the release and the iteration plans if user stories are not already estimated. 24 ________________________________________________________________________________ The estimation of the stories is the assignment of story points to the story in order to define its size and the complexity. This session can be done without the customer since the estimation is only related to technical factors. The eXtreme Project Manager tool supports the estimation of the user stories through Wideband Delphi sessions. The Release Plan is created assigning a set of user stories to a release. On the base of the iteration length chosen by the Project Manager and on the base of the team velocity, the release plan provides information related to the time required for the implementation of the selected user stories specifying in which iteration the release will be ready and an estimate of the number of days required for the development. The Iteration Plan is specific for a single iteration and it is the assignment of a set of user stories, ordered by the customer, to the developers considering the number of story points. On the base of the number of story points that the team can implement in a single iteration, the customer specifies the stories to implement. For instance, let’s consider the set of user stories related to the eXtreme Project Manager tool listed in Table 1: ID 1 2 3 4 5 User story (title) Database Design Definition of the user stories User stories splitting Release Planning Effort estimation Estimate at 50% 2 2 2 2 2 Estimate at 90% 3 3 3 4 3 Partial sum (max-min)2 1 1 1 4 1 10 16 8 TOT Table 1. Estimation in story points of a set of user stories Supposing that the project manager is considering the iteration length equals to 5 days and the team velocity is 6 story points per iteration, the customer can assign a number of user stories equivalent to 6 story points per iteration. To get an estimation of the time required for the implementation of the stories the buffered schedule is calculated as follows: n buffered schedule = ∑ min i + i =0 n ∑ ( partial sum) i =1 i Therefore, if the customer chooses the first two stories: buffered schedule = 4 + 2 = 5.4 story points < 6 story points The customer can add a tiny story to reach the maximum of 6 story points. Now it is possible to define the release plan that lists the implementation time showed in Table 2. 25 ________________________________________________________________________________ Iteration User story Buffered schedule Iteration 1 Iteration 2 Iteration 3 1-2 3-4 5 5.4 6.2 3 Partial sum of story points 5.4 11.6 14.5 Table 2. Release Plan Looking at the table, the selected user stories will be implemented in the third iteration. The Buffered Schedule of the second iteration is 6.2 story points and the team velocity is 6 story points. Estimates are affected by error and a bias of ±0.5 story point is acceptable. If the team velocity is exceeded of more than | ±0.5 |, it is possible to divide a user story into smaller ones in order to use the entire team speed for the iteration. Team velocity is measured on the base of the estimates made by developers considering the effort they can spend in an iteration. Determining the team velocity is a key preliminary step for every kind of planning (Iteration Planning or Release Planning). In the release plan, if resources are not assigned, it is possible to make an estimate of the release plan assigning virtual developers to the project and making the estimated based on them. This approximate release plan can be useful to provide to the customer a general idea on the time required for the implementation. After that, project managers assign real developers to the project in a way that the real team velocity is similar to the virtual one. To plan a release, a set of stories are selected and ordered in a stack according to their priority. In this way knowing the team speed it is known at which iteration the project will end. Before starting an iteration, the customer can make any modification to the plan and to the stories not yet implemented. Then the iteration is over it is possible to measure the real velocity of the team and monitoring how the project is evolving. On the base of the real team velocity, the stacks of stories for the future iterations can be modified adding or removing stories according to story points that can be implemented in the iteration. 3.1.6. Acceptance tests Acceptance testing is the process able to verify if the user stories have been implemented correctly. Acceptance tests are written by the customer in collaboration with the testers of Engisud. According to the organization of the company, the role of tester can be played by a project manager, a developer or anyone with the technical background. This is very important since he is the interface of the company with the customer. The tester have to participate to every meeting with the customer since he is the person who interprets the expectations of the customer into JUnit test cases and guides the customer in the development of valid acceptance tests. This procedure includes both the definition of acceptance tests and the execution of such tests with an automated tool for their verification such as JUnit. Tests should be written just before the beginning of the iteration (or at least at the beginning) to assure that the development is carried out looking at the changing requirements. Let’s consider the following user story written for the eXtreme Project Manager tool: 26 ________________________________________________________________________________ U Usseerr ssttoorryy:: It should be possible to define the iteration plan in a guided way and the related acceptance tests: A Acccceeppttaannccee tteessttss • • • • • Try to start an iteration plan without defining iterations (not possible) Try to start and iteration plan without calculating the team velocity (not possible) Try to select stories of 7.0 story points with a team velocity of 7.2 (possible) Assure that every member of the development team receives a communication with the assigned tasks ... The defined tests try to capture the actual expectations of the customer about the functionality expressed in the user story and the related cases that the developers have to consider. User stories are not usage scenarios but a description of the functionalities from the point of view of the customer. 3.1.7. Relationship with the customer In a project where the requirements collection is performed through the collection of user stories there is a tighter connection with the customer compared to the connection created following a waterfall process [requirements collection, requirements analysis, coding, testing] where the communication with the customer is present mainly at the beginning during the definition of the usage scenarios and at the end during testing and deployment. Often, during the test phase the customer finds out that what was produced was not compliant with the expectations. This is because of the lack of feedback during the development of the functionalities of the software product. During a project guided by user stories the customer should be involved in the work to provide continuous feedback enabling the developers to tune the product managing effectively the changes required by the customer. After the definition of the stories in a specific meeting, the project manager and the customer decide the length of the iteration according to the needs of the customer and the estimation of the stories. At the end of every iteration developers are responsible for providing working code and verified against the related acceptance tests. The entire process depends on the correct and rigorous definition of the acceptance tests. 27 ________________________________________________________________________________ 3.1.8. XPAME development process XPAME is the agile development process proposed for Engisud, it includes the support for iterations and incremental development. During every iteration, all the phases of a traditional (waterfall) development process are implemented. Moreover, also inside a single iteration phases do not have to be organized in a sequential and predetermined way. It is possible to go back to a previous phase at any moment making the process adaptive. Obviously, two or more phases can be executed in parallel since, for instance, during the tests it is possible to plan an iteration, a release, or estimate user stories. Figure 7 shows XPAME, the development process proposed for Engisud and the flow of events. The ones with a light blue background are prerequisites for the others, while the ones with a green background are not. For instance, it is not possible to define a release or iteration plan without the estimation of the user stories, while it is possible to define iteration plans without a release plan. The showed phases are the following: • Collection of the user stories. The functional area together with the customer participates to user stories elicitation sessions in which user stories and acceptance tests are defined. Acceptance test are very important because they are the bases for writing the code. The description of the stories and the related tests is described in the sections 3.1.2 and 3.1.3. It is very important that the development of the stories is supported by technicians of the technical area since they have the experience required for inserting notes useful for the development team. If possible, it should be better that representatives of the developers are involved as well in the definition, since the oral communication is very important in such approaches. • Estimation of the user stories. Stories are estimated through a Wideband-Delphi session in which developers propose estimates at 50% and 90% of confidence level. If estimates are very high (such as 5 times the team velocity), this is an epic that has to be split into several smaller stories. Therefore, after a first session, the splitting is performed followed by the estimation of the splits. Estimation is very important since allows the development of release and iteration plans. • Release Planning. An high level release plan shows approximately when a set of estimated stories will be implemented. Through this plan it is possible to estimate the effort that will be spent for a set of stories. Obviously, all the plans related to the shipment of a product is related to the team velocity. To calculate the team velocity, the developers have to provide an estimate of the story points they are able to implement in a working day during every iteration. There are three methods for calculating the team velocity: o Past data o Perform an iteration and use the calculated velocity for all the iterations o Forecast the velocity on the base of principles used for the estimation of the user stories Using past data is not the best option since the values are strictly dependant on the skills of the developers and it does not consider the content of the user stories. The execution of an initial iteration is the best solution when the members of the team have no experience about the development process in Engisud. 28 ________________________________________________________________________________ When the development team has experience about how to estimate velocity and is able to provide reliable estimates, the best approach is the forecast of the velocity on the base of the principles used for the estimation of the stories. This approach called Forecasting velocity is based on the assumption that on the base of their experience developers provide estimates of the number of story points they will implement in a working day during each iteration. This measure allow the calculation of the velocity in each iteration, how many working days are required for the implementation of a specific number of story points, and at which iteration the selected stories will be implemented. This operation can be done only if there are resources assigned to the project. If this assignment is not done, the calculation is not possible. During the release planning the customer, supported by a representative of the technical area, selects a set of estimate and coherent stories. In this way, the estimated number of working days required for their implementation is: n days = ∑ story points j =1 j team velocity The release plan presents is a long term view, therefore the estimate is highly approximate • Iteration Planning. The Iteration Plan adds details to the Release Plan focusing only on a single iteration. To plan an iteration the development team calls a meeting in which all the stakeholders should be involved: project managers, developers, and customers. During the Iteration Planning the following sequence of activities is performed: • Discussion of the single user story • Definition of the tasks for the story (if needed) • Assignment of the responsibility related to the development tasks. During the Iteration Planning the customer sorts the user stories according to their priority. When all the stories have been discussed, developers estimate the accepted tasks. The goal of this phase is to saturate the story points that the team can develop in a single iteration. On the base of the velocity of the team in the iteration (the iteration length is fixed during the definition of the iteration) the customer with the support of the technicians selects a set of valid and coherently ordered stories for the iteration. ∑ (Story points) j ≤ (Team velocity ) × (iteration length) j A set of user stories is valid when they present a conceptual link among them, while it is coherently ordered when the implementation order does not affect the validity of the set. • Test Driven Development. People from the technical area together with the developers translate the acceptance tests into JUnit test cases. This is for implementing the Test Driver Development. This is the most important step since it is the mapping between the informal description of the requirements (user stories and acceptance tests) and the code. If the tests are well written they allow checking the code from the point of view of the customer. Tests have to be written by personnel with experience in translating informal technical 29 ________________________________________________________________________________ requirements. Unit tests defined for each developer will guide the development of the code since the goal of the developer will be the implementation of the code able to satisfy the tests. The set of the tests defined for each developer is a suite that will provide support to the refactoring activities. • Refactoring. It is an activity required to improve the quality and the readability of the source code. Continuous integration activities are required to verify the compatibility of the different pieces of the developed code. The technical area has to develop integration tests as well. At present, the development process of Engisud states that tests have to be formalized into documents. This activity should be translated into JUnit test cases. At the end of a cycle, if what is developed is a release, the functional area of Engisud. can consider the code ready to ship with a low number of bugs. However, the number of bugs is strictly related to the quality of the unit and integration tests. 30 ________________________________________________________________________________ START User stories elicitation session - User stories definition - Acceptance tests definition User stories estimation Refactoring And Continuous integration  END Release n Split 1 Split 2 Software Product Split n Test Driven Development Iteration planning Calculation of the team velocity Release planning Calculation of the team velocity Assignment of the user stories Assignment of the responsibilities Develope r Develope r …... Task Figure 7. Task …... Task Task Life cycle of a project according to the agile approach proposed for Engisud _______________________________________________________________________________________________________________ 31 3.1.9.Tools to support XPAME. The development process described in the section 3.1.8 is supported through two tools dealing with the management and implementation of a product: 1. eXtreme Project manager: a project management tool to guide the definition of requirements through user stories and acceptance tests. It supports an iterative and incremental development with the support of the short (iteration level) and long (release level) term planning through metrics like team velocity, iteration length, story estimates. 2. Test case generator: developed as a stand-alone tool and as an Eclipse plug-in, guides the developer in the implementation of the Test Driven Development. This tool has to be used by the tester. The input of the tool is the information related to the responsibilities of the developers and the assigned tasks. Further information related to the data and their flows are described in [4]. The high level representation of the development process is showed in Figure 8. eXtreme Project manager Interact eXtreme Project Manager useful for the collection and analysis of requirements through user stories and acceptance tests Persistance/communication through XML files of the tasks assigned to each developer on the base of the number of story points that can be implemented in a single iteration put Sent Int era ct Technical designer + Customer Extreme project manager DB Developer 1 Developer 2 Technical designer Developer n Technical designer Uses Technical designer Test case generator Test case generator DB Figure 8. Interact Eclipse plugin able to guide the definition of the tests for each subsystem and for each user story to implement the Test Driven Development High level overview of the system In the high level view of the architecture there are the following main components: ________________________________________________________________________________ 32 1. A stand-alone application: eXtreme Project Manager guides the functional analyst in the definition of the user stories (including tasks and subtasks) and the acceptance tests in collaboration with the customer. 2. The part that guides the TDD includes the definition of the tasks and entities related to the user stories, the generation of the test cases before the implementation of the code. Such macro-component can be integrated into the IDE used in the company (Eclipse) since it is a plug-in that is able to extend the standard functionalities and helps in the definition of the JUnit tests Conclusions and future work This document has described the XPAME development process, a collection of agile practices and processes thought for Engisud and based on critical issues presented during the interviews performed to representatives of functional, technical and development areas. XPAME considers several agile best practices during the whole development process that would be deployed in the current development process of Engisud. Actually, Engisud is including done of these practices: unit and integration tests using automated test tools (i.e. JUnit), a close involvement of the customer during the whole development process, refactoring activity and continuous releases. For the future, Engisud, based on its needs, will adopt further agile best practices taken into consideration by XPAME in order to be as agile as possible. Extreme project manager and Test case generator are useful tools supporting described agile practices so that they can be used for a general agile methodology adopting them. ________________________________________________________________________________ 33 References [1] JUnit framework web site, http://www.junit.org [2] Report of the meeting with the Engisud functional area responsible [3] Mike Cohn, “User Stories Applied: For Agile Software Development”, Addison-Wesley, March 2004 [4] Giovanni Aiello, Marco Alessi, “eXtreme Project Manager, technical details”, October 2005 [5] Giovanni Aiello, Marco Alessi, “Test case generator, technical details”, October 2005 [6] Agile Manifesto for Agile software development, http://agilemanifesto.org/ [7] Kent Beck, “eXtreme Programming Explained”, Addison Wesley, 2000 ________________________________________________________________________________ 34