IS2 Lecture 1
IS2 Lecture 1
could do all the booking without leaving my computer. As you can see it was easy for this user to interact with
the web site and get its ticket.
Safety-critical systems and disasters: Sometimes poor HCI design can lead to very serious implications. There
are many systems that are safety-critical. A safety-critical system must work under all conditions without failure
or error. Some examples are: Aeroplane control systems, nuclear power control systems or computer controlled
medical equipment.
Evaluation
A good designer will not simply trust that his skill and experience will always produce designs that are highly
effective. Evaluation is about testing to see if the interactive system has good usability and usefulness. There are
two types:
Formative evaluation: it is not good enough just to test your system once it is completely built.
Evaluations should be carried out all the way through the design and development cycle. The results of these
evaluations should be used to guide the design.
Summative evaluation: once a system has been built then an overall assessment of its usability is needed. These
tests should be done to validate aspects of the design (e.g., is the system as learnable as we specified?) and to test
the acceptance of the system by the end-users (i.e., do the users like the system, find it easy to use etc?).
User Needs
The determination of user needs is one of the most critical part of software system design. Often, managers and
data processing personnel decide what the system should provide to users, but systems developed in this manner
usually fail. If a system does not meet the needs of a user, the user typically will not use the system, or use it
ineffectively. Determining user needs requires interviewing samples of various potential user populations to
obtain information about what users need from the system in terms of data, accuracy, output characteristics,
ID2L1 : FROM CONCEPTUAL TO LOGICAL LEVEL
response time, etc. User needs is determined at several levels with the lower levels interacting closely with
interface design. Typically, only the higher level is referred to as "user needs", while the lower levels are referred
to as "task analysis." The following steps are typical:
1. Identify and describe potential users of the software product or system.
2. Determine the needs of those users and develop usability objectives for those needs.
3. Utilize appropriate data collection methods to describe current related task requirements and performance.
4. Analyze tasks to determine component behaviors.
5. Design (and redesign) activities into effective and efficient task structures.
As noted above, the design of the task structures must take place in conjunction with the design of the interface
because the interface will often dictate how the task can be performed.
Interface Design
Interface design is the design of the interface between the user and the system. For software ergonomics, interface
design mostly concerns the design of the interface between the computer software and the user. Interface design
includes the design of the dialog (by which the user is guided by the system), design of the inputs that can be
made by the user and responses (outputs) provided by the system. Aspects of good software design include:
Consistency: The most important aspect of user interfaces is consistency. For example buttons should be placed
in consistent places on all screens. Use the same wording in labels and messages. Use a consistent colour scheme.
Some points vital to the development of consistent user interfaces include:
Setting standards and sticking to them. Set designs bases on industry standards and then develop extra
standard specific to your application.
Explain the rules. Develop a simple set of rules that apply to your entire application, in this way you only
need to explain once
Use interface elements correctly. Know when to use screen elements and how to use them correctly. Never
alter the operation of standard screen elements such as command buttons to perform unexpected functions.
Use colour appropriately; colour should be used sparingly. Because colour is an individualistic preference
allow the user to choose colour settings, but for default colour schemes maintain sufficient contrast
between text and backgrounds.
Alignment of data. Editing field should be left justified with their attached labels also left justified
Ease of use and acceptable response time in software: Good User interfaces are easy to use. Some vital points
to make software easy to use include:
Screen elements that are logically connected should be grouped together. Similarly, unrelated items should
be separated.
Navigation between screens should follow a natural flow of the task. Applications should be flexible and
should allow users to complete tasks in the order they require.
Applications should support both novice and experienced users. Shortcut keys and advance functionality
should be available.
Busy screens result in confusion for users. Easy to use screens will have white space on about 50% of the
screen.
Icons are great if the meaning of the icon is immediately obvious; if the icon is somewhat obscure then
don't use it, use text instead.
The time between user actions and system response must be as small as possible
User Support
User support includes all of the user oriented materials, in addition to the user interface, that will support the user
in learning and using the system. Such materials include overviews, online help, performance aids,
documentation, tutorials and training. User support materials may be online or in paper form, but the trend is to
provide all user support online as part of the system software. Online support includes:
Electronic Performance Support System (EPSS) - Online support that is so tightly integrated with the
system that it is part of the interface. Developing an EPSS requires a high level of cooperation between
the developers of the EPSS and the developers of the application. An EPSS would typically contain
several, interrelated pieces of more traditional performance support such as online help, online tutorials,
and wizards attached to a sophisticated, supportive user interface.
On-line Help - Online text and graphics that is contextually linked to the application at the screen or field
level. Contains information about the system; its screens, fields, and commands; and gives instructions on
how to complete tasks using the system.
On-line User Guide - Traditional user guide information delivered online.
On-line Tutorial - An online, interactive tutorial that does not contain testing of student performance.
Online tutorials may be delivered by means of various media, e.g., CDs, downloaded from a server to the
user’s desktop computer, or via the Web.
Computer Based Training (CBT) - Similar to an On-line Tutorial, but is typically more performance
oriented and includes testing and tracking of student performance.
Usability Testing
One of the most important parts of a software system development project is testing the usability of the system.
Usability often gets confused with "usefulness” (whether a product helps the user achieve their goals) and "utility"
(whether the product has the functionality that the user needs to attain their goals). The most accepted definition
for usability is found in the ergonomics standard ISO 9241-11: usability is "a concept comprising the
effectiveness, efficiency and satisfaction with which specific users can achieve specified goals in a particular
environment."
Setting "usability objectives" is a critical first step in performing usability testing. Usability objectives are
typically developed on the basis of data collected during user needs analysis. These objectives must be stated in
measurable terms so that the results of usability testing can be used to clearly establish whether the system met
these objectives.
ID2L1 : FROM CONCEPTUAL TO LOGICAL LEVEL
Usability testing includes the development of a test plan (specifying the usability objectives, test procedures and
reporting requirements), the development of test senarios, conducting the testing according to the plan, and
reporting test results.
4. Data Modeling
Schema: description of data at some level (e.g., tables, attributes, constraints, domains)
Model: tools and languages for describing:
Conceptual/logical and external schema described by the data definition language (DDL)
Integrity constraints, domains described by DDL
Operations on data described by the data manipulation language (DML)
Directives that influence the physical schema (affects performance, not semantics) are described by the
storage definition language (SDL)
ID2L1 : FROM CONCEPTUAL TO LOGICAL LEVEL
5. Data Independence
V. Coding
The coding is the process of transforming the design of a system into a computer language format. This coding
phase of software development is concerned with software translating design specification into the source code.
It is necessary to write source code & internal documentation so that conformance of the code to its specification
can be easily verified.
Coding is done by the coder or programmers who are independent people than the designer. The goal is not to
reduce the effort and cost of the coding phase, but to cut to the cost of a later stage. The cost of testing and
maintenance can be significantly reduced with efficient coding. Goals of coding include:
1. To translate the design of system into a computer language format: The coding is the process of
transforming the design of a system into a computer language format, which can be executed by a
computer and that perform tasks as specified by the design of operation during the design phase.
2. To reduce the cost of later phases: The cost of testing and maintenance can be significantly reduced
with efficient coding.
3. Making the program more readable: Program should be easy to read and understand. It increases code
understanding having readability and understandability as a clear objective of the coding activity can itself
help in producing more maintainable software.
For implementing our design into code, we require a high-level functional language. A programming language
should have the following characteristics:
ID2L1 : FROM CONCEPTUAL TO LOGICAL LEVEL
Readability: A good high-level language will allow programs to be written in some methods that resemble a
quite-English description of the underlying functions. The coding may be done in an essentially self-documenting
way.
Portability: High-level languages, being virtually machine-independent, should be easy to develop portable
software.
Generality: Most high-level languages allow the writing of a vast collection of programs, thus relieving the
programmer of the need to develop into an expert in many diverse languages.
Brevity: Language should have the ability to implement the algorithm with less amount of code. Programs mean
in high-level languages are often significantly shorter than their low-level equivalents.
Error checking: A programmer is likely to make many errors in the development of a computer program. Many
high-level languages invoke a lot of bugs checking both at compile-time and run-time.
Cost: The ultimate cost of a programming language is a task of many of its characteristics.
Quick translation: It should permit quick translation.
Efficiency: It should authorize the creation of an efficient object code.
Modularity: It is desirable that programs can be developed in the language as several separately compiled
modules, with the appropriate structure for ensuring self-consistency among these modules.
Widely available: Language should be widely available, and it should be feasible to provide translators for all
the major machines and all the primary operating systems.
Project controls are all-encompassing for project definition, planning, execution, and completion; assisting in the
entire lifecycle of your project. As we said before, the use of controls will vary according to individual project
demands, but project controls address, organize, and of course control.
VII. Process organization
A software process is the set of activities and associated outcome that produce a software product. Software
engineers mostly carry out these activities. There are four key process activities, which are common to all software
processes. These activities are:
1. Software specifications: The functionality of the software and constraints on its operation must be
defined.
2. Software development: The software to meet the requirement must be produced.
3. Software validation: The software must be validated to ensure that it does what the customer wants.
4. Software evolution: The software must evolve to meet changing client needs.
A software process model is a specified definition of a software process, which is presented from a particular
perspective. Models, by their nature, are a simplification, so a software process model is an abstraction of the
actual process, which is being described. Process models may contain activities, which are part of the software
process, software product, and the roles of people involved in software engineering. Some examples of the types
of software process models that may be produced are:
1. A workflow model: This shows the series of activities in the process along with their inputs, outputs and
dependencies. The activities in this model perform human actions.
2. A dataflow or activity model: This represents the process as a set of activities, each of which carries out
some data transformations. It shows how the input to the process, such as a specification is converted to
an output such as a design. The activities here may be at a lower level than activities in a workflow model.
They may perform transformations carried out by people or by computers.
3. A role/action model: This means the roles of the people involved in the software process and the activities
for which they are responsible.