April, 2024

now browsing by month

 

System design and implementation

WHAT DOES A SOFTWARE ENGINEER DO?

Software engineers evaluate client or company needs in conjunction with those of the user and methodically conceptualize a systematic solution (also System Engineer).

This person is a Solution Designer…

WHAT DOES A PROGRAMMER DO?

Programmers write code and debug errors in programs and software based on instructions from software engineers. They are involved in a single stage within the development lifecycle and concentrate on one component at a time (also System Developer).

Design and implementation process

How it works for those who succeed:

  1. an organisational model is created (business processes and document structures)
  2. define business requirements (needs)
  3. a platform-independent logic is designed to implement the requirements (system model)

A developer is then selected to:

  1. selects and sets up the environment
  2. implements the designed logic in the selected environment
  3. deliver the system to the users and implement it.

NOTE!

  • If the project is monolithic, the implementation will be a “big risky waterfall”.
  • If the project is a component architecture (microservices), the implementation will be a smooth, iterative and incremental process (points 5. and 6. in the loop).

I’m System Engineer…

Above diagrams from the left (Bibliography):

Paul Harmon. (2016). The State of Business Process Management 2016. BT Trends. https://www.club-bpm.com/Contenido/Estudios/BPT-Survey-Report.pdf

Bajaj, M., Cole, B., & Zwemer, D. (2016, September 13). Architecture To Geometry—Integrating System Models With Mechanical Design. AIAA SPACE 2016. AIAA SPACE 2016, Long Beach, California. https://doi.org/10.2514/6.2016-5470

Cockburn, A. (2005, January 4). Hexagonal architecture. Alistair Cockburn. https://alistair.cockburn.us/hexagonal-architecture/

A good beginning and then it gets worse, i.e. MVP

Why problems occur​” only later”, at the beginning it was good and the customer was satisfied

Paradoxically, the explanation is quite simple: developers are still dominated by methods based on monolithic architectures. Preaching application” Object-oriented programming methods” only means that the so-called​” object-oriented programming language”, which absolutely does not mean that the architecture of what will be created will be modern. Audit practice shows that it will rather be an architectural museum based on a relational data model, multi-level inheritance and the worst data modeling practices, which are an anemic domain model and shallow flat classes with a huge number of operations (including set/get for each attribute of classes representing database tables).

Therefore, this scenario often looks like this: at the beginning, software is created that performs one specific function, often the embryo of a monolith. Everything works fine, the customer is happy and concludes (extends) the contract. The next functionalities are the beginning of the drama: expansion of the monolithic data model, migrations from the old model to the new one, growing problems of the monolithic architecture: everything is falling apart because everything depends on everything, and no one knows how, because there is no documentation of the application’s operation mechanism, and the code has long been no longer suitable for reading. Trying to fix this is starting to be a bit of a rabbit chase too…. and there is a dispute.

Source: A good beginning and then it gets worse, i.e. MVP – IT-Consulting Jarosław Żeliński