6. danielfisher.com Change must be cheap
https://www.flickr.com/photos/smull/432813187
7. danielfisher.com Feedback must be fast
https://www.flickr.com/photos/thatguyfromcchs08/2300190277
8. danielfisher.com Component-based software engineering is a
branch of software engineering that emphasizes the separation of
concerns in respect of the wide-ranging functionality available
throughout a given software system.
http://en.wikipedia.org/wiki/Component-based_software_engineering
9. danielfisher.com It is a reuse-based approach to defining,
implementing and composing loosely coupled independent components
into systems. This practice aims to bring about an equally
wide-ranging degree of benefits in both the short-term and the
long-termfor the software itself and for organizations that sponsor
such software.
http://en.wikipedia.org/wiki/Component-based_software_engineering
10. danielfisher.com Sorry this is *NO hot shit*! The idea
first became prominent with Douglas McIlroy at the NATO conference
on software engineering in Garmisch, Germany, 1968
11. danielfisher.com
http://enterprisecraftsmanship.com/2015/01/10/how-to-build-microservices-wrong
What about micro services?
12. danielfisher.com Don't reinvent the wheel!
13. danielfisher.com Nuf bla bla! So whats a component?
25. danielfisher.com Dependencies Core Directory Data DataModel
Diagnostics ComponentModel DataModel.Data
26. danielfisher.com
https://www.flickr.com/photos/archivesnz/8759939806 Source Control
Repositories
27. danielfisher.com Branch Strategy Branch for stability
Commit for stability
28. danielfisher.com Usual Repository Class Library Test Sample
Class Library Class LibrarySample Test Test Class Library Test
Sample Class Library Class LibraryExecutableSample Class
Library
29. danielfisher.com Component Repository Class Library Test
Sample
30. danielfisher.com Pros You just work with what you need
Separation of concerns from the beginning
31. danielfisher.com Cons There will be lots of repositories
There will be multiple histories/logs
32. danielfisher.com Consequences The need for a flexible SCM
Aggregated feeds of history/logs
33. danielfisher.com Flexible version control GIT
34. danielfisher.com Tests
35. danielfisher.com Pros You only see and maintain relevant
tests Feedback is delivered faster
36. danielfisher.com Cons Any?
37. danielfisher.com Consequences You need to change the way
you did it before?
38. danielfisher.com Monolith solution or too many tests?
NCrunch.NET http://www.ncrunch.net/ Wallaby.JS
http://wallabyjs.com/
39. danielfisher.com Daniel Fisher Builds
40. danielfisher.com Builds A project consist of multiple
builds Per branch? Check-In Nightly Feature Team Release It really
depends on your business strategy and team organization!
41. danielfisher.com Pros Build can be parallelized Feedback is
delivered faster You see where it breaks
42. danielfisher.com Cons There will be lots of builds There
will be even more build results
43. danielfisher.com Consequences Build Process that supports
build trees https://en.wikipedia.org/wiki/Topological_sorting
Aggregated overview of build results