Ingredients for a Perfect Design Document

Introduction

If you are a software developer or an architect, then surely you know how important software design documents (SDD) are. You can find unlimited articles on the internet related to the type of design documents, which type should have which heading, etc., so I am not going to waste your time by explaining those things again.

Now the question is this: if we already have a lot of information available on the internet, then what do we want to cover in this article and why?

End-to-End Debug Object Modeling – First Hard Problem in Building DDTJ: Day 4

Yesterday I got the second PR out of the door (and the 3rd although that was automated). Today wasn't as productive.

Winter just started in full force around these parts, and yesterday, everything was flooded. This slowed down some of my work, especially after my son's kindergarten was flooded and he had to stay home. Still, I could make progress thanks to the fact that the code now runs end to end. That means I can start debugging the whole thing by using the command line and setting a breakpoint in the backend. Very convenient.

When to Code a Stored Procedure — and When Not To

Though it might seem to be a weird title in 2021, you'll be shocked to learn the number of applications (legacy and new) that still use stored procedures.

The stored procedure is a database capability that allows developers to write code at the level of the database and directly manipulate data (and sometimes define data, i.e. create tables, indexes, drop them, etc.,).

15 SWE Trends Dominating the Tech Industry in 2021

Software development trends are leading the charters in the tech industry. If you’re a tech professional, you’ll see money-churning ideas abound. However, what about the future stakes remain a million-dollar question. Be it DevSecOps to low-code apps, software development trends are fast as technology itself.

So it makes sense that all would be wondering what the latest trends in software development are. A paradigm shift is awaited in the IT industry. The good thing about technology is that it is ever-growing, unstoppable, and versatile.

Logical Separation in the Hexagonal Architecture

Have you ever lied to your stakeholders? I must confess that I did once (unintentionally)... I drew a very nice picture of boxes and arrows and I presented it to them as the "logical view" of the architecture of the software product they were in charge of. However, those logical boxes, which were supposed to be groups of classes with a specific purpose, were not represented in code. Source code was a real mess, basically just spaghetti code. There were dependencies everywhere without any defined rules or without any architectural rule. There was a clear gap between my picture and the source code.

If you have read my previous post, Coding your Architecture Structure, you know that one of the structures to architect a software system is created using syntactical constructions. Usually those constructions are packages, namespaces, or modules. So, with this idea we create an application using the Hexagonal Architecture Style, where each logical group of classes that this style suggests is represented as a package in the picture below.

If Testing Was a Race, Data Would Win Every Time

Okay, so that title doesn’t make complete sense. However, if you read to the end of this article, all will become clear. I’m first going to discuss some of the persistent barriers to in-sprint testing and development. I will then discuss a viable route to delivering rigorously tested systems in short sprints.

The two kingpins in this approach will be data and automation, working in tandem to convert insights about what needs testing into rigorous automated tests. But first, let’s consider why it remains so challenging to design, develop and test in-sprint.

The 7 Virtues of Good Software Design

There are plenty of good practices, design patterns, code checks, and more, that you must learn and follow to produce high-quality, reliable, and extensible software.

But each and every one of them serves to one or several of these seven golden virtues:

Design Cloud-Native Secure Environment to Host Your Enterprise Application

Let's assume your organization is planning to develop an enterprise solution (name it opendrapp) using microservice architecture having below components and host them in a private cloud.

  • OpenDrApp-UI: Reactjs based app.
  • OpenDrApp-ACL: OpenID based user access control.
  • OpenDrApp-CRM.
  • OpenDrApp -PC &OrderCare with PMS, PIS, CAM, BM, WM, NIM etc
  • OpenDrApp-Charging.
  • OpenDr - Billing.

Database: Cloud-native database hosted on Kubernetes in HA &FT config.

Understanding Inversion of Control and Dependency Injection

There are two key concepts that you must understand when you start with Spring or JakartaEE/CDI–inversion of control and dependency injection.

In brief, inversion of control means letting a framework take control of the execution flow of your program to do things like create instances of your classes and inject the required dependencies.

How to Save Money on Software Design

To figure out what goes into your app or website design cost and how to reduce these expenses, it is important to understand that designing a software solution is all about problem-solving. When working on a concept of a custom new product, the first and foremost thing you should consider is how it can help your users solve the problem and be best at it.

Let us share our vision on where to begin in designing your software solution, as well as how you can make your design stage cost less and even turn it into a great ROI in the long run.

Top-Down Design — an Approach for Flawless Software Design and Implementation

Check out this "top-down" view.
You may also like: Software Design Principles

Top-Down Design

In software development, you would have read in many articles and books that the design should be a top priority. A good design would resolve many issues. The design will bring in more clarity to the developers. It will give granular details on the exact requirements. In this article, I am going to discuss the Top-Down Design approach. I will explain step by step by taking an example of eLearning.

A problem must be viewed at multiple levels. Each one of them has its benefits. The different levels in software design or development are as follows

Design for Maintainability

There are many attributes to design for; however, to understand the beauty of programming, you must practice the techniques that come with Maintainability.

Let’s start with a few examples:

• When you want to add a logging feature in some layer/place and this will be achieved by modifying one place or couple of places.