The Role of Science, Technology, and the Individual on the Way of Software Systems Since 1968

The Role of Science, Technology, and the Individual on the Way of Software Systems Since 1968

DOI: 10.4018/978-1-7998-2142-7.ch001
(Individual Chapters)
No Current Special Offers


The NATO conference held in Garmisch in 1968 was on the future of the computer and software world, and it presented the process of realization of what has been talked about in those dates to the present day. This chapter also examines the development of software systems since 1968, depending on the technological developments. The contribution of mathematics and physics to the development of information systems was explained in chronological order by comparing the possibilities of yesterday and today. Complementary contributions of science and technology have been evaluated in the evolutionary and revolutionary developments ranging from the definition of information theory in 1948 to teleportation. It can clearly be seen that discrete mathematics directly affects the improvements in computer science. This review study clearly shows that it would not be possible to talk about digital transformation and quantum computation if the discoveries of Shannon, Turing and Neumann, and the studies of other scientists before them did not exist.
Chapter Preview


At the NATO conference in Garmisch in 1968, the future of the computer and software world was dealt with. The arguments at the sessions were in preparation for today’s digital world. The conference was held for two consecutive years and software engineering was recognized as an independent discipline. One of the editors of the meeting booklets of today’s software infrastructure, Randel (2018) evaluated fifty years of software engineering. The paper summarizes the development of software engineering as a new discipline. The transfer of conference reports to an electronic platform in 2001 (McClure, 2001) informed the IT industry about the conversations held at the conferences and confirmed that all progress in information technologies and the software sector aligned with previous experiences.

The roles of science, technology, and human beings are all entwined when examined in the context of software engineering. Although all engineering disciplines utilize these three parameters, software engineering differs from others. The resulting software product in this discipline is abstract and is the product or a portion of the product that must entirely be completed. However, in civil engineering, for example, it is possible to open a bridge before the side roads are completed. This example should not be confused with the delivery of the software product to the user in parts. No matter how small a software product is, it is a stand-alone product and must be delivered to the user in a fully operational state. Examples can be increased for all other engineering fields that offer tangible, concrete products. Therefore, software engineering is different from other engineering disciplines because customer satisfaction is most prominent; the software needs to meet the needs of the user. This puts the human factor in the first three criteria. Today's rapidly changing software products require developers to work closely with the customer. In this context, the evaluations of satisfaction and performance for software engineers and software developers are indispensable criteria for this engineering discipline. In fact, the quality of the work performed in most labor sectors has been measured psychologically by scientific studies for a long time. There are many models investigating the relationship between the pleasure of the working environment and quitting the working, and intention not to work. While the intention of a software engineer or a product developer to quit their job is an important risk factor for the company, doing the job willingly is a positive appraisal for the business. In fact, the degree to which an organization's employees are satisfied with the working conditions and the working environment is an indication of how much that organization attaches importance to its employees.

In the first fifty years of software engineering, and by changing over from hardware engineering to software development processes, new techniques were developed and tools were used to deal with the complexity problem. During the evolution of software engineering, advanced engineering principles and complicated mathematical foundations have been applied to solve more complex software problems. While the effectiveness of the developed product was important in the early applications of software engineering, the accuracy and usability of the result (i.e., software) became more substantial as the problems became more complex. Therefore, the contribution of individuals on the product had to increase. Complex, real-world problems led to the development of reusable products, and new development tools and methods have emerged as a result. However, since these tools solve increasingly complex problems and are designed according to the scope of human capabilities, the success in producing solutions with today's new technologies will guide the solution of complex systems in the future. Therefore, the integration of software engineering with system engineering and the cognitive psychology highlighted by human factors have important roles in overcoming the problems of today's engineering world. On the other hand, it is also necessary to consider the extent to which it is appropriate to use technological developments and important revolutions in solving current and future problems. Many of the negative conditions that can be caused by the modern world, especially security, are important issues that engineers must consider.

Key Terms in this Chapter

Software Conceptualization: During the elicitation of software requirements analysis, the customer's requirements are defined by visual diagrams or formal specifications (e.g., by the logic of first-order propositions, at the high level). An abstract solution closer to the customer side is realized. The design phase of the software visualization and the functional analysis of the previous development step are carried out in detail. Conceptualization at the design phase is closer to the implementation of the product.

Agile Methodology: It is an exciting and fascinating approach to software development. The agile process breaks a larger software project into several smaller parts that can be developed in increments and iterations. The purpose is to deliver a working software program quickly to the customer. The agile hierarchy in an agile team is based on competence, not authority. All members constantly explore ways to add more value to the customer. When compared with traditional methods, agile projects qualify that they are better in terms of overall business value, higher in quality, less costly, more productive, and show quicker time-to-market speeds. Lean, Kanban, Crystal, Extreme Programming (XP), Dynamic Systems Development Method and Feature-Driven Development are a few of the agile methodologies.

Ontology: In computer science, ontology is a formal representation of the knowledge by a set of concepts within a domain and the relationships between those concepts. The domain is the type of objects, and/or concepts that exist and their properties and relations. The creation of domain ontologies is the fundamental of the definition of any enterprise framework. Every information system has its own ontology. Software agents can communicate with each other via messages that contain expressions formulated in terms of an ontology. It is important to use an ontology for the connection with the user interface component. The user browses the ontology to better understand the vocabulary and to formulate queries at the desired level. Application programs containing a lot of domain knowledge may not explicitly store information in the database for various reasons. In this case, it is possible to constitute a knowledge base by an ontology.

Hegelian Approach: This approach depends on dialectics. The dialectical method is a discourse between two or more people holding different points of view about a subject but wishing to establish the truth through reasoned arguments. Hegel (1771-1831) defined four concepts: (1) everything is finite and exists in the medium of time, (2) everything is composed of contradictions, (3) one force overcoming its leads to crisis, and (4) change is periodic without returning to the same point.

Incompleteness: Kurt Gödel wrote the incompleteness theorems in the 1930s. They are still valid as the subject of several of today’s discussions and will continue to be effective in the future. These theorems show that any logical system consists of either contradiction or statements that cannot be proven. Therefore, they help to understand that the formal systems used are not complete. On the other hand, the trend of mathematicians in the 1900s was the unification of all theories for the solution of the most difficult problems in all disciplines. Before Gödel defined any system as consistent without any contradictions, and as incomplete with all or some disproved statements, Hilbert formulated all mathematics in an axiomatic form with Set Theory. Gödel’s theorem showed the limitations that exist within all logical systems and laid the foundation of modern computer science. These theorems caused several results about the limits of computational procedures. A famous example is the inability to solve the halting problem. A halting problem finds out whether a program with a given input will halt at some time or continue to run into an infinite loop. This decision problem demonstrates the limitations of programming. In a modern sense, this means that it is impossible to build an excellent compiler or a perfect antivirus.

Complete Chapter List

Search this Book: