27
# Daniel Anolik Solutions Architect, Jeppesen Driving Innovation with Component-based Development

Driving Innovation with Component-based Development at Boeing

Embed Size (px)

DESCRIPTION

Learn how Boeing has improved collaboration and innovation by enabling easy sharing of components across many software projects.

Citation preview

Page 1: Driving Innovation with Component-based Development at Boeing

#

Daniel AnolikSolutions Architect, Jeppesen

Driving Innovation with Component-based Development

Page 2: Driving Innovation with Component-based Development at Boeing

#

Daniel AnolikSolutions Architect, Airborne Navigation SystemsJeppesen (A Boeing Company)• 8 years with Jeppesen

• 15 years of direct SCM experience, 8 with Perforce

• Software developer, solutions architect, Scrum master, bluegrass mandolin picker, wilderness survival enthusiast…

Page 3: Driving Innovation with Component-based Development at Boeing

#

Daniel AnolikSolutions Architect, Airborne Navigation SystemsJeppesen (A Boeing Company)• 8 years with Jeppesen

• 15 years of direct SCM experience, 8 with Perforce

• Software developer, solutions architect, Scrum master, bluegrass mandolin picker, wilderness survival enthusiast,

and lucky father of this baby girl:

Page 4: Driving Innovation with Component-based Development at Boeing

#

Jeppesen at a Glance• 80-year strong company founded in aviation safety• Wide array of software supporting:

– airborne navigation systems– flight planning services– pilot training – airline operations management

Page 5: Driving Innovation with Component-based Development at Boeing

#

• Team sizes from 2-50 developers• Full range of deployment targets

– Web– Windows/Mac/Linux and other embedded devices – iOS/Android/Windows mobile devices

• Lots of overlapping technology across products

Software Development at Jeppesen

Page 6: Driving Innovation with Component-based Development at Boeing

#

• Leverage the best features and innovative technologies across our product lines

• Leverage the strengths of our different teams• Pursue component based development • Minimize development overlap across teams, and

re-use the best implementation of each technology

Enterprise Architecture Approach

Page 7: Driving Innovation with Component-based Development at Boeing

#

• Optimize for collaboration– Make it easy to share components– Make it easy to use shared components

• Empower your developers– Establish SCM framework, train the teams, then stay out

of the way of any day-to-day activities

• The ‘right’ way to work should also be the easiest• Version everything!

SCM Approach

Page 8: Driving Innovation with Component-based Development at Boeing

#

• over 500 developers in Perforce• over 200 shared packages• over 1000 releases• over 100 projects• over 11 international sitesand growing…

Where Are We Now?

Page 9: Driving Innovation with Component-based Development at Boeing

#

So how does it work?

Page 10: Driving Innovation with Component-based Development at Boeing

#

• A component is an artifact that we clearly identify in our software systems. It should have an interface and encapsulates internal details.

• A package is the smallest unit of software that we will independently version and release. One or more software components may be bundled together into a single package.

p4 sync //jeppesen-terminology/…

Page 11: Driving Innovation with Component-based Development at Boeing

#

//da/applications

/category1, /category2, etc..

/packageA, /packageB, etc…

/libraries/category3, /category4, etc..

/packageC, /packageD, etc…

/resources

/more packages…

Our “Package Library” Depot

Page 12: Driving Innovation with Component-based Development at Boeing

#

Branching Library Packages

v2

v3

v4

2.0 2.1 2.2

3.0 3.1 3.2

4.0 4.1 4.2 4.3

“streams” are codelines that we create at

the beginning of a development cycle,

targeted towards a release

Note: we were using the term ‘stream’ before the Perforce stream existed

Merge your changelists

“downstream”

Page 13: Driving Innovation with Component-based Development at Boeing

#

//da/libraries/category3/packageX/streams

/v01

/v02

/releases

/1.0

/1.1

/1.2

/2.0

A Closer Look at the Depot

Each package contains their own ‘streams’ and ‘releases’

Page 14: Driving Innovation with Component-based Development at Boeing

#

//da/application/category2/packageA/streams/v03/… //**WORKSPACE**/da/packageA/...

//da/libraries/category1/packageB/releases/v04.2/... //**WORKSPACE**/da/packageB/…//da/libraries/category3/packageC/releases/v01.0/… //**WORKSPACE**/da/packageC/…

Mapping Packages into View Specs

Page 15: Driving Innovation with Component-based Development at Boeing

#

• Right.

Oy!That looks very cumbersome!

Page 16: Driving Innovation with Component-based Development at Boeing

#

• Engineers interact with projects, not depot paths• Each Project Defines:

– which packages will be used – the individual package versions– package permissions (rw/ro)

• View specs are handled auto-magically

Enter: The Project as an SCM Unit

Page 17: Driving Innovation with Component-based Development at Boeing

#

• Project specifications:– are simple text files

– live within the application packages they define

– just another versioned object in Perforce

– define the project name, status and current view spec

Version Your Project Definitions!

Page 18: Driving Innovation with Component-based Development at Boeing

#

• Front end utility for creating, updating and removing workspaces

• Abstraction layer for working with projects

• Manages view specs

• Automates naming conventions and other policies

Introducing Halyard

Page 19: Driving Innovation with Component-based Development at Boeing

#

• Client is written in Ruby. – Currently running on Linux, OSX, HPUX and Windows

– Uses p4ruby API for all client/server interaction

• No server processes needed outside of P4D

• Triggers used to update global project indexes automatically

Inside Halyard

Page 20: Driving Innovation with Component-based Development at Boeing

#

• P4V ‘Custom Tools’ extend the GUI

• Right-click context menus integrate depot paths and changelists

Now for some examples….

P4V Integration

Page 21: Driving Innovation with Component-based Development at Boeing

#

Create a new workspace by

browsing to the depot path

Page 22: Driving Innovation with Component-based Development at Boeing

#

“Rebase” will update theview spec then

sync files

Page 23: Driving Innovation with Component-based Development at Boeing

#

Rebase your workspace to any

changelist

Page 24: Driving Innovation with Component-based Development at Boeing

#

• Engineers like to be productive– Make your SCM plan “user friendly”

– Provide a solution that makes your developers more productive and they are more likely to adopt it

• Component sharing is part political, part technical – Focus on clearing the technical obstacles

Lessons Learned (or Verified)

Page 25: Driving Innovation with Component-based Development at Boeing

#

• Apply open source models internally – Share more code within your company

– Welcome contributions to your code from other teams

• Identify ‘stewards’ of shared packages– Help ensure that contributions still meet the design

goals of the shared package

The “Inter Sourcing” Mindset

Page 26: Driving Innovation with Component-based Development at Boeing

#

Any Questions?

#

Page 27: Driving Innovation with Component-based Development at Boeing

##

Thank you!And have a safe flight home.

Daniel [email protected]