AITG Inc Aeeh Press Inc i-SOLE inc SJSU
Question
Asked 9th May, 2023
System and Application Software are Obsolete! Sooner or later. Do you agree?
System and Application Software are Obsolete! Sooner or later. Do you agree?
Note: We will address several questions related to this issue.
The Next Question: What is an alternative?
A fuse is a standard device found in any electrical system. Examples include a home, an automobile, a power tool, and many more. The fuse is common and comes in a relatively small variant of the required application and the amperage or load the fuse is expected to carry. For a particular application and load, fuses are typically interchangeable. If the FUSE fails, the circuit is open and will not conduct electricity. Plug in a new fuse, and the circuit is complete and resumes operation.
How many software programs are there in the world? Joseph Newcomer, Former Chief Software Architect (1987–2010) and Author have 14.7K replies and 3.7M answer views. Billions. Probably not trillions. But certainly, more than hundreds of millions. Some are one line long. Some are a hundred million lines long. And everything in between.
These software programs have insidious problems, such as:
• Lack of reliability.
• Lack of stability/unstable
• Excessively costly (billions) to build, purchase, and operate.
• Brittle
• Software projects continue to fail at an alarming rate.
This data immediately prompts two questions:
1. Is it a problem with the project methodology or how organizations administer software engineering projects?
2. Is it a problem with the quality of software engineers available within the marketplace?
There is plenty of blame; however, these are not the root causes of the failings of contemporary software applications and software products.
The problems are manifold:
1. Every software solution must be targeted for an operating platform, and invariably, a software engineer or team of engineers must build out not only the functional capabilities of the software but also must deliver the plumbing of the software itself. The multitude of questions must be addressed at the commencement of a software engineering project:
a. How does information move within the application?
b. What algorithms and patterns will be used, and which will be avoided?
c. How do different components interact?
d. Is there a need for a message bus?
e. Will the application employ services?
f. How is information stored, retrieved, rendered, reported, and transmitted to consumers of other details?
g. What are the performance requirements of the application?
h. What is the mechanism for recovering from routine application failures? Or catastrophic failures?
i. How do we prevent the application from suffering from design constraints that effectively lock the application from evolving to meet changing requirements over time?
j. How can we prepare for inevitable changes in requirements and ensure the integrity of the application across many design changes?
Functional and non-functional requirements must be vetted, and a solution that satisfies these questions and many more is needed. Plus, there needs to be a holistic methodology for efficiently documenting a software application's functional and non-functional requirements, neither at its inception nor throughout its lifecycle. Approaches to writing these requirements are as diverse as the number of software architectures today. For example, FUSE employs a holistic approach to software architecture; software design and applications are simply artifacts of the architecture and design.
We could spend hundreds of pages analyzing the many weaknesses of contemporary software engineering practice, but the purpose of our research is different. The compendium of research into the failures of modern software methods is vast, and each new methodology and technique introduced addresses point solutions to only specific problems and weaknesses in software engineering. Unfortunately, no unified and holistic software approach addresses the issues with prior methods.
One may ask, "How so?" or, "How did we get into this desperate situation?
Unfortunately, this specific line of questioning perpetuates the problem and keeps the software engineering community on the wrong track. The question pre-supposes that minor tweaks to how software is engineered are adequate to "fix" the problems that genius software engineers have bequeathed to our world. We cannot just tweak things as has been tried before. We cannot replace zero methodologies with waterfalls to fix how projects are managed. We need to replace waterfall with agile and get a better outcome.
We have made meaningful advances in Software Engineering in the past 50 years. Waterfall methodology was an essential improvement over the diverse approaches used before Waterfall methods were introduced. Object-Oriented Analysis, which led to Object-Oriented Design and Object-Oriented programming, was a similarly crucial step forward. This object orientation motivated the Gang of Four to introduce their notion of systems of patterns, ushering the concepts of patterns into the contemporary world of software engineering. So pervasive was this concept and so widely adopted that it is unlikely to find any software undertaking that does not employ the idea of patterns today.
However, if this is the case, why are the artifacts of software not improving markedly? Why do we still have failures with alarming frequency across all software projects? Shouldn't we expect more from software projects that employ the correct techniques and methods? However, again, this question needs to be corrected. It assumes that we can adjust a small error here or there and solve the fundamental and conceptual problems of software architecture, software design, and software development. There is little more to be done.
Most recent answer
To: Arne Johanson
First: You asserted that "all things become obsolete with time." And my answer to your assertion is, "They will be replaced by newer versions, eventually."
(1) Software applications are different than all things that you know, and as soon we build, it becomes obsolete and "outdated" (Legacy System).
(2) Having newer versions means a vicious "wicked" cycle of re-inventing the wheels.
Second: You said: "A computer has no function without an operating system."
(1) Let me repeat your statement differently: "Without an operating system, a computer is useless." "A computer without an operating system is a bare machine, whatever it is embedded or non-embedded. The embedded system is custom written to work with specific hardware. Non-embedded systems are more general-purpose. Embedded computer software is usually loaded into non-volatile memory, rather than RAM." Samih George: Professor of Software Engineering.
(2) Hardware academics, professionals, and gurus think differently about this issue. I found this true in all universities I worked for and my keynotes and consultations in more than 52 countries. Even San Jose Stated University's "Computer Engineering Faculty" outnumber the "Specialized Areas of Software Faculty, such as Algorithms, Machine Learning, Enterprise Software, Database," and others. SJSU's Computer Engineering Department, which recently called Computer and Software Engineering" after years of endless debates, has more than approximately 2500 graduate and undergraduate software students and less than around 500 computer engineering faculty -- The Ratio is the percentage of students compared to teaching staff in San Jose State University is 1:26 which made SJSU one of the worst universities in the USA.
Public Data: https://www.collegefactual.com/colleges/san-jose-state-university/academic-life/faculty-composition/#secRatio.
(3) "Operating system is the brain of the computer, and it is software and has more versions than any software application and means a vicious "wicked" cycle of re-inventing the wheels and force any user to use and the developer to develop instance-oriented software applications and strong dependences of software developed on the specific operating systems and cannot be used on other existing operating systems which is very costly in many different ways.
Suggested Solutions: two ways:
(1) (Impossible) Develop a unified and Stable Operating System (OS) that is flexible, Scalable, adaptable, and provides multiple views to suit the user's needs. Several research attempts to do this, such as the closest example is "Choice," and it comes short. Such an OS is impossible because of the market's hardware ownership and control share.
(2) (Practical) We urgently need to build software unified, stable, and independent foundation of the hardware control that satisfies all the desired quality factors (United Software Engines (USEs) with the ability to generate as many software applications as possible quickly on existing operating systems.
All Answers (6)
Association for Computing Machinery
I find this to be a peculiar question. Assuming there will continue to be interactive systems and coordinated operation either B2B, B2C, and among individuals and groups, there is a requirement for disciplined approaches on how systems are built, deployed, and maintained. I don't see lifecycle management and coordination among interconnected system disappearing.
I do see current deterioration of interoperability and the tendency to create silos for competitive purposes. There is a problem with organizations deploying (or purchasing) systems over which there is no comprehension of how to manage such activities, whether contracted or in-house. Risk management is notoriously absent.
Florida International University
Being a Computer Science student and a software developer aspirant, I do not agree that System and Application Software will be obsolete soon.
1 Recommendation
AITG Inc Aeeh Press Inc i-SOLE inc SJSU
To: Dennis Hamilton
Thank you for your answer.
First: We say in Arabic nothing strange but Satan.
Second: Your answer to the question began with an assumption that is not appropriate in software engineering because the assumption is your own, not related to the system you work on.
Third: The life cycle management and coordination between interconnected systems will remain, but we seek improvement or better ways to manage.
Fourth: Then, the diversity of problems on the ground began.
Fifth: This is an excellent way to support my arguments.
My question aims to show everyone there is a better alternative than building legacy systems, which are big dilemmas in the different domains of knowledge.
AITG Inc Aeeh Press Inc i-SOLE inc SJSU
To: Nafiul Khalid
You can disagree, and it is acceptable to dispute, but the programs you write will become legacy systems sooner or later.
A legacy system can cause many problems, such as high maintenance costs, data silos that prevent integration between systems, lack of compliance with governmental regulations, and reduced security. These issues eventually outweigh the convenience of using an existing legacy system.
California Native Plant Society, San Diego
Of course, all things become obsolete in time. They will be replaced by newer versions, eventually. However, they will be around in some form.
A computer has no function without an operating systems. That is to say that all the electronics do nothing without instructions to define what the electronics are.
Application software will likely be different but will still exist. Without applications the computer isn't doing anything useful for people.
AITG Inc Aeeh Press Inc i-SOLE inc SJSU
To: Arne Johanson
First: You asserted that "all things become obsolete with time." And my answer to your assertion is, "They will be replaced by newer versions, eventually."
(1) Software applications are different than all things that you know, and as soon we build, it becomes obsolete and "outdated" (Legacy System).
(2) Having newer versions means a vicious "wicked" cycle of re-inventing the wheels.
Second: You said: "A computer has no function without an operating system."
(1) Let me repeat your statement differently: "Without an operating system, a computer is useless." "A computer without an operating system is a bare machine, whatever it is embedded or non-embedded. The embedded system is custom written to work with specific hardware. Non-embedded systems are more general-purpose. Embedded computer software is usually loaded into non-volatile memory, rather than RAM." Samih George: Professor of Software Engineering.
(2) Hardware academics, professionals, and gurus think differently about this issue. I found this true in all universities I worked for and my keynotes and consultations in more than 52 countries. Even San Jose Stated University's "Computer Engineering Faculty" outnumber the "Specialized Areas of Software Faculty, such as Algorithms, Machine Learning, Enterprise Software, Database," and others. SJSU's Computer Engineering Department, which recently called Computer and Software Engineering" after years of endless debates, has more than approximately 2500 graduate and undergraduate software students and less than around 500 computer engineering faculty -- The Ratio is the percentage of students compared to teaching staff in San Jose State University is 1:26 which made SJSU one of the worst universities in the USA.
Public Data: https://www.collegefactual.com/colleges/san-jose-state-university/academic-life/faculty-composition/#secRatio.
(3) "Operating system is the brain of the computer, and it is software and has more versions than any software application and means a vicious "wicked" cycle of re-inventing the wheels and force any user to use and the developer to develop instance-oriented software applications and strong dependences of software developed on the specific operating systems and cannot be used on other existing operating systems which is very costly in many different ways.
Suggested Solutions: two ways:
(1) (Impossible) Develop a unified and Stable Operating System (OS) that is flexible, Scalable, adaptable, and provides multiple views to suit the user's needs. Several research attempts to do this, such as the closest example is "Choice," and it comes short. Such an OS is impossible because of the market's hardware ownership and control share.
(2) (Practical) We urgently need to build software unified, stable, and independent foundation of the hardware control that satisfies all the desired quality factors (United Software Engines (USEs) with the ability to generate as many software applications as possible quickly on existing operating systems.
Similar questions and discussions
Related Publications
Distributed Pair Programming (DPP) is widely known to promote collaboration and knowledge sharing among novice
programmers, while it engages them in carrying out programming assignments. Moreover, DPP is a means of experiencing
agile software development techniques that are considered important in the software market. In this paper, we share some
e...
Durch die zunehmende Agilisierung von Unternehmen wird eine Prozessorientierung in der Organisation gefördert. Das Scaled Agile Framework® (SAFe®) stellt in der Version 5.0 ein „zweites Betriebssystem“ des Unternehmens dar, welches die (agilen) Prozesse in Abgrenzung zur stabilen Organisationsstruktur beschreibt. Vergleicht man diese Prozess-Vorste...
Introduzione. Il “lavoro agile” (LA) si sta diffondendo anche in Italia (es. Legge n.81/2017). LA non indica solo il lavoro da remoto ma un diverso modello organizzativo di gestione e qualità degli spazi e del lavoro con un’enfasi sulla gestione per obiettivi e l’autonomia lavorativa. Tale modalità incrementerebbe le risorse lavorative ma potenzial...




















