360 likes | 651 Views
Application Lifecycle Management (ALM) Methodologies and Tools Roundtable. Peter Mellow , VP ADP Development Sunil Belgaonkar , Software Architect . Agenda. Purpose and Goals Development processes and tools Agile Development process and tools Application packaging and deployment
E N D
Application Lifecycle Management (ALM) Methodologies and Tools Roundtable Peter Mellow, VP ADP Development Sunil Belgaonkar, Software Architect
Session ID: Session Title Agenda • Purpose and Goals • Development processes and tools • Agile Development process and tools • Application packaging and deployment • Wrap up and next steps
Purpose Of The Meeting • Get a broad understanding of the challenges • Discuss different processes and tools used by customers • Define scope of tools and development methodologies • Where do we go from here?
Welcome and Introductions • Please provide your name • Goals you would like to achieve from this meeting?
ALM Components • Requirements management • Architecture • Development, Build and Testing • Issue and resource tracking • Release management • Deployment • What else?
Session ID: Session Title Agenda • Purpose and Goals • Development processes and tools • Agile Development process and tools • Application packaging and deployment • Wrap up and next steps
Source Development Tools • Progress Developer Studio for OpenEdge • Web tools • Other Plug-ins e.g. Source code generators etc…
Version Control • Revision control, also known as version control or source control is the management of changes to documents, programs, and other information stored in file system Best Practices: • Set up change notifications • Version control is not a backup system • Use branches • Write good commit messages
Continuous Integration • Continuous Integration is a software development practice where members of a team integrate their work frequently. Each integration is verified by an automated build to detect integration errors as quickly as possible. Best Practices: • Maintain single source repository • Automate build process • Commit changes to mainline everyday • Build mainline on integration machine • Keep the build fast • Test in a clone of production environment • Automate deployment
Testing • The process of validating and verifying that a software program / application / product: • meets the requirements that guided its design and development; • works as expected; and • can be implemented with the same characteristics. • Types of testing • Unit Testing - individual classes and methods • GUI Testing - interactive elements • Smoke Testing - software will not crash outright • Integration Testing - modules tested as a group • System Testing - compliance with requirements • Regression Testing - new errors resulting from ongoing changes • Load Testing - measuring response under load • Usability Testing - usability of the application • Security Testing - prevents unauthorized use
OpenEdge Focused Development Tools • Progress Developer Studio for OpenEdge • Eclipse based IDE or modeling and writing ABL applications. • RoundTable • RoundTable is a software configuration management and source code control solution focused on OpenEdge applications. • Build/Compile • PCT (Progress Compilation Tools) is a set of ANT tasks, designed to build OpenEdge applications. • Unit testing • It is a method by which individual units of source code are tested to determine if they are fit for use. There are two xUnit based frameworks, oeunit and prounit available for OpenEdge. • Static program analysis • ProLint is a language parser and set of customizable source code analysis rules for detecting problems and standards violations in ABL code.
Development Tools Discussion • What development tools (for different technologies) are you using in your environment? • What other plug-ins are you using in your environment? • Does it meet your needs? • Is it integrated into your build process?
Version Control Discussion • What version control product are you using in your environment? • Does it meet all your needs? • Is it integrated into your development tools? • Is it integrated into your build process?
Continuous Integration Discussion • Does your development process include continuous integration? • Are you using a continuous integration product? • Are your other development practices built on the benefits/hurdles of your build process?
Software Testing Discussion • Topics to discuss • Unit Testing • GUI Testing • Load Testing • Questions • What testing tools are you using in your environment? • Does it meet all your needs? • Is it integrated into your development tools? • Is it integrated into your build process?
Session ID: Session Title Agenda • Welcome • Development processes and tools • Agile Development process and tools • Application packaging and deployment • Wrap up and next steps
Agile Development/Manifesto • Style of software development that emphasizes customer satisfaction through continuous delivery of functional software. • Based on a variety of iterative development disciplines including extreme programming (XP) • Agile methods put developers to work in small teams to tight budgets and short timescales Agile Principles: • Individuals and interactions over processes and tools • Working software over comprehensive documentation • Customer collaboration over contract negotiation • Responding to change over following a plan
Agile Best Practices • Common Coding guidelines • Code Refactoring • Code Regression Testing • Continuous Integration • Test Driven Development • Active Stakeholder participation • Pair Programming • Take a breadth-first approach • Smaller is better
Discussion • What agile methodologies have you adopted? • What benefits have you seen? • Do you follow one of the standard agile systems such as scrum, XP, AUP, DSDM, FDD or another one? • Are you using an ALM tool that assists with your agile methodology? • Have you provided any formal agile development training to your developers and product owners?
Session ID: Session Title Agenda • Welcome • Development processes and tools • Agile Development process and tools • Application packaging and deployment • Wrap up and next steps
Application Packaging • Application packaging is the process of identifying application components and determining how the components should be installed and configured on client workstations. Best Practices: • Avoid hard coding of paths • Provide uninstall capability • Provide rollback mechanism • Provide silent installers “Enterprises that do not dedicate resources to packaging applications will fail at software distribution…” (0.8 probability) — Gartner Group
Software Deployment • The general process that has to be customized according to specific requirements or characteristics to make a software system available for use. • Synaptic Package Manager • Advanced Packaging Tool • Portage • Cygwin • Web Client Application Assembler • Windows MSI • InstallShield
Discussion • How do you do packaging? • How do you do deployment? • What packaging/deployment tool are you using? • How “hands-on” are each of the steps?
Session ID: Session Title Agenda • Welcome • Development processes and tools • Agile Development process and tools • Application packaging and deployment • Wrap up and next steps
Next… • Where would you like to go from here?
Goals of working group • Identify key tools by understanding different processes • Recommendation for the tools • Document best practices / non-practices