CIS
732 Fall
2000
12/18/2000
Table of Contents
Cognitive Walkthrough (Norman’s Model)
Software
customers / users usually find it very hard to express their real requirements
and it is almost impossible to predict how a system will actually be used and
how it will interact with other systems in the user’s workspace. Careful
requirements analysis along with systematic review of the requirements helps
reduce the uncertainty of what a system should do but there is no real
substitute for trying out a requirement before committing to it. This is
possible if a prototype of the system to be developed is available.
Prototyping
is a development approach used to improve planning and execution of software
projects by developing executable software systems (prototypes) for experimental
purposes. It is very suitable for gaining experience in new application areas
and for supporting incremental or evolutionary software development.
Prototyping
has many objectives including evaluation of the design, functionality and user
interface. This report will be focusing on the user interface aspect with some
linkage to the functionality. A function defined in the specification may seem
useful and well defined but when the users finally try to use the application
they find that their view was incorrect. Prototypes thus let user validate and
evaluate their requirements and thus users can discover requirements omissions
early in the process. Rapid Application Development Methodology uses development
of the prototypes by the software team, working closely with the users in the
requirements identification phase. Then these prototypes are either discarded
(throw away prototypes) or enhanced (evolutionary prototypes) into production
systems.
In the last decade the biggest development has been the advent of the Web based applications where development times are short, large amount of functionality a must and the user interface critical. Prototyping techniques have been adapted to serve this purpose and there is a portion of this report that will be focusing on the Web Applications.
Thompson,
Wishbow [1992] state that rapid prototyping allows members of the development
team to confirm whether the product interface (this can include its online
documentation) can be easily learned and used. Goals for rapid prototyping
include:
A
methodology [Purtilo, Larson, Clark. 1991] that can be used for development of
prototypes is:
Often
the prototyping phase is considered as a part of the requirements gathering
phase and are outsourced to a vendor (external / internal) and then bids are
gathered for the development of the production system.
There
are three types of prototypes [Sommerville, 1995] –
Throwaway
prototypes essentially use prototypes to clarify functional / user interface
requirements and also help the managers identify any potential risks. Once the
prototype is evaluated and the requirements updated the prototype is discarded
and the development starts afresh. The main problem faced in this approach is
when the management is tempted to take the prototype and enhance it into the
real application. I actually have seen this in my professional life and this can
lead to problems like – uncontrolled changes during the prototyping stage,
design compromises while adding new features and missing features like security,
performance & reliability at base levels. Since the prototype is not the
final product the cost of iterations should be kept well in control because of
the tendency of the development team to go into too many details of the
application and then tempting to reuse some of that application in the final
product.
Evolutionary
prototyping is based on developing an initial application and then iterating
through multiple user evaluations and improvements. The important aspect of this
is that the application has to be written in an environment that allows such
development. A good language for such application development would be Visual
Basic or Powerbuilder. The important aspects are that the design should be
updated thoroughly at every iteration to avoid any possibility of compromises
being introduced in the application.
Incremental development is the methodology where each delivered production software is taken as a prototype and after the evaluation by the users the changes and suggested and incorporated in the next release. This is a useful in the environment where the development cycles are small and the user group is anxious to get some functionality for being able to work. The main drawback in this methodology is that the system architecture needs to be determined initially and any changes to the architecture could lead to compromises in the application robustness/reliability.
Baumer,
Bischofberger, Lichter, Ziillighoven [1996] concluded that:
Another
way of looking at prototypes is [Wiegers, 1996] –
A
horizontal prototype consists of a superficial layer of a user interface,
revealing the parts of the system that the user will see with little underlying
functionality. Such a prototype could be equated with a movie set with realistic
street scenes with two by fours holding up the street fronts. Reason of creating
a horizontal prototype include exploring interface styles, determining if
adequate functionality has been planned for, assessing usability and identifying
required navigation paths between different parts of the application. This
application actually goes down to level of detail necessary for being able to
give the users accurate information for being able to evaluate the user
interface and navigational parts.
A
vertical prototype consists of a complete slice of functionality for a limited
portion of the whole system. Such prototypes are useful for validating design
approaches and exploring alternative architectures for high-risk projects. For
example a vertical prototype of an application might actually take a
functionality and implement the user interface, middle layer (network
communication) and some of the functionality of the backend databases. Once the
soundness of technical approach is established the rest of the application can
be developed.
Paperboard
prototypes [McConnell, 1998] are an approach that is very useful for developing
early understanding of the user interface requirements. In this approach the
developers or the end users can start by developing pictures of the screens,
dialogs, toolbars and other elements they would like the user interface to have.
Developers and users meet in groups and draw simple screens on flip charts. The
work involves redrawing the prototypes on the flip charts until the users and
developers agree on the systems appearance and functionality.
This
approach offers several advantages –
Paperboard prototypes also eliminate some of the most common risks associated with prototyping. On the developer side, they eliminate the need of unnecessarily overextending the prototype and of spending too much time fiddling with the prototype tool. On the user side the paperboard prototypes eliminate the risk of the users thinking that the prototype is the finished product.
One
disadvantage of the paperboard prototype is that some developers and users
simply can’t visualize the software on the paper mockups. This is a strong
disadvantage since the essence of the prototypes is to help users visualize the
finished product and if in a development effort it becomes apparent that there
are cognitive gaps between the understanding of the paper prototypes between the
developers and users then this approach should be abandoned and the effort
should begin on software prototypes.
Stary
[2000] talks about developing prototypes using the context of use of the
application. The contextual development differs from traditional user interface
development:
The
understanding of end users and their organization of work require a conceptual
framework of context-sensitive components of interactive systems. The TADEUS
framework puts the following components into mutual context:
A
novel representation an interpretation scheme allows in TADEUS to integrate
different perspectives (including the application context) through semantically
linked models. In addition, the specification of the entire application can be
executed for prototyping purposes. Another novelty concerns the relations
between elements of the models and between the models. They are automatically
checked at a high level of operational semantics with the help of a series of
algorithms. In addition, the software architecture of the environment is open to
embed existing specification techniques and interaction platforms and also
generating frameworks and code.
Prototypes evaluation is
a critical part of the prototyping process and there are two parts of prototypes
evaluation - User evaluation and Expert Evaluation. There are many User
evaluation techniques including surveys, focus groups, application usage
feedback, ethnography observations etc. One of the most effective methods of
user evaluation of prototypes is – Protocol Analysis.
Protocol
Analysis [Turoff, Michie] is one of the most effective methods for assessing the
usability of an information system and for targeting aspects of the system,
which should be changed to improve usability. The central part of protocol
analysis is the complete recording (in written, audio, and/or video form) of the
interaction of a user with a system, while that user "thinks out loud"
in order to allow the recording of his or her perceptions, reasoning, and
reactions to the system. The analysis is then provided by the researcher, who
examines a number of these cases and reaches conclusions about aspects of the
system that cause problems for users.
Protocol Analysis requires only six to eight such recorded observations in order to reach conclusions, and the procedure may be completed in a week or less, start to finish. This gives it great advantages over methods such as surveys and experiments, which generally require a hundred or more subjects, and can take weeks, months, and even years to complete. For a relatively small amount of effort, a designer can quickly discover any basic flaws in the design and has considerable chance of exposing more subtle problems.
The technique of
Protocol Analysis includes the following steps –
·
Identification
of the Subjects: The appropriate subjects have to be selected from the user
group. The focus is on getting a fair representation of all the user groups who
will be using the application and there should also be an attempt to get at
least three subjects of each group to eliminate any sampling errors. Since
protocol analysis is conducted with each iteration of the prototype it would be
desirable to get different people involved in every phase.
·
Identification
of Task: Central to protocol analysis is the task to be performed. The task
could range from gathering user thoughts on the screen shots to actually having
them use a system that has implemented the entire interface without much of
underlying functionality. The objective once again is to get each group to
interact with the aspects of the system that most impact them. Some problem
areas could be included for multiple groups.
·
Instructions
to Users: Users should be given good instructions including the assurance that
the exercise is on the evaluation of the system and them. Often the users are
afraid to speak their mind and their fears should be allayed.
·
Execution
of Protocol Analysis: In this step the users actually go through the steps
identified in the task sheet and they are asked to “think aloud” as they
perform their task and are recorded. Instead of Audio/Video recording sometimes
the analyst just takes notes since the recording could be influencing some
subjects
·
Post Task
Interview: Subjects are interviewed at the end of the task and are asked
specific questions about different choices that they made. They are also asked
to fill a survey that gathers details on different aspects of the design.
·
Analysis:
Finally the designers take all the data and try to identify patterns in the
problems faced by the users. Also each transcript is reviewed to see if some
specific misunderstandings exist.
Protocol
Analysis is a technique that can be adapted to suit the individual organizations
and the cost savings in terms of future redesigns and usage of new applications
usually outweigh the expenses of conducting the experiments.
Rizzo,
Marchigiani, Andreadis [1997] explored conducting cognitive walkthrough based on
Norman's model of action. The Cognitive Walkthrough is a task based inspection
method widely adopted in evaluating user interface. It consists of stimulating a
user interaction with the system. The Norman’s model of human action provides
a sound yet simplified theoretical framework of design and evaluation. It allows
the definition of some basic cognitive steps in the analysis of human
interaction with artifacts. The model describes five states (goal, intention,
action, perception, evacuation) and three distances:
The
subjects were asked to walk through the applications and then they were asked to
fill a questionnaire that was designed to measure the various distances and that
let the designers understand some of gulf of execution in their mental models
and users mental models.
Prates,
Barbosa and de Souza [2000] propose a method of communicability evaluation is a
method based on semiotic engineering that aims at assessing how designers
communicate to users their design intents and chosen interactive principles, and
thus complements traditional usability evaluation methods. Semiotic engineering
perspective is that user interfaces are perceived as one-shot, higher-order
messages sent from designers to users. The authors claimed that the degree to
which a user will be able to successfully interact with an application and carry
out his tasks is loosely related to whether he understands the designers'
intentions and the interactive principles that guided the application's design.
The
process that was defined for this included the following steps:
The
communicability method not only identifies problems, but also gives the designer
hints to a solution. The utterance category narrows down the possible causes of
the problem and the tagged pieces frequently provide the designer with evidence
of the users intuitions about a solution. By identifying interface elements
whose meaning users were unable to grasp (missing of affordance) the designer
may choose to represent those elements differently.
Expert
Reviews [Scneiderman, 1998] on the other hand are usually conducted on
prototypes before they are released for evaluation by the users. The objective
is to fix some basic design issues even before the users identify them. It is
necessary to have experts from outside the design team since the peer reviews
usually don’t identify as many problems as the expert reviews do. Nonetheless
the experts should be instructed to keep the egos and confidence of the design
team in perspective and help improve the design and not just criticize the
design. Some of the methods used for expert reviews are –
Expert
reviews are very useful in the early stages of prototype development and can
help significantly reduce the prototype iterations required before the users
sign-off on the design/interface.
User
participation is central to the process of prototyping. Users are expected to
commit as much to development of the prototypes as the software development
team.
Bowers,
Pycock [1994] did a study of multiple transcripts user-designer design process
and made the following observations:
Harker
[1993] did a study of a large distributed system development and reported three
issues relating to the use of prototyping as a part of user centered strategy
are worth considering.
Millen
[2000] introduced "rapid ethnography" which is a collection of field
methods intended to provide a reasonable understanding of users and their
activities given significant time pressures and limited time in the field. The
core elements include limiting or constraining the research focus and scope,
using key informants, capturing rich field data by using multiple observers and
interactive observation techniques, and collaborative qualitative data analysis.
It
has been argued that there has been a common misunderstanding among HCI
professionals about the analytical nature of ethnographic research. While often
misconstrued as simply a method of field data collection, ethnography is rather
form of analytic reportage, with the ethnographer acting as a translator or
cultural broker between the group or culture under study and the reader.
Many
of the concepts from the rapid appraisal methods mentioned above are useful in a
discussion of ethnographic methods for HCI professionals. Rapid ethnography, as
described below, grew out of field research experience on a number of different
projects, and is based on three key ideas:
There
are several examples of rapid HCI methods. The most widely known would be the
class of techniques that collectively support rapid prototyping of new
interfaces. This includes requirements gathering end of the development process,
streamlining user modeling and usability testing. The use of ethnographic
methods in various parts of HCI development will continue to grow. Understanding
the context of the user environment and interaction is increasingly recognized
as a key to new product/service innovation and good product design. Undoubtedly,
the time pressures and constraints for HCI design teams will continue to
increase. Practical use of ethnographic methods, therefore, depends on whether
the methods can be adapted successfully to provide useful information in a
timely fashion.
"Experience Prototyping" [Buchenau, Suri. 2000] can be described as a form of prototyping that enables design team members, users and clients to gain first-hand appreciation of existing or future conditions through active engagement with prototypes. Experience is a very dynamic, complex and subjective phenomenon. It depends upon the perception of multiple sensory qualities of a design, interpreted through filters relating to contextual factors. Experience Prototyping can valuable for three different kinds of activities:
People's
experiences with products and systems are a complex integration of personal and
circumstantial factors. People will have experiences with the prototypes that
the designers cannot hope to predict entirely. Nevertheless, understanding,
exploring and communicating the experiential aspects of design ideas are central
activities in design. Experience Prototyping, while it creates only approximate
and partial simulations of the real experiences others will have, brings a
subjective richness to bear on design problems.
A
number of prototyping techniques have evolved over the past decade. Static
prototyping, also called low-fidelity prototyping, relies on mockups,
storyboarding and paper and pencil strategies. This is followed by dynamic or
high fidelity prototyping with the construction of the actual interface using
User Interface Builders. The various manufacturers as well as windowing systems
come with user interface design guidelines as to how to make the system
user-friendlier. These builders also generate programs for the user interface
layer, which can directly be integrated with application, and data layers. [Turoff,
Michie]
There
are several types user interface prototyping tools. There are four basic types
of prototype tools [Baumer, Bischofberger, Lichter, Ziillighoven. 1996] –
Development
of hypermedia is a complex matter. The current trend toward open, extensible,
and distributed multi-user hypermedia systems adds additional complexity to the
development process. As a means of reducing this complexity, there has been an
increasing interest in hyperbase management systems that allow hypermedia system
developers to abstract from the intricacies and complexity of the hyperbase
layer and fully attend to application and user interface issues. Design,
development, and deployment experiences of a dynamic, open, and distributed
multi-user hypermedia system development environment called Hyperform were
presented by Wiil & Leggett [1997].
Hyperform
is based on the concepts of extensibility, tailorability, and rapid prototyping
of hypermedia system services. Open, extensible hyperbase management systems
permit hypermedia system developers to tailor hypermedia functionality for
specific applications and to serve as a platform for research. The Hyperform
development environment is comprised of multiple instances of four component
types: (1) a hyperbase management system server, (2) a tool integrator, (3)
editors, and (4) participating tools. Hyperform has been deployed in Unix
environments, and experiments have shown that Hyperform greatly reduces the
effort required to provide customized hyperbase management system support for
distributed multi-user hypermedia systems.
Hypermedia
systems pose several difficult data management problems. Most of these
ultimately can be derived from the fact that hypermedia is a complex amalgam of
information, structure, and behavior. Five broad categories of issues must be
addressed in future HBMS work:
Mercifully,
there are a plethora of hypermedia development tools which though not as complex
as Hyperform are commercially available and can be tailored to support any level
of requirements of the users.
Interface
development tools are essentially of two types – Drawing Applications and Web
interface development tools.
Some
of the applications that allow drawing the interface include applications like
Microsoft Paint (included in windows), Microsoft Word / Microsoft PowerPoint
(available in the MS Office suite) and Visio (from Microsoft). These are common
applications and the user community is usually very well trained in these tools
and can draw the interfaces on their own. The shortcoming of these tools is that
they are not intended for interface design and it might actually be worth a
while to train some of the user community on the advanced interface design
tools.
Web
Interfaces can be implemented using applications like Microsoft FrontPage and
Macromedia Dreamweaver which though not an advanced hypermedia management tools
are sufficient for designing web application interfaces. Along with these tools
there is also a need to use advanced graphics packages but those don’t come
into play until the final prototypes are being delivered.
There
are many commercial 4GS tools from different vendors. Two of the more popular
tools are Microsoft Visual Basic and Powersoft Power Builder (from Sybase).
These are tools that allow interface design for Windows using different user
interface objects / widgets and have plenty of add-ons available that can help
suit these applications for special environments.
These
applications have excellent usability and can be used for both prototyping and
development. The problem is that often there is a temptation to take the
prototype (which has undergone multiple uncontrolled changes which have
compromised the design) and develop it into a production system.
These
are commercial application frameworks that allow drag and drop development of
applications from widgets. One of the examples of these is the Java Beans
Development kit (Sun). There are also other applications being used for research
like JWeb [Bochicchio, Paiano. 2000].
There
are other object oriented tools that though not quite suitable for prototyping
are sometimes used for prototyping. These include Java Builder (Borland), Visual
Café (Symantec), Visual C++ (Microsoft) and Visual Age (IBM).
Schmucker
[1996] reports that there are visual programming tools available that:
There
are many shortcomings of the current prototyping tools.
Tscheligi [1995] reports the following shortcomings in the current
interface design tools:
Muñoz,
Miller-Jacobs [1992] state that often prototyping efforts concentrate only on
the UI aspects of a software product. In many cases, the UI is designed and
implemented separately from the "functional core" of an application.
However, the whole functioned process, not just the “look and feel” of the
UI, determines usability. Prototyping tools would be more useful if they allowed
prototyping of the functional parts along with the UI. User interfaces must be
designed on the screen rather than on paper. The only way to see how elements
interact is to see them interact. How else can users make wise decisions about
the complexities of color, layout, icons, typography, windowing, interaction
dynamics, and design integrity. It is simply not possible to design a
competitive user interface without powerful prototyping tools from the start.
Web
Applications are really no different than the regular application with the
difference being that the user base is usually much bigger and user interface
flaws can have significant impacts on the e-business aspirations of the
organization. Secondly, the development cycles are usually very small and the
evolutionary prototyping technique is very appropriate for web applications.
Design of large web sites can be a very complex task if not supported by a suitable theoretical model. A good structural model, in fact, is able to precisely define the information of this kind of multimedia applications and the related patterns. Moreover, through a good design model the designer is able to precisely formulate his/her ideas, discuss them revise them, without actually starting any implementation. The modeling activity necessarily implies rough initial ideas, revisions, versions, etc. For these reasons a design supporting environment, allowing the modeler to be effective and precise, is essential.
There
are several reasons why an environment supporting design/prototyping, and not
necessarily implying implementation, is useful [Bochicchio, Paiano. 2000]:
· Visual Communication bandwidth: One of the biggest problems for deriving an actual implementation from a design, is the need to implement, for sophisticated applications, high visual communication bandwidth, consisting of complex graphic objects, special effect, animations, local interactions, etc.
The
JWeb [Bochicchio, Paiano. 2000] system is an extremely modular and flexible
design environment and does not follow strict procedural guidelines. It is a
design environment with fast prototyping capabilities with the following
features:
There
are some general rules for designing prototypes for web applications [Nielsen,
Wagner. 1996] [Heller, Rivers. 1996]
The
benefits of developing the prototypes early in the software process include
(taken from [Sommerville, 1995]) –
Prototyping
can lead to reduction in the expectation gap [Wiegers, 1996] with every
iteration of the prototype. Expectation gap is the difference in what the
develop builds and what the customers expect. During the first prototype
evaluation there is usually a large expectation gap but with each iteration it
reduces and finally there will be harmony in what the users and expecting and
the developers are building. The expectation gap can be expressed as both
functional and user-interface differences.
Prototypes
should lead to user excitement and desire of the product [McConnell, 1998]. The
first version of the prototype will rarely get the users excited but the
developers should encourage the users to give feedback for the revision of the
prototypes and let them know that their feedback will be considered in the
redesign. Refining the prototypes until the users are excited about it supports
the creation of the software that will ultimately be highly satisfactory rather
than the software that will merely “satisfy requirements”. It might seem
like a large effort is being spent on something that will eventually get thrown
away but this upstream activity is a good investment in avoiding costly
downstream problems.
Baumer,
Bischofberger, Lichter, Ziillighoven [1996] reported that the benefits that
arise from applying prototyping to acquire information about feasibility, market
interest or to gain experimental experience have been recognized and actually
some of their investigated projects did not even have a target system as a major
goal.
Verner,
Cerpa [1997] did a survey of
Australian companies and concluded the following benefits for prototyping based
development over waterfall development:
There
is no doubt about the value of prototyping in development of user interface.
Some of the important rules for prototyping include:
Some
of the current research includes:
Particularly,
the new tools that are being developed will reduce the time and cost expense of
prototyping and will lead to more and more use of the prototyping techniques and
perhaps lead to highly automated prototyping methodologies.
[Baumer,
Bischofberger, Lichter, Ziillighoven. 1996] User Interface Prototyping -
Concepts, Tools, and Experience. IEEE Proceeding of ICSE-18. 1996.
[Bochicchio,
Paiano. 2000] Prototyping Web Applications. Mario Bochicchio & Roberto
Paiano. SAC, ACM. 2000.
[Bowers,
Pycock. 1994] Talking through design: requirements and resistance in cooperative
prototyping. John Bowers and James Pycock. Conference on Human Factors and
Computing Systems. Proceedings of the CHI '94 conference companion on Human
factors in computing systems. April 24 - 28, 1994, Boston United States
[Buchenau,
Suri. 2000] Experience prototyping. Marion Buchenau and Jane Fulton Suri.
Symposium on Designing Interactive Systems. Proceedings of the ACM conference on
Designing interactive systems: processed, practices, methods, and techniques.
August 17 - 19, 2000, Brooklyn, NY United States.
[Harker.
1993] User participation in prototyping. Susan Harker. Communications of the
ACM. Volume 36 , Issue 6 (1993).
[Heller,
Rivers. 1996] Design Lessons from the Best of the World Wide Web. Hagan Heller
& David Rivers. CHI 1996.
[Millen,
2000] Rapid Ethnography: Time Deepening Strategies for HCI Field Research. David
R. Millen. DIS ’00. ACM. 2000.
[Muñoz,
Miller-Jacobs. 1992] In search of the ideal prototype. Richard Muñoz and Harold
H. Miller-Jacobs. Conference proceedings on Human factors in computing systems.
May 3 - 7, 1992, Monterey, CA USA
[Nielsen,
Wagner. 1996] User Interface Design for the World Wide Web. Jakob Nielsen and
Annette Wagner. CHI 1996.
[Prates,
Barbosa and de Souza. 2000] A Case Study for Evaluating Interface Design through
Communicability. Raquel Prates, Simone Barbosa and Clarisse de Souza.
Proceedings of the ACM conference on Designing interactive systems: processed,
practices, methods, and techniques. August 2000, Brooklyn, NY United States.
[Purtilo,
Larson, Clark. 1991] A methodology for prototyping-in-the-large. James Purtilo,
Aaron Larson and Jeff Clark. International Conference on Software Engineering.
Proceedings of the 13th international conference on Software engineering. May 13
- 17, 1991, Austin, TX USA.
[Rizzo,
Marchigiani, Andreadis. 1997] The AVANTI Project: Prototyping and evaluation
with a Cognitive Walkthrough based on the Norman’s model of action. Antonio
Rizzo, Enrica Marchigiani, Alessandro Andreadis. DIS ACM. 1997.
[Schmucker.
1996] Rapid Prototyping using Visual Programming Tools. Kurt Schmucker. CHI
1996.
[Stary,
2000] Contextual prototyping of user interfaces. Chris Stary. Symposium on
Designing Interactive Systems. Proceedings of the ACM conference on Designing
interactive systems: processed, practices, methods, and techniques. August 17 -
19, 2000, Brooklyn, NY United States.
[Thompson,
Wishbow. 1992] Prototyping: tools and techniques: improving software and
documentation quality through rapid prototyping. Michael Thompson and Nina
Wishbow. Proceedings of the 10th annual international conference on Systems
documentation. October 13 - 16, 1992, Ottawa Canada
[Tscheligi.
1995] Creative Prototyping Tools: What Interaction Designers Really Need to
Produce Advanced User Interface Concepts. Manfred Tscheligi. CHI 1995.
[Verner,
Cerpa. 1997] The effect of department size on developer attitudes to
prototyping. J. M. Verner and N. Cerpa. International Conference on Software
Engineering. Proceedings of the 1997 international conference on Software
engineering. May 17 - 23, 1997, Boston United States.
[Wiil,
Leggett. 1997] Hyperform: A Hypermedia System Development Environment. Wiil and
Leggett. ACM Transactions on Information Systems, Vol. 15, No. 1, January 1997.
[McConnell,
1998]. Software Project Survival Guide. Steve McConnell. Microsoft Press. 1998.
[Scneiderman,
1998] Designing the User Interface – Strategies for effective human- computer
interaction. Ben Scneiderman. Third Edition. Addison-Wesley. 1998.
[Sommerville,
1995]. Software Engineering. Ian Sommerville. Fifth Edition. Addison-Wesley.
1995.
[Turoff,
Michie]. The Design and Evaluation of Interactive Systems. Murray Turoff and
Eileen Michie. Draft Copy.
[Wiegers, 1996]. Creating a Software Engineering Culture. Karl E Wiegers. Dorset House. 1996.