Lesson 4 HCI in The Software Process
Lesson 4 HCI in The Software Process
Lesson 4 HCI in The Software Process
SOFTWARE PROCESS
•Software Engineering
•Usability Engineering
•Iterative Design And
Prototyping
•Design Rationale
•Software Engineering
•Usability Engineering
•Iterative Design And
Prototyping
•Design Rationale
•Software Engineering
•Usability Engineering
•Iterative Design And
Prototyping
•Design Rationale
•Software Engineering
•Usability Engineering
•Iterative Design And
Prototyping
•Design Rationale
Software Engineering
What is Software Engineering?
Software engineering is the process of analyzing
user needs and designing, constructing, and testing
end-user applications that will satisfy these needs
through the use of software programming languages.
It is the application of engineering principles
to software development.
THE SOFTWARE LIFE
CYCLE
One of the claims for software development is that it should
be considered as an engineering discipline, in a way similar to
how electrical engineering is considered for hardware
development. One of the distinguishing characteristics of any
engineering discipline is that it entails the structured
application of scientific techniques to the development of
some product.
Activities in the life cycle In requirements specification, the designer and
customer try to capture a description of what the
eventual system will be expected to provide. This
is in contrast to determining how the system will
provide the expected services, which is the
concern of later activities. Requirements
specification involves eliciting information from
the customer about the work environment, or
domain, in which the final product will function.
Aspects of the work domain include not only the
particular functions that the software product must
perform but also details about the environment in
which it must operate, such as the people whom it
will potentially affect and the new product’s
relationship to any other products which it is
updating or replacing
Activities in the life cycle The next activities concentrate on how the
system provides the services expected
from it. The first activity is a high-level
decomposition of the system into
components that can either be brought in
from existing software products or be
developed from scratch independently. An
architectural design performs this
decomposition. It is not only concerned
with the functional decomposition of the
system, determining which components
provide which services. It must also
describe the interdependencies between
separate components and the sharing of
resources that will arise between
Activities in the life cycle
The architectural design provides a decomposition of the system description that allows
for isolated development of separate components which will later be integrated. For
those components that are not already available for immediate integration, the designer
must provide a sufficiently detailed description so that they may be implemented in some
programming language. The detailed design is a refinement of the component description
provided by the architectural design. The behavior implied by the higher-level
description must be preserved in the more detailed description.
Activities in the life cycle
The detailed design for a component of the system should be in such a form that it is possible to implement
it in some executable programming language. After coding, the component can be tested to verify that it
performs correctly, according to some test criteria that were determined in earlier activities. Research on
this activity within the life cycle has concentrated on two areas. There is plenty of research that is geared
towards the automation of this coding activity directly from a low-level detailed design. Most of the work
in formal methods operates under the hypothesis that, in theory, the transformation from the detailed design
to the implementation is from one mathematical representation to another and so should be able to be
Activities in the life cycle Once enough components have been
implemented and individually tested, they must
be integrated as described in the architectural
design. Further testing is done to ensure correct
behavior and acceptable use of any shared
resources. It is also possible at this time to
perform some acceptance testing with the
customers to ensure that the system meets their
requirements. It is only after acceptance of the
integrated system that the product is finally
released to the customer.
Activities in the life cycle After product release, all work on the system is
considered under the category of maintenance, until such
time as a new version of the product demands a total
redesign or the product is phased out entirely.
Consequently, the majority of the lifetime of a product is
spent in the maintenance activity. Maintenance involves
the correction of errors in the system which are
discovered after release and the revision of the system
services to satisfy requirements that were not realized
during previous development.
Verification
Did we build the right system?
Interactive systems and the software life cycle
measuring concept
measuring method
now level
worst case
planned level
best case
Attribute: Backward recoverability
Measuring concept Undo an erroneous programming sequence
Number of explicit user actions to undo
Measuring Method
current program
Now Level No current product allows such an undo
As many actions as it takes to program in
Worst Case
mistake
As many actions as it takes to program in
Planned Level
mistake
Best Case One explicit cancel action