doi:10.2498/iti.2012.0430
Creating Hybrid Software Engineering Methods by Means of Metamodels Darko Androcec, Zeljko Dobrovic University of Zagreb, Faculty of Organization and Informatics, Pavlinska 2, 42000 Varazdin, Croatia
[email protected],
[email protected] Abstract. Two dominant techniques for software development used nowadays are the classical software development methods (e.g. RUP, waterfall) and the agile approaches (e.g. Scrum, XP). One can also use hybrid methods, because both approaches have some benefits. In this paper we show how to build new hybrid software engineering methods by means of metamodels. We describe metamodels of the classical waterfall method and extreme programming and create their common metamodel. This common metamodel is then used as a foundation for new hybrid method development and development of workflow of its implementation. Keywords. Metamodel, extreme programming, waterfall method, hybrid software engineering
1. Introduction The aim of data modelling is a modelling of organization’s structure and its operations [8]. Today we have a technology of data warehouses which contain all relevant business data needed for analysis and report making. Anyhow, there is a problem when management need to get and interpret these business data. One possible solution is using of metadata. “Metadata are the data that describe the structure and workings of an organization’s use of information, and which describe the systems it uses to manage that information” [8]. Metamodelling is a modelling of metadata, and we use this principle to create common model of two software development methods. We choose classical waterfall method and extreme programming, describe these methods and create their logical and data model. We create common metamodel from before mentioned models, and propose workflow of a new hybrid software development methodology. New methodology will try to combine benefits of agile and classical approach. This paper proceeds as follows. Firstly, in Section 2, we present related work. Section 3 describes chosen
methods. In the next sections we show waterfall metamodel, extreme programming metamodel and common metamodel. Finally, our conclusions are presented in the last section.
2. Related work Certain efforts are made in using of metamodels to build software development methodologies. As stated in [13], the general intention of using metamodels is to span diversity of information systems environments. According to the same source, metamodels are the practical approach to engineering new methods for building software. The reason we need this approach, is that no standalone software development method used so far is sufficient to develop software for every purpose in this complex world. Hillegersberg and Kumar [11] described how to use metamodelling for the integration of object-oriented analysis, design and programming concepts. They created metamodels of existing object-oriented methodologies and then integrated these metamodels into a single metamodel that defines the basic object-oriented concepts and their relationships. In [9] Henderson-Sellers et al. used a method engineering approach to develop aspect-oriented modelling processes based on OPF (OPEN Process Framework). A method to build unified process metamodels for information systems engineering was proposed in [12]. This method is based on pattern system and it is used to select the needed metamodel concepts for a particular context. Koch and Kraus [14] proposed a metamodel for the Web application development using common concepts from many different methodologies for the development of Web applications. Some articles have already considered the mixing of classical and agile software development methodologies. Cho [4] suggested a new hybrid software development method that combines the RUP (Rational Unified Process) with the Scrum. The main goal of a new
481 WK
,7, ,QW&RQIRQ,QIRUPDWLRQ7HFKQRORJ\,QWHUIDFHV
methodology is to maximize the strengths of both conventional and agile methods and suppress their weaknesses. RUP is a skeleton in the hybrid method, while Scrum is used to offer project management and tracking mechanisms. Shaikh, Morshed and Mitsuru [21] proposed a hybrid model of software engineering process tuned for small scale software that uses principles from OPEN (Object-oriented Process, Environment, and Notation), RUP (Rational Unified Process) and XP (Extreme Programming). In [16] a transition of Microsoft IT teams from waterfall based development culture to agile methodologies is presented. Some successful pilot Scrum projects are shown in this article. Black et al. [3] compared classical and agile software development methodologies and argued that formal methods can add value in the agile domain. Formal methods are better in critical applications development and documentation, and agile approach is focused on responding to change, working software and customer collaboration. An agile formal development methodology XFun is proposed in [7]. It adopts the unified process and uses the Xmachine formal method as the core modelling technique. Certain product types (e.g. embedded systems) [15] call for an integration of agile and formal software development techniques. An agile approach to Specification-Driven Development is presented in [18]. It combines features of Test-Driven Development with a more formal method of Design by Contract. In [5] agile and formal elements were connected together into an incremental development process. Waterfall software development methods and extreme programming are also mentioned in a scientific and professional literature. Waterfall method was firstly introduced by Winston W. Royce [20] in 1970. In a newer literature this method is mentioned as a classical software development methodology which is often used in practice. The article [6] gives a systematic review of empirical studies of agile software development. This review investigated the benefits and limitations of agile methods. In the paper [1] authors reported on how a Canadian organization shifts its development method from the waterfall process to extreme programming model. Svensson and Host [23] had presented results of using extreme programming in a large software development company, and it wasn’t a successful process. The results of the research [10] suggest that XP is a combination of best
practices of traditional development methods and can be useful for small teams of domain experts and skilled designers and programmers. Analysis of the degree of agility of six well-known software development methods is presented in [19].
2. Short description of chosen methods Waterfall method is a sequential software development model with the seven phases of design development. This model was firstly mentioned in the 1970 article published by Winston W. Royce [20]. Mentioned method consists of several phases: system requirements, software requirements, analysis, program design, coding, testing and operations. Due to disadvantages of conventional software development methods, many agile methods were proposed, among them also extreme programming. Extreme programming (XP) was formulated by Kent Beck in [2]. Lifecycle of an ideal XP project includes exploration, planning, iterations to release, production, and maintenance.
3. Waterfall metamodel Our construction of metamodels is based on metadata table approach described in the book [8]. The bottom row of the table shows examples of things in the world. The next row up shows the data that might describe real-world things. The third row from the bottom labels those descriptors as metadata. The top row shows elements of metadata models. We are considering only the most important concepts related to business and data model of waterfall software development method: method, phase, development team, person, requirement specification, system design document, test case, test report, source code. We create simplified real-world things table of waterfall method (Table 1). Based on this table we create simple metamodel of classical waterfall software development method (Figure 1). A method has one or more phases (original waterfall software development method has seven phases [20]). In every phase developers and designers can define zero or more requirements, and one requirement can be solved during one or more phases. This is a more-to-more relationship, so we add weak entity named phase_requirement. More-to-more relationship also exists between development_team and person entities. Entity
482
person can also be system user, and it can specify one or more requirements alone or working in a team (composed of another users or members of development teams). Based on the requirements a design document is formed and it shows chosen techniques and technologies for system development. The design document may also contain various models and diagrams which can be stored in database as binary contents (BLOB data type). Test case is used for definitions of testing means. After testing, a test report is generated. Entity source code is used for source code storing.
4. Extreme programming metamodel Our extreme programming is also based on metadata table approach presented in the book [8]. We are considering only the most important concepts related to business and data model of extreme programming software development method: method, phase, iteration, person, development team, user story, task, pair programming, development type, program version, metaphor. We create simplified realworld things table of extreme programming method. Based on this table we create simple metamodel of agile software development method extreme programming (Figure 2). We will now explain some important relationships between entities of this proposed metamodel. XP method has more phases (Exploration, Planning, Iterations to Release, Production, Maintenance, Deadth). Every phase executes in one or more iterations, e.g. the phase Iterations to Release uses more iterations to get final problem solution. Entity person can be a member of development team or a user who writes user stories. Zero or more tasks are created based on description and priority of user stories and assigned to development teams. In a every iteration user stories can be changed, and some user stories can be used in more iterations of the same phase. Development team creates one or more metaphors. Development team take part in a pair programming which includes various types of development (e.g. modelling, coding, testing). A result of pair programming is new program version and related source code.
5. Common metamodel
concepts. Comparing their data models we can find their common elements: method, phase, person, development team. Entity user story (from extreme programming metamodel) and requirement (from waterfall metamodel) are very similar. User story has all attributes of entity requirement and some additional attributes, so we put this entity into common metamodel. We will also use only entity program_version because entity source_code is a subset of it. Common metamodel of extreme programming and waterfall method is shown in Figure 3. When we put all relevant concepts of two software development methods in a common metamodel, we can easy propose new hybrid methodologies. In our case (mixing classical waterfall method and extreme programming), one possible hybrid methodology could have all extreme programming phases except Iterations to release phase. Instead of this phase we could use principles from classical waterfall method. Figure 4 represents first draft of possible hybrid methodology by means of work flow diagram representation.
6. Conclusion The main purpose of this paper is to show building new hybrid software engineering methods by means of metamodels. We created simplified real-world things table that contains the most important concepts in waterfall software development method and extreme programming, and based on these tables we created metamodels. Thereafter we look at entities from both metamodels and find the same and similar entities. Next step is to define relationship between these two metamodels and create their common metamodel. Looking at the common metamodel that contains all relevant concepts from both methodologies we can easily get new ideas for hybrid software development methodologies. In our case one possible hybrid methodology could have all extreme programming phases except Iterations to release phase, instead of it we could use principles from classical waterfall method. In our future work we plan to validate and apply new proposed methodology and check if it increases benefits of classical and agile approaches, while trying to suppressing the weakness of each method.
Both mentioned software methods have common main purpose (development of quality software products), so they have many common
483
6. References [1] Bahli B, Zeid E S A. The role of knowledge creation in adopting extreme programming model: an empirical study. In 3rd International Conference on Information and Communications Technology 2005. p. 7587. [2] Beck K. Extreme Programming Explained: Embrace Change. Boston: Addison-Wesley Professional; 1999. [3] Black S, Boca P P, Bowen J P, Gorman J, Hinchey M. Formal Versus Agile: Survival of the Fittest. Computer 2009; 42(9): 37-45. [4] Cho J. A Hybrid Software Development Method for Large-Scale Projects: Rational Unified Process with Scrum. 2009. http://www.iacis.org/iis/2009_iis/pdf/P2009 _1267.pdf, [7/1/2011] [5] del Bianco V, Stosic D, Kiniry J. Agile Formality: A Mole of Software Engineering Practices. In Gruner S, Rumpe B. (Ed.): Lecture Notes in Informatics. Gesellschaft fur Informatik; 2010. [6] Dyba T, Dingsoyr T. Empirical studies of agile software development: A systematic review. Information and Software Technology 2008; 50(9-10): 833-859. [7] Eleftherakis G, Cowling A J. An Agile Formal Development Methodology. In Proceedings of the 1st South-East European Workshop on Formal Methods; Thessaloniki; 2003. [8] Hay D C. Data Model Patterns – A Metadata Map. Boston: Morgan Kaufmann Publishers; 2006. [9] Henderson-Sellers B, France R, Georg G, Reddy R. A method engineering approach to developing aspect-oriented modelling processes based on the OPEN process framework. Information and Software Technology 2007; 4(7): 761-773. [10] Hilkka M-R, Tuure T, Matti R. Is extreme programming just old wine in new bottles: a comparison of two cases, Journal of Database Management 2005; 16(4): 41–61. [11] Hillegersberg J V, Kumar K. Using metamodeling to integrate object-oriented analysis, design and programming concepts. Information Systems 1999; 24(2): 113-129. [12] Hug C, Front A, Rieu D, Henderson-Sellers B. A method to build information systems
engineering process metamodels. Journal of Systems and Software 2009; 82(10): 17301742. [13] Jeusfeld M A, Jarke M, Mylopoulos J. Metamodeling for Method Engineering. London: The MIT Press; 2009. [14] Koch N, Kraus A. Towards a Common Metamodel for the Development of Web Applications. Lecture Notes in Computer Science 2003; 2722: 419-428. [15] Larsen P G, Fitzgerald J S, Wolff S. Are Formal Methods Ready for Agility? A Reality Check. In Proc. FM+AM; 2010. p. 13-25. [16] Lewis J, Neher K. Over the Waterfall in a Barrel – MSIT Adventures in Scrum. In Proceedings of the AGILE 2007; Washington; 2007. p. 389-394. [17] Marks D. Development Methodologies Compared. 2002. http://www.ncycles.com/documents/N_Cycl es_Methodologies.pdf [2/10/2012] [18] Ostroff J S, Makalsky D, Paige E F. Agile Specification-Driven Development. In Eckstein J, Baumeister H. (Ed.): Lecture Notes in Computer Science. Springer; 2004. p. 104-112. [19] Qumer A, Henderson-Sellers B. An evaluation of the degree of agility in six agile methods and its applicability for method engineering, Information and Software Technology 2008; 50(4):280-295. [20] Royce W W. Managing the Development of Large Software Systems. In IEEE WESCON Proceedings; 1970. p. 1-9. [21] Shaikh M A M, Morshed A S M M, Mitsuru I. Object Oriented Hybrid Software Engineering Process (SEP) model for Small Scale Software Development Firms. In Proc. of 2nd International Conference on Computer Science and its Applications (ICCSA 2004), San Diego; 2004 [22] Software process models. http://www.thesoftware-experts.de/e_dta-sw-process.htm [2/10/2012] [23] Svensson H, Host M. Views from an organization on how agile development affects its collaboration with a software development team. In Bomarius F, KomiSirvio S. (Ed.): Lecture Notes in Computer Science. Springer Verlag; 2005. p. 487–501.
484
Appendix Table 1 Section of the simplified real-world things table of waterfall method
Realword things
Data about real-word things
A data model
Metadata model
OBJECTS: „Entity Class“ „Attribute“
Entity Class: „Method“ Attributes: „ID“ „Name“
Entity Class: „Phase“ Attributes: „ID“ „Name“
Entity Class: „Test case“ Attributes: „ID“ „Name“ „Type“ „Description“ „Date“
Entity Class: „Requirement“ Attributes: „ID“ „Name“ „Description“
Entity Class: „Design document“ Attributes: „ID“ „Name“ „Description“ „Model“
Method „Waterfall software development method “
Phase „Testing“
Test case: „Testing of authentication “ Test type: „Functionality testing“ Test description: „Testing by hand.”
Requirement: „Authentication“ Requirement description: „Checking username and password. “
Design document: „Authentication design“ Design description: „Authentication design will use LDAP. “
Waterfall software development method.
Testing.
John Johnson born 11.11.1971.
Authentication: Checking username and password.
Authentication design will use LDAP.
Figure 1. Waterfall metamodel
485
Figure 2. Extreme programming metamodel
Figure 3. Common metamodel
Figure 4. Steps of proposed hybrid methodology
486