Session

Workshop: Gradually Improving Software Design (a.k.a. Applying the Emergent OOD)

Success is the greatest curse in a software project. The success that becomes unsustainable so quickly, that everything beyond the initial period of happiness becomes an endless maintenance and extension nightmare.

The primary motivation for this workshop is to help teams take control back and start making further progress in their (primarily) object-oriented designs, software projects that are often a couple of years old, and which are currently very hard to maintain and develop any further.

In this workshop, we are guiding developers through a series of experiments on pre-existing object-oriented designs modeling critical parts of business applications. Each of the designs is either exhibiting issues that are common to many object-oriented applications or is on the verge of becoming yet another object-oriented design ridden by problems: Lack of flexibility in the face of new requirements, inability to add more features and extend existing ones, desperate entanglement of all elements that cause further development to grind to a halt.

In each of the experiments, attendees will improve the design by removing one obstacle at a time. By the end, all those experimental designs will be turned into clean, extensible, and maintainable pieces of domain-related code.

Most of the examples that will be developed are ASP.NET Core applications in .NET 7 and C# 11. The particular choice of UI technologies is not relevant to the ability to participate in this workshop - all the code that is the subject of the workshop is in the domain-related classes. There is no preferred IDE - Visual Studio Code or Visual Studio 2022 (any edition) are fine, but any other that supports .NET 7 and C# 11 will suffice as well.

Table of contents:
Modeling emergent objects 50m
Modeling branching and looping 1h 30m
Implementing the map-reduce principle 2h 20m
Designing strategies 2h
Avoiding null references 2h 20m
Pattern matching (C# 7-11) and null operators 1h 20m
Modeling optional objects 2h 20m
Modeling Value Objects 2h 20m

Intermediate to advanced level.
I have been holding this workshop (both in the form of a 1-day workshop, 2-day workshop, or 1-day training) since 2014 to several dozens of teams, and also at some conferences. The content has sustained numerous evolutions and several complete rewrites.
The entire set of lectures is now in the form of an ASP.NET Core business application using EF Core, though UI & database technologies are not relevant for the content - even backend-only developers with little knowledge of EF core or UI had no problems participating.
The latest edition of this workshop was included in the SDD London 2023 conference.

Prerequisites:
- Proficiency in C#
- Proficiency in developing ASP.NET Core applications with EF Core is a plus, but not strictly required
- All attendees need their own laptop

Below are the tools and technologies required to develop the application. Each participant should have these installed on their laptop prior to attending the workshop:
- .NET SDK 7.0 or later - downloaded from https://dotnet.microsoft.com/enus/download/dotnet,
- An appropriate IDE, such as Visual Studio Code or Visual Studio (any edition,
including Community),
⎯ SQL Server support - all demos include a connection string to a LocalDB
database; support for LocalDB is installed as part of SQL Server Express (https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/sql-server-express-localdb); any
other SQL Server edition would suffice but with the additional requirement
that the attendee would need to manage the connection string,
- SQL Server Management Studio (https://learn.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms) or any other tool to easily browse and
query the database, including tools and extensions built into the IDE
- Git client, any

Zoran Horvat

Principal consultant at Coding Helmet s.p.r.l.

Belgrade, Serbia

View Speaker Profile

Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.

Jump to top