Engineering without limits The surprisingly unconstrained nature of software and its production; dangers and exploitable advantages. Laszlo A. (Les) Belady IWFST2005 Shanghai 2005 November 10 1
Motto: “The engineering of Software: a startling contradiction.” (Tony Hoare in the 1980’s.) Recommendation: Much of this presentation could also be useful for managers who are familiar only with traditional (hardware) engineering . 2
Introduction: Unprecedented expansion of computer applications. In the 1940’ great mathematicians and engineers name their creation the “Computer” (with surprising insight, in French it is “Ordinateur”). The first instance of programming was the encoding of numerical analysis, It was tricky only because of limitations of the hardware’s resources. In this period rapid expansion of applications into most human activities is limitless and impacts national economies and international labor. The importance of programming becomes obvious and the naming it “software engineering” in the late 1960’s, elevated it to a profession. Even today we don’t quite understand how to include software in our legal, economic, and social systems that have been established centuries ago. The limitless demand for software and software engineers continues, yet its consequences are mixed. 3
Mutually beneficial and widespread impact in sciences. Cross fertilization with computer sciences: Discrete mathematics Computational linguistics Behavioral sciences, brain research Biology, medicine, healthcare Generally: large scale modeling More… Mutual help between software and hardware engineering: Computer aided design vs. ever better devices Two-way interaction between computer science and biology: Artificial embedded body parts Computer vision based on the human eye, for analog-digital chips and ultra fast cameras 4
Negative consequences of limitless growth. Extreme demand leads to low quality on the market where anything is salable. Example: famous Operating Systems. How much faster could it be made? Unknown. What error frequency is tolerable? Unknown. Whose burden should be the frequent fixes and change-over to new versions? The customer’s. 5
In current practice software is not really designed, (certainly not for easy modification). In established engineering, design is a sequence of choosing the best from among several possible solutions to meet physical and other constraints, some of which are experimental results. The software engineer’s only concern is functional correctness; never mind how his choices result in inefficient performance. No one knows how much better performance could be. Measurements are rare, experiments are never. True story: A large component of a well known operating system was carefully redesigned, ending in an order of magnitude performance improvement. Software is thus engineered without constraints, unlike in other engineering where real world constraints must be dealt with. 6
Steps toward more comprehensive engineering of software, caused by the growing demand for real time and embedded systems . Typical applications in this new domain: process control, portable devices, communications, vehicle control, others. Software engineers must (re)discover time and the three-dimensional world because of applications where running time and physics matter. Software and hardware must be designed together. Software engineers must work tightly with hardware engineers, many alternatives must be examined to arrive at an acceptable solution. This is the beginning of software engineering with new limits. Extended education and enriched computer science research are needed to support these new applications. 7
Education becomes interdisciplinary. Software people should understand hardware; more physics is to be offered beyond computer science courses. Engineering studies should cover electronics, mechanics and system design. Design is done better with application knowledge - selective courses should be offered, for example medical applications. Verbal and written communication is more demanding with multiple disciplines, and this should be considered in the curricula. The already rapid changes in technology are accelerating, so continuing engineering education should be revised and grow in scope and volume. Problem: Balancing specialization and breadth. 8
Future Research. New problems come to appear for constraint-conscious software engineers - practical solutions need better conceptual understanding that could be provided by both university and industrial researchers. ______________________________________________ Two new problem areas where interdisciplinary research already started: Number One problem area in two application groups: A. Packaging in portable devices (for ex. telephony) where weight and size are a problem. B. Construction of huge data centers where cooling is a problem. In both cases energy consumption matters a lot. Every unnecessary data fetch or executed instruction contributes to the problems. 9
(Numer One problem area is on the previous chart.) Number Two problem area: How to preserve for future generations digital information that by itself has limitless life? The problem is caused by the medium on which the information is recorded: magnetic, CD/DVD, etc. that deteriorate with time. The problem is more acute with software than with text and pictures: Software is useless without a decoder. The decoder is another software but ultimately a hardware machine must be involved. But these machines are not only aging, but become discontinued and abandoned. Without decoder the software dies. Its limitless life is over. 10
Software and its engineering is truly limitless in that it has no boundaries around the globe Outsourcing is easiest with software. Talent can be found everywhere and the investment needed is in the human mind: witness the success stories in China and India where no limits are in sight. Many countries systematically grow the number of software engineers. Worldwide, significant experience has been accumulated during the decade and a half of expansion. (Continue on next chart) 11
(Outsourcing continues from the previous chart) Start in the small, with modest programming tasks. Customers prefer maintenance first, “test the waters” about the reliability and the competence of the target organization. In case of success, more sophisticated tasks may follow, and here the sky is the limit. The Indian ambition of doing all phases of large software projects is becoming true. Outsourcing customers have serious concerns about communications: the human kind, and the speed of the internet as medium. Also of concern is the native language and the difference in time zones. Large differences are sometimes considered an advantage because of the possibility of non-stop development. 12
Summary: There is a great deal of difference between the engineering of software and other engineering. In many aspects, the limitless nature of software is striking, yet beneficial, such as its worldwide spread. In other aspects, software’s engineering practice must be more constraint conscious than it has been. END 13
Recommend
More recommend