AccessMyLibrary provides FREE access to millions of articles from top publications available through your library.
Though there have been advances in end-user programming, complex applications still need professional developers. This inspired look at the future of creating complex software explores the shift from programming environments to design environments, discussing environments that help developers satisfy end-users' cognitive needs and help deal with contextual issues such as the aesthetic, practical, and social properties of the application and the users. A strong case is made that design environments will need to provide robust support for communication between developers and end users.
As the field of programming has matured over the years, attention has shifted from the program to the programmer - from the logical and computational structure of algorithms to the cognitive structures of the people who produce them. Innovations such as interactive programming environments, object-oriented programming, and visual programming have not been driven by considerations of algorithm efficiency or formal program verification, but by the ongoing drive to increase the programmer's effectiveness in understanding, generating, and modifying code.
This special section of Communications clearly reflects this shift of emphasis from machines to people, exploring the cognitive aspects of programming languages and environments. This article moves to broaden the view still further: from programming to design. It does not focus on cognition or on programming, but on the wider picture of software design and the larger environment, which goes beyond the standard tools of the programmer's trade.
The first part of this article portrays the evolving field of software design, and its relationships to the traditions of programming, analysis, and design that have served the computer field throughout its history.
The second part relates the concerns that are highlighted in software design to traditional approaches in programming and programming environments. It draws analogies between four specific aspects of current programming environments and four corresponding aspects of environments for software design. As with most analogies, the results are intended to be suggestive, not rigorous. Starting with the cognitive aspects of well-understood programming tools, we can get insights into the demands for an environment that will support the ongoing development of computer software in a rapidly changing industry.
In his widely read Software Design, Manifesto a few years ago , Mitchell Kapor bemoaned the fact that "Despite the enormous outward success of personal computers, the daily experience of using computers far too often is still fraught with difficulty, pain, and barriers for most people....The lack of usability of software and poor design of programs is the secret shame of the industry."
These are strong words to throw into the face of a multi-billion dollar industry that by all standard measures must be doing things right. But Kapor is highly respected as the founder of Lotus Software and the designer of Lotus 1-2-3, the "killer app" that gave a major impetus to the whole microcomputer industry. His concerns have resonance among many people who work with software. Although the unprecedented power of computing systems makes them highly useful, there is a big gap between what we see in most products today and what could be done to make them really usable. This becomes more pressing as we begin to reach beyond the current applications to new audiences and new ways of taking advantage of computation in people's lives.
In the last few decades the computing profession has matured from its early days, when ingenuity was required at every turn to make programs work at all. Today we are part of a major industry in which the expectations for successful programming constantly increase. Software designers today have the opportunity (and necessity) of moving to a broader view of what they need to achieve, because of the tremendous successes of computing.
We are now entering a new phase of computer product development, which can be understood as a step in a history of technological maturity that has beth repeated for many new technologies, such as the radio, the automobile, and the telephone:
Phase 1) Technology-driven. In the first phase, a new technology is difficult to employ, its benefits are not yet obvious, and its appeal is mainly to those who are fascinated with it for its own sake - the "early adopters." We find clubs of enthusiasts who love to share stories about how they fought the difficulties and overcame them. The general public is seen as not having sufficient understanding or merit to really use the new inventions. Ham radio is a good example of a technology that was adopted by a small but dedicated group in the technology-driven stage. In the same vein, the legends of Silicon Valley include many stories of the early computer days and the brave pioneers who tackled the Altair or the Osborne.
Phase 2) Productivity-driven. In the second phase, the economic benefits of using a technology are developed to the point where people in industry and business will adopt it for practical uses. The measure is in the bottom line - not whether the technology is fascinating or easy to use, but whether it can be shown (or at least believed) to produce greater efficiency, productivity, and profits. The use of radios for truck and taxi dispatch, police, and military communication falls into this class, as do most of the major microcomputer applications sold today. Spreadsheets, word processors, databases, desktop publishing, and a host of other applications have been sold as tools to increase the productivity and competitiveness of companies that buy and use them. Design considerations are measured primarily in the realm of cost-effectiveness. If better design can speed up use, cut training time, or add to efficiency in another similar way, then it is important. If it cannot produce a measurable difference in one of these dimensions, then it is a "frill."
Phase 3) Appeal-driven. In the third phase, a maturing technology reaches a wide audience of "discretionary users" who choose it because it satisfies some need or urge. The emphasis is not on measurable cost/benefit analyses, but on whether it is likable, beautiful, satisfying, or exciting. The market attractiveness of a product rests on a mixture of its functionality, its emotional appeal, fashion trends and individual engagement. CB radio and cellular phones for personal use are examples of radio technology in this third product phase. Computer games have been there since the beginning, and an increasing portion of computer use is shifting to the consumer end of the spectrum. The huge new markets of the future - the successors to the productivity …