Software Engineering Unit-3
Software Engineering Unit-3
Software Engineering Unit-3
asia
SOFTWARE ENGINEERING
UNIT-III
DESIGN ENGINEERING
Design engineering encompasses the set of principals, concepts, and practices that lead to the
development of a high- quality system or product.
Design principles establish an overriding philosophy that guides the designer in the work that is
performed.
Design concepts must be understood before the mechanics of design practice are applied and
Design practice itself leads to the creation of various representations of the software that serve as a
guide for the construction activity that follows.
What is design:
Design is what virtually every engineer wants to do. It is the place where creativity rules – customer’s
requirements, business needs, and technical considerations all come together in the formulation of a
product or a system. Design creates a representation or model of the software, but unlike the analysis
model, the design model provides detail about software data structures, architecture, interfaces, and
components that are necessary to implement the system.
Why is it important:
Design allows a software engineer to model the system or product that Is to be built. This model can
be assessed for quality and improved before code is generated, tests are conducted, and end – users become
involved in large numbers. Design is the place where software quality is established.
The goal of design engineering is to produce a model or representation that exhibits firmness, commodity,
and delight. To accomplish this, a designer must practice diversification and then convergence. Another
goal of software design is to derive an architectural rendering of a system. The rendering serves as a
framework from which more detailed design activities are conducted.
Goals of design:
McGlaughlin suggests three characteristics that serve as a guide for the evaluation of a good design.
The design must implement all of the explicit requirements contained in the analysis model, and it
must accommodate all of the implicit requirements desired by the customer.
The design must be a readable, understandable guide for those who generate code and for those
who test and subsequently support the software.
The design should provide a complete picture of the software, addressing the data, functional, and
behavioral domains from an implementation perspective.
Quality guidelines:
In order to evaluate the quality of a design representation we must establish technical criteria for good
design. These are the following guidelines:
1. A design should exhibit an architecture that
a. has been created using recognizable architectural styles or patterns
b. is composed of components that exhibit good design characteristics and
c. can be implemented in an evolutionary fashion, thereby facilitating implementation and
testing.
2. A design should be modular; that is, the software should be logically partitioned into elements or
subsystems.
3. A design should contain distinct representation of data, architecture, interfaces and components.
4. A design should lead to data structures that are appropriate for the classes to be implemented and
are drawn from recognizable data patterns.
5. A design should lead to components that exhibit independent functional characteristics.
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
6. A design should lead to interface that reduce the complexity of connections between components
and with the external environment.
7. A design should be derived using a repeatable method that is driven by information obtained
during software requirements analysis.
8. A design should be represented using a notation that effectively communication its meaning.
These design guidelines are not achieved by chance. Design engineering encourages good design through
the application of fundamental design principles, systematic methodology, and thorough review.
Quality attributes:
The FURPS quality attributes represent a target for all software design:
Functionality is assessed by evaluating the feature set and capabilities of the program, the
generality of the functions that are delivered, and the security of the overall system.
Usability is assessed by considering human factors, overall aesthetics, consistency and
documentation.
Reliability is evaluated by measuring the frequency and severity of failure, the accuracy of output
results, and the mean – time –to- failure (MTTF), the ability to recover from failure, and the
predictability of the program.
Performance is measured by processing speed, response time, resource consumption, throughput,
and efficiency
Supportability combines the ability to extend the program (extensibility), adaptability,
serviceability- these three attributes represent a more common term maintainability
Not every software quality attribute is weighted equally as the software design is developed.
One application may stress functionality with a special emphasis on security.
Another may demand performance with particular emphasis on processing speed.
2) DESIGN CONCEPTS:
M.A Jackson once said:”The beginning of wisdom for a software engineer is to recognize the difference
between getting a program to work, and getting it right.” Fundamental software design concepts provide the
necessary framework for “getting it right.”
II. Architecture:
Software architecture alludes to “the overall structure of the software and the ways in which that structure
provides conceptual integrity for a system”. In its simplest form, architecture is the structure or
organization of program components (modules), the manner in which these components interact, and the
structure of data that are used by the components.
One goal of software design is to derive an architectural rendering of a system. The rendering serves as a
framework from which more detailed design activities are conducted.
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
The architectural design can be represented using one or more of a number of different models. Structured
models represent architecture as an organized collection of program components.
Framework models increase the level of design abstraction by attempting to identify repeatable
architectural design frameworks that are encountered in similar types of applications.
Dynamic models address the behavioral aspects of the program architecture, indicating how the structure
or system configuration may change as a function external events.
Process models focus on the design of the business or technical process that the system must accommodate.
Functional models can be used to represent the functional hierarchy of a system.
III. Patterns:
Brad Appleton defines a design pattern in the following manner: “a pattern is a named nugget of inside
which conveys that essence of a proven solution to a recurring problem within a certain context amidst
competing concerns.” Stated in another way, a design pattern describes a design structure that solves a
particular design within a specific context and amid “forces” that may have an impact on the manner in
which the pattern is applied and used.
The intent of each design pattern is to provide a description that enables a designer to determine
1) Whether the pattern is capable to the current work,
2) Whether the pattern can be reused,
3) Whether the pattern can serve as a guide for developing a similar, but functionally or structurally
different pattern.
IV. Modularity:
Software architecture and design patterns embody modularity; software is divided into separately
named and addressable components, sometimes called modules that are integrated to satisfy problem
requirements.
It has been stated that “modularity is the single attribute of software that allows a program to be
intellectually manageable”. Monolithic software cannot be easily grasped by a software engineer. The
number of control paths, span of reference, number of variables, and overall complexity would make
understanding close to impossible.
The “divide and conquer” strategy- it’s easier to solve a complex problem when you break it into
manageable pieces. This has important implications with regard to modularity and software. If we
subdivide software indefinitely, the effort required to develop it will become negligibly small. The effort to
develop an individual software module does decrease as the total number of modules increases. Given the
same set of requirements, more modules means smaller individual size. However, as the number of
modules grows, the effort associated with integrating the modules also grow.
Under modularity or over modularity should be avoided. We modularize a design so that
development can be more easily planned; software increment can be defined and delivered; chamges can be
more easily accommodated; testing and debugging can be conducted more efficiently, and long-term
maintenance can be conducted without serious side effects.
V. Information Hiding:
The principle of information hiding suggests that modules be “characterized by design decision that
hides from all others.”
Modules should be specified and designed so that information contained within a module is inaccessible to
other modules that have no need for such information.
Hiding implies that effective modularity can be achieved by defining a set of independent modules
that communicate with one another only that information necessary to achieve software function.
Abstraction helps to define the procedural entities that make up the software. Hiding defines and enforces
access constraints to both procedural detail within a module and local data structure used by module.
The use of information hiding as a design criterion for modular systems provides the greatest
benefits when modifications are required during testing and later, during software maintenance. Because
most data and procedure are hidden from other parts of the software, inadvertent errors introduced during
modification are less likely to propagate to other locations within software.
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
VII. Refinement:
Stepwise refinement is a top- down design strategy originally proposed by Niklaus wirth. A program is
development by successively refining levels of procedural detail. A hierarchy is development by
decomposing a macroscopic statement of function in a step wise fashion until programming language
statements are reached.
Refinement is actually a process of elaboration. We begin with a statement of function that is
defined at a high level of abstraction. That is, the statement describes function or information conceptually
but provides no information about the internal workings of the function or the internal structure of the data.
Refinement causes the designer to elaborate on the original statement, providing more and more detail as
each successive refinement occurs.
Abstraction and refinement are complementary concepts. Abstraction enables a designer to specify
procedure and data and yet suppress low-level details. Refinement helps the designer to reveal low-level
details as design progresses. Both concepts aid the designer in creating a complete design model as the
design evolves.
VIII. Refactoring :
Refactoring is a reorganization technique that simplifies the design of a component without changing its
function or behavior. Fowler defines refactoring in the following manner: “refactoring is the process of
changing a software system in such a way that it does not alter the external behavior of the code yet
improves its internal structure.”
When software is refactored, the existing design is examined for redundancy, unused
design elements, inefficient or unnecessary algorithms, poorly constructed or inappropriate data structures,
or any other design failure that can be corrected to yield a better design. The designer may decide that the
component should be refactored into 3 separate components, each exhibiting high cohesion. The result will
be software that is easier to integrate, easier to test, and easier to maintain.
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
2. Create a new set of design classes that implement a software infrastructure to support the design
solution.
Five different types of design classes, each representing a different layer of the design architecture are
suggested.
User interface classes: define all abstractions that are necessary for human computer interaction.
In many cases, HCL occurs within the context of a metaphor and the design classes for the
interface may be visual representations of the elements of the metaphor.
Business domain classes: are often refinements of the analysis classes defined earlier. The classes
identify the attributes and services that are required to implement some element of the business
domain.
Process classes implement lower – level business abstractions required to fully manage the
business domain classes.
Persistent classes represent data stores that will persist beyond the execution of the software.
System classes implement software management and control functions that enable the system to
operate and communicate within its computing environment and with the outside world.
As the design model evolves, the software team must develop a complete set of
attributes and operations for each design class. The level of abstraction is reduced as each analysis class is
transformed into a design representation. Each design class be reviewed to ensure that it is “well-formed.”
They define four characteristics of a well- formed design class.
Complete and sufficient: A design class should be the complete encapsulation of all attributes and
methods that can reasonably be expected to exist for the class. Sufficiency ensures that the design class
contains only those methods that are sufficient to achieve the intent of the class, no more and no less.
Primitiveness: Methods associated with a design class should be focused on accomplishing one service for
the class. Once the service has been implemented with a method, the class should not provide another way
to accomplish the same thing.
High cohesion: A cohesive design class has a small, focused set of responsibilities and single- mindedly
applies attributes and methods to implement those responsibilities.
Low coupling: Within the design model, it is necessary for design classes to collaborate with one another.
However, collaboration should be kept to an acceptable minimum. If a design model is highly coupled the
system is difficult to implement, to test, and to maintain over time. In general, design classes within a
subsystem should have only limited knowledge of classes in other subsystems. This restriction, called the
law of Demeter, suggests that a method should only sent messages to methods in neighboring classes.
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
high
a na ly sis mode l
class diagrams
analysis packages
use- cases - t ext class diagrams
Requirement s:
CRC models use- case diagrams const raint s
analysis packages
collaborat ion diagrams
act ivit y diagrams CRC models int eroperabilit y
dat a f low diagrams sw im lane diagrams collaborat ion diagrams t arget s and
cont rol- f low diagrams collaborat ion diagrams dat a f low diagrams
processing narrat ives st at e diagrams cont rol- f low diagrams
conf igurat ion
sequence diagrams processing narrat ives
st at e diagrams
sequence diagrams
process dimension
i. Data design elements:
Data design sometimes referred to as data architecting creates a model of data and/or information that is
represented at a high level of abstraction. This data model is then refined into progressively more
implementation-specific representations that can be processed by the computer-based system.
The structure of data has always been an important part of software design.
At the program component level, the design of data structures and the associated algorithms
required to manipulate them is essential to the criterion of high-quality applications.
At the application level, the translation of a data model into a database is pivotal to achieving the
business objectives of a system.
At the business level, the collection of information stored in disparate databases and reorganized
into a “data warehouse” enables data mining or knowledge discovery that can have an impact on
the success of the business itself.
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
The interface design elements for software tell how information flows into and out of the system
and how it is communicated among the components defined as part of the architecture. There are 3
important elements of interface design:
1) The user interface(UI);
2) External interfaces to other systems, devices, networks, or other produces or consumers
of information; and
3) Internal interfaces between various design components.
These interface design elements allow the software to communicated externally and enable internal
communication and collaboration among the components that populate the software architecture.
The design of a UI incorporates aesthetic elements (e.g., layout, color, graphics, interaction
mechanisms), ergonomic elements (e.g., information layout and placement, metaphors, UI navigation), and
technical elements (e.g., UI patterns, reusable components). In general, the UI is a unique subsystem within
the overall application architecture.
The design of external interfaces requires definitive information about the entity to which
information is sent or received. The design of external interfaces should incorporate error checking and
appropriated security features.
UML defines an interface in the following manner:”an interface is a specifier for the externally-
visible operations of a class, component, or other classifier without specification of internal structure.”
MobilePhone
WirelessPDA
Cont rolPanel
LCDdisplay
LEDindicat ors
keyPadCharact erist ics Key Pad
speaker
wirelessInt erf ace
readKeySt roke()
decodeKey ()
displaySt at us()
light LEDs()
sendCont rolMsg()
readKeyst roke()
decodeKey()
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
iv. Component- level design elements: The component-level design for software is equivalent to a
set of detailed drawings.
The component-level design for software fully describes the internal detail of each software
component. To accomplish this, the component-level design defines data structures for all local
data objects and algorithmic detail for all processing that occurs within a component and an
interface that allows access to all component operations.
SensorManagement
Sensor
Security homeownerAccess
Personal comput er
externalAccess
Security Surveillance
homeManagement communication
1) SOFTWARE ARCHITECTURE:
What Is Architecture?
Architectural design represents the structure of data and program components that are required to
build a computer-based system. It considers
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
The design of software architecture considers two levels of the design pyramid
- data design
- architectural design.
Data design enables us to represent the data component of the architecture.
Architectural design focuses on the representation of the structure of software components, their
properties, and interactions.
2) DATA DESIGN:
The data design activity translates data objects as part of the analysis model into data structures at
the software component level and, when necessary, a database architecture at the application level.
At the program component level, the design of data structures and the associated algorithms
required to manipulate them is essential to the creation of high-quality applications.
At the application level, the translation of a data model (derived as part of requirements
engineering) into a database is pivotal to achieving the business objectives of a system.
At the business level, the collection of information stored in disparate databases and reorganized
into a “data warehouse” enables data mining or knowledge discovery that can have an impact on
the success of the business itself.
To solve this challenge, the business IT community has developed data mining techniques, also
called knowledge discovery in databases (KDD), that navigate through existing databases in an attempt to
extract appropriate business-level information. An alternative solution, called a data warehouse, adds an
additional layer to the data architecture. a data warehouse is a large, independent database that encompasses
some, but not all, of the data that are stored in databases that serve the set of applications required by a
business.
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
5. The representation of data structure should be known only to those modules that must make direct
use of the data contained within the structure.
6. A library of useful data structures and the operations that may be applied to them should be
developed.
7. A software design and programming language should support the specification and realization of
abstract data types.
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
Data-flow architectures. This architecture is applied when input data are to be transformed through a
series of computational or manipulative components into output data. A pipe and filter pattern has a set of
components, called filters, connected by pipes that transmit data from one component to the next. Each
filter works independently of those components upstream and downstream, is designed to expect data input
of a certain form, and produces data output of a specified form.
If the data flow degenerates into a single line of transforms, it is termed batch sequential. This
pattern accepts a batch of data and then applies a series of sequential components (filters) to transform it.
Call and return architectures. This architectural style enables a software designer (system architect) to
achieve a program structure that is relatively easy to modify and scale. A number of substyles [BAS98]
exist within this category:
Main program/subprogram architectures. This classic program structure decomposes function
into a control hierarchy where a “main” program invokes a number of program components,
which in turn may invoke still other components. Figure 13.3 illustrates an architecture of this
type.
Remote procedure call architectures. The components of a main program/ subprogram
architecture are distributed across multiple computers on a network
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
Object-oriented architectures. The components of a system encapsulate data and the operations that must
be applied to manipulate the data. Communication and coordination between components is accomplished
via message passing.
Layered architectures. The basic structure of a layered architecture is illustrated in Figure 14.3. A number
of different layers are defined, each accomplishing operations that progressively become closer to the
machine instruction set. At the outer layer, components service user interface operations. At the inner layer,
components perform operating system interfacing. Intermediate layers provide utility services and
application software functions.
Persistence—Data persists if it survives past the execution of the process that created it. Two patterns are
common:
a database management system pattern that applies the storage and retrieval capability of
a DBMS to the application architecture
an application level persistence pattern that builds persistence features into the
application architecture
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
Distribution— the manner in which systems or components within systems communicate with one another
in a distributed environment
A broker acts as a ‘middle-man’ between the client component and a server component.
Control.
How is control managed within the architecture?
Does a distinct control hierarchy exist, and if so, what is the role of components within this control
hierarchy?
How do components transfer control within the system?
How is control shared among components?
Data.
How are data communicated between components?
Is the flow of data continuous, or are data objects passed to the system sporadically?
What is the mode of data transfer (i.e., are data passed from one component to another or are data
available globally to be shared among system components)?
Do data components (e.g., a blackboard or repository) exist, and if so, what is their role?
How do functional components interact with data components?
Are data components passive or active (i.e., does the data component actively interact with other
components in the system)? How do data and control interact within the system?
4) ARCHITECTURAL DESIGN:
I Representing the System in Context:
At the architectural design level, a software architect uses an architectural context diagram (ACD) to
model the manner in which software interacts with entities external to its boundaries. The generic structure
of the architectural context diagram is illustrated in the figure
Superordinate systems
Safehome Internet-based
Product system
control
panel target system: surveillance
Security Function function
uses
homeowner peers
uses
uses
sensors sensors
Subordinate systems
Superordinate systems – those systems that use the target system as part of some higher level processing
scheme.
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
Subordinate systems - those systems that are used by the target system and provide data or processing that
are necessary to complete target system functionality.
Actors -those entities that interact with the target system by producing or consuming information that is
necessary for requisite processing
II Defining Archetypes:
An archetype is a class or pattern that represents a core abstraction that is critical to the design of
architecture for the target system. In general, a relative small set of archetypes is required to design even
relatively complex systems.
In many cases, archetypes can be derived by examining the analysis classes defined as part of the
analysis model. In safe home security function, the following are the archetypes:
- Node: Represent a cohesive collection of input and output elements of the home security
function. For example a node might be comprised of (1) various sensors, and (2) a variety of
alarm indicators.
- Detector: An abstraction that encompasses all sensing equipment that feeds information into
the target system
- Indicator: An abstraction that represents all mechanisms for indication that an alarm
condition is occurring.
- Controller: An abstraction that depicts the mechanism that allows the arming or disarming of
a node. If controllers reside on a network, they have the ability to communicate with one
another.
Controller
communicates with
Node
Detector Indicator
Figure 10.7 UML relat ionships for SafeHome security function archetypes
(adapted f rom [ BOS00])
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
architecture. Hence, the application domain is one source is the infrastructure domain. The architecture
must accommodate many infrastructure components that enable application domain.
For eg: memory management components, communication components database components, and task
management components are often integrated into the software architecture.
In the safeHome security function example, we might define the set of top-level components that address
the following functionality:
External communication management- coordinates communication of the security
function with external entities
Control panel processing- manages all control panel functionality.
Detector management- coordinates access to all detectors attached to the system.
Alarm processing- verifies and acts on all alarm conditions.
Design classes would be defined for each. It is important to note, however, that the design details of all
attributes and operations would not be specified until component-level design.
SafeHome
Execut ive
Funct ion
select ion
Ext ernal
Communicat ion
Management
Component Structure
IV Describing Instantiations of the System: An actual instantiation of the architecture means the
architecture is applied to a specific problem with the intent of demonstrating that the structure and
components are appropriate.
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
SafeHome
Execut ive
Ext ernal
Communicat ion
Management
Security
GUI Internet
Interface
Key pad
processing phone
scheduler
com m unicat ion
CP display
funct ions
alarm
sensor
sseseenen
ssensor nsn
sossooo
rr
rr
sensor
sensor
sensor
sensor
se n so r
se n so r
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
System Architecture
• Once the interaction between the software system that being designed and the system environment
have been defined
• We can use the above information as basis for designing the System Architecture.
Object Identification
• This process is actually concerned with identifying the object classes.
• We can identify the object classes by the following
1)Use a grammatical analysis
2)Use a tangible entities
3)Use a behaviourial approach
4)Use a scenario based approach
Design model
• Design models are the bridge between the requirements and implementation.
• There are two type of design models
1)Static model describe the relationship between the objects.
2)Dynamic model describe the interaction between the objects
• Object Interface SpecificationIt is concerned with specifying the details of the interfaces to an
objects.
• Design evolution
The main advantage OOD approach is to simplify the problem of making changes to the design.
Changing the internal details of an obect is unlikely to effect any other system object.
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
Define interaction modes in a way that does not force a user into unnecessary or undesired
actions. Word processor – spell checking – move to edit and back; enter and exit with little or no
effort
Provide for flexible interaction. Several modes of interaction – keyboard, mouse, digitizer pen or
voice recognition, but not every action is amenable to every interaction need. Difficult to draw a
circle using keyboard commands.
Allow user interaction to be interruptible and undoable. User stop and do something and then
resume where left off. Be able to undo any action.
Streamline interaction as skill levels advance and allow the interaction to be customized.
Perform same actions repeatedly; have macro mechanism so user can customize interface.
Hide technical internals from the casual user. Never required to use OS commands; file
management functions or other arcane computing technology.
Design for direct interaction with objects that appear on the screen. User has feel of control
when interact directly with objects; stretch an object.
The more a user has to remember, the more error-prone interaction with the system will be.
Good interface design does not tax the user’s memory
System should remember pertinent details and assist the user with interaction scenario that
assists user recall.
Mandel defines design principles that enable an interface to reduce the user’s memory load:
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
Reduce demand on short-term memory. Complex tasks can put a significant burden on
short term memory. System designed to reduce the requirement to remember past actions and
results; visual cues to recognize past actions, rather than recall them.
Establish meaningful defaults. Initial defaults for average user; but specify individual
preferences with a reset option.
Define shortcuts that are intuitive. Use mnemonics like Alt-P.
The visual layout of the interface should be based on a real world metaphor. Bill
payment – check book and check register metaphor to guide a user through the bill paying
process; user has less to memorize
Disclose information in a progressive fashion. Organize hierarchically. High level of
abstraction and then elaborate. Word underlining function – number of functions, but not all
listed. User picks underlining then all options presented
User Model: The user model establishes the profile of end-users of the system. To build an effective user
interface, "all design should begin with an understanding of the intended users, including profiles of their
age, sex, physical abilities, education, cultural or ethnic background, motivation, goals and personality"
[SHN90]. In addition, users can be categorized as
Novices.
Knowledgeable, intermittent users.
Knowledgeable, frequent users.
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
Design Model: A design model of the entire system incorporates data, architectural, interface and
procedural representations of the software.
Mental Model: The user’s mental model (system perception) is the image of the system that end-users
carry in their heads.
Implementation Model: The implementation model combines the outward manifestation of the computer-
based system (the look and feel of the interface), coupled with all supporting information (books, manuals,
videotapes, help files) that describe system syntax and semantics.
These models enable the interface designer to satisfy a key element of the most important
principle of user interface design: "Know the user, know the tasks."
The analysis of the user environment focuses on the physical work environment. Among the
questions to be asked are
Where will the interface be located physically?
Will the user be sitting, standing, or performing other tasks unrelated to theinterface?
Does the interface hardware accommodate space, light, or noise constraints?
Are there special human factors considerations driven by environmental factors?
The information gathered as part of the analysis activity is used to create an analysis model for the
interface. Using this model as a basis, the design activity commences.
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
The following set of questions (adapted form (HAC98) ) will help the interface designer better understand the users
of a system:
Are user trained professionals, technicians, clerical or manufacturing workers?
What level of formal education does the average user have?
Are the users capable of learning from written materials or have they ecpressed a desire of classroom
training?
Are users expert typists or keyboard phobic?
What is the age range of the user community?
Will the users be represented predominately by one gender?
How are users compensated for the work they perform?
Do users work normal office hours, or do they work until the job is done.
Is the software to be an integral part of the work users do, or will it be used only occasionally?
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
Task elaboration. Task analysis of interface design uses an elaborative approach to assist in understanding the
human activities the user interface must accommodate. To understand the tasks that must be performed to
accomplish the goal of the activity, a human engineer must understand the tasks that humans currently perform
(when using a manual approach) and then map these into a similar (but not necessarily identical) set of tasks that are
implemented in the context of the user interface. Alternatively, the human engineer can study an existing
specification for computer-based solution and derive a set of user tasks that will accommodate the user model, the
design model, and the system perception. For example, assume that a small software company wants to build a
computer-aided design system explicitly for interior designers. By observing an interior designer at work, the
engineer notices that interior design comprises a number of major activities: further layout (note the use-case
discussed earlier), fabric and material selection, wall and window coverings selection, presentation (to the
customer), costing, and shopping. Each of these major tasks can be elaborated into subtasks. For example, using
information contained in the use-case, furniture layout can be refined into the following tasks: (1) draw a floor plan
based on room dimensions; (2) place windows and doors at appropriate locations;(3a) use furniture templates to
draw scaled accents on floor plan(4) move furniture outlines;(6) draw dimensions to show location;(7) draw
perspective rendering view for customer. A similar approach could be used for each of the other major tasks.
Object elaboration. The software engineer extracts the physical objects that are used by the interior designer. These
objects can be categorized into classes. Attributes of each class are defined, and an evaluation of the actions applied
to each object provide the designer with a list of operations. For example, the furniture template might translate into
a class called Furniture with attributes that might include size, shape, location and others. The interior designer
would select the object from the Furniture class, move it to a position on the floor plan (another object in this
context), draw the furniture outline, and so forth. He tasks select, move, and draw are operations. The user interface
analysis model would not provide a literal implementation for each of these operation for each of these operations.
How ever, as the design is elaborated, the details of each operation are defined.
Workflow analysis. When a number of different users, each playing different roles, makes uses of a user interface,
it is sometimes necessary to go beyond task analysis and object elaboration and apply workflow analysis. This
technique allows a software engineer to understand how a work process is completed when several people are
involved.
The flow of events (shown in the figure) enable the interface designer to recognize three day interface
characteristics.
1. Each user implements different tasks via the interface; therefore, the look and feel of the interface designed
for the patient will be different form the one defined for pharmacists or physicians.
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
2. The interface design for pharmacists and physicians must accommodate access to and display of
information form secondary information sources(e.g., access to inventory of the pharmacist and access to
information about alternative medications for the physician)
3. Many of the activities noted in the swimlane diagram can be further elaborated using talk analysis and /or
object elaboration(e.g., fills prescription could imply a mail-order deliver, a visit to a pharmacy, or a visit to
a special drug distribution center.
Hierarchical representation. As the interface is analyzed, a process of elaboration occurs. Once workflow has been
established, a task hierarchy can e defined for each user type. The hierarchy is derived by a stepwise elaboration of
each task identified for the user. For example, consider the user task requests that a prescription be refilled. The
following task hierarchy is developed:
Request that a prescription be refilled
Provide identifying information
Specify name
Specify userid
Specify PIN and password
Specify prescription number
Specify date refill is required
To complete the request that a prescription be refilled tasks, three subtasks are defined. One of these subtasks,
provide indentifying information, is further elaborated in three additional sub-subtasks.
Help facilities. Modern software provides on-line help facilities that enable a user to get a question answered or
resolve a problem without leaving the interface. A number of design issues must be addressed when a help facility is
considered:
Will help be available for all system functions and at all times during system interaction? Options include
help for only a subset of all functions and actions or help for all functions.
How will the user request help? Options include a help menu, a special function day, or a HELP command.
How will help be represented? Options include a separate window, a reference to a printed document, or a
one-or two-line suggestion produced in a fixed screen location.
How will the user return to normal interaction? Options include a return button displayed on the screen, a
function key, or control sequence.
How will help information be structured? Options include a “flat” structure in which all information is
accessed through a keyword, a layered hierarchy or information that provides increasing detail as the user
proceeds into the structure, or the user of hypertext.
In general, every error message or warning produced by an interactive system should have the following
characteristics:
The message should describe the problem in language the user can understand.
The message should provide constructive advice for recovering form the error.
The message should indicate any negative consequences of the error(e.g., potentially corrupted data
files)so that the user can check to ensure that they have not occurred.
The message should be nonjudgmental. That is, the wording should never place blame on the user.
But an-effective error message philosophy can do much to improve the quality of an interactive system and will
significantly reduce user frustration when problems do occur.
A number of design issues arise when typed commands or menu labels are provided as mode of interaction:
Will every menu option have a corresponding command?
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
What form will commands take? Options include a control sequence (e.g., alt-p), function keys, or a
typed word.
How difficult will it be to learn and remember the commands? What can be done if a command is
forgotten?
Can commands be customized or abbreviated by the user?
Are menu labels self-explanatory within the context of the interface?
Are submenus consistent with the function implied by a master menu item?
Application accessibility .Accessibility for users and software engineers) who may be physically challenged is an
imperative for moral, legal, and business reasons. A variety of accessibility guidelines many designed for Web
applications but often applicable to all types of software-provide detailed suggestions for designing interfaces that
achieve vary8ing levels of accessibility. Others provide specific guidelines or “assistive technology” that addresses
the needs of those with visual, hearing, mobility, speech, and learning impairments.
Internationalization. The challenge should be designed to accommodate a generic core of functionality that can be
delivered to all who use the software. Localization features enable the interface to be customized for a specific
market.
A variety of internationalization guidelines are available to software engineers. These guidelines address broad
design issues and discrete implementation issues. The Unicode standard has been developed to address the daunting
challenge of managing dozens of natural languages with hundred of characters and symbols.
12.5 DESIGN EVALUATION
After the design model has been completed, a first-level prototype is created. The prototype is evaluated by the user,
who provides the designer with direct comments about the efficacy of the interface. In addition, if formal evaluation
techniques are used e.g., questionnaires, rating sheets), the designer may extract information form these data (e.g.,
80percent of all users did not like the mechanism for saving data files). Design modifications are made based on
user input, and the next level prototype is created. The evaluation cycle continues until no further modifications to
the interface design are necessary. If a design model of the interface has been created, a number of evaluation
criteria can be applied during early design reviews:
1. The length and complexity of the written specification of the system and its interface provide an indication
of the amount of learning required by user of the system.
2. The number of user tasks specified and the average number of actions per task provide an indication on
interaction time and the overall efficiency of the system.
3. The number of actions, tasks, and system states indicated by the design model imply the memory load on
users of the system.
4. Interface styles, help facilities, and error handling protocol provide a general indication of the complexity
of the interface and the degree to which it will be accepted by the user.
Once the first prototype is built, the designer can collect a variety of qualitative and quantitative data that will assist
in evaluating the interface. To collect 2qualitaive data, questionnaires can be distributed to users of the prototype.
Questions can be (1) simple yes/no response, (2) numeric response, (3) scaled (subjective) response,(4) Likert
scales(e.g., strongly.
Users are observed during interaction, and data-such as number of tasks correctly completed over a
standard time period, frequency of actions, sequence of actions, time spent “looking” at the display, number and
types of errors, error recovery time, time spent using help, and number of help references per standard time period-
are collected and used as a guide for interface modification.
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
SOFTWARE ENGINEERING
jntuworldupdates.org Specworld.in