The opinions expressed in this presentation and on the following slides are solely those of the presenter and not necessarily those of TNG Technology Consulting.
"Individuals and interactions over processes and tools..."
- Agile Manifesto
“The word 'agile' has been subverted to the point where it is effectively meaningless, and what passes for an agile community seems to be largely an arena for consultants and vendors to hawk services and products.”
- Dave Thomas
Bertrand Meyer
Individuals and interactions
over processes and tools
Working software
over comprehensive documentation
Customer collaboration
over contract negotiation
Responding to change
over following a plan
That is, while there is value in the items on
the right, we value the items on the left more.
We're agile because ...
"Software architecture refers to the high level structures of a software system, the discipline of creating such structures, and the documentation of these structures."
- Wikipedia
"[Architecture] is the stuff that's hard to change"
"Architecture is not all about diagrams; it's about promoting collaboration and communication of the critical parts of the system."
- Martin Fowler
"Factor your system so that artifacts that change at similar rates are together."
- Foote & Yoder
"Beware of people who love to think about abstractions more than coding software." - Steve Green
"Beware of the distributed monolith connected via a database" @lornajane #CraftConf meetup pic.twitter.com/SvsxykXiQY
— Daniel Bryant (@danielbryantuk) April 26, 2017
"An architect's value is inversely proportional to the number of decisions she/he makes."
- Martin Fowler
λ wget http://phar.dephpend.com/dephpend.phar -O ~/bin/dephpend
λ dephpend --help
_ _____ _ _ _____ _
| | | __ \| | | | __ \ | |
__| | ___| |__) | |__| | |__) |__ _ __ __| |
/ _` |/ _ \ ___/| __ | ___/ _ \ _ \ / _` |
| (_| | __/ | | | | | | | __/ | | | (_| |
\__,_|\___|_| |_| |_|_| \___|_| |_|\__,_| version 0.4
Usage: ...
λ dephpend text ~/workspace/dephpend/src
Mihaeu\PhpDependencies\Util\AbstractMap --> Mihaeu\PhpDependencies\Util\Collection
Mihaeu\PhpDependencies\Util\DI --> Mihaeu\PhpDependencies\Analyser\Analyser
...
<?php
$cmd = shell_exec('dephpend text src --no-classes');
$constraints = [
'Model.* --> .*View',
'View.* --> .*Model',
];
$regex = '/('.implode(')|(', $constraints).')/x';
if (preg_match($regex, $cmd)) {
echo 'Architecture violation'.PHP_EOL;
exit(1);
}
@ArchTest
public static final ArchRule layers_are_respected = layeredArchitecture()
.layer("Root").definedBy("com.tngtech.archunit")
.layer("Base").definedBy("com.tngtech.archunit.base..")
.layer("Core").definedBy("com.tngtech.archunit.core..")
.layer("Lang").definedBy("com.tngtech.archunit.lang..")
.layer("Library").definedBy("com.tngtech.archunit.library..")
.layer("JUnit").definedBy("com.tngtech.archunit.junit..")
.whereLayer("JUnit").mayNotBeAccessedByAnyLayer()
.whereLayer("Library").mayOnlyBeAccessedByLayers("JUnit")
.whereLayer("Lang").mayOnlyBeAccessedByLayers("Library", "JUnit")
.whereLayer("Core").mayOnlyBeAccessedByLayers("Lang", "Library", "JUnit")
.whereLayer("Base").mayOnlyBeAccessedByLayers("Root", "Core", "Lang", "Library", "JUnit");
@michaelhaeu
https://github.com/mihaeu
http://www.denofgeek.us/sites/denofgeekus/files/6/25/frankenstein-1931.jpg https://www.slideshare.net/gahlawatanju21/agile-reluctancy-in-india-anju-gahlawat http://www.bradvg.com/blog/the-problem-with-good-intentions/ KurtKamka https://www.getdpi.com/forum/leica/21559-s-show-us-your-s2-shots-22.html https://tisquirrel.me/2016/01/03/say-agile-one-more-time/ http://www.br.de/themen/wissen/inhalt/umwelt/wueste-wuestentiere104.html https://blogs.msdn.microsoft.com/eugeniop/2010/05/24/windows-azure-architecture-guide-part-1-release-candidate-documents-updated/ http://eduart4kids.com/painting-for-kids/ https://image.slidesharecdn.com/quangnguyencontinuousintegrationxpday2015danangquangnguyen-150520014341-lva1-app6892/95/quang-nguyen-continuous-integration-xp-day-2015-vietnam-danang-3-638.jpg?cb=1432086426 https://blogs.msdn.microsoft.com/willy-peter_schaub/2010/11/22/are-the-rangers-courageous-or-crazy-to-brainstorm-and-adapt-methodologies-from-clever-people-as-part-of-ruck/ https://dotnetcodr.files.wordpress.com/2015/07/ddd-full-diagram1.png https://images-na.ssl-images-amazon.com/images/I/81vKl1%2BuEVL._SL1500_.jpg https://dotnetcodr.files.wordpress.com/2015/07/ddd-full-diagram1.pnghttp://canarydwarf.co.uk/b/wp-content/uploads/2014/05/CD_questions_68942389.jpg https://www.batimes.com/images/wick_mar4_2.jpg https://guidedpathedge.com/wp-content/uploads/2016/01/keep-calm-and-prioritize.png