Transcription

1 AGILE METHODOLOGY AND SOFTWARE REUSE A COMMON APPROCH TO SOFTWARE DEVELOPMENT Manjot Singh Ahuja, Neha Sadana CSE Department Shivalik Institute of Engineering and Technology, Aliyaspur, Haryana, India Abstract Years before software were not so complex, but with changing requirements size of software has increased and complexity too. Fast development, adaptability to constantly changing requirements, low cost and of high quality is also demand of time. In earlier software development processes there were no interaction between development team and client but new development processes these interactions have become common. New development processes, that is, Agile Methodology, came in light because in previous ones some deficiencies appeared, that is, time to delivery problems. As with time, deficiencies appear in every approach, and agile development is not an exception to the same. Deficiency found in Agile Methodology is of reusability, which is due to lack of time to delivery. Reusability can be acceleration to agile methodology. To adapt reusability in Agile, we need to build a database which will contain reusable components, that is, component based development. To build that database, it will take time and effort, but once it is adapted, it will be useful in improving quality and reducing time of development. Keywords: Agile Methodology, Software Reuse, Factors affecting reusability. Introduction Different software development models failed to satisfy needs of present software industry. The aim of all the process models is to deliver quality product with reduced time of development, and

2 reduced cost. Still, no single process model is complete in itself. Software industry is moving towards new methodologies, such as, Agile Methodology. Agile processes provide a room for rapid changing requirements throughout the development cycle. It also helps in providing effective conversation between software developers and customers and also helps in early product delivery too. Agile methodology has adopted some different principles to show its effective presence. Following are the principles followed in Agile Development [1]: 1) Highest priority is to please the customer through early and continuous delivery of valuable software. 2) Welcome changing requirements, even at later stages in development. Agile processes harness change for the customer's competitive advantage. 3) Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. 4) Business people and developers must work together daily throughout the project. 5) Build projects around motivated individuals. Give them the environment and support they need. 6) The most efficient and effective method of conveying information to and within a development team, that is, face-to-face conversation. 7) Working software is the primary measure of progress. 8) Agile processes promote sustainable development. The sponsors, developers and users should be able to maintain a constant pace indefinitely. 9) Continuous attention to technical superiority and good design enhances agility. 10) Simplicity. 11) The best architectures, requirements, and designs emerge from self-organizing teams.

3 12) At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly. Agile Methodology Agile is collection of various methodologies, these methodologies are consistent with the above principles. The most popular ones are: Dynamic System Development Method (DSDM) - DSDM [2] was in light before the term Agile was even invented, but is absolutely based on all the principles that are known for Agile. It is an organized process focused on delivering business solutions quickly and efficiently. It is similar in many ways to SCRUM and XP, but it has its best uses where the time requirement and recourses are fixed. DSDM makes heavy use of prototyping to make sure interested parties have a clear picture of all aspects of the system. DSDM differentiates on the following four types of prototypes [3]. 1) Business Prototype: Allow assessment of the evolving system 2) Usability Prototype: Check the user interface 3) Performance Prototype: Ensure solution will deliver good performance while handling big volumes 4) Capability Prototype: Evaluate possible options In Traditional Method, Recourses and Time are Variable In Traditional Method, Functionality are Fixed

4 Recourses Time Functionality In Dynamic System Development Method, Recourses and Time are Fixed In Dynamic System Development Method, Functionality are Variable Scrum- It is also an agile development method, which concentrates particularly on how to manage tasks within a team-based development environment. It allows the process to progress by iterative and incremental development called agile sprints. Each sprint typically goes between 2-4 weeks. It is ideally suited for projects which are prone to rapid changes. Scrum [4] is relatively simple to implement and addresses many issues that have plagued IT development teams for decades. 24 hours sprint 2-4 weeks sprint Product backlog Sprint backlog Sprint Deliverable Fig 1: Working of Scrum (proceeds from left to right direction) Sprint - meeting in which discussion is there regarding the progress of project.

5 Backlog unfinished parts of the process. Scrum Team and Roles 1) Product Owner- Ensures that team delivers value to the business. Product owner write user stories (customer-centric), prioritize them, and adds them to product backlog if needed. 2) Development Team- Responsible for delivering product increments at the end of each sprint. Its size is small (3-9 members) and having cross-functional skills (analyze, design, develop, test, technical communication, document, etc.). 3) Scrum Master - Is responsible for removing impediments to deliver sprint goals or deliverables. Scrum master ensures that scrum process is used as intended, in other words we can say is enforcer of rules. This helps team to focus on task at hand. 4) Stakeholders - Are customers or vendors that are directly involved in sprint reviews. 5) Managers People who control work environment. Daily sprint answers the following- 1) Last 24 hour tasks 2) Plan for next 24 hours tasks 3) What are all obstructions of the task XP (Extreme Programming) [5]- A light weight agile methodology focusing more on the software engineering process and addressing the analysis, development and test phases with novel approaches that make a substantial difference to the quality of the end product. In this testing take place in parallel. Business requirements are gathered in terms of stories and these stories are stored in place called parking lot. Releases are based on shorter cycles with span of 14 days.

6 Phases of Extreme Programming [6]- 1) Planning 4) Execution 2) Analysis 5) Wrapping 3) Design 6) Closure Software Reuse Software engineering deals with the development of software systems. As the size of the software system is increasing because of complexity and demand time is decreasing, new approaches of software development coming in the environment. These approaches include Object-oriented programming [8], Component-based programming [9], and Aspect-based programming [10]. Above mentioned approaches are effective for software development but there is need to reduce the effort, time, and cost to build the software so that productivity and quality of software programs can be increased. Software reuse [7] can be a means to reduced development cost and can improve quality. Software reuse is the use of existing software to build new software. Reusable software can be code, templates, functions, procedures, objects, routines or framework.

7 Manage Plan, Fund, Prioritize, Coordinate, Learn Create Engineer Domain, Framework, Components, Tools Support Certify, Classify, Package, Distribute, Advise, Maintain Utilize Product requirements and Existing software Select, specialize, assemble Products Fig 2: Systematic reuse process and organization By systematic reuse [11], it is meant that an institutionalized organizational approach to product development in which reusable assets are purposely created or acquired, and then consistently stored, used, and maintained to obtain high levels of reuse. Thereby optimize the organization's overall ability to produce quality software products rapidly and effectively. This requires a significant effort to change working culture of organization, and a multitude of other factors. Changes associated with CPI (continuous process improvement). It is essential to change the way of viewing software at a fundamental level. It must be viewed as an organizational asset, to be invested in, improved effectively and consistently. Initial investment is required to start the reuse

8 process, in order to find reusable components, so that those components can be reused in future programs, and when this reuse process is used in the new software system it will dwindle time to many folds. To find reusable components [12] we have to find reusability of components. Reusability is the extent to which a component can be reused. To find reusability we need a metric which can find the reusability of components. There exist lot of such reusability metrics; out of those metrics we can adopt any efficient metric to find reusability. To choose effective metric, we should know what the factors which affect reusability, so, following are the factors which we extracted from previous studies [13], [14] and after analyzing them, which affecting reusability: 1) Adaptability 11) Generality 2) Availability 12) Maintainability 3) Complexity 13) Modularity 4) Completeness 14) Portability 5) Correctness 15) Price 6) Cohesion 16) Quality 7) Coupling 17) Reuse 8) Documentation 18) Reliability 9) Efficiency 19) Testability 10) Expandability So, these are some of the factors which one should keep in mind to decide the reusability of components. Proposed work

9 In early studies done on reusability in Agile, it has been observed that most of the emphases were made on the classification of components in database, so that extracting reusable components become easier. No one can deny the usefulness of these researches, but prior to this step, we have to find the components which can be reused. It is important to find the components with higher reusability factor. There are number of factors which affect the reusability of components, and if value of these factors is high, reusability of component decreases. We have to find those components which are having low value of the factors having negative effect on reusability, and then to add those components to database. If this approach is adopted, time of finding reusable component from repository will be decreased and further efforts for modifying those components will be reduced, because we are all ready having those components in repository which are having high reusability value. To find reusability of component we have to test those components with some metric that can find the reusability. And we already have discussed factors which affect reusability. So, in Fig3 there is proposed model which can help us improving work flow in agile atmosphere. In this model we have shown how reusability can be applied in agile atmosphere.

10 Requirement Gathering Finding reusability of components with help of selected metric Analysis Component satisfying threshold value No Designing Yes Coding Store components in database with effective classification technique If needed, component can be reused Operation Fig3: Flowchart for Proposed Model Discard that component Explanation of model: while we develop code in agile atmosphere, we can test code components with reusability metric. There will be a threshold value that a code component should satisfy, if that code component satisfies threshold value, component will be added to the database according to classification criteria for further reuse, but if threshold is not achieved, we can discard that component and that will not be added to the reuse component database. Conclusion and Future Scope

11 From above defined principles and methodologies it can be clearly observed that Agile Methodologies are inclined only towards that client s need. But work is not done keeping reusability in mind. As in agile methodology, time we have to spend on development is limited; hence compromise with quality is made, as quality of software also depends on quality of code and documentation. So there is need of reusable artifacts (analysis, design document, patterns, etc.). Lack of documentation and design in development make it difficult to extract reusable functionalities. Because of this, difficulty level and cost of modification also increases. So by adopting reusability in agile development, quality of system can be maintained and time can further be reduced to many folds. In this proposed work we have added concept of reusability at coding stage, which can help in reducing coding efforts and saving lot of time. In future we will present reusability metric for measuring reusability of code and will try to implement scope of reusability at other stages of software life cycle model, helping reducing time and effort. References [1] [2] [3] [4] [5] [6] [7] [8] Concep

International Journal of Recent Research and Review, Vol. VI, June 2013 Comparative Study of Agile Methods and Their Comparison with Heavyweight Methods in Indian Organizations Uma Kumari 1, Abhay Upadhyaya

PLM - Agile Agile Development Evolved in the 1990s as a response to heavyweight methodologies. In 2001 representatives of various new methodologies met to discuss the need for lighter alternatives. The

Capital Modelling Seminar Model design and lessons from IT Tim Thornham Financial Modelling Solutions (FMS) Director, Aviva 01 December 2015 Model design and lessons from IT What lessons are there from

Available Online at www.ijcsmc.com International Journal of Computer Science and Mobile Computing A Monthly Journal of Computer Science and Information Technology IJCSMC, Vol. 2, Issue. 10, October 2013,

Scaling Scrum Colin Bird & Rachel Davies Scrum Gathering London 2007 Scrum on a Slide Does Scrum Scale? Ok, so Scrum is great for a small team but what happens when you have to work on a big project? Large

Rocky Mountain Information Management Association Manifesto for Agile Software Development We are uncovering better ways of developing software by doing it and helping others do it. Through this work we

About the Tutorial Agile is a software development methodology to build a software incrementally using short iterations of 1 to 4 weeks so that the development is aligned with the changing business needs.

ITSM Agile Intro Feb 5, 2015 Introduction You and Me Some Agile Background Fun Conversation!!! 1 Who Are You? Experience with Agile? Using some form of Agile? Raise your hand if. Me and Agile Recent Work

Software Process in Modern Software Development Lecture 3 Software Engineering i Practice Software engineering practice is a broad array of principles, concepts, methods, and tools that must be considered

USCIS/SPAS: Product Backlog Items and User Stories 4/16/2015 Dr. Patrick McConnell July 9, 2015 1 First, an old joke.. I can t identify an original source for this cartoon. As best as I can tell, the art

AGILE SOFTWARE DEVELOPMENT BY Sysop Technology Aurangabad-431003 Abstract: Software development which can be delivered fast, quick adaptation to requirements and collecting feed back on required information.

Introduction to Agile Software Development Word Association Write down the first word or phrase that pops in your head when you hear: Extreme Programming (XP) Team (or Personal) Software Process (TSP/PSP)

Echte Agilität erfordert eine werteorientierte Unternehmenskultur Jutta Eckstein Thomas Walker, CMC Seite 1 Goals of Today The main question of the day: The role of software development in relation with

Comparing Scrum And CMMI How Can They Work Together Neil Potter The Process Group help@processgroup.com 1 Agenda Definition of Scrum Agile Principles Definition of CMMI Similarities and Differences CMMI

Agile Beyond The Team 1 Dilbert Agile 2 What Does Your Organization Value? Projects over Teams? Do new teams spools up for new projects? On-Time/On-Budget Delivery over Zero Maintenance Products Deliver

Rising future of Agile Software Development using Cloud Computing: A study using Cloud Computing in different phases of an Agile method-scrum Ritu Singhal, Sonia, Archana Singhal Department of Computer

CS189A - Capstone Christopher Kruegel Department of Computer Science http://www.cs.ucsb.edu/~chris/ How Should We Build Software? Let s look at an example Assume we asked our IT folks if they can do the

SCEA 2010 EST06 Estimating Issues Associated with Agile Development Bob Hunt Vice President, Services Galorath Incorporated What Is Agile Software Dev? In the late 1990 s several methodologies began to

CODE REUSE AS A PRACTICE WITHIN EXTREME PROGRAMMING Gerald DeHondt a, b, Vijayan Sugumaran b a Department of Management and Information Systems, College of Business Administration Kent State University,

Creating a High Maturity Agile Implementation Creating a High Maturity Agile Implementation www.qaiglobal.com 1 Copyright Notice 2015. Unless otherwise noted, these materials and the presentation of them

Terry Fischer Is Agile Scrum the Right Methodology for Your BI Project? Session 3504 LEARNING POINTS What is Agile Scrum and for what types of projects is it best utilized? How to apply general Agile Scrum

Software Engineering So#ware Processes 1 The software process A structured set of activities required to develop a software system. Many different software processes but all involve: Specification defining

Agile Requirements Generation Model: A Soft-structured Approach to Agile Requirements Engineering Shvetha Soundararajan Thesis submitted to the faculty of the Virginia Polytechnic Institute and State University

Agile Development with C# Paweł Jarosz, pjarosz@pk.edu.pl Cracow University of Technology, Poland Jyvaskyla University of Applied Sciences, February 2009 Paweł Jarosz who am I? M.Sc. of Applied Physics

Agile and PRINCE2 And how they integrate enterprise.bcs.org 02 Agile and PRINCE2 And how they integrate Introduction Within the world of method frameworks it is very easy to become polarised on one specific

PERFORMANCE ENGINEERING IN SCRUM Balasubramanian, Infosys Technologies Limited This paper describes how performance engineering as a software discipline should be planned and executed in an agile development

Quality Assurance in an Agile Environment 1 Discussion Topic The Agile Movement Transition of QA practice and methods to Agile from Traditional Scrum and QA Recap Open Discussion www.emids.com 2 What is

Agile software development Syed Nisar Hussain Bukhari Scientist-B DOEACC centre Srinagar nisar.bukhari@gmail.com Abstract: The field of software development is open and dynamic. New approaches of software

Digital Transformation of the Enterprise for SMAC: Can Scrum help? Scope of this Report October 2015 In this paper, we consider the impact of the digital transformation on software development and whether

Terry Fischer Is Agile Scrum the Right Methodology for Your BI Project? Session 3504 LEARNING POINTS What is the Agile Scrum and for what types of projects is it best utilized? How to apply general Agile

Is PRINCE 2 Still Valuable in an Agile Environment? Amy Hongying Zhao Introduction Over the years, many organizations have invested heavily in creating or deploying project management frameworks. PRINCE

AGILE vs. WATERFALL METHODOLOGIES Introduction Agile and waterfall are two major methodologies that software developers and project managers have the option of using. Some of the goals of developers and

Agile Extension to the BABOK Guide Version 1.0 Complimentary IIBA Member Copy. Not for Redistribution or Resale www.iiba.org International Institute of Business Analysis, Toronto, Ontario, Canada International

Sprint to Your Market With Agile An Introduction to Agile Software Development Evan Leonard Senior Program Manager October 7, 2013 What Is Agile? Agile is a broad movement that is becoming the new industry

So l u t i o n s Blending Agile and Lean Thinking for More Efficient IT Development By Harry Kenworthy Agile development and Lean management can lead to more cost-effective, timely production of information