Up-Front Design Versus Evolutionary Design in Denali s Persistence Layer
|
|
- Camron West
- 8 years ago
- Views:
Transcription
1 Up-Front Design Versus Evolutionary Design in Denali s Persistence Layer Jim Little Titanium I.T. LLC 3062 SW 153 rd Dr. Beaverton, OR USA jlittle@titanium-it.com ABSTRACT This experience report describes the evolution of a persistence architecture over the course of nine months. The persistence architecture was developed as part of a common code base for internally developed web applications. The code base, named Denali, was developed from the ground-up using Extreme Programming and a team of six programmers. Denali was originally developed using up-front design and then extended using evolutionary design. Evolutionary design was found to yield better results than up-front design. Keywords Extreme Programming, persistence, evolutionary design 1 INTRODUCTION One of the controversial tenants of Extreme Programming (XP) is that evolutionary design can replace up-front design. In XP, the programmer is encouraged not to design his code in advance, but to use tests and refactoring to drive the design [1]. This approach has been greeted with skepticism on many occasions (e.g., [2]). Is it really possible for a non-trivial system to evolve a consistent, maintainable architecture using nothing but evolutionary design? In this paper, I present my experiences with evolutionary design in a medium-sized project. Although I was a member of a team of developers, this paper is a personal account of my experiences on the project. As a result, I ve written the paper in the first-person perspective. 2 THE PROJECT In May 2000, I was hired to help a team of programmers reduce their maintenance costs. Their manager told me that a new person would arrive and be productive for a few months, but then would come to a standstill, spending all their time updating existing software. After reviewing the situation, I discovered that there was massive duplication of code, no shared knowledge about projects, and no clear prioritization of needs. I recommended that we switch to XP to resolve the prioritization and knowledge sharing issues, and that we develop a common code base for all applications to resolve the maintenance issues. As of June 2001, the project has been in progress for 13 months. We have been using XP from the beginning to develop all of the new code. The project has been an unqualified success. Although the customer would prefer to have more software developed more quickly, we have clearly met her goals. New features are delivered regularly, knowledge is spread throughout the team, and features are clearly prioritized. The common code base, named Denali, has worked out as well. There are currently 18 web-based applications in Denali, all using a common object model and persistence framework. Denali Facts Project Length 13+ months (still active) People 4-12 programmers; currently 5 Programming Language Tests Java servlets (no Enterprise Java Beans or Java Server Pages) 1586 total, 91 acceptance Production Test Total Classes Methods 3,376 3,245 6,621 Statements 10,342 14,254 24,596 Denali was developed from the ground-up using XP. From the beginning, the most complicated part of the system has been the persistence architecture. This paper describes the changes that have occurred in the persistence architecture as we applied XP to the problem. 3 THE PLAYERS I was the technical lead and XP coach for Denali. When the project started, I had about four years of professional programming experience. Of that time, only the prior six months had been spent as a technical lead, and only the prior three months had been spent practicing full XP. I had limited experience with relational databases and no prior experience with object-relational persistence. However, I was an expert Java programmer and had a solid grounding in the theory and practice of object-oriented programming. The remaining developers had more years of programming experience, but limited exposure to programming methodologies and techniques. For most of them, Java and 1
2 object-oriented programming were new technologies. Did we really practice XP? Planning Game Frequent Releases Simple Design Unit Tests and Acceptance Tests Continuous Integration Coding Standards Refactor Mercilessly Pair Programming Collective Code Ownership 40-hour Week System Metaphor On-site Customer Limited Limited 4 TAKE ONE: UP-FRONT DESIGN When we started Denali, I believed that it was destined to become a large system. At the time, I knew of XP s insistence on evolutionary design, but I had no direct experience with it. As a result, I hedged my bets: I researched potential architectures for several days and sketched out a design in advance. The result was a fivelayer architecture based on Martin Fowlers Analysis Patterns [3]. My pairing partner felt that the design was too complicated, but I knew we were going to need to manage complexity in this project and believed that the additional up-front complexity would reduce problems down the road. Was I ever wrong! The first approach consisted of five layers. (See figure 1.) Business objects resided in the middle layer and modeled the domain. At either edge resided the presentation and database layers, each protected from the business layer by a translation layer. The presentation layer would be for applications. Each application would have its own presentation and a façade to protect it from the expected complexities of the business layer. At the other end, the database layer would model the database. The persistence layer would translate the relational data in the database into objects in the business layer. How it worked Although the above architecture looked fine on paper, it encountered some problems in practice. In order to persist an object s data, the persistence layer needed full access to the business objects instance variables. I didn t want to provide accessors and mutators for every single instance variable, as that would violate encapsulation. And I didn t want to make the variables public for the same reason. Eventually, I came up with the idea of using Java s inner classes to provide back-door access into the business objects (see figure 2). In Java, an inner class has an implicit reference to the variables of the outer class [4]. Because the inner class is within the scope of the outer class, it also has access to all of the outer class s private member variables. By providing public methods on the inner class, the programmer can provide additional interfaces to the object s data. In Denali, we called these inner classes Persistence Friends, after the friend access level of C++. Denali s Persistence Friends allowed the persistence layer to act like C++ friends and access the private instance data of business objects. Because the Persistence Friends were actual objects, we could control access by limiting who received an instance of a friend. It seemed like a great solution.
3 Reality sets in Unfortunately, the idea turned out to be extremely complex in practice. The local development team, with no prior experience in Java or object-oriented programming, was completely lost. Furthermore, the approach required a large amount of code to accomplish anything significant. After using persistence friends for several months, the other developers presented me with an ultimatum: Get rid of the persistence friends! Conclusion: Up front design My first attempt at a persistence architecture was driven by up-front design. I was able to come up with a workable solution, but one that was far too complex. In retrospect, I should have introduced the layers much later, when there was a demonstrated need. I believe this approach would have reduced our costs in the short term and would have resulted in a better design in the long term. From this point onward, architectural changes were driven by XP principles, not up-front design. Every future change was a change for the better. 5 TAKE TWO: PUBLIC VARIABLES The near-lynching inspired by the persistence friend architecture caused me to rethink my attitude towards encapsulation. The entire purpose of the persistence friends was to protect business objects instance variables from untoward manipulation. But who exactly was I protecting the code from? Operating on the assumption that we could trust ourselves, the team established the rule that business objects instance variables could be public and accessed by tests and the persistence layer, but not by anything else. This simplified the code immensely. Now the persistence layer just accessed and modified instance variables when it needed to (see figure 3). The team didn t have any problems following the public variable rule. As time went on, though, our tests became too closely coupled with our business objects. After a few months, we started having problems refactoring our code. Conclusion: Public Variables The move from persistence friends to public variables was a huge win. Some people might see it as a step backwards: we went from a solution with very well defined access control to one with no access control at all. The public variable solution was superior, though, because it was far
4 simpler. But it suffered from close coupling in the tests and still had problems with cleanly separating the persistence and business layers. 6 TAKE THREE: SCHEMA ABSTRACTION One thing I ve noticed about our XP project is that we ve never been completely happy with our design. We struggle to get acceptance tests working, and then the architecture feels wrong. We work to get the architecture right, and then the tests need work. We fix the tests, and then we have mock objects [5] scattered all over the place. I don t see this as a problem with our project or XP, though. Instead, I think it s our biggest strength. We re never satisfied with our design and are constantly evaluating our system to see what could improve. There s always some long-term scheme to improve this or that part of the system. Once those changes have been made (often over the course of a month or two), new problems or ideas have come to light. This was the case with our database schema abstraction. We had been using procedural helper methods for a lot of our test set up. We knew that the procedural nature of these classes was a code smell [6], and once we fixed the persistence friend problem, we had a chance to work on them. Most of the classes set up and tore down records in the database, so we refactored them to represent database rows. One instance represented one row in a single database table. This approach was so successful that we decided to migrate it to our production code. Up until this point, our database abstraction had consisted of a thin layer over Java s Database Connectivity (JDBC) package. All of our persistence classes had hand-coded SQL in them. We established the basic Row and Table abstraction fairly quickly. As time went by, we identified many things that could be abstracted out into parent classes. Now all of our basic operations, such as insert, update, delete, and lookup by primary key, are implemented in the parent class and are automatically available for every table. Conclusion: Schema Abstraction The introduction of Row and Table classes was a significant improvement to our architecture. With this change, we were able to move all of our SQL out of the persistence layer and into the database layer. We removed duplicate queries and factored many common needs into a shared parent class. Most importantly, our SQL was now grouped according to database table, not business object. This important change made our code much easier to understand. 7 TAKE FOUR: FORKLIFTS The introduction of Row and Table classes as an abstraction for our database schema was a huge step forward, but we still had a major problem with our architecture: the persistence layer and the business layer were far too closely intertwined. The persistence objects were merely an intermediary between the business layer and the database. When called, they asked the schema abstraction for a variable or set of variables and plugged that back into the business object via the public instance variable backdoor. With the introduction of the Table and Row schema abstraction, all of their SQL was moved and they became nearly useless. At the same time, the business objects were far too complex. The business rules for our system were trivial, but the business objects were large and difficult to understand. The problem was that the business objects managed when the persistence objects were called. They had to keep track of which data had been loaded already and only ask the persistence layer for new data when it hadn t already been pulled in. The schema abstraction gave us the opportunity to reexamine the relationship between our business layer and the persistence layer. With the new abstraction, we saw architectural changes that hadn t been clear before. There were two problems with the existing architecture. First, the need for the persistence layer to access the business layer s instance variables was a perpetual problem. Second, the business layer shouldn t have been responsible for managing caching. With the schema abstraction in place, a new direction was clear: We would move all of our data into the persistence layer and have the business objects focus on business rules. Each business object would contain only a single corresponding persistence object. The persistence object would store all the data for the business object. We
5 expanded our system metaphor to handle this new approach: The database was the warehouse where our data was stored, and the persistence objects were forklifts that carried around our business s data (see figure 5). Conclusion: Forklifts The forklift version of our persistence architecture has been in place for seven or eight months. It s worked great for us so far. For the first time, we re happy with our persistence architecture. Although we continue to make minor improvements, I don t think we ll see any more significant changes to this part of the system. Overall, the forklift approach has worked wonderfully. The code is simpler. The time at which objects are loaded and how we deal with missing information is clear for the first time. I can t stress how much of an improvement this approach is over the previous way of doing things. 9 CONCLUSION Can evolutionary design replace up-front design? In our case, absolutely. Up-front design yielded a workable but overly complex design. Evolutionary design yielded improvement after improvement. It s been an immense success. The evolutionary approach has yielded two surprising results. First, it's easy. Coming up with design improvements required no real effort, because they gradually bubbled up from my subconscious over the course of months of working within the system. The other surprise was how effective evolutionary design is. I believe that the current design is far superior to anything I could have come up with in advance. The reason appears to be that, with evolutionary design, I could simply see farther. As we made each change, new approaches that were previously hidden became visible, and even obvious. I ve noticed one major drawback to evolutionary design. Architectural refactorings are hard and take a lot of work. When we moved from one persistence approach to another, it could take several days per business object. In our case, we only migrated business objects that we worked on, but that has resulted in some infrequently-used objects in our system using old approaches months after a new approach was identified. Overall, the evolutionary approach has been extremely effective. I would recommend it as the primary approach to architecture and design for any project in which aggressive refactoring is feasible. As a result of evolutionary design, our system is a joy to work with. ACKNOWLEDGEMENTS This paper would not have been possible without the support and patience of the Denali programming team. Thanks to David Bean, Lance Black, Ryan Davis, Jarid Love, and Jared Whitlock for their willingness to try new things. Thanks especially to Kim Eaves for letting us turn her traditional procedures upside down. REFERENCES 1. Beck, K. Extreme Programming Explained, 2000, Reading, MA, Addison Wesley Longman, Inc., Evolutionary Architecture discussion on Ward Cunningham s Wiki-Wiki Web. On-line at 3. Fowler, M. Analysis Patterns: Reusable Object Models, 1997, Menlo Park, CA, Addison Wesley Longman, Inc., Gosling, J., et. al. The Java Language Specification. Online at 5. Mackinnon, T., Freeman, S., & Craig, P. Endo-Testing: Unit Testing with Mock Objects. On-line at 6. Fowler, M., et. al. Refactoring: Improving the Design of Existing Code, 1999, Reading, MA, Addison Wesley Longman, Inc.,
Agile Techniques for Object Databases
db4o The Open Source Object Database Java and.net Agile Techniques for Object Databases By Scott Ambler 1 Modern software processes such as Rational Unified Process (RUP), Extreme Programming (XP), and
More informationTest Driven Development Part III: Continuous Integration Venkat Subramaniam venkats@agiledeveloper.com http://www.agiledeveloper.com/download.
Test Driven Development Part III: Continuous Integration Venkat Subramaniam venkats@agiledeveloper.com http://www.agiledeveloper.com/download.aspx Abstract In this final part of the three part series on
More informationCode Qualities and Coding Practices
Code Qualities and Coding Practices Practices to Achieve Quality Scott L. Bain and the Net Objectives Agile Practice 13 December 2007 Contents Overview... 3 The Code Quality Practices... 5 Write Tests
More informationXtreme RUP. Ne t BJECTIVES. Lightening Up the Rational Unified Process. 2/9/2001 Copyright 2001 Net Objectives 1. Agenda
Xtreme RUP by Ne t BJECTIVES Lightening Up the Rational Unified Process 2/9/2001 Copyright 2001 Net Objectives 1 RUP Overview Agenda Typical RUP Challenges Xtreme Programming Paradigm Document driven or
More informationBook 3 Cost Estimating in an Agile Development Environment. (early release)
Book 3 Cost Estimating in an Agile Development Environment (early release) Book 3: Cost Estimating in an Agile Development Environment In this third book I ll use the slides I gave at a speech several
More informationTrue Stories of Customer Service ROI: The real-world benefits of Zendesk
True Stories of Customer Service ROI: The real-world benefits of Zendesk Introduction Any manager whose business thrives when customers are happy immediately understands the value of excellent customer
More informationHow to Overcome the Top Ten Objections in Credit Card Processing
How to Overcome the Top Ten Objections in Credit Card Processing Section #1: Handling the Red Flags Just Fax Your Rates Response: I ll be happy to do that, but until we know if this is truly a fit for
More informationHuman Aspects of Software Engineering: The Case of Extreme Programming
1 Human Aspects of Software Engineering: The Case of Extreme Programming Orit Hazzan 1 and Jim Tomayko 2 1 Department of Education in Technology and Science, Technion - IIT, Haifa 32000, Israel oritha@tx.technion.ac.il
More informationWhy Your Job Search Isn t Working
Why Your Job Search Isn t Working 6 mistakes you re probably making and how to fix them I t s easy to think that your lack of success in finding a new job has nothing to do with you. After all, this is
More informationAn Introduction to Extreme Programming
An Introduction to Extreme Programming Ken Auer kauer@rolemodelsoft.com http://www.rolemodelsoft.com RoleModel Software, Inc. 5004 Rossmore Dr. Fuquay-Varina, NC 27526 919-557-6352 Page 1 The Joy of Software
More informationCACHÉ: FLEXIBLE, HIGH-PERFORMANCE PERSISTENCE FOR JAVA APPLICATIONS
CACHÉ: FLEXIBLE, HIGH-PERFORMANCE PERSISTENCE FOR JAVA APPLICATIONS A technical white paper by: InterSystems Corporation Introduction Java is indisputably one of the workhorse technologies for application
More informationHarlequins Makes Winning Conversion to Bond Payroll Services
Harlequins Makes Winning Conversion to Bond Payroll Services Success and business growth can have unforeseen consequences, as London rugby club Harlequins discovered when its local outsourced payroll provider
More information214.823.9999 214.823.6440
abich & Associates E. 57th Street Partners 214.823.9999 214.823.6440 www.babich.com www.e57partners.com This question would seem to have a simple answer: employers with a need should interview, that s
More informationCustomer Relationship Management: How and why to implement CRM effectively in the Financial Services sector. Research White Paper
Customer Relationship Management: How and why to implement CRM effectively in the Financial Services sector Research White Paper Index 1 3 4 5 6 7 8 9 Introduction Where CRM started: its history and commercial
More informationForeword by Martin Fowler *
Foreword by Martin Fowler * In my early days in the software industry, one of the most awkward and tense moments of a software project was integration. Modules that worked individually were put together
More informationSQL Server Performance Intelligence
WHITE PAPER SQL Server Performance Intelligence MARCH 2009 Confio Software www.confio.com +1-303-938-8282 By: Consortio Services & Confio Software Performance Intelligence is Confio Software s method of
More informationOBJECT PERSISTENCE AND AGILE SOFTWARE DEVELOPMENT
OBJECT PERSISTENCE AND AGILE SOFTWARE DEVELOPMENT A White Paper by Dirk Bartels and Robert Benson sponsored by Versant Corporation 2009, Versant Corporation 255 Shoreline Drive, Suite 450 Redwood City,
More informationHybrid: The Next Generation Cloud Interviews Among CIOs of the Fortune 1000 and Inc. 5000
Hybrid: The Next Generation Cloud Interviews Among CIOs of the Fortune 1000 and Inc. 5000 IT Solutions Survey Wakefield Research 2 EXECUTIVE SUMMARY: Hybrid The Next Generation Cloud M ost Chief Information
More informationThe Five Biggest MISSED Internet Marketing Opportunities Most Lawyers Don't Know About
The Five Biggest MISSED Internet Marketing Opportunities Most Lawyers Don't Know About Many lawyers and other professionals equate internet marketing with Search Engine Optimization (SEO). And while SEO
More informationThe Scrum Master role vs. Project Manager
The Scrum Master role vs. Project Manager Marco A. Alba Lopez A. Jalasoft marco.albalopez@jalasoft.com RESUMEN It may be usual now a days to see organization asking for these types of roles and believe
More informationUse of Non-IT Testers in Software Development
Use of Non-IT Testers in Software Development Vineta Arnicane University of Latvia, Raina blvd. 19, Riga, Latvia vineta.arnicane@lu.lv Abstract. Because of a shortage of IT specialists, many companies
More informationExtreme Programming and Embedded Software Development
Extreme Programming and Embedded Software Development By James Grenning Every time I do a project, it seems we don t get the hardware until late in the project. This limits the progress the team can make.
More informationJob Satisfaction and Motivation in a Large Agile Team
Job Satisfaction and Motivation in a Large Agile Team Bjørnar Tessem 1, and Frank Maurer 2 1 Department of Information Science and Media Studies, University of Bergen, NO-5020 Bergen, Norway bjornar.tessem@uib.no
More informationAspect-Oriented Programming
Aspect-Oriented Programming An Introduction to Aspect-Oriented Programming and AspectJ Niklas Påhlsson Department of Technology University of Kalmar S 391 82 Kalmar SWEDEN Topic Report for Software Engineering
More informationA Survival Guide for the Independent Attorney. Sponsored by LexisNexis Firm Manager
A Survival Guide for the Independent Attorney Sponsored by LexisNexis Firm Manager The current legal economy sees more law graduates than available positions, and an increasing number of seasoned legal
More informationThe Phases of an Object-Oriented Application
The Phases of an Object-Oriented Application Reprinted from the Feb 1992 issue of The Smalltalk Report Vol. 1, No. 5 By: Rebecca J. Wirfs-Brock There is never enough time to get it absolutely, perfectly
More informationHow to Choose the Right Web Design Company for Your Nonprofit
How to Choose the Right Web Design Company for Your Nonprofit wiredimpact.com 1 A new website can very easily be the kind of can that gets kicked down the road. Many nonprofits are swamped with things
More informationAutomated Acceptance Testing of High Capacity Network Gateway
Automated Acceptance Testing of High Capacity Network Gateway Ran Nyman 1, Ismo Aro 2, Roland Wagner 3, 1,2,3 Nokia Siemens Network, PO Box 1 FI-02022 Nokia Siemens Networks 1 ran@rannicon.com, 2 ismo.aro@nsn.com,
More informationI N T E R S Y S T E M S W H I T E P A P E R INTERSYSTEMS CACHÉ AS AN ALTERNATIVE TO IN-MEMORY DATABASES. David Kaaret InterSystems Corporation
INTERSYSTEMS CACHÉ AS AN ALTERNATIVE TO IN-MEMORY DATABASES David Kaaret InterSystems Corporation INTERSYSTEMS CACHÉ AS AN ALTERNATIVE TO IN-MEMORY DATABASES Introduction To overcome the performance limitations
More informationBig Data Integration: A Buyer's Guide
SEPTEMBER 2013 Buyer s Guide to Big Data Integration Sponsored by Contents Introduction 1 Challenges of Big Data Integration: New and Old 1 What You Need for Big Data Integration 3 Preferred Technology
More informationPerformance from problem solving. An interview with three leaders at MassMutual
123 Performance from problem solving An interview with three leaders at MassMutual At MassMutual, problem solving leads to higher standards, which in turn mean more problems to solve. The constant cycle
More informationPower Tools for Pivotal Tracker
Power Tools for Pivotal Tracker Pivotal Labs Dezmon Fernandez Victoria Kay Eric Dattore June 16th, 2015 Power Tools for Pivotal Tracker 1 Client Description Pivotal Labs is an agile software development
More informationWhat is the difference between Workflow Engines and BPM Suites?
What is the difference between Workflow Engines and BPM Suites? Phil Gilbert Chief Technology Engineer Lombardi Software May 2005 Table of Contents Introduction... 3 The Workflow Solutions of the 90 s...
More informationAgile with XP and Scrum
Agile with XP and Scrum Amit Goel National Agile Software Workshop @ Indore Agile India Conference Agile Software Community of India Disclaimer and Credits Most of material in this presentation has been
More informationHow to Overcome the Top Ten Objections in Credit Card Processing
How to Overcome the Top Ten Objections in Credit Card Processing Handling the Top Ten Objections Objection #1 I have a contract That s exactly why I m calling you, you see most people we work with have
More informationOracle Forms and SOA: Software development approach for advanced flexibility An Oracle Forms Community White Paper
Oracle Forms and SOA: Software development approach for advanced flexibility An Oracle Forms Community White Paper Malcolm Smith Atos Origin April 2008 Oracle Forms and SOA: Software development approach
More informationIntroducing DocumentDB
David Chappell Introducing DocumentDB A NoSQL Database for Microsoft Azure Sponsored by Microsoft Corporation Copyright 2014 Chappell & Associates Contents Why DocumentDB?... 3 The DocumentDB Data Model...
More informationWhat is Data Virtualization?
What is Data Virtualization? Rick F. van der Lans Data virtualization is receiving more and more attention in the IT industry, especially from those interested in data management and business intelligence.
More informationNew Generation of Software Development
New Generation of Software Development Terry Hon University of British Columbia 201-2366 Main Mall Vancouver B.C. V6T 1Z4 tyehon@cs.ubc.ca ABSTRACT In this paper, I present a picture of what software development
More informationWhat Does Large Mean? Copyright 2003 by N. Josuttis and J. Eckstein 3. Why is Large an Issue?
Skalierung von agilen Prozessen Ein Erfahrungsbericht OOP 2003 Jutta Eckstein Nicolai Josuttis This Talk is About Agility Large Experience Success Copyright 2003 by N. Josuttis and J. Eckstein 2 1 What
More informationI. Computer Consulting in the 21 st Century
Managed Services in a Month 2 nd Ed. 9 I. Computer Consulting in the 21 st Century 1. What s Different About Technology Consulting Today? Without getting into a big When I was a kid we had to build our
More informationSharePoint. Governance. Benjamin Niaulin
SharePoint Governance By Benjamin Niaulin ABOUT THE AUTHOR Benjamin Niaulin @bniaulin Geek and SharePoint MVP, Benjamin has been around the globe helping people reach their goals by simplifying SharePoint.
More informationEXTREME PROGRAMMING AGILE METHOD USED IN PROJECT MANAGEMENT
EXTREME PROGRAMMING AGILE METHOD USED IN PROJECT MANAGEMENT Cruceru Anca Romanian- American University, Faculty of Management- Marketing, 1B Expozitiei Blvd, Bucharest, cruceruanca@yahoo.com, 0723508894
More informationFREE REPORT: Answers To The Top 5 Questions Business Owners Have About Cloud Computing
FREE REPORT: Answers To The Top 5 Questions Business Owners Have About Cloud Computing Discover What Most IT Consultants Don t Know Or Won t Tell You About Moving Your Company s Network To The Cloud By
More informationRevitalizing Your CRM Initiative. Why the Need to Revitalize?
Revitalizing Your CRM Initiative In this three article series, we re considering a few of the most relevant Customer Relationship Management (CRM) practices that can impact the effectiveness of small and
More informationWhat You Don t Know Will Haunt You.
Comprehensive Consulting Solutions, Inc. Business Savvy. IT Smart. Joint Application Design (JAD) A Case Study White Paper Published: June 2002 (with revisions) What You Don t Know Will Haunt You. Contents
More informationNEDARC POSITION PAPER
Which Database Will Serve Your Needs? National EMSC Data Analysis Resource Center Central to any EMS, public health, or large healthcare organization is the collection, storage, retrieval, and analysis
More informationData virtualization: Delivering on-demand access to information throughout the enterprise
IBM Software Thought Leadership White Paper April 2013 Data virtualization: Delivering on-demand access to information throughout the enterprise 2 Data virtualization: Delivering on-demand access to information
More informationIn depth study - Dev teams tooling
In depth study - Dev teams tooling Max Åberg mat09mab@ Jacob Burenstam Linder ada09jbu@ Desired feedback Structure of paper Problem description Inconsistencies git story explanation 1 Introduction Hypotheses
More informationSecrets to Automation Success. A White Paper by Paul Merrill, Consultant and Trainer at Beaufort Fairmont, LLC
5 Secrets to Automation Success A White Paper by Paul Merrill, Consultant and Trainer at Beaufort Fairmont, LLC 5 Secrets to Automated Testing Success 2 Secret #1 Practice Exceptional Leadership If you
More information6.042/18.062J Mathematics for Computer Science. Expected Value I
6.42/8.62J Mathematics for Computer Science Srini Devadas and Eric Lehman May 3, 25 Lecture otes Expected Value I The expectation or expected value of a random variable is a single number that tells you
More informationWhy the CRM system you ve got doesn t do what you want
1 Why the CRM system you ve got doesn t do what you want Why the CRM system you ve got doesn t do what you want If you often find yourself wondering why your CRM system is not really making your life easier
More informationStandard Bank. Case Study
Standard Bank Case Study A move to a new London landmark headquarters built to the latest environmental standards triggered an IT revolution for a top international bank. Today, Standard Bank is reaping
More informationby Heather Oppenheimer and Steve Baldassano
Switching Tracks: Finding the Right Way to Get to Maturity Level 2 by Heather Oppenheimer and Steve Baldassano When your customer contract requires that your software development process must be CMMI Level
More informationThe Benefits of Deployment Automation
WHITEPAPER Octopus Deploy The Benefits of Deployment Automation Reducing the risk of production deployments Contents Executive Summary... 2 Deployment and Agile software development... 3 Aim to deploy
More informationBringing cloud services together. A point of view
Bringing cloud services together A point of view O rganisations rarely achieve great things alone. They need partners. People with the specialist expertise to cut through complexity. People who can make
More informationLaunching Extreme Programming at a Process- Intensive Company
focus reports from the field Launching Extreme Programming at a Process- Intensive Company James Grenning, Object Mentor A company that has traditional formal processes launched a project using many Extreme
More informationREWARD System For Even Money Bet in Roulette By Izak Matatya
REWARD System For Even Money Bet in Roulette By Izak Matatya By even money betting we mean betting on Red or Black, High or Low, Even or Odd, because they pay 1 to 1. With the exception of the green zeros,
More informationTHE STATESMAN. A GWC Student Attends Law School. New 2005 George Wythe College Campus. Happy Holidays! From George Wythe College. On Campus Seminars:
THE STATESMAN Volume 8 Issue 12 December 2005 Happy Holidays! From George Wythe College On Campus Seminars: Dec 16-17 Mar 4-5 Mar 7-8 May 2-27 May 30-31 July 15-16 Roots of America How to Read a Book A
More informationWhite Paper 6 Steps to Enhance Performance of Critical Systems
White Paper 6 Steps to Enhance Performance of Critical Systems Despite the fact that enterprise IT departments have invested heavily in dynamic testing tools to verify and validate application performance
More informationDEFINITELY. GAME CHANGER? EVOLUTION? Big Data
Big Data EVOLUTION? GAME CHANGER? DEFINITELY. EMC s Bill Schmarzo and consultant Ben Woo weigh in on whether Big Data is revolutionary, evolutionary, or both. by Terry Brown EMC+ In a recent survey of
More informationThe Rules 1. One level of indentation per method 2. Don t use the ELSE keyword 3. Wrap all primitives and Strings
Object Calisthenics 9 steps to better software design today, by Jeff Bay http://www.xpteam.com/jeff/writings/objectcalisthenics.rtf http://www.pragprog.com/titles/twa/thoughtworks-anthology We ve all seen
More informationScrum Is Not Just for Software
Scrum Is Not Just for Software A real-life application of Scrum outside IT. Robbie Mac Iver 2/9/2009. Agile methods like Scrum can be applied to any project effort to deliver improved results in ever evolving
More informationwww.arden Fumigation.com (408) 279-2040 1
1 FREE REPORT 5 Crucial Things You Should Know Before Choosing a Pest Control Service 2 We all know how difficult it is when we need to get rid of pests in our house. It is even more difficult to do it
More informationA Simple Guide to Churn Analysis
A Simple Guide to Churn Analysis A Publication by Evergage Introduction Thank you for downloading A Simple Guide to Churn Analysis. The goal of this guide is to make analyzing churn easy, meaning you wont
More informationZuberance. LeadMD Case Study. Getting More Out of a Marketing Automation Investment
LeadMD Case Study Zuberance Getting More Out of a Marketing Automation Investment Zuberance was using Marketo prior to finding LeadMD, but they struggled with the platform. Their marketing automation and
More informationChapter 1. Why the Web Industry Needs XP
Chapter 1 Why the Web Industry Needs XP We are all in the gutter, but some of us are looking at the stars. Oscar Wilde Web development is an adolescent, unique in its requirements and unparalleled in its
More informationWhat is Data Virtualization? Rick F. van der Lans, R20/Consultancy
What is Data Virtualization? by Rick F. van der Lans, R20/Consultancy August 2011 Introduction Data virtualization is receiving more and more attention in the IT industry, especially from those interested
More informationSection 1: Introduction to the Employee Satisfaction Roll Out Process 3
TABLE OF CONTENTS: Section 1: Introduction to the Employee Satisfaction Roll Out Process 3 Section 2: The Survey Roll Out Process Defined... 4-15 1: Survey Completed And Data Collected. 4 2: Leaders Trained
More informationWhat mathematical optimization can, and cannot, do for biologists. Steven Kelk Department of Knowledge Engineering (DKE) Maastricht University, NL
What mathematical optimization can, and cannot, do for biologists Steven Kelk Department of Knowledge Engineering (DKE) Maastricht University, NL Introduction There is no shortage of literature about the
More informationThe TrakQuip solution by Corporate Services Decreased Frustrations & Increased Productivity for Bay-Tech Equipment Rentals, Inc.
The TrakQuip solution by Corporate Services Decreased Frustrations & Increased Productivity for Bay-Tech Equipment Rentals, Inc. Bay-Tech Equipment Rentals, Inc. and Bay-Tech Industries, Inc. are full
More informationSEO MADE SIMPLE. Strategies for Dominating the World s Largest Search Engine. Second Edition. by Michael H. Fleischner
SEO MADE SIMPLE Second Edition Strategies for Dominating the World s Largest Search Engine by Michael H. Fleischner SEO Made Simple (Second Edition) All rights reserved Copyright 2011 by Michael H. Fleischner
More informationTrue Stories: My Debt Crisis
Read the following article and consider the following questions for the individual involved: 1. What were the threats and poor decisions? 2. What were the positive actions and good decisions? 3. What would
More informationAn Approach for Extracting Modules from Monolithic Software Architectures
An Approach for Extracting Modules from Monolithic Software Architectures Ricardo Terra, Marco Túlio Valente, Roberto S. Bigonha Universidade Federal de Minas Gerais, Brazil {terra,mtov,bigonha@dcc.ufmg.br
More informationMigrating from Managing to Coaching
a ValueSelling Associates Migrating from Managing to Coaching How to bring out the best in sales teams and increase bottom lines The role that frontline sales managers play in coaching to the right skills,
More informationConcepts and terminology in the Simula Programming Language
Concepts and terminology in the Simula Programming Language An introduction for new readers of Simula literature Stein Krogdahl Department of Informatics University of Oslo, Norway April 2010 Introduction
More informationHistory of Agile Methods
Agile Development Methods: Philosophy and Practice CPSC 315 Programming Studio Fall 2010 History of Agile Methods Particularly in 1990s, some developers reacted against traditional heavyweight software
More informationDevelopment Techniques. CSE301 University of Sunderland Harry R. Erwin, PhD
Development Techniques CSE301 University of Sunderland Harry R. Erwin, PhD Sources Boehm, 1981, Software Engineering Economics, Prentice- Hall. Stephens and Rosenberg, 2003, Extreme Programming Refactored:
More information1.2. The key benefits of the shift to the cloud... 3. 1.3. The emergence of No-code metadata driven application platforms... 4
Table of Contents 1. Fundamental shifts driving imminent change for Enterprise Software Applications... 3 1.1. The emergence of the Cloud Computing paradigm... 3 1.2. The key benefits of the shift to the
More informationHow to Study Mathematics Written by Paul Dawkins
How to Study Mathematics Written by Paul Dawkins Before I get into the tips for how to study math let me first say that everyone studies differently and there is no one right way to study for a math class.
More informationERP Systems and their Effects on Organizations: A Proposed Scheme for ERP Success
ASEE 2014 Zone I Conference, April 3-5, 2014, University of Bridgeport, Bridgeport, CT, USA. ERP Systems and their Effects on Organizations: A Proposed Scheme for ERP Success Khaled Almgren Computer Science
More informationWhite Paper. Java versus Ruby Frameworks in Practice STATE OF THE ART SOFTWARE DEVELOPMENT 1
White Paper Java versus Ruby Frameworks in Practice STATE OF THE ART SOFTWARE DEVELOPMENT 1 INTRODUCTION...3 FRAMEWORKS AND LANGUAGES...3 SECURITY AND UPGRADES...4 Major Upgrades...4 Minor Upgrades...5
More informationQuality in an Agile World BY SCOTT AMBLER Ambysoft, Inc.
TALKING POINTS Quality is an inherent aspect of true agile software development. The majority of agilists take a test-driven approach to development where they write a unit test before they write the domain
More informationTHE ELEMENTS OF USER EXPERIENCE
THE ELEMENTS OF USER EXPERIENCE USER-CENTERED DESIGN FOR THE WEB Jesse James Garrett chapter 2 Meet the Elements THE ELEMENTS OF USER EXPERIENCE 21 The user experience development process is all about
More informationPicture yourself in a meeting. Suppose there are a dozen people
1 WHAT IS ACCOUNTABILITY, REALLY? Hypocrisy exists in the space between language and action. Picture yourself in a meeting. Suppose there are a dozen people seated around a table and someone says, I m
More informationITERATIVE DEVELOPMENT: KEY TECHNIQUE FOR MANAGING SOFTWARE DEVELOPMENTS. Dwayne Read Strategic Systems (WA) Pty Ltd dwayne@ss.com.
ITERATIVE DEVELOPMENT: KEY TECHNIQUE FOR MANAGING SOFTWARE DEVELOPMENTS Dwayne Read Strategic Systems (WA) Pty Ltd dwayne@ss.com.au Abstract Iterative development provides the fundamental structure that
More informationThe Economic Value of Certainty By Les McGuire, MBA August 19, 2003
The Economic Value of Certainty By Les McGuire, MBA August 19, 2003 This is supposed to be an article about Whole Life Insurance, and for those who have eyes to see it is. However, before discussing product,
More informationFREE REPORT: Answers To The Top 5 Questions Business Owners Have About Cloud Computing
FREE REPORT: Answers To The Top 5 Questions Business Owners Have About Cloud Computing Discover What Most IT Consultants Don t Know Or Won t Tell You About Moving Your Company s Network To The Cloud By
More informationHow Agile methods resolve chaos and unpredictability in software projects
WHITE PAPER How Agile methods resolve chaos and unpredictability in software projects Author: Jack Milunsky Scrum Master and COO Brighstpark3 January 2009 INTRODUCTION This paper attempts to show why an
More informationVOXOX 5BENEFITS OF A. HOSTED VoIP SOLUTION FOR MULTI-OFFICE BUSINESSES. a VOXOX ebook. Communications to the Cloud:
VOXOX 5BENEFITS OF A HOSTED VoIP SOLUTION FOR MULTI-OFFICE BUSINESSES a VOXOX ebook 0Taking 2013 VOXOX, Inc. Communications to the Cloud: CONTENTS 2 INTRODUCTION 3 TOP CHALLENGES 7 FINDING A SOLUTION 12
More informationA conversation with Scott Chappell, CMO, Sessions Online Schools of Art and Design
A conversation with Scott Chappell, CMO, Sessions Online Schools of Interviewed by: Steven Groves, StevenGroves.com Guy R. Powell, DemandROMI Can you talk to us a little bit about Sessions and what Sessions
More informationHow to Improve Your Software Release Management Process A Real-time Case Study
How to Improve Your Software Release Management Process A Real-time Case Study Software projects take investment, support, development and a lot of hard work and dedication. Good release management practices
More informationINDEX. Introduction Page 3. Methodology Page 4. Findings. Conclusion. Page 5. Page 10
FINDINGS 1 INDEX 1 2 3 4 Introduction Page 3 Methodology Page 4 Findings Page 5 Conclusion Page 10 INTRODUCTION Our 2016 Data Scientist report is a follow up to last year s effort. Our aim was to survey
More informationStop being Rails developer
Stop being Rails developer Ivan Nemytchenko 2015 Ivan Nemytchenko I think this book should have been written in 2011. But nobody had written it, and I still see a huge demand for this topic to be covered
More informationMaking Data Available on the Web
Making Data Available on the Web By Simba Technologies Inc. SimbaEngine ODBC SDK Introduction Many companies use web-based services to automate business processes like sales, track items like packages,
More informationThe Top 3 Common Mistakes Men Make That Blow All Their Chances of Getting Their Ex-Girlfriend Back Which of these mistakes are you making?
The Top 3 Common Mistakes Men Make That Blow All Their Chances of Getting Their Ex-Girlfriend Back Which of these mistakes are you making? By George Karanastasis, M.D. COPYRIGHT NOTICE THIS ELECTRONIC
More informationGetting started with API testing
Technical white paper Getting started with API testing Test all layers of your composite applications, not just the GUI Table of contents Executive summary... 3 Introduction... 3 Who should read this document?...
More informationAgile Software Development in the Large
Agile Software Development in the Large GI-Vortrag Braunschweig Jutta Eckstein Nicolai Josuttis What Does Large Mean? Large in... scope time people money risks We focus on Large Teams which implies everything
More informationHow To Save Money On Voice And Data For Your Business
5 Ways Your Company is Wasting Money on Voice and Data 5 Ways Your Company is Wasting Money on Voice and Data By Scott Wells INTRODUCTION When was the last time you really took a cold, hard look at your
More informationExpert. Briefing. \\\\ Make Purpose, Communication Priorities in Data Governance
\\\\ Make Purpose, Communication Priorities in Data Governance If you aren t careful, data governance can be all bureaucracy and no benefit. To avoid that, managing the process effectively is a must, says
More information