Upload
skills-matter
View
105
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Following on from the Open Source Jumpstart in April we are running the first event in a series designed to introduce the most common Open Source tools encountered as a professional developer at work or when contributing to OSS projects. The series will show how the concepts taught at University in computing science and software engineering modules can be applied effectively with Open Source tools and help establish a highly agile approach to the whole software development cycle.
Citation preview
©LeanAgileMachineCreative Commons License
Open Source Jumpstart:Open Source Jumpstart:
Tooling upTooling up
©LeanAgileMachineCreative Commons License
Contents
● Goal of Open Source Jumpstart series● Open source software (OSS) overview ● Common development environment● OSS tools overview● How OSS tools support agile practices● Eclipse ”live” demo
©LeanAgileMachineCreative Commons License
Goals of OS Jumpstart
● Bridge the gap between academia and industry● Introduce open source software (OSS) concept● Highlight significance of OSS ● Show how OSS tools support the agile process● Introduce the commonly used OSS tools in
industry for development and testing
©LeanAgileMachineCreative Commons License
The Modern Developer
● The role of a developer has changed radically● They need to be extremely flexible● They work on increasingly complex systems● Requirements change at the drop of a hat
©LeanAgileMachineCreative Commons License
Gap between study and industry
● University can only teach you so much● Good placements help but are not easy to find● Build on what you know
● Learn what happens in industry● Build your skill set beyond your peers● Experience practical application of skills on projects● Make you CV more interesting to employers ● Increase your earning potential
©LeanAgileMachineCreative Commons License
Do you use OSS ?
Raise your hand if you already use OSS ?
©LeanAgileMachineCreative Commons License
Some popular OSS examples
©LeanAgileMachineCreative Commons License
What is Open Source
● A licence model to distribute software● http://en.wikipedia.org/wiki/Comparison_of_free_software_licenses
● Openness and freedom within software● A open, collaborative and agile approach to
development● A move away from low value commercial
and/or restrictive software
©LeanAgileMachineCreative Commons License
Why use Open Source ??
● Its freely available – download it and try it out● You can see how it works under the hood● You can improve / extend how it works● Communities to help you get things done● OSS tools very common in industry
● Used extensively in agile companies
● Latest technology often OSS● Scala, Clojure, BDD tools, NoSQL, etc
©LeanAgileMachineCreative Commons License
Is it really free?● Copyright still applies● Licence included in source code distribution● Variety of licences
● GPL / LGPL – require giving back● Apache License – commercial friendly● Creative Commons – other creative works
● Community help given freely● Commercial support available for big projects
©LeanAgileMachineCreative Commons License
My company will provide...
● Companies tend not to give you everything● Fill in the gaps with OSS
● Cost savings on commondity things mean more spending on high value stuff / training
● Many commercial products use OSS● IBM, Microsoft, Oracle, Google,
©LeanAgileMachineCreative Commons License
So what's out there in OSS land?
● Operating Systems● Android, Ubuntu, Debian, Fedora, SuSe, etc
● Productivity suites● Open Office, Inkscape, Gimp, OpenShot, Audacity,
blender, etc...
● Development languages● Java, Scala, Clojure, C, C++, Python, Perl, PhP, etc
● Development and testing tools...
©LeanAgileMachineCreative Commons License
OSS development and testing tools
©LeanAgileMachineCreative Commons License
A Basic Development Environment
©LeanAgileMachineCreative Commons License
End to end Development & Test Environment
● Development● IDE / Editor● Unit testing● Acceptance testing● Issue / bug tracking● Collaborative / Cloud
workspaces
● Build Management● Version control● Build managment● Continuous Integration● Deployment
● Application testing● Functional● Load / Performance
©LeanAgileMachineCreative Commons License
Version Control
● Version all changes to the code ● Snapshots of known code state● Identify release code bases● Gives audit trail of changes● Experiment with code in branches● Rollback to a known state in code
● Collective ownership of code● Access open source project code
CVS
Subversion
Git
Mercurial
©LeanAgileMachineCreative Commons License
Build Tools● Build Automation
● Compile, test and deploy code with simple commands
● Consistent build tasks
● Manage dependant activties● eg. run tests when compiling
● Library dependancy management
● Call external tools / apps
Ant.apache.org
ant.apache.org/ivy
Maven.apache.org
Comparison of tools:http://ant.apache.org/ivy/m2comparison.html
©LeanAgileMachineCreative Commons License
Integrated Development Environments
● Manage large / multiple projects● Debugger ● Autocompletion (code api completion) ● Refactoring
● Build management● Ant / Maven – compile, test, deploy
● Integration● Application servers, databases, unit testing,
Scm, bug tracker, CI server,
.org
.org
IntelliJ IDEA jetbrains.org
©LeanAgileMachineCreative Commons License
Unit Testing
● Unit testing foremost a design process● Identify responsibilities and behavior● Define success at class level
● Test framework for your Java classes● Tests and test suites
● Supports test driven development (TDD)● Write a failing test, write code to make it pass● Run tests when compiling● Contiually check code changes ● Reduce bugs entering the code base
©LeanAgileMachineCreative Commons License
Acceptance Testing
● Extends Test Driven Development● Greater user focus● Looser coupled testing
● Using the language of the business● Thinking about the user interaction● Knowing when you are done!● Behaviour driven development
● a Lean thinking approach
Fitnesse.org
Cuke4Duke
EasyB
©LeanAgileMachineCreative Commons License
BDD Feature Example
©LeanAgileMachineCreative Commons License
Continuous Integration● Regularly runs unit / acceptance tests, compile
code, integration scripts, application tests, etc● Triggered at intervals or on source code commits● Builds all or part of code base
● Helps with regular releases / agile practices● Know if your build will work for your showcase
● Early and continual feedback system● Identifys chages that breaks the build● Often used with large display / Lava lamp
● Code metrics and project health reports
Hudsonci.org
Continuum
©LeanAgileMachineCreative Commons License
Issue / Bug Tracking
● Manage workload backlog● Features, stories, etc
● Manage bugs● Linked to scm code checkin
● Show progress to nontechnical stakeholders
● Extend with Scrum or Kanban board approach
Bugzilla
Jira
©LeanAgileMachineCreative Commons License
Collaborative workspace
● Capture important knowledge and communication● Limit need for overbearing docs● Discussion boards● Wiki pages● Coding standard documents
● Discuss issues● Useful for disparate teams
Mediawiki
Liferay
©LeanAgileMachineCreative Commons License
Summary
©LeanAgileMachineCreative Commons License
Summary of OSS tools
● End to end tool support● Tools incorporated into
modern ide's● Tools can be used to give
continuous feedback on your progress
● Help you become more agile
● Helps your carrer prospects
● Work on OSS projects
● Access to new technology and techniques
©LeanAgileMachineCreative Commons License
Eclipse Live Demo
Version control demo using Subversion, Eclipse
and the Subclipse plugin
byBen Evans
©LeanAgileMachineCreative Commons License
Jumpstart Summary
● OSS tools help create an agile environment
● OSS tools are widely used in industry
● Knowing these kind of tools help you get interesting jobs
● Lots more to learn about each tool
● Follow up sessions discuss each tool area in detail
● Lots of tutorials and books to help
©LeanAgileMachineCreative Commons License
LJC Unconference 2● Saturday 26th June 2010 – 9.30am ● Great opportunity to hear from people in industry● Find out more about OSS tools, new things in Java,
Functional programming, agile practices, acceptance testing and lots lots more...
● Discuss your ideas and problems● Practice your presentation skills by giving a talk
● Gain confidence for presenting to a team / manager
● Register at London Java Community Meetup site● Book online at SkillsMatter.com
©LeanAgileMachineCreative Commons License
We want your feedback
©LeanAgileMachineCreative Commons License
Open Source references
● Wikipedia: Open source software● http://en.wikipedia.org/wiki/Open_source_software
● The Cathederal and the Bazaar● http://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar
● Free Software Foundation
©LeanAgileMachineCreative Commons License
More OSS References
● News● Slashdot.org● TheServerSide.com
● Software sources ● Freshmeat.net● Sourceforge.net● osalt.com – oss alternatives to commercial software
● jr0cket.com – JVM & OSS solutions
©LeanAgileMachineCreative Commons License
The Crown Tavern, 43 Clerkenwell Green
Islington – Old SkillsMatter Pub
Meet with Companies looking for interns
Talk to experienced developers & testers
Ask questions about what you learnt tonight