System design and implementation

WHAT DOES A SOFTWARE ENGINEER DO?

Soft­ware engin­eers eval­u­ate cli­ent or com­pany needs in con­junc­tion with those of the user and meth­od­ic­ally con­cep­tu­al­ize a sys­tem­at­ic solu­tion (also Sys­tem Engineer).

This per­son is a Solu­tion Designer…

WHAT DOES A PROGRAMMER DO?

Pro­gram­mers write code and debug errors in pro­grams and soft­ware based on instruc­tions from soft­ware engin­eers. They are involved in a single stage with­in the devel­op­ment life­cycle and con­cen­trate on one com­pon­ent at a time (also Sys­tem Developer).

Design and implementation process

How it works for those who succeed:

  1. an organ­isa­tion­al mod­el is cre­ated (busi­ness pro­cesses and doc­u­ment structures)
  2. define busi­ness require­ments (needs)
  3. a plat­form-inde­pend­ent logic is designed to imple­ment the require­ments (sys­tem model)

A developer is then selec­ted to:

  1. selects and sets up the environment
  2. imple­ments the designed logic in the selec­ted environment
  3. deliv­er the sys­tem to the users and imple­ment it.

NOTE!

  • If the pro­ject is mono­lith­ic, the imple­ment­a­tion will be a “big risky waterfall”.
  • If the pro­ject is a com­pon­ent archi­tec­ture (microservices), the imple­ment­a­tion will be a smooth, iter­at­ive and incre­ment­al pro­cess (points 5. and 6. in the loop).

I’m Sys­tem Engineer…

Above diagrams from the left (Bibliography):

Paul Har­mon. (2016). The State of Busi­ness Pro­cess Man­age­ment 2016. BT Trends. https://www.club-bpm.com/Contenido/Estudios/BPT-Survey-Report.pdf

Bajaj, M., Cole, B., & Zwe­mer, D. (2016, Septem­ber 13). Archi­tec­ture To Geometry—Integrating Sys­tem Mod­els With Mech­an­ic­al Design. AIAA SPACE 2016. AIAA SPACE 2016, Long Beach, Cali­for­nia. https://doi.org/10.2514/6.2016–5470

Cock­burn, A. (2005, Janu­ary 4). Hexagon­al archi­tec­ture. Alistair Cock­burn. https://alistair.cockburn.us/hexagonal-architecture/

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

Why prob­lems occur​” only later”, at the begin­ning it was good and the cus­tom­er was satisfied

Para­dox­ic­ally, the explan­a­tion is quite simple: developers are still dom­in­ated by meth­ods based on mono­lith­ic archi­tec­tures. Preach­ing applic­a­tion” Object-ori­ented pro­gram­ming meth­ods” only means that the so-called​” object-ori­ented pro­gram­ming lan­guage”, which abso­lutely does not mean that the archi­tec­ture of what will be cre­ated will be mod­ern. Audit prac­tice shows that it will rather be an archi­tec­tur­al museum based on a rela­tion­al data mod­el, multi-level inher­it­ance and the worst data mod­el­ing prac­tices, which are an anem­ic domain mod­el and shal­low flat classes with a huge num­ber of oper­a­tions (includ­ing set/get for each attrib­ute of classes rep­res­ent­ing data­base tables).

There­fore, this scen­ario often looks like this: at the begin­ning, soft­ware is cre­ated that per­forms one spe­cif­ic func­tion, often the embryo of a mono­lith. Everything works fine, the cus­tom­er is happy and con­cludes (extends) the con­tract. The next func­tion­al­it­ies are the begin­ning of the drama: expan­sion of the mono­lith­ic data mod­el, migra­tions from the old mod­el to the new one, grow­ing prob­lems of the mono­lith­ic archi­tec­ture: everything is fall­ing apart because everything depends on everything, and no one knows how, because there is no doc­u­ment­a­tion of the applic­a­tion’s oper­a­tion mech­an­ism, and the code has long been no longer suit­able for read­ing. Try­ing to fix this is start­ing to be a bit of a rab­bit chase too…. and there is a dispute.

Source: A good begin­ning and then it gets worse, i.e. MVP – IT-Con­sult­ing Jarosław Żeliński

Mechanism of operation vs. system model

Most often in the course of ana­lys­is we use the term mod­el, less often mech­an­ism. The thing is that the term mech­an­ism appears when we want to explain some­thing, e.g. “the mech­an­ism of gen­er­at­ing a dis­count on an invoice”. The thing is that the term mech­an­ism appears when we want to explain some­thing, e.g. “the mech­an­ism for gen­er­at­ing a dis­count on an invoice”. But here beware! A mod­el (block dia­grams, for­mu­lae, etc.) is doc­u­ment­a­tion, a copy­righted descrip­tion. The mech­an­ism is what we under­stood by read­ing these doc­u­ment­a­tion (mod­el), because the mech­an­ism is pro­tec­ted know-how. The con­tent of the applic­a­tion to the Pat­ent Office is the mod­el (descrip­tion), but what we pat­ent is the mech­an­ism invented/developed.

Source: Mech­an­ism of oper­a­tion vs. sys­tem mod­el – Jarosław Żeliński IT-Consulting

Architecture & Systems Engineering

I highly recom­mend the MIT Archi­tec­ture & Sys­tems Engin­eer­ing course. it is pre­cious know­ledge and an increas­ingly pop­u­lar skill: the ana­lys­is and design of com­plex, inter­dis­cip­lin­ary systems.

Enroll in MIT’s Archi­tec­ture & Sys­tems Engin­eer­ing Online Pro­gram and learn from MIT fac­ulty and industry experts. Explore the new­est prac­tices in sys­tems engin­eer­ing, includ­ing how mod­els can enhance sys­tem engin­eer­ing func­tions and how sys­tems engin­eer­ing tasks can be aug­men­ted with quant­it­at­ive analysis.

Source: Enroll in MIT’s Archi­tec­ture & Sys­tems Engin­eer­ing Online Program

If you are look­ing for loc­al per­son­al ment­or­ing, I am an exper­i­enced MBSE expert, please ask for details.

Enterprise Architecture – goals and scope of analysis and modeling

Enter­prise Archi­tec­ture – goals and scope of ana­lyzes and mod­el­ing­Pur­pose and bene­fit­sThe primary goal of ana­lyz­ing and mod­el­ing the entire com­pany, at a pre­de­ter­mined level of detail (or rather the level of gen­er­al­ity), is to determ­ine the con­text for spe­cif­ic loc­al, domain-spe­cif­ic pro­jects. The whole mod­el con­tains inform­a­tion about the doc­u­ment flow and the IT sys­tems sup­port­ing it. The key bene­fit of hav­ing a doc­u­mented Enter­prise Archi­tec­ture is an even sev­er­al-fold reduc­tion in the costs of ongo­ing man­age­ment and devel­op­ment of the IT sys­tem, The key bene­fit of hav­ing a doc­u­mented Enter­prise Archi­tec­ture is even a sev­er­al-fold reduc­tion in the costs of cur­rent com­pany man­age­ment and the costs of IT sys­tem devel­op­ment. Giv­en mod­els we have:possibility to make organ­iz­a­tion­al decisions imme­di­ately and without risk: doc­u­mented inform­a­tion about mech­an­ism of the oper­a­tion of each busi­ness ser­vice (busi­ness pro­cesses), means the abil­ity to per­form imme­di­ate ana­lys­is the impact of each such decision on the rest of the com­panythe abil­ity to imme­di­ately make decisions about intro­du­cing neces­sary changes to the IT sys­tem, doc­u­mented inform­a­tion about the oper­a­tion mech­an­ism and archi­tec­ture of the IT sys­tem, allows for imme­di­ate imple­ment­a­tion of the specification​“to-be” of this sys­tem, and send it to sup­pli­ers as a require­ment (no need to do any pre-imple­ment­a­tion analyses),possibility of imple­ment­ing busi­ness con­tinu­ity management,possibility of imple­ment­ing a con­trolling and activ­ity-based cost man­age­ment sys­tem (ABC meth­od of cost man­age­ment). See also Tar­get oper­at­ing mod­el (TOM).

Source: Enter­prise Archi­tec­ture – goals and scope of ana­lyzes and mod­el­ing – Jarosław Żeliński IT-Consulting

What is the difference between the requirements of the solution and the needs of the user?

Sev­en years ago (2015), I ended an art­icle about require­ments and trace­ab­il­ity with the words: So the busi­ness require­ments may be dozens. The required sys­tem ser­vices (use cases) in a large pro­ject may also be dozens. But hun­dreds or thou­sands of ?require­ments? is an expres­sion of los­ing con­trol of the pro­ject scope? Here I would like to point out that a require­ment (a sys­tem ser­vice) could be, for example, a VAT invoice pro­duced in com­pli­ance with the reg­u­la­tions. The fea­tures of this invoice (list of fields) are not sep­ar­ate require­ments, they are fea­tures (para­met­ers, attrib­utes) of a single require­ment. No fea­ture of the VAT invoice has any value on its own so it can­not be a sep­ar­ate use case, just as our require­ment can be a car but its col­our or auto­mat­ic trans­mis­sion are fea­tures of the car, it makes no sense to require ?red col­our? without expect­ing a car (and how to jus­ti­fy that this col­our sup­ports the busi­ness object­ive). The use case for a car is the jour­ney and not the inser­tion of the key into the igni­tion, because this is just one ele­ment of the scen­ario of start­ing a car journey.Source: Why is require­ments tra­cing import­ant in a pro­ject? – Jarosław Żeliński IT-Con­sult­ingThere are pub­lic­a­tions about require­ments, their man­age­ment and imple­ment­a­tion. There are applic­a­tions avail­able on the mar­ket to col­lect them and man­age such a col­lec­tion. And we are con­stantly con­fron­ted with their – require­ments – ambi­gu­ity (Šen­kýř & Kroha, 2019). It turns out that their import­ance becomes cru­cial for pro­jects, also from a leg­al per­spect­ive (PZP and the concept of need defined in the recom­mend­a­tions of the Pub­lic Pro­cure­ment Office). This time I will focus on the con­cepts of «require­ment» and «need» in rela­tion to the solu­tion design.

Source: What is the dif­fer­ence between solu­tion require­ments and user needs? – Jarosław Żeliński IT-Con­sult­ing.

Work vs. design vs. intellectual property in engineering

Anoth­er dis­cus­sion I had on Linked­In recently showed that intel­lec­tu­al prop­erty law is very dif­fi­cult to assim­il­ate, mainly because – due to its «imma­ter­i­al­ity» – it escapes the intu­it­ive and mater­i­al man­ners of human per­cep­tion of the world. This is over­laid by the coder­’s con­vic­tion that, in prin­ciple, they are autonom­ous cre­at­ors, and unfor­tu­nately, many law­yers also think so. The thing is that the coder is always the cre­at­or, but not always the design­er. When the coder is not a design­er, their works (source code) are depend­ent works on primary works, which are tech­nic­al designs expressed, for example with the help of UML, math­em­at­ic­al for­mu­lae, algorithms. Then we expect coders, as developers, to do their craft brilliantly.Given that I often use pur­pose­ful and sys­tem­ic inter­pret­a­tion of con­tracts and law in the expert reports I write, I have decided to describe here an onto­lo­gic­al ana­lys­is of this area of engin­eer­ing. The aim is to determ­ine the mean­ing and range of defin­i­tions of terms com­monly used in the field of intel­lec­tu­al prop­erty. I also hope to help you with this to make bet­ter soft­ware sup­ply contracts.

Source: Cre­ation vs. design vs. intel­lec­tu­al prop­erty in engin­eer­ing – Jarosław Żeliński IT-Con­sult­ing.

ICONIX as an object-oriented, agile software design process using UML notation

The fact that ICONIX, as a pro­cess, is rel­at­ively rarely used (this has been chan­ging over the last few years, how­ever), is rooted in the fact that, first and fore­most, it requires an under­stand­ing of the com­pon­ent-ori­ented archi­tec­ture pro­cess, it also requires know­ledge and under­stand­ing of the concept of hexagon­al archi­tec­ture and the asso­ci­ated MVC pat­tern. Requires know­ledge and under­stand­ing of many oth­er object-ori­ented design pat­terns, requires, above all, abstract think­ing and mod­el­ling (UML) skills. It requires an under­stand­ing that z cod­ing must be pre­ceded by design, because «design­ing» in code is the least effect­ive form of design (Bör­ger, 2018).The pro­cess is also sup­por­ted by the divi­sion into ana­lys­is and design and imple­ment­a­tion stages (see above dia­gram: Struc­ture of pro­ject roles and products in the ICONIX pro­cess). ICONIX is some­times wrongly asso­ci­ated with a “heavy” soft­ware devel­op­ment pro­cess such as the Ration­al Uni­fied Pro­cess (which I have hardly writ­ten about on my blog). The reas­on ICONIX is rarely used, is also that, unfor­tu­nately, the world was, already in the 1990s, heav­ily “spoiled” by C++ and Java (archi­tec­tures built on cas­cades of inher­it­ance). These are often heavy, mono­lith­ic frame­works based on a rela­tion­al data mod­el, where there is no strict sep­ar­a­tion between domain logic and envir­on­ment (MVC). Java is still one of the most costly and least effect­ive applic­a­tion devel­op­ment meth­ods. The EJB frame­work is to this day described as the source of an object-ori­ented design anti-pat­tern called the «anem­ic domain mod­el». How­ever, the grow­ing developer interest in the C4 mod­el over the last few years shows that ana­lys­is and mod­el­ling are needed and quietly enter­ing through the back door….The fact that ICONIX, as a pro­cess, is rel­at­ively rarely used (this has been chan­ging over the last few years, how­ever), is rooted in the fact that, first and fore­most, it requires an under­stand­ing of the com­pon­ent-ori­ented archi­tec­ture pro­cess, it also requires know­ledge and under­stand­ing of the concept of hexagon­al archi­tec­ture and the asso­ci­ated MVC pat­tern. Requires know­ledge and under­stand­ing of many oth­er object-ori­ented design pat­terns, requires, above all, abstract think­ing and mod­el­ling (UML) skills. It requires an under­stand­ing that z cod­ing must be pre­ceded by design, because «design­ing» in code is the least effect­ive form of design (Bör­ger, 2018).The pro­cess is also sup­por­ted by the divi­sion into ana­lys­is and design and imple­ment­a­tion stages (see above dia­gram: Struc­ture of pro­ject roles and products in the ICONIX pro­cess). ICONIX is some­times wrongly asso­ci­ated with a “heavy” soft­ware devel­op­ment pro­cess such as the Ration­al Uni­fied Pro­cess (which I have hardly writ­ten about on my blog). The reas­on ICONIX is rarely used, is also that, unfor­tu­nately, the world was, already in the 1990s, heav­ily “spoiled” by C++ and Java (archi­tec­tures built on cas­cades of inher­it­ance). These are often heavy, mono­lith­ic frame­works based on a rela­tion­al data mod­el, where there is no strict sep­ar­a­tion between domain logic and envir­on­ment (MVC). Java is still one of the most costly and least effect­ive applic­a­tion devel­op­ment meth­ods. The EJB frame­work is to this day described as the source of an object-ori­ented design anti-pat­tern called the «anem­ic domain mod­el». How­ever, the grow­ing developer interest in the C4 mod­el over the last few years shows that ana­lys­is and mod­el­ling are needed and quietly enter­ing through the back door.…

Source: ICONIX jako obiek­to­wo zori­entow­any, zwinny pro­ces pro­jek­tow­ania opro­gramow­ania z uży­ciem not­acji UML – Jarosław Żeliński IT-Consulting

True Engineering

A few days ago I was talk­ing about the bor­der between require­ments ana­lys­is and engin­eer­ing with Tom Gilb. The con­clu­sion is: that we have to sep­ar­ate the require­ments stage and the engin­eer­ing stage. A huge thank you to Karo­lina Zmitrow­icz for organ­iz­ing this meeting.

True Engin­eer­ing: with Tom Gilb and Jarek Żeliński

UML model and stereotypes as icons

Someone will ask: why all this? The thing is that man­aging present­a­tion graph­ics (mod­el con­sist­ency, tra­cing, etc.) is prac­tic­ally impossible: any change requires inter­fer­ence with block dia­grams and labor­i­ous rein­ser­tion into the ana­lys­is report (I wrote about this in an art­icle about CASE tools). Such graph­ics are not trans­fer­able between tools oth­er than as uned­it­able bit­maps. How­ever, if someone feels that block dia­grams expressed in more «friendly» sym­bols add value to the pro­ject, they can do so. The UML provides for this and many tools allow it (I used Visual-Paradigm).

Source: UML mod­el and ste­reo­types as icons – Jarosław Żeliński IT-Con­sult­ing.