Software Engineering is a very important field of study regarding software development since the beginning of modern computing and the rise of software complexity.
If you consider that to achieve a deliverable software component you may need to understand more than just bits and bytes, moreover, for software to be successful in the piece of the problem it may solve, there are much more than just electrical circuits behind that.
Based on that affirmation you should consider that software development requires more than machines and code, but also, the idea of the business behind it to be understood, the abstraction while designing based on its requirements, the right methodologies and procedures which will make the code with quality enough to support maintenance, the testing environment which will confirm that the software is reliable enough to run and automate some human task.
In the enumeration below I list my personal view of the greatest challenges regarding software engineering in the next 20 years.
#1 Testing multiple software components with integration with other software components
I personally believe one of the most critical software development phases is the integration testing. If we consider that today we have more and more integrated applications running in a space where many applications depend on each other, how to guarantee our software will work integrated with other software components we do not know much about its infrastructure and availability?
Moreover, according to StackOverflow, 2017, there’s the issue of data that changes in back-end systems over time. Sometimes you don’t really have any influence over these changes, and they can render detailed integration tests useless. Often this results in making “smoke test” like integration tests that really don’t assert too much of the content of the back-end systems.
I believe in a twenty year period, more applications will be connected and more will be integrated and dependent of each other, so how to make integration testing with all these applications and how to guarantee all them will work in a 24/7 scheme?
#2 Accuracy in Software Development Cost Estimates
According to Fowler, 2003: “One of my biggest irritations are studies of productivity based on lines of code. For a start, there’s all the stuff about differences between languages, different counting styles, and differences due to formatting conventions. But even if you use a consistent counting standard on programs in the same language, all auto-formatted to a single style – lines of code still doesn’t measure output properly.”
As long as more modern software development tools are created and developed, one thing I personally believe is that it will be possible to be more accurate in terms of cost and productivity estimates, which with my experience in the software development area it is strictly difficult to measure cost and productivity estimates with accuracy, and the way more specific development tools are available in order to provide more ways to be accurate with estimates and to measure productivity, but this is a constant challenge the science of software engineering is facing and will continue to face during the next years.
Martin Fowler. 2003. CannotMeasureProductivity. [ONLINE] Available at: https://martinfowler.com/bliki/CannotMeasureProductivity.html. [Accessed 1 June 2017].
Stackoverflow. 2017. What are the challenges you have faced in writing integration tests?. [ONLINE] Available at: https://stackoverflow.com/questions/477911/what-are-the-challenges-you-have-faced-in-writing-integration-tests. [Accessed 1 June 2017].