You are on page 1of 21

Software Implementation

Hiran Ekanayake
University of Colombo School of Computing
What is Implementation?
• It is the transformation of design specification to source
code that can be executed on a computer.
• It is the final stage of the series of front end activities we
have been dealing with.
• Coding is relatively straight forward given a design
specification and it is a minor activity compared to other
phases of development.
• A good design may be spoiled by the bad choice of a
programming language (platform). However, a bad design
cannot be corrected through coding.
What is Implementation?
• Certain design issues may not be supported by the
language in which case the coder may choose to violate the
design.
• Although design quality should not be compromised
because of a language issue, design approach may depend
on the language choice.
Computing Platform
“a place to launch software”

Application Software
Dependent on the software platform

Software Platform
Operating system (including device drivers) and the programming
environment. It facilitates the running of other software.
E.g. Microsoft Windows, Linux, Mac OS, Java, .NET…

Hardware Platform
Hardware architecture and components that make up the computer.
Pure assembly language (machine code) can be run on this.
E.g. RISC, CISC, x86, OS/400…
Cross-Platform Software
• A cross-platform software must be able to function on more than one
computer architecture or operating system.
• Developing a software to function on different operating systems can
be a time-consuming task given that different operating systems have
different application programming interfaces or APIs (e.g. Linux uses
a different API for application software than Windows does).
• Particular operating system may runs on different computer
architecture does not mean that the software written for that operating
system will automatically work on all architectures that the operating
system supports.
• A program written using a popular programming language (e.g. C,
C++) does not mean it will run on all operating systems that support
that programming language.
Cross-Platform Software – Some
Solutions
• Java virtual machine
• .NET framework
• Interpreted languages – e.g. PHP, Perl,
JavaScript and Python
Coding Styles
Coding Styles
• Coding should be done with an aim toward maintenance.
• This could be done by adhering to coding standards (standards allow
the design rationale to be reflected in the code, and consistent code to
be produced).
• Considerations required in:
– Documentation (comments, pre & post conditions, and references)
– Understandable identifiers (here there is a trade off between speed and
readability)
– Indentation and organization (this should be done to reflect the logical
structure of the program)
– Explicit declarations
– Use of characters, spaces and colors effectively so as to promote
readability
– Breaking complicated expressions to simple ones (This not only enhances
readability but also increases the chances of efficient compilation)
Comments on Top of a File
• State the date it was written, and by whom.
• Include a description of what the file does.
• Note what file it was immediately derived from.
• Note all changes from its predecessors where appropriate.
• Indicate any datasets the file utilizes as input.
• Indicate any output files or dataset created.
Example:
\* File-Name: mnp152.g
Date: Feb 2, 1994
Author: JN
Purpose: This file does multinomial probits on our basic model.
Data Used: nes921.dat (created by mkasc1c.cmd)
Output File: mnp152.out
Data Output: None
Machine: billandal (IBM/RS6000)
*\
Modularity
• Modularity refers to the concept that tasks should be split
up. If two tasks can be performed sequentially, rather than
two-at-a-time, then perform them sequentially.
User Interfaces
User Interfaces
• 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.
Human Factors in Interface Design
• Limited short-term memory
– People can instantaneously remember about 7 (±2) items of
information. If you present more than this, they are more liable to
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.
User Interface 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.
User Interface 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
Example: Alternative Information
Presentations
The UI Design Process
• UI design is an iterative process involving
close liaisons between users and designers.
• The 3 core activities in this process are:
– User analysis. Understand what the users will
do with the system;
– System prototyping. Develop a series of
prototypes for experiment;
– Interface evaluation. Experiment with these
prototypes with users.
Software Deployment
Software Deployment
• Software deployment is all of the activities that
make a software system available for use. It
includes:
– System Packaging
– Software Releasing
– Installation
– Configuration
– Activate / De-Activate
– Future updating
– Retire/Remove
System Packaging
• It is the process of combining metadata describing the software, and
the binary compiled code artifacts into a package.
• A software is packaged into one of available archive formats. E.g. tar,
gzip, rar, zip, pkg, RPM, MSI, JAR (WAR, RAR, EAR)
• Archiving formats support features, such as file concatenation,
compression, encryption, file spanning, parity/cyclic redundancy
check, checksum, self-extraction, self-installation, volume and
directory structure information, package notes/description, and other
meta-data.
• A package management system is a collection of tools to automate the
process of installing, upgrading, configuring, and removing software
packages from a computer.
Bibliography
• Wikipedia, Wikimedia Foundation, Inc., Retrieved May 10, 2008 from
http://en.wikipedia.org/
• Lecture notes from SE306 Team Project Deployment, Maintenance
and MDD University of Auckland, New Zealand
• Ian Sommerville (2004), User interface design, Retrieved May 10,
2008 from
http://www.comp.lancs.ac.uk/computing/resources/IanS/SE7/Presentat
ions/PPT/ch16.ppt
• Sommerville, I. (2001), Software Engineering, Pearson Education,
Indian Reprint, 2002

You might also like