Looking at the future of software and software engineering from the history of human development
Abstract:Through the history of human history over thousands of years, we can see a clear evolution on the timeline. This context not only tells about the past development of mankind, but also points out the trend of human destiny. Software and software engineering, as an important tool in the process of human history development, will naturally leave its own traces in this context, the guiding role of this evolutionary context on the fate of mankind is also applicable to software and software engineering. This article looks at the future and prospects of software and software engineering from this broad perspective, and carries out some superficial exploration.
Keywords:Software, software engineering, human, Development History
See the future of software and software engineering through human history
(School of software, Shanghai Jiao Tong University, Shanghai 200240, China)
AbstractA careful examination of human history reveals a clear thread of human development. carved on the limitless time line, this thread not only records the past process of human evolution, but also points out the direction of human
Destiny. as important exceptions and tools, software and software engineering also leave her trail in this human development thread. thus, we can look at software and software engineering from the perspective of human evolution history and gain some unique
Insights.
Key words sOftware, software engineering, human history
1. Introduction
Domestic and foreign organizations generally conduct research based on the current situation and future trends to predict the future of software engineering. In the face of today's world's complex technologies and frameworks, this research method based on the status quo is facing a lot of difficulties, and it is more challenging to accurately locate the trend of software engineering.
This article believes that there is a way to better understand the future of software and software engineering. Software is a tool for humans, and software engineering is a system of tools for human creation. If we put software engineering into the history of human development, the context becomes clearer and searchable.
The following basic analysis and prediction will be implemented:Chain Principle: Changes in human society lead to changes in software requirements, software requirements lead to software evolution, and software evolution will inevitably lead to further changes in software engineering. Therefore, this article will predict the future from the three aspects of human development, the evolution of the computer world and the development of software engineering. For better understanding, Figure 1 provides the basic framework of the entire project. Among them, the blue solid line represents the Chain Principle, the dotted line represents the idea, and is divided into three parts by chapter.
Figure 1 Subject framework
2. Development and Future of mankind
2.1 inspiration from the history of human development
The entire history of mankind is huge, and it is impossible to describe them one by one. The goal of this topic is to use the key points to clarify the basic context of development. Table 1 lists some important turning points in the history of human development in chronological order, time difference, and event name based on the widely accepted evolutionary theory. The turning-point screening principle is an event that promotes significant and far-reaching changes to humanity.
Table 1 Human Development turning point
Serial number |
Time |
Time Difference (With the previous event) |
Historical Events |
1 |
65 million years ago |
|
Dinosaur extinction |
2 |
25 million years ago |
40 million years |
Appearance of primitive ape |
3 |
6 million years ago |
19 million years |
The emergence of ancient ape in South Africa |
4 |
0.2 million years ago |
5.8 million years |
Appearance of smart person |
5 |
10 thousand years ago |
0.19 million years |
Stone Age |
6 |
5 thousand years ago |
Millennium |
Use copper |
7 |
Before January 1, 1400 |
3600 |
Use iron |
8 |
Around 1500 AD |
2900 |
Geographic big discovery |
9 |
Around 1830 AD |
330 |
Industrial Revolution |
10 |
About 1950 a.m. |
120 |
Information Age |
Using table 1, we can see some important features of human development. First, the interval between historical events is getting shorter and shorter, and the frequency is getting faster and faster. from 100,000 years to years, and then to years, the acceleration is astonishing. Second, 1-4 The four events were triggered by climate and environmental changes, and the subsequent 5-10 events were ultimately due to dramatic changes in the capabilities of humans to use tools. Especially in the decades after 1950, humans are more like entering a chaotic world, from atomic bombs to moon landing, from personal computers to the Internet, human accelerator is undergoing a series of sub-heavyweight changes in which computers play an important role, but the main reason is still dependent on the improvement of human use of tool technology.
If we use table 1 to plot the time and event as the horizontal and vertical axes, we can find more features. Figure 2 uses the event as the horizontal axis and the time as the curve drawn from the vertical axis. After this happens, the curve almost becomes a parallel line, this seems to mean that the development of human beings has entered a form of almost static death after the emergence of wise people;
Figure 2 Human Development History I
Figure 3 uses the time as the horizontal axis and the event as the curve drawn from the vertical axis. Similarly, when this happens to a wise person, the curve almost changes to a vertical line, this seems to mean that humans may suddenly crash at some point in the future.
Figure 3 Human Development History II
However, the problem is obviously not that simple. The observation on figure 4 shows that the curve at the top of Figure 4 is the same as Figure 2, which shows that the development of human beings has accelerated rapidly since they entered the age of smart people, if we still use a time scale of thousands of years, the curve shows almost no change on the timeline, almost a static line. As a matter of fact, if we do not change the time scale after this point, no matter how many historical events humans have subsequently experienced, they will always converge on the wise man, the stagnation and collapse of Figure 2 and Figure 3 are also generated. Fortunately, we have not terminated this point, but adopted a point-by-point and in-depth model to achieve sustained breakthroughs.
Figure 4 Human Development History III
Taking the curve in the middle of Figure 4 as an example, we can see that if we shorten the time measurement unit from 100,000 years to years, a new space will be opened on the smart man point, there is another similar curve. Figure 4 lower curves show that, after the use of iron, another space is opened when human development enters a pole again, at the same time, the measurement scale also enters the Millennium level from the 100,000 year level.
2.2 limits of human development
When we achieve sustained breakthroughs by shortening the development cycle and deepening the point-by-point approach, it also leads to a fate of mankind-we can see that as the development of mankind continues to accelerate, the interval between historical events has been shortened from the millennium level to the centennial level. With this trend, in the future, the human development cycle can even reach the level of year, month, and week. However, when human development reaches the daily level, there will be huge challenges. Imagine how this would happen if people wake up every morning and find that there has been a great change in society and everything around them is new.
Review figures 2, 3, and 4 to further look at this fate. In fact, the human development curve has revealed the following points:
(1) the development of mankind is accelerating;
(2) Before the emergence of a wise man, the development of mankind depends on the slow changes of the environment and the physical objects themselves, every great development of mankind is deeply dependent on the leap in the creation and utilization of tools and technologies;
(3) due to the accelerated development, human development is an extremely unbalanced model. In this model, human beings face the extreme for many times, but each time they successfully break through the extreme, get rid of the long-lasting recession and sudden death;
(4) After the emergence of a wise man, human breakthroughs follow the same pattern-that is, the use of tool technology to segment particles in the time domain, so as to enlarge and extend the space domain and object domain;
(5) This model faces a severe bottleneck, namely the limitations of human life. The growth of human beings follows the cycle unique to the solar system for billions of years, after the development of human beings reached the level of Sunday, life itself had reached a certain limit. We can see that the birth of new life is based on the year and month, and the most basic metabolic cycle is also based on the day level, these are the attributes of life bodies that have evolved over a thousand years to adapt to the living environment of the solar system and the earth. If, in the near future, the time domain of human society's breakthrough is reduced to minutes, the possible breakthrough modes include:
A. a huge breakthrough in biotechnology. The cycle in which humans nurture new life and basic metabolism is no longer limited to the year, month, and day, but at the time of minute and second. This breakthrough has actually overturned the model of living body over ten millions of years, and its stability is hard to guarantee;
B. great breakthroughs in computer and AI. Humans have long been aware of the limitations of their own capabilities, and have been trying to create a more perfect life-like body to reflect the will of themselves, so that humans can get away from being a new role of God. Computer technology offers the possibility of realizing this dream, but there is no doubt that this must be effectively integrated with biotechnology.
C. Humans have broken through the speed of light and created a new concept of time. The time domain is no longer the biggest bottleneck of human development. This breakthrough model depends on the major breakthroughs in physics, computer technology, and space technology. It is possible, but difficult;
D. In addition, there is another possibility that human society uses another unknown development model instead of relying heavily on the improvement of tool technology. For example, we adopt the crash and drive-by mode.
Compare four revolutionary tools created by humans: currency, computer and network, modern transportation, and nuclear weapons. The last three tools provided the possibility for the breakthrough models B, C, and D.
3. Development of software and software engineering
3.1 Development of computer and software
The development of software and the evolution of computer are inseparable. Here we will examine the evolution history of the computer world from three aspects.
Figure 5 Evolution History of the computer world
See Figure 5:
(1) In the hardware field, when computers evolved to large-scale integrated circuits around 1971, they entered a relatively stable stage, the core components of the computer did not undergo any revolutionary changes in the subsequent boom phase. However, with the improvement of the integration level, the computing capability and storage capacity were greatly improved, another important phenomenon is that the current computer has begun to show population differences, which are giant, small, networked, and intelligent to meet different needs of humans. The last feature is that the fifth six-generation computers (Photonic, superconducting, and neural network computers) have made some progress after more than two decades of slow development, but they are still in the experimental stage.
(2) In terms of computer and software language, it also entered a stable period in the late 1960s s and early 1970s S. Structured Program Design and object-oriented language were born almost simultaneously and continue to develop, it still occupies more than half of the entire software world. At the same time, the emergence of more than one thousand advanced languages marks the emergence of the population characteristics of software languages. Over the past decade, software development and software languages have seen several new directions: Aspect-oriented, model-driven, service-oriented, and network collaboration are designed to meet different needs of humans.
(3) The evolution of computer functions is more intriguing. The original computers and software were used only to solve the problems of computing and data storage, and then gradually penetrated into every corner of industrial and enterprise management, then we entered the personal and entertainment field. The development of Internet further led the software to build a virtual world. In fact, as mentioned in Chapter 1.2, computers and their software have naturally begun to help humans break through the limits of the next time domain. The aforementioned B-type breakthrough model: the combination of computers and artificial intelligence and biotechnology, it is very likely that new life-like forms will be created in the recent decades.
In order to further understand the current stage of the computer and its software, we can compare the evolution of the biological field for analysis.
Figure 6 Evolution History of the biological field
Figure 5 and figure 6 show that the electron tube computer, transistor computer, and integrated circuit computer correspond to the biological single molecule, biological polymer, and probe stage, respectively, the initial large-scale integrated circuit can be viewed as a eukaryotic. When the computer shows population characteristics, the computer world is like the transition from the biological world to plants and animals, and there are various directions, such as giant and miniature, there are various trends in network and intelligence, but computers and their software are still at the starting point of diversification. Compared with the biological field, we can see that there is an important stage for computers and their software to be crossed, that is, the stage of ASnative reproduction.
3.2 Development of Software Engineering
Further, we will examine the development history of Software Engineering Based on the history of human development and the evolution history of the computer world.
Table 2 Software Engineering Process Model
Table 2 briefly summarizes the main process models of software engineering, and divides all the software engineering models into three fields and five stages. The three fields are:
1) conventional model: waterfall model, incremental model, evolutionary process model and unified process model are representative of this model;
2) agile process model: Extreme Programming (XP) is a representative of this model;
3) New process models and research fields: model-driven development and cloud computing are among the representatives;
In the five key stages, the chain principle is always running through.
1) Stage 1: waterfall model. The industrialization and life-like nature of software eventually led to the appearance of the waterfall model, which built a basic concept of life cycle in the software world. At the same time, it is interesting to see that waterfall models and large-scale integrated circuits, structured programming languages, and object-oriented languages came along around 1970;
2) Stage 2: evolutionary process model. Just as biological evolution is not achieved overnight, mature software should also be iterated through multiple small lifecycles. The emergence of evolutionary process models re-verifies the unique class of life features of software;
3) Stage 3: unify the process phase. The Unified Process Model and the proposal of CMM/cmme reflect a basic requirement of human beings, that is, they try to pursue internal stability in a rapidly changing environment, this also marks a relatively mature and stable stage of software engineering;
4) Stage 4: both the conventional model and the agile process model coexist. The agile process reflects another basic requirement of humans-to adapt to changes. When software engineering evolved to this stage, as the biological and computer worlds evolved, the population characteristics began to show;
5) Stage 5: model-driven and cloud computing. Model-driven systems are designed to meet the automation needs of the software industry. Cloud computing is based on the Internet and focuses on service-oriented and computing resource integration. These two concepts have been put forward for a long time, and the real start is just getting started. It is time to mature. However, it is further proved that software engineering has entered the population stage.
It should be pointed out that, because the development of software engineering follows the Chain Principle, the development of software engineering always lags behind the development of software, it is usually when a language, technology, or tool of the software enters a stable period, the software engineering will have a corresponding new idea.
For example, the advanced language of software appeared in 1954, and software engineering was just proposed in 1968. When the software entered the structured program stage, the waterfall model was just emerging; when the software object-oriented technology gradually matures, the evolutionary process model begins to appear. When the object-oriented technology begins to work closely with the network, the unified and agile processes begin to appear.
It is foreseeable that the interval between software development and software engineering development will be gradually shortened in the future, and the latencies of 5-10 years can be shortened to 2-3 years.
4. The future of software and software engineering
After analyzing and reviewing the development history of human society, computer and software engineering, we can have a reasonable outlook on the future of software and software engineering.
4.1 population and change
When analyzing the development of computer hardware, language development, and software engineering, a very obvious trend is that both software and software engineering will enter a population world.
One of the main reasons for the emergence of population is the accelerated development of human society.
Diverse needs and accelerated changes in the external environment to adapt to different needs
And environment software and software engineering; second, computers and their networks carry human
It is a historical mission to achieve a new breakthrough in the time domain, so it must have a similar life
Population Characteristics of the body evolution.
Another possible expectation is that, with the further acceleration of human social changes, the rapid and changing agile processes may play an increasingly important role in future competition.
4.2 From ASnative reproduction to Sexual Reproduction
In 2.1, we can see that, similar to the evolution of the biological world, after the computer world enters the population stage, the next major breakthrough to be achieved is from async reproduction to sexual reproduction.
As we all know, in the world of life, apart from viruses, most of them are composed of cells. In the process of evolution, there are two completely different ways of reproduction, namely, ASnative reproduction and sexual reproduction.
During the low stage of evolution, async reproduction occurs through simple splitting. The production of organisms is relatively stable, and the evolution is based on variation. The reproduction speed is amazing. However, the adaptability to environment changes is poor.
Sexual Reproduction is produced in the advanced stage of evolution. Sexual Reproduction separates offspring from each other to realize the diversity and variation of offspring traits. At the same time, inherited offspring of parents with dual-hair excellent genes have a higher chance of survival, the adaptability to environmental changes is far better than that of ASnative reproduction.
The development of software and software engineering is re-analyzed. When the software enters the object-oriented stage, humans have created a primitive cell for the software by using the concept of "class, the software masters instinctively tried to use single-class inheritance and multi-class inheritance to construct the core of the software. What's wrong is that there are many unsolved problems in the stability of multi-class inheritance, in the end, the method of single-class inheritance and interface became the mainstream.
In combination with 3.1, the current software system is still in the initial stage of the transition from async reproduction to sexual reproduction. Software System variations are mainly implemented through refactoring or interfaces or services. In the future, to realize the mutation and self-evolution of the "survival of the fittest" type in the life world, the most basic unit of the software "class" may be the best model neither single-class inheritance, it is not a multi-class inheritance, but a dual-class inheritance of a parent and a mother. At the same time, the mutations are similar to those of human chromosomes, only single or very few chromosome combinations in the same population are allowed to mutate. This not only ensures stability to a certain extent, but also provides better variation, in this way, computers and their software can truly realize the sexual reproduction of the advanced stage of life.
4.3 collaborative and automated world
Today's computers and their software are still time-consuming, but in terms of high-speed computing, massive storage, and network collaboration, they have shown the characteristics that go beyond all known living bodies, especially network collaboration, in a sense, it has helped humans open up a new space. cloud computing, knowledge search, service-oriented, and virtual worlds will have a lot of room for development in the future.
On the other hand, the industrial characteristics of software have also led to the emergence of model-driven systems. This idea combines models with automation to find a good balance between the abstract world, tool application, and industrial automation, there should be sustained development in the future. However, building blocks like civilian software production still takes time, because it requires the industrialization level of the whole world to reach a new level.
4.4 platform related and irrelevant
In a world of population-based and industrialized computers, platform-related and platform-independent technologies will continue to develop, but it is foreseeable that in order to meet the needs of networking and automation, the technology of platform independence and Component Reuse will be greatly improved, and the great idea of High Cohesion and low coupling will always run through.
4.5 Garbage disposal project
The faster the development of human and software technologies, the faster the generation of knowledge garbage, and the stronger the demand for screening valuable data from massive garbage. Therefore, in the future world of software and software engineering, there may be a spam project to help humans intelligently search and filter knowledge and classify and process valuable spam data.
AI after 4.6
The development of computer and software appeared to have encountered an irreconcilable conflict after entering the stabilization period. First, the industrialization characteristics of computer require high stability and regeneration of software, the software life is eager for the software to have good self-learning and mutation capabilities, and the two have a certain degree of conflict.
It is gratifying that the current population changes in the computer and its software world can better solve this contradiction. Like in the biological world, low-level organisms have good stability and regeneration, while high-level sexual reproduction organisms have good variability and self-learning capabilities. Industry and Intelligence have found a good balance here.
Looking forward to the future of intelligent computer and software engineering, in addition to achieving a major breakthrough in sexlessness, we can also find several Breakthrough points.
(1) Input and Output projects. In the future, the input and output formats of computers will be greatly enriched. It will be combined with biotechnology, the virtual world of the network, and other industrial products, it is possible to create a new cross-industry-input and output project.
(2) discrete control. Discrete Control and collaborative work are challenges brought about by the online world. Such control and collaboration also include communication and cooperation between different layers in a population-based computer world.
(3) fuzzy calculation. In terms of accurate computing, computer systems have come to a new height, while in terms of fuzzy computing, computers and their software are still far behind the human brain. This is an important field that remains to be concerned, there is reason to believe that the development of this field can also bring about new changes in the field of software and software engineering.
(4) mutation and self-learning control. Once the software realizes self-Variation and has the self-learning ability, how to create a mechanism to control the variation and self-learning will become an important topic in a benign direction.
4.7 computer art and consciousness Engineering
As the pace of human beings gradually increases,As computers gradually enter everyone's life and create a virtual and network world, the art forms that have continued for thousands of years are gradually changing. In the future, when a life-like world that runs through human consciousness gradually becomes more powerful, art will also change, new pursuits of "beauty" and new ways of communication between consciousness and thoughts, this will eventually lead to a huge change in the art world. How to present new artistic forms, how to grasp the awareness of computers, and how to effectively realize the communication between people and computers will become an important topic in the future.
4.8 next God
If human development is fortunate enough to escape the Class D model in 1.2, it is entirely possible for humans to place themselves in the role of a new God and create another new computer world. According to the current human development trend, network technology has helped humans open up a new breakthrough. Biotechnology and intelligent computers should be the next breakthrough point after network technology becomes a bottleneck. In the sci-fi world, there are independent consciousness robots. The three principles of robots and the singularity of drastic changes should be something that follows.
An interesting phenomenon is that when humans raise their self-life cycle from the age of 15 in primitive society to the age of 65, humans have shortened the development cycle of society as a whole from a hundred years to decades, in the future, humans may witness several or even dozens of drastic changes in society throughout their lives.
Conclusion
Through the analysis of the history of human development, we found out the specific laws of human development, and applied the chain principle to the prediction of software and software engineering.
Further compare the evolution history of the computer world and the biological world to find out the similarities and differences between them and their inherent laws. The subsequent induction and Analysis of Software Engineering Development further verified these potential laws.
Finally, seven predictions for the future of software and software engineering can help and promote the research and development of software and software engineering.
Contribution
1. Roger S. Pressman. Software Engineering: a practitioner's approach, six edition, 2005
2. Frederick Phillips Brooks, Jr. The Mythical man-month, 1995.
3. Stephen R schach. Object Oriented and classical software engineering, 2005.
4. Alistair Cockburn. Agile Software Development, 2000
5. Kent Beck. Extreme Programming explained: embrace change, 2000
6. Bertrand Russell. A History of Western philosophy, 1945
7. Roger Lewin. Human Evolution: an unsupported strated introduction, 2005
8. Wikipedia. History of programming ages, 2009
9. Ulf hashagen. History of Computing: Software Issues, 2002
10. Tetsuo tamai, yohsuke torimitsu. Software lifetime and its evolution process over generations, 1992
11. Timo Olavi vuorisalo, Pia Kristina mutikainen. Life History Evolution in plants, 1999