Creating a Maintainable Software Ecosystem Jeremy D. Miller November 27th, 2007.

Slides:



Advertisements
Similar presentations
Steve Collins Richland County IT Manager Agile.  Have Fun  Learn About Agile  Tell Some Stories.
Advertisements

Software Delivery. Software Delivery Management  Managing Requirements and Changes  Managing Resources  Managing Configuration  Managing Defects 
Validata Automated Build & Configuration (ABC)
Validata Release Coordinator Accelerated application delivery through automated end-to-end release management.
Roadmap to Continuous Integration Testing and Benefits Gowri Selka, Walgreens Natalie Koltun, Walgreens May 20th, 2014 ©2013 Walgreen Co. All rights reserved.
Mike Azocar Sr. Developer Technical Specialist Microsoft Corporation
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Transitioning to XP or The Fanciful Opinions of Don Wells.
CS 501 : An Introduction to SCM & GForge An Introduction to SCM & GForge Lin Guo
Low level CASE: Source Code Management. Source Code Management  Also known as Configuration Management  Source Code Managers are tools that: –Archive.
An Intro to ALM Using TFS and Visual Studio for Source Control, Build Automation, Continuous Integration, Deployments, and Task Management.
USING CI & CD WITH MICROSOFT SQL SERVER Tim Giorgi Senior Software Developer Northwest Evaluation
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Source Code Management Or Configuration Management: How I learned to Stop Worrying and Hate My Co-workers Less.
Source Control Repositories for Enabling Team Working Svetlin Nakov Telerik Corporation
Improving Software Quality with Continuous Integration
Continuous Integration for Databases Learn how to automate your build and test Steve Jones Red Gate Software Part II of the Continuous Delivery for Databases.
Introduction to Continuous Integration Mike Roberts.
Continuous Integration Demonstration. Agenda 1.Continuous Integration Basics 2.Live Demonstration 3.Bamboo Concepts 4.Advantages 5.Version 2.0 Features.
By John Boal  Continuous Integration [CI] ◦ Automating the build process ◦ Build the entire system each time any new.
CONTINUOUS INTEGRATION, DELIVERY & DEPLOYMENT ONE CLICK DELIVERY.
Test-Driven Development With Visual Studio 2005 Erno de Weerd Info Support.
From 3 weeks to 30 minutes – a journey through the ups and downs of test automation.
Accelerating Product and Service Innovation © 2013 IBM Corporation IBM Integrated Solution for System z Development (ISDz) Henk van der Wijk 23 Januari.
Continuous Delivery Ajey Gore Head of Technology ThoughtWorks India.
Craig Berntson Chief Software Gardener Mojo Software Worx Branches and Merges are Bears, Oh My!
Michael Burnside Blog: Software Quality Assurance, Quality Engineering, and Web and Mobile Test.
© 2012 IBM Corporation Rational Insight | Back to Basis Series SCM introduction Chu Shu June 2012.
@benday #vslive Automated Build, Test & Deploy with TFS, ASP.NET, and SQL Server Benjamin
Craig Berntson
E X P E R I E N C E Y O U R A M E R I C A Natural Resource Monitoring Database Development Using SQL Server A Comparison Between Visual Basic/ADO.Net and.
1 Lecture 19 Configuration Management Software Engineering.
& Dev Ops. Sherwin-Williams & DevOps Introduction to Sherwin-Williams.
DTS Conversion to SSIS Conversion Best Practices Mike Davis
© 2012 About Me Doing agile since 1999 Start ups / Enterprises Planigle - Consulting and Training Qcue – VP, Engineering.
Database Change Management One solution to an often complex problem Kevin Hurwitz Headspring Systems
Michael Still Google Inc. October, Managing Unix servers the slack way Tools and techniques for managing large numbers of Unix machines Michael.
XP Explained Chapters 7-9. Primary Practices  Sit together Ideal Resistance Multi-site  Whole Team All the necessary skills in a single management structure.
Chapter 7 The Practices: dX. 2 Outline Iterative Development Iterative Development Planning Planning Organizing the Iterations into Management Phases.
Sofia Event Center May 2014 Branimir Giurov C# MVP Solution Architect BulPros Consulting Continuous Integration of Sharepoint 2013 Solutions with.
UHCS 2005, slide 1 About Continuous Integration. UHCS 2005, slide 2 Why do you write Unit Test ? Improve quality/robustness of your code Quick feedback.
(1) Test Driven Development Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of Hawaii Honolulu.
Continuous Integration CruiseControl.Net. Best Practices Use version control; Automate the build; Build should be self tested; Developers must commit.
(1) Introduction to Continuous Integration Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of.
Real World SQL Server Data Tools Benjamin
CSC444F'07Lecture 41 CSC444 Software Engineering Top 10 Practices.
Build and Deployment Process Understand NCI’s DevOps and continuous integration requirements Understand NCI’s build and distribution requirements.
Source Control What technical communicators need to know.
Continuous Integration for Databases Steve Jones SQLServerCentral Red Gate Software.
JRA1 Meeting – 09/02/ Software Configuration Management and Integration EGEE is proposed as a project funded by the European Union under contract.
Beginning Software Craftsmanship Brendan Enrick Steve Smith
1 Punishment Through Continuous Delivery If it hurts, do it more often…
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Introduction Aaron Day ● Software Architect ● Open Solutions Interests and Hobbies ● Family ● Software Development ● Woodworking ● Gaming ● Shooting.
ALM Deployment Pipeline Implementation. Create a Repeatable, Reliable Process for Releasing Software. Automate Almost Everything Keep Everything in Version.
Joonas Sirén, Technology Architect, Emerging Technologies Accenture
Stress Free Deployments with Octopus Deploy
Continuous Integration (CI)
Version Control with Subversion
Johanna Rothman Create Technical Excellence Chapter 9
X in [Integration, Delivery, Deployment]
YeahMobi CD Practice based on Container -- openstack meetup
Course: Module: Lesson # & Name Instructional Material 1 of 32 Lesson Delivery Mode: Lesson Duration: Document Name: 1. Professional Diploma in ERP Systems.
CSE 303 Concepts and Tools for Software Development
DAT381 Team Development with SQL Server 2005
Your code is not just…your code
Continuous Integration
Mark Quirk Head of Technology Developer & Platform Group
Jamie Cool Program Manager Microsoft
Your code is not just…your code
Presentation transcript:

Creating a Maintainable Software Ecosystem Jeremy D. Miller November 27th, 2007

Sharpen the Saw! “Give me six hours to chop down a tree and I will spend the first four sharpening the axe. ” - Abraham Lincoln

The 10X Development Ecosystem It’s the code, yes, but it’s also the ecosystem What’s the Ecosystem?  Source Control  Build scripts  Continuous Integration infrastructure  Test automation  Database scripts and migrations

Themes Eliminating Friction Go fast, go safe Knowing where things are Ratcheting up the Feedback Loops Favoring automation over formal processes

Story Wall – Start of the Iteration Not StartedIn ProgressTesting Customer Review Done, Done, Done Story #1 Story #2 Story #3 Story #4 Story #5 Story #6 Story #7 Story #8 Story #9 Story #10

Story Wall – Iteration Halfway Point Not StartedIn ProgressTesting Customer Review Done, Done, Done Story #1 Story #2 Story #3 Story #4 Story #5 Story #6 Story #7 Story #8 Story #9 Story #10

Dude, it worked on my box! You can’t work if you can’t run the system The build script should lay down the development environment Build script == environment documentation 3 rd Party tools and open source libraries in source control Propagate new environmental dependencies ASAP! Retrofit Legacy Code with automated build scripts README.txt

I grabbed the latest code, but it’s broken! Lean on Continuous Integration  Compile  Lay down the environment  Unit tests Clean Build Server It’s all about feedback

The Check-In Dance 1.Don’t check into or out of a broken build 2.Update your code from source control 3.Merge any conflicts 4.Run the build locally 5.If the build is successful, commit your changes 6.Monitor the build server for success or failure 7.If the build breaks, fix it! 8.Never leave a build broken overnight

Are you sure you have the right code? Single Source Point Tag successful builds Embed the build number in compiled assemblies NEVER build and deploy from a developer environment Repeatable, traceable builds Promote code by build number Communicate issues, fixes, and feature completion by build number Demo: Labeling builds with CruiseControl.Net

Right code, wrong database! Treat all database code as just more code DBA’s play by the same rules One database per developer and environment  Demo: “database.build” If it changes together, it builds together Propagating database changes must be reliable, easy, and friction free  Enable continuous design and incremental delivery  Synchronize development environments  Demo: Migrations

It’s a five minute fix… …but it’ll take a day to migrate the code You will make mistakes Cycle faster between development and testing Automate anything that moves Create deployment packages on successful Continuous Integration builds Use a no touch deployment to testing

Did it get installed correctly in test? Environment tests Demo: Self-testing configuration with StructureMap Synthetic transaction

What would it take for last minute changes to be safe? Comprehensive automated test coverage Feedback cycle Fast build, slow build  Demo: Cascading build Prerequisites for Test Automation  If the tests haven’t been run, how do you know your code still works?  Getting the latest code to the test environment  Watch for file collisions  Building a set of test data

My goodness, we’ve got a lot of code! Multiple source control repositories and builds Propagating dependent libraries  Manual or Automatic? Shared resources

Are you pointed at the right server? Demo: Configuration profiles with StructureMap

Sharpening the Saw “I don’t have time to sharpen my saw, I’m too busy chopping wood!” Balancing technical improvements versus new business features Make it easy to do the right thing No artificial process restrictions “We’ve just got to get the project out the door”

Last Thoughts Project automation is a team effort  Watch the Low Truck Number effect Use project automation as an enabler Automate anything repetitive Automate away friction Look to automate bookkeeping activities Feedback is everything  Frequent check-ins  Keep the build lean and mean  Run the automated tests frequently

Questions The Shade Tree Developer –