15 Apr 2017 | Discriminated Unions in C#
C# doesn’t have the support for discriminated unions yet. In this post I demonstrate one way of implementing a similar pattern in C# code. I show the alternative designs and explain where they fall short to provide type safety. Learn more.
03 May 2016 | Data Flow Analysis
Data flow analysis is an old, but valuable technique that helps to understand and specify a process by performing functional decomposition. It’s especially useful when the overall function of the system is well-defined, but there’s still not enough information to drive detailed design of modules. I try to show the process of data flow analysis by considering a real application that I have designed. Learn more.
13 Apr 2016 | Use Cases Drive Software Design
In my opnion, a system’s use case specification is a valuable tool for problem analysis in software design. Simply listing the use cases before designing a system can help drive software design in the right direction and improve solution quality in the end. Learn more.
05 Apr 2016 | Context Diagrams: Getting a High-Level View of the System
A helpful approach to begin the analysis and design of a system is by creating a context diagram. Doing so provides a high-level view of responsibilities of the system in its environment and the way the system integrates into the problem space. A context diagram is also a helpful tool for communicating the purpose of an existing system to another person. Learn more.
04 Apr 2016 | A High-Quality Solution Begins with Proper Problem Analysis
Problem Analysis is the most important step in development of any software. It is what allows us to make the most impactful initial design decisions based on more than feelings and assumptions. Learn more.
03 Apr 2016 | Recommended Reading to Learn Software Design
This is a list of reading for someone who wants to study software design. There are many resources available, but they overlap a lot. With this list I try to provide good coverage of the subject and little redundancy. If you have the opportunity, I think it’s worth to read everything on this list (or the alternatives). Learn more.