0% found this document useful (0 votes)
38 views74 pages

SE - Lecture6 - Construction & Reuse 28 Nov

The document outlines principles and processes for user interface design, emphasizing the importance of matching interfaces to user capabilities and preferences. It covers design principles, interaction styles, user analysis, prototyping, and usability evaluation techniques. Additionally, it provides insights into software construction fundamentals and strategies for minimizing complexity in coding and design.

Uploaded by

Vasilii
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
38 views74 pages

SE - Lecture6 - Construction & Reuse 28 Nov

The document outlines principles and processes for user interface design, emphasizing the importance of matching interfaces to user capabilities and preferences. It covers design principles, interaction styles, user analysis, prototyping, and usability evaluation techniques. Additionally, it provides insights into software construction fundamentals and strategies for minimizing complexity in coding and design.

Uploaded by

Vasilii
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 74

Course

Software Engineering
Methodology

NOTE: Presentation is available by your request

Slide 1
User interface design

Lecture 11

Slide 2
Objectives

 To suggest some general design principles for


user interface design
 To explain different interaction styles
 To explain when to use graphical and textual
information presentation
 To explain the principal activities in the user
interface design process
 To introduce usability attributes and approaches
to system evaluation
Slide 3
Topics covered
 Design issues
 The user interface design process
 User analysis
 User interface prototyping
 Interface evaluation

Slide 4
The user interface
 User interfaces should be designed to match
the skills, experience and expectations of its
anticipated users.
 System users often judge a system by its
interface rather than its functionality.
 A poorly designed interface can cause a user
to make catastrophic errors.
 Poor user interface design is the reason why
so many software systems are never used.

Slide 5
Human factors in interface design
 Limited short-term memory
• People can instantaneously remember about 7 items of
information. If you present more, they make mistakes.
 People make mistakes
• When people make mistakes and systems go wrong,
inappropriate alarms and messages can increase stress
and hence the likelihood of more mistakes.
 People are different
• People have a wide range of physical capabilities.
Designers should not just design for their own capabilities.
 People have different interaction preferences
• Some like pictures, some like text.
Slide 6
UI design principles

 UI design must take account of the needs,


experience and capabilities of the system
users.

 Designers should be aware of people’s


physical and mental limitations (e.g. limited
short-term memory) and should recognise that
people make mistakes.

Slide 7
Core Design principles

 User familiarity
• The interface should be based on user-oriented
terms and concepts rather than computer concepts. For
example, an office system should use concepts such as
letters, documents, folders etc. rather than directories, file
identifiers, etc.
 Consistency
• The system should display an appropriate level
of consistency. Commands and menus should have the
same format, command punctuation should be similar, etc.
 Minimal surprise
• If a command operates in a known way, the user should be
able to predict the operation of comparable commands

Slide 8
Core Design principles

 Recoverability
• The system should provide some resilience to
user errors and allow the user to recover from errors. This
might include an undo facility, confirmation of destructive
actions, 'soft' deletes, etc.
 User guidance
• Some user guidance such as help systems, on-line
manuals, etc. should be supplied
 User diversity
• Interaction facilities for different types of user should be
supported. For example, some users have seeing
difficulties and so larger text should be available

Slide 9
Interaction styles
 Direct manipulation
 Menu selection
 Form fill-in
 Command language
 Natural language

Slide 10
Web-based interfaces

 Many web-based systems have interfaces


based on web forms.
 Form field can be menus, free text input,
radio buttons, etc.
 In the LIBSYS example, users make a
choice of where to search from a menu and
type the search phrase into a free text field.

Other examples?
Slide 11
Information presentation
 Static information
• Initialised at the beginning of a session. It does
not change during the session.
• May be either numeric or textual.

 Dynamic information
• Changes during a session and the changes
must be communicated to the system user.
• May be either numeric or textual.

Slide 12
Information display factors

 Is the user interested in precise information or


data relationships?
 How quickly do information values change?
Must the change be indicated immediately?
 Must the user take some action in response to
a change?
 Is there a direct manipulation interface?
 Is the information textual or numeric? Are relative
values important?

Slide 13
Alternative information presentations
Jan Feb Mar April May June
2 842 285 1 3 164 2 789 12 73 2 83 5

4000

3000

2 000

1 000

0
Jan Feb Mar April May June

Slide 14
Analogue or digital presentation?
 Digital presentation
• Compact - takes up little screen space;
• Precise values can be communicated.
 Analogue presentation
• Easier to get an 'at a glance' impression of a
value;
• Possible to show relative values;
• Easier to see exceptional data values.

Slide 15
Presentation methods

1
0 10 20
4 2

Dial with need le Pie char t Ther mometer Horizontal bar

Slide 16
Displaying relative values

Pressure Temperature
0 100 200 300 400 0 25 50 75 100

Slide 17
User analysis

 If you don’t understand what the users want to do


with a system, you have no realistic prospect of
designing an effective interface.

 User analyses have to be described in terms that


users and other designers can understand.

 Scenarios where you describe typical episodes of


use, are one way of describing these analyses.

Slide 18
Interviewing

 Design semi-structured interviews based on


open-ended questions.

 Users can then provide information that they


think is essential; not just information that
you have thought of collecting.

 Group interviews or focus groups allow users


to discuss with each other what they do.
Slide 19
User interface prototyping
 The aim of prototyping is to allow users to gain
direct experience with the interface.

 Without such direct experience, it is impossible


to judge the usability of an interface.

 Prototyping may be a two-stage process:


• Early in the process, paper prototypes to be used;
• Sophisticated automated prototypes are
developed later.

Slide 20
Paper prototyping
 Work through scenarios using drafts of the
interface.

 Use a storyboard to present a series of


interactions with the system.

 Paper prototyping is an effective way of


getting user reactions to a design proposal.

Slide 21
Usability attributes

Attribute Description
Learnability How long does it ta ke a new user to become productive with
the system?
Speed of operation How well does the system response match the user’s work
practice?
Robustness How tolerant is the system of user error?
Recoverability How good is the system at recovering from user errors?
Adaptability How closely is the system tied to a single model of work?

Slide 22
Simple evaluation techniques

 Questionnaires for user feedback.


 Video recording of system use and
subsequent video evaluation.
 Instrumentation of code to collect information
about facility use and user errors.
 The provision of code in the software to
collect on-line user feedback.

Slide 23
Key points

 User interface design principles should help guide


the design of user interfaces.
 Interaction styles include direct manipulation, menu
systems form fill-in, command languages and
natural language.
 Graphical displays should be used to present trends
and approximate values. Digital displays when
precision is required.
 Colour should be used sparingly and consistently.

Slide 24
Key points

 The user interface design process involves user


analysis, system prototyping and prototype
evaluation.
 The aim of user analysis is to sensitise designers to
the ways in which users actually work.
 UI prototyping should be a staged process with early
paper prototypes used as a basis for automated
prototypes of the interface.
 The goals of UI evaluation are to obtain feedback on
how to improve the interface design and to assess if
the interface meets its usability requirements.

Slide 25
Work Activity

 What factors to be taken into account in the design of a


menu-based interface for walk-up systems such as
bank ATMs? Write your comments on the interface of
an ATM that you use.

Slide 26
Factors to be taken into account when
designing 'walk up and use' systems are:
 System users may be disabled so will not be able to respond quickly to
requests.
 Users may not be able to speak the native language of the country where the
machine is installed.
 System users may be completely unfamiliar with technology and may make
almost any kind of error in using the machine. The interface must minimise the
number of possible errors and must be resilient to any possible error.
 Some system users are likely to be confused by many options.
 Different people may understand the meaning of icons in different ways.
 If the system has navigation options, users are almost certain to become lost.
 Most users will want to use the system for very simple functions (e.g.
withdraw cash from an ATM) and will want to do this as quickly as possible.
 There are many different ATM interfaces so each must be considered
separately.
Slide 27
User interface
prototyping tools

Slide 28
Outline
1. Sketch
2. Marvelapp
3. Flinto
4. Photo.io
5. Figma
6. InVision

1
Slide 29
Sketch
License: Proprietary
Operating system: macOS
Cost: 99$ (for year)
Latest version: 39.1
Web-site:
https://www.sketchapp.com/

• The sketch community offers


many
plugins
• A lot articles written
• «Export to code»

Slide 30
Marvelapp

License: Proprietary
Operating system: macOS, Windows
Cost: 144 $ (Pro for year), free trial
Web-site: https://marvelapp.com/

• Simple to use
• A browser-based
• Strong integration with Photoshop and
Sketch

Slide 31
Flinto

License: Proprietary
Operating system: macOS, Windows
Cost: 99 $, free trial
Web-site: https://www.flinto.com/

• Simple to
use

Slide 32
Proto.io

License: Proprietary
Operating system: macOS, Windows
Cost: 24 $ (for month for 5 projects), free trial
Web-site: https://proto.io/

• Simple to use
• A browser-
based

Slide 33
FIGMA

License: Proprietary
Operating system: macOS, Windows
Cost: 12 $ (for month), free for 3 projects
Web-site: https://www.figma.com/

• Simple to use
• A browser-based version
• Designers can give comments on a
design in
Real time

Slide 34
InVision

License: Proprietary
Operating system: macOS, Windows
Cost: 25 $ (for month), single project free
Web-site: https://www.invisionapp.com/

• A browser-based
• Help to create better
communication
Between team
• Uber, Salesforce, Twitter, Linkedin
use
for prototyping

Slide 35
References
1. 7 Essential Prototyping Tools to use with Sketch,
https://medium.com/sketch-app-sources/7-essential-prototyping-
tools-to-use-with-sketch-c7a594f486a0
2. 10 Best Prototyping Tools for UI/UX Designers in 2018,
https://blog.prototypr.io/10-best-prototyping-tools-for-ui-ux-
designers-in-2018-6591ea1e2e71
3. 11 Best Prototyping Tools For UI/UX Designers — How To
Choose The Right One?, https://medium.theuxblog.com/11-best-
prototyping-tools-for-ui-ux-designers-how-to-choose-the-right-one-
c5dc69720c47
4. The 8 best prototyping tools for 2018,
https://www.creativebloq.com/advice/the-8-best-prototyping-tools-
for-2018
5. Top 22 Prototyping Tools For UI And UX,
https://blog.prototypr.io/top-20-prototyping-tools-for-ui-and-ux-
designers-2017-46d59be0b3a9

Slide 36
Software Construction and Reuse

Lecture 12.

Slide 37
Context of software construction

Detailed creation of working, meaningful


software through a combination of coding,
verification, unit testing, integration testing, and
debugging.

Slide 38
Key Points

 Software construction is the key activity in software


development; construction is the only activity that’s
guaranteed to happen on every project.

 The main activities in construction are detailed design,


coding, debugging, integration, and developer testing
(unit testing and integration testing).

 Other common terms for construction are “coding” and


“programming.”

 The quality of the construction substantially affects the quality


of the software.

Slide 39
Software construction fundamentals

The fundamentals of software construction include:


• Minimizing complexity
• Anticipating change
• Constructing for verification
• Standards in construction

Slide 40
What does it mean?

Minimizing complexity is considered one of the


fundamental principles of software construction.

1) Write as little code as possible


2) Write code that is simple
3) Use very few external libraries
4) Develop extremely fast before the code base
become complex

HOW to do this ?
Slide 41
Minimizing Complexity
 Specific development practices include:
• Using standards & specific coding techniques
• Using quality techniques
 Enabling techniques that minimize complexity in design:
• Abstraction / Coupling / Cohesion
• Decomposition and modularization
• Separation of interface and implementation
• Sufficiency, completeness, and primitiveness
 Strategies that reduce the complexity of the development process:
• Using patterns
• Reuse
• Incremental development
• Error-reduction techniques
• Heuristics

Slide 42
Approaches to keep it simple

 Use an incremental development and delivery methodology if possible.

 Incorporate customer involvement throughout the development process,


even if the system is not being delivered incrementally. Have frequent
business customer review meetings, and show newly created displays
and functionality.

 Use tools. Have a source code control system and do daily check-ins.
Automate builds. Use a configuration management system.

 Modularize the code, logically and physically.

 Hide information by minimizing the number of objects or functions that


can directly access database tables and records and other information.
The ideal minimum is one.
Slide 43
Quiz: Choose the correct answer (s)

Coding efficiency can be applied to:

1. Central processing unit (CPU) time


2. Data storage (disk space)
3. I/O time
4. Programming time

Slide 44
Quiz

Do not contribute to code efficiency

1. Data structures and algorithms


2. Programming style
3. Architecture
4. Detailed design decisions

Slide 45
Quiz

Do not contribute to code efficiency

1. Data structures and algorithms


2. Programming style – don’t matter in what line “ ) “ is
3. Architecture
4. Detailed design decisions

Slide 46
Quiz: The best steps for improvement ?
Situation. A design team is working on the design of a payroll system. The
system is being revised to accommodate new features that the customer
desires. Previous versions of the design were not well documented, and the
team is taking advantage of the current version to document the new design.
During product implementation, a mixture of experienced and inexperienced
developers were assigned to the project. An orientation process is not in
place that creates a consistent process where expectations were clearly
defined.

During coding inspection, the lead developer told the developers that were
new to the organization that their code was difficult to follow and understand.
Inspecting their work would need to be rescheduled so that improvements to
their code could be made. Which is the MOST effective way to improve the
understandability of their code?
Slide 47
How to improve understandability of
code?

a) The developers need to improve the naming of


variables and functions.
b) The developers need to follow well-known industry
coding standard in their work.
c) The developers need to follow company coding
standards in their work.
d) The developers need to explain their work to their
teammates so that they can better understand it.

Slide 48
c) follow company coding standards
 Following existing company-specific coding standards will
provide the most effective way to improve the
comprehension of developed code within the company.

 Option (a) is not correct because improving the names of


variables and methods only addresses a portion of the
readability problem. Option (b) would be a rational choice.
However, the organization's coding standards need to be
followed, and the internal standard may differ from a
preexisting industry standard. Option (d) is incorrect,
because explaining one's own work only works for a short
period of time at best.

Slide 49
Quiz

Which types of testing are typically involved in


construction testing?

a) Beta testing
b) Integration testing
c) Unit testing
d) Configuration testing

Slide 50
What can be reused ?
Design
patterns Data
Specifications Structures
Compo nent Application
frameworks prod uct lines Aspect-oriented
so ftware develop ment
Class Definitions
Compo nent-based COTS Pro g ram
develop ment integ ration generators
Legacy system
wrapping
Configurable ver tical
ap plications Source Code
Service-o riented
systems
Pro g ram
lib raries

Slide 51
Reuse-based software engineering

 Application system reuse


• The whole of an application system may be reused
either by incorporating it without change into other
systems (COTS reuse) or by developing application
families.
 Component reuse
• Components of an application from sub-systems to
single objects may be reused.
Object and function reuse
• Software components that implement a single well-
defined object or function may be reused.

Slide 52
Application system reuse
The whole application may be reused, e.g. Billing
systems, payroll systems, registration systems
Key problem ==> portability

Function reuse: software component for a single


function (method) might be reused, e.g. mathematical
function, Individual developer designed tools, Java API,
game components, etc

Major sub-system of an application may


be reused, e.g. ??
Slide 53
Software Reuse

 Reusing trusted (well-tested) components


increases software reliability

 Make reuse easy for future and exploit it now


• Writing code with future reuse in mind
• Write code with clear API
• Writing code from reusable code
• Software libraries, outsourced components

Slide 54
Application Programming Interface (API)
 API is key to proper reusability;
• Should be easy to learn and use, secure and hard to misuse, and
easy to extend and adapt
• Should be stable over long time

 Corporate asset: reusable component with clear API

 API and its implementation must reflect the requirements

 Functional and properly protected


• Does one function only and hides private details

Slide 55
WHY Reuse?

 Reduce development costs


 Increase system reliability
 Reduce overall process risk
 More effective of specialists
 Organizational standards can be built-in.
 Software development time reduced.

Slide 59
But...

 To make effective use of reusable


components we cannot first design a
system and THEN search for reusable
components.
 The design process MUST be reuse
driven.
 System requirements must be modified
according to the availability of reusable
components

Slide 60
Reuse benefits 1

Increased dependability Reused software, that has been tried and tested in
working systems, should be more dependable than new
software. The initial use of the software reveals any
design and implementation faults. These are then fixed,
thus reducing the number of failures when the software
is reused.
Reduced process risk If software exists, there is less uncertainty in the costs of
reusing that software than in the costs of development.
This is an important factor for project management as it
reduces the margin of error in project cost estimation.
This is particularly true when relatively large software
components such as sub-systems are reused.
Effective use of specialists Instead of application specialists doing the same work
on different projects, these specialists can develop
reusable software that encapsulate their knowledge.

Slide 61
Reuse benefits 2

Standards compliance Some standards, such as user interface standards, can be


implemented as a set of standard reusable components. For
example, if menus in a user interfaces are implemented using
reusable components, all applications present the same menu
formats to users. The use of standard user interfaces improves
dependability as users are less likely to make mistakes when
presented with a familiar interface.
Accelerated Bringing a system to market as early as possible is often more
development important than overall development costs. Reusing software
can speed up system production because both development
and validation time should be reduced.

Slide 62
What sometimes prevents reuse?

 Developers do not know what is available


to be reused

 ‘Not invented here’ syndrome

 Reuse assets do not meet performance needs

 Reuse across team boundaries raise


coordination and ownership issues

 Version management problems


63
Slide 63
What sometimes prevents reuse?

Components that are created as part of


an application’s development are NOT
likely to be immediately reusable.

WHY??
We should consider Special features of individual machines:
Machine architecture, Operating system, Run-time system..

Slide 64
Reuse problems 1

Increased maintenance If the source code of a reused software system or component is


costs not available then maintenance costs may be increased as the
reused elements of the system may become increasingly
incompatible with system changes.
Lack of tool support CASE toolsets may not support development with reuse. It may
be difficult or impossible to integrate these tools with a
component library system. The software process assumed by
these tools may not take reuse into account.
Not-invented-here Some software engineers sometimes prefer to re-write
syndrome components as they believe that they can improve on the
reusable component. This is partly to do with trust and partly to
do with the fact that writing original software is seen as more
challenging than reusing other people’s software.

Slide 65
Reuse problems 2

Creating and maintaining a Populating a reusable component library and ensuring


component library the software developers can use this library can be
expensive. Our current techniques for classifying,
cataloguing and retrieving software components are
immature.
Finding, understanding and Software components have to be discovered in a
adapting reusable components library, understood and, sometimes, adapted to work
in a new environment. Engineers must be reasonably
confident of finding a component in the library before
they will make routinely include a component search
as part of their normal development process.

Slide 66
Application system reuse

 Involves the reuse of entire application


systems either by configuring a system for
an environment or by integrating two or more
systems to create a new application.

 Two approaches covered here:


• COTS product integration;
• Product line development (product families).

Slide 67
Planning for reuse

 Reuse must be carefully planned. If the software must be


done quickly, off-the-shelf systems may be appropriate.

 If the software is intended to be long-lived, components will


need to be modified. Access to the source code is essential
and may not be available from outside suppliers.

 Developers may lack the technical skills necessary to create


and/or integrate reusable components systematically.

 Organizations may not have the support or infrastructure


necessary to build & maintain library of reusable components.

 Use in safety-critical applications may be limited. Access to


the source code may be mandatory.
Slide 68
Benefits of reuse

 Reduced development costs: fewer components need


to be specified, designed, implemented, and validated.
 Quicker time to market, because both development and
validation time can be reduced.
 Increased dependability, because the software has
been tried and tested.
 Reduced process risk, because the cost is known.
 Standards compliance, because some standards can
be implemented as a set of standard reusable
components.

Slide 69
Disadvantages of reuse

 Increased maintenance costs if the source code


is not available.
 Difficulty associated with cataloging, archiving,
and retrieving reusable assets across multiple
business units. Creating a component library
can be expensive but necessary.
 Limited documentation of the components.

Slide 70
Software Maintenance

 Maintenance is needed to ensure that the


software continues to satisfy user
requirements.
 Maintenance is applicable to software that is
developed using any software life cycle
model
 Software products change due to corrective
and noncorrective software actions

Slide 71
Software Maintenance purpose
 correct faults;
 improve the design;
 implement enhancements;
 interface with other software;
 adapt programs so that different hardware,
software, system features, etc.
 migrate software and retire software

Slide 72
Five key maintaining activities

 Maintaining control over the software’s day-to-


day functions;
 Maintaining control over software modification;
 perfecting existing functions;
 Identifying security threats and fixing security
vulnerabilities;
 Preventing software performance from
degrading to unacceptable levels.

Slide 73
Core types of maintenance

 Corrective maintenance: reactive modification (or


repairs) of a software product problems.
 Adaptive maintenance: modification of a product
to keep it usable in a changed environment.
 Perfective maintenance: modification to provide
enhancements for users, improvement of
documentation, performance, maintainability, etc.
 Preventive maintenance: modification to detect
and correct faults in the product before they
become operational faults.
Slide 74
Software Evolution
“Existing large software is never complete and
continues to evolve” (IEEE)

But…

As it evolves, it grows more complex unless


some action is taken to reduce this complexity

Slide 75
Questions?

«Software is eating the world»

Marc Andreessen

Slide 76
Digital specialist's rewards expectations

Average month salary


Slide 77

You might also like