1、附录 A Software and software engineering -the software appearance and enumerates As the decade of the 1980s began, a froint page story in business week magazine trumpeted the following headline:” software:the new driving force.”software had come of ageit had become a topic for management concern.durin
2、g the mid-1980s,a cover story in foreune lamented “A Growing Gap in Software,”and at the close of the decade,business week warned managers about”theSoftwareTrapAutomate or else.”As the 1990s dawned , a feature story in Newsweek asked ”Can We Trust Our Software? ”and The wall street journal related a
3、 major software companys travails with a front page artile entitled “Creating New Software Was an Agonizing Task ” these headlines,and many others like them, were a harbinger of a new understanding of the importance of computer software - the opportunities that it offers and the dangers that it pose
4、s. The context in which software has been developed is closely coupled to almost five decades of computer system evolution. Better hardware performance,smaller size and lower cost have precipitated more sophisticated computer-based systems. Weve moved form vacuum tube processors to microelectronic d
5、eviced that are capable of processing 200 million 包含 uctions per second .In popular books on “the computer revolution,”Osborne characterized a “new industrial revolution,” Toffer called the advent of microelectronics part of “the third wave of change” in human history , and Naisbitt predicted that t
6、he transformation from an industrial society to an “information society” will have a profound impact on our lives.Feigenbaum and McCorduck suggested that information and knowledge will be the focal point for power in the twenty-first century, and Stoll argued that the “ electronic community” created
7、 by networks and software is the key to knowledge interchange throughout the world . As the 1990s began , Toffler described a “power shift” in which old power structures( governmental,educational,industrial,economic,and military) will disintegrate as computers and software lead to a “democratization
8、 of knowledge.” 20th century 60s70 age Traditional software engineering 1980s intermediate stages Objct project At the end of 1980s Software process project 1990s Component project FIGURE 1.1 Evolution of software. Figure 1.1 depicts the evolution of software within the context puter-based system ap
9、plication areas. During the early years of computer system development, hardware underwent continual change while software was viewed by many as an afterthought. Computer programming was a seat-of-the-pants art for which few systematic methods existed. Software development was virtually unmanaged-un
10、til schedules slipped or costs began to escalate. During this period, a batch orientation was used for most systems. Notable exceptions were interactive systems such as the early American Airlines reservation system and real-time defense-orientedsystems such as SAGE. For the most part, however, hard
11、ware was dedicated to the utionof,a single program that in turn was dedicated to a specific application. During the early years, general-purpose hardware became commonplace.Software,on the other hand,was custom-designed for each application and had a relativelylimiteddistribution.Product software(i.
12、e.,programs developed to be sold to one or more cunstomers) was in irs infancy . Most software was developed and unltimately used by the same person or organization. You wrote it, you got it running, and if it failed, you fixed it. Because job mobility was low, managers could rest assured that youd
13、be there when bugs were encountered. Because of this personalized software environment, design was an implicit process performed in ones head, and ation was often nonexistent. During the early years we learned much about the implementation of computer-based systems, but relatively little about compu
14、ter system engineering .In fairness , however , we must acknowledge the many outstanding computer-based systems that were developed during this era. Some of these remain in use today and provide landmark achievements that continue to justify admiration. The second era of computer system evolution (F
15、igure 1.1) spanned the decade from the mid-1960s to the late 1970s. Multiprogramming and multiuser systems introduced new concepts of human-machine interaction. Interactive techniques opened a new world of applications and new levels of hardware and software sophistication. Real-time systems could c
16、ollect, analyze,and transform data form multiple sources, thereby controlling processes and producing output in milliseconds rather than minutes. Advances in on-line storage led to the first generation of database management systems. The second era was also characterized by the use of product softwa
17、re and the advent of software houses. Software was developed for widespread distribution in a multidisciplinary market. Programs for mainframes and minicomputers were distributed to hundreds and sometimes thousands of users. Entrepreneurs from industry, government, and academia broke away to develop
18、 the ultimate software package and earn a bundle of money. As the number of computer-based systems grew, libraries of computer software began to expand. In-house development projects produced tens of thousands of program source statements. Software products purchased from the outside added hundreds
19、of thousands of new statements. A dark cloud appeared on the horizon. All of these programs-all of these source state ments-had to be corrected when faults were detected, modified as user requirements changed, or adapted to new hardware that was purchased. These activities were collectively called s
20、oftware maintenance. Effort spent on software maintenance began to absorb resources at an alarming rate. Worse yet, the personalized nature of many programs made them virtu ally unmaintainable. A software crisis loomed on the horizon. The third era of computer system evolution began in the mid-1970s
21、 and continues today. The distributed system-multiple computers, each performing functions concurrently and communicating with one another- greatly increased the complexity of computer-based systems. Global and local area networks, high-bandwidth digital communications, and increasing demands for instantaneous data access put heavy demands on software developers.