Software Architecture Methodology in Agile Environments

Software Architecture Methodology in Agile Environments

nolog ech y & T S n o f io t t w a Mekni et al. J Inform Tech Softw Eng 2017, 7:1 a m r r e Journal of o E f n DOI: 10.4172/2165-7866.1000195 n I g f i n o e l ISSN: 2165-7866 e a r n i r n u g o J Information Technology & Software Engineering Research Article Open Access Software Architecture Methodology in Agile Environments Mehdi Mekni*, Mounika G, Sandeep C and Gayathri B Department of Computer Science and Information Technology, St. Cloud State University, St. Cloud, Minnesota, USA Abstract Lengthy requirements, design, integration, test, and assurance cycles delay software delivery, resulting in late discovery of mismatched assumptions and system level rework. In response, development methods that enable frequent iterations with small increments of functionality, such as agile practices, have become popular. However, since the business goals and context continuously evolve, the software architecture must also change. Currently, a clear specification in software architecture activities and processes in agile environments does not exist. In this paper, we provide an overview on agile development methodology along with the software architecture related issues in agile environments. Our main contribution is a novel methodology to guide and assist practitioners adopting software architectural design in agile environments. Keywords: Agile methodology; Software development life-cycle; Agile Development Methods Software architectural design The goal of agile methods is to allow an organization to be agile, Introduction but what does it mean to be Agile. Agile means being able to “Deliver quickly”; “Change quickly and often” [8]. While agile techniques vary Software development projects seeking rapid, sustainable delivery in practices and emphasis, they follow the same principles behind the are combining agile and architecture practices to manage competing agile manifesto [9]: goals of speed in the short term and stability over the long term [1- 3]. A software development lifecycle is essentially a series of steps, or • Working software is delivered frequently (weeks rather than phases including requirement specification; software design; software months). construction; software verification and validation; and software • Working software is the principal measure of progress. deployment. These phases provide a model for the development and management of software [4]. • Customer satisfaction by rapid, continuous delivery of useful software. Software architectural design is the process of applying various techniques and principles for the purpose of defining a module, a • Late changes in software requirements are accepted. process, or a system in sufficient detail to permit its physical coding. • Close daily cooperation between business people and software The conventional approach to the software design process focuses on developers. partitioning a problem and its solution into detailed pieces up front before proceeding to the construction phase. These up front software • Face-to-face conversation is the best form of communication. architecture efforts are critical and leave no room to accommodate • Projects are built around motivated individuals who should be changing requirements later in the development cycle. Some of the trusted. issues faced by organizations involved in up front software design efforts are [5,6]: • Continuous attention to technical excellence and good design. • Requirements evolve over time due to changes in customer and Agile development methods have been designed to solve the user needs, technological advancement and schedule constraints. problem of delivering high quality software on time under constantly and rapidly changing requirements and business environments. • Changes to requirements systematically involves modifying the Agile methods have a proven track record in the software and IT software design, and in turn, the code. industries. The main benefit of agile development software is allowing • Accommodating changing software design is an expensive for an adaptive process in which the team and development react to critical activity in the face of rapidly changing requirements. and handle changes in requirements and specifications, even late in the development process. Figure 1 illustrates an abstract view of the • Clear specification of activities in the agile software design evolutionary map of main agile development methods. process is missing and there is a lack of a set of techniques for practitioners to choose from [7]. Through the use of multiple working iterations, the implementation There is an obvious need for a software architectural design approach in agile environments. To the best of our knowledge, no *Corresponding author: Mehdi Mekni, Department of Computer Science and well-established software design methodology has been proposed Information Technology, St. Cloud State University, St. Cloud, Minnesota, USA, in any literature. These are issues of software architecture while fully Tel: 612-666-8767; E-mail: [email protected] supporting the fundamentals of agile software development methods. Received January 12, 2017; Accepted January 17, 2017; Published January 23, The rest of the paper is organized as follows: Section 2 provides 2017 an overview of existing agile methods. Section 3 details the software Citation: Mekni M, Mounika G, Sandeep C, Gayathri B (2017) Software architecture design phase as a key part of the software development Architecture Methodology in Agile Environments. J Inform Tech Softw Eng 7: 195. doi: 10.4172/2165-7866.1000195 life-cycle. Section 4 presents the proposed software architectural design methodology in agile environments. Section 5 discusses the outcomes Copyright: © 2017 Mekni M, et al. This is an open-access article distributed under the terms of the Creative Commons Attribution License, which permits unrestricted and limits of the proposed methodology. Finally, Section 6 concludes use, distribution, and reproduction in any medium, provided the original author and and presents the future perspectives of this work. source are credited. J Inform Tech Softw Eng, an open access journal Volume 7 • Issue 1 • 1000195 ISSN: 2165-7866 Citation: Mekni M, Mounika G, Sandeep C, Gayathri B (2017) Software Architecture Methodology in Agile Environments. J Inform Tech Softw Eng 7: 195. doi: 10.4172/2165-7866.1000195 Page 2 of 8 Figure 1: Evolutionary map of agile development methods (adapted from [18]). of agile methods allows the creation of quality, functional software with building and design phases each defined with entry and exit criteria, small teams and limited resources. The proponents of the traditional building a features list, and then planning by feature followed by iterative development methods criticize the agile methods for the lightweight design by feature and build by feature steps [11]. In the first phase, the documentation and inability to cooperate within the traditional overall domain model is developed by domain experts and developers. workflow. The main limitations of agile development are: agile works The overall model consists of class diagrams with classes, relationships, well for small to medium sized teams; also agile development methods methods, and attributes. The methods express functionality and are the do not scale, i.e., due to the number of iterations involved it would be base for building a feature list (Figure 3). A feature in FDD is a client difficult to understand the current project status; in addition, an agile valued function. The feature lists is prioritized by the team. The feature approach requires highly motivated and skilled individuals which lists are reviewed by domain members [12]. FDD proposes a weekly 30 would not always be available; lastly, not enough written documentation minute meeting in which the status of the features are discussed and a in agile methods leads to information loss when the code is actually report about the meeting is written. implemented. However, with proper implementation agile methods can complement and benefit traditional development methods. Dynamic systems development method (DSDM) Furthermore, it should be noted that traditional development methods It was developed in the U.K. in the mid-1990s [13]. It is an in non-iterative fashions are susceptible to late stage design breakage, outgrowth of, and extension to, Rapid Application Development (RAD) while agile methodologies effectively solve this problem by frequent practices [14]. The first two phases of DSDM are the feasibility study incremental builds which encourage changing requirements. We and the business study. During these two phases the base requirements will now describe some common agile methods from a requirements are elicited (Figure 4). DSDM has nine principles include active user engineering perspective. involvement, frequent delivery, team decision making, integrated Agile modeling (AM) testing throughout the project life cycle, and reversible changes in development. It is a new approach for performing modeling activities [10]. It gives developers a guideline of how to build models using an agile Extreme programming (XP) philosophy as its backbone that resolve design problems and support It is based on values of simplicity, communication, feedback, and documentation purposes but not ’over build’ these models (Figure 2). The courage [15]. XP aims at enabling successful software development aim is to keep the amount of models and documentation as low as possible. despite vague or constantly changing software

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    8 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us