Challenges, Pains and Points of Software...
Transcript of Challenges, Pains and Points of Software...
![Page 1: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/1.jpg)
#dotnext
Challenges, Pains and Points of Software Development Today
The world is being rebuilt in code and talent is lacking.
Dino Esposito
![Page 2: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/2.jpg)
Software today dotNEXT Moscow 2014
@despos | software2cents.wordpress.com
The world is being rebuilt in code
![Page 3: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/3.jpg)
@despos | software2cents.wordpress.com
Software today dotNEXT Moscow 2014 3
Meaning that …
§ Every company is a tech company § Every company needs strong talents § Talent is lacking § Every company fights to acqui-hire “fish” § No companies plan to teach “how to fish” § Huge barrier between theory and practice § Just shortage of senior people
What it means to be a software writer?
![Page 4: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/4.jpg)
@despos | software2cents.wordpress.com
Software today dotNEXT Moscow 2014 4
Challenges
§ Domain analysis • Modeling vs. mirroring the business domain • DDD and tools for domain analysis
§ Implementation • Focus on tasks and simplicity • UX-first methodology
§ Technology • Mere infrastructure • Choose and handle with care
![Page 5: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/5.jpg)
Software today dotNEXT Moscow 2014
@despos | software2cents.wordpress.com
Domain Analysis
![Page 6: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/6.jpg)
@despos | software2cents.wordpress.com
Software today dotNEXT Moscow 2014 6
Modeling
§ The God Anti-pattern Developers to design an ideal model of the domain rather than just mirroring what they see
Virtual reality Potentially
serving less than optimal experience
Potentially missing
nonfunctional requirements
![Page 7: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/7.jpg)
@despos | software2cents.wordpress.com
Software today dotNEXT Moscow 2014 7
If Surgeons Were Software Architects
Thankfully, surgeons don’t assume that your gallbladder has to be a standard one.
![Page 8: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/8.jpg)
@despos | software2cents.wordpress.com
Software today dotNEXT Moscow 2014 8
Oh yes, good modeling…
§ YAGNI, KISS, DRY Pure tautology at architecture level.
§ Tell-don’t-Ask Much better help to stay focused on what’s really required in the domain.
§ Think-ahead? Comes naturally once you’ve managed to understand the mechanics of the business domain.
![Page 9: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/9.jpg)
@despos | software2cents.wordpress.com
Software today dotNEXT Moscow 2014 9
Mirroring
§ Discovering the top-level architecture Top-level architecture mirrors the real world. The actual implementation models the real-world with any due and inevitable approximation that software may face.
The world is being rebuilt in code.
Software must implement and streamline real business processes. Software not to redesign business processes. That’s a different
job.
![Page 10: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/10.jpg)
@despos | software2cents.wordpress.com
Software today dotNEXT Moscow 2014 10
Behavior
§ Mirroring is just better analysis of the domain Domain made of entities, actions on entities, processes and relationships. All together domain expresses behavior finalized to implementing processes.
§ Domain is described in business lingo That must fully reflected in software
Want to see an example?
How would you describe a sport game?
![Page 11: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/11.jpg)
Software today dotNEXT Moscow 2014
@despos | software2cents.wordpress.com
Start game
Finish game
Start Period
End Period
Any goal?
End of time?
End of game?
Score
No
Yes
No
Yes
No
Yes
![Page 12: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/12.jpg)
Software today dotNEXT Moscow 2014
@despos | software2cents.wordpress.com
public class Match {
public string Team1 { get; set; } public string Team2 { get; set; } public bool IsBallInPlay { get; set; } public int TotalGoals1 { get; set; } public int TotalGoals2 { get; set; } public int MatchState { get; set; } public int CurrentPeriod { get; set; } public TimeSpan Matchtime { get; set; }
}
![Page 13: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/13.jpg)
Software today dotNEXT Moscow 2014
@despos | software2cents.wordpress.com
[TestMethod] public void test_if_score_is_correct() { var match = new Match("12345", "Home", "Visitors"); match.Start() .StartPeriod() .Goal(TeamId.Home) .Goal(TeamId.Home) .EndPeriod() .StartPeriod() .Goal(TeamId.Visitors) .EndPeriod() .StartPeriod() .EndPeriod() .StartPeriod() .Goal(TeamId.Home) .EndPeriod() .Finish(); Assert.AreEqual(new Score(3, 1), match.CurrentScore); }
![Page 14: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/14.jpg)
@despos | software2cents.wordpress.com
Software today dotNEXT Moscow 2014 14
Tackling complexity in the heart of software
§ Innovative guidelines § Design software driven by the domain § Perceived as all-or-nothing approach § Set of prescriptions
DDD – design driven by the domain
An approach to software design and development introduced 10+ years ago with the intent of …
![Page 15: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/15.jpg)
@despos | software2cents.wordpress.com
Software today dotNEXT Moscow 2014 15
just easier to do wrong.
Common Summary of DDD
Build an object model for the business domain • Call it a "domain model"
Consume the model in a layered architecture • Four layers • Business logic split and renamed • Application layer and Domain layer
Not really hard to do right;
![Page 16: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/16.jpg)
Software today dotNEXT Moscow 2014
@despos | software2cents.wordpress.com
DDD has two distinct parts. You always need one and can sometimes happily ignore the other.
Analytical Strategic
Valuable to everybody and every project
Just one originally recommended “supporting architecture”
![Page 17: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/17.jpg)
@despos | software2cents.wordpress.com
Software today dotNEXT Moscow 2014 17
Conducting Analysis Using DDD
Ubiquitous language
Vocabulary shared by all involved
parties
Used in all forms of spoken/written communication
Bounded contexts
Areas of the domain treated independently
Shaping a bounded context
is challenging
![Page 18: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/18.jpg)
@despos | software2cents.wordpress.com
Software today dotNEXT Moscow 2014 18
Context Mapping
§ Context map is the diagram that provides a comprehensive view of the system being designed
Bounded contexts often relate to each other
Weather Forecasts (external)
Core Domain
Backoffice Club site
Anti-corruption layer
u
d
Partner
u
d Customer/Supplier
d
u
![Page 19: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/19.jpg)
@despos | software2cents.wordpress.com
Software today dotNEXT Moscow 2014 19
Supporting Architectures
§ Multi-layered (-tiered) § Client/server (2-layer/tier)
§ Domain Model • Object-oriented • Functional
§ CQRS • Plain and simple • Event bus (+Event Sourcing)
![Page 20: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/20.jpg)
Software today dotNEXT Moscow 2014
@despos | software2cents.wordpress.com
Implementation
![Page 21: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/21.jpg)
Software today dotNEXT Moscow 2014
@despos | software2cents.wordpress.com
www.dilbert.com
![Page 22: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/22.jpg)
Software today dotNEXT Moscow 2014
@despos | software2cents.wordpress.com
www.dilbert.com www.dilbert.com
![Page 23: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/23.jpg)
Software today dotNEXT Moscow 2014
@despos | software2cents.wordpress.com 23
![Page 24: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/24.jpg)
@despos | software2cents.wordpress.com
Software today dotNEXT Moscow 2014 24
UX-First
Two distinct architect roles acting together
UX Architect
Interviews to collect usability requirements data and build the ideal UX for the presentation layer
Software Architect
Interviews to collect requirements and business information to build the domain layer
![Page 25: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/25.jpg)
@despos | software2cents.wordpress.com
Software today dotNEXT Moscow 2014 25
Responsibilities of a UX Expert
§ UI is not UX • Information architecture • Interaction and visual design
§ Usability reviews • Observing users live in action (even filming users) • Listening to their feedback
§ Catch design/process bottlenecks soon • Focus is data flow, NOT graphics
![Page 26: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/26.jpg)
@despos | software2cents.wordpress.com
Software today dotNEXT Moscow 2014 26
UX-first Design
1) Determine what comes in and out and create view model classes
2) Make application layer endpoints receive/return such DTO classes
3) Make application layer orchestrate tasks on layers down the stack
For each screen have a basic flowchart
![Page 27: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/27.jpg)
Software today dotNEXT Moscow 2014
@despos | software2cents.wordpress.com
Presentation
Black box
![Page 28: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/28.jpg)
@despos | software2cents.wordpress.com
Software today dotNEXT Moscow 2014 28
Attributes of software
Maintainability • Is about a wonderful model of tightly chained objects? • Is about easy-to-replace components?
![Page 29: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/29.jpg)
Software today dotNEXT Moscow 2014
@despos | software2cents.wordpress.com
Technology
![Page 30: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/30.jpg)
Software today dotNEXT Moscow 2014
@despos | software2cents.wordpress.com
Gone (forever) are the days in which an upgrade to the next version solved the
problem.
Technology today is infrastructure – Required and critical – But serving a superior purpose
![Page 31: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/31.jpg)
@despos | software2cents.wordpress.com
Software today dotNEXT Moscow 2014 31
Serving a superior purpose
Technology is like a medicine • Can’t be wrong • But must serve a purpose • Doc is required • You’re the doc!
![Page 32: Challenges, Pains and Points of Software …public.jugru.org/dotnext/2014/moscow/esposito-keynote.pdf#dotnext Challenges, Pains and Points of Software Development Today The world is](https://reader034.fdocuments.us/reader034/viewer/2022042303/5ece5713a59d69109e45df16/html5/thumbnails/32.jpg)
#dotnext
Follow @despos
Like facebook.com/naa4e