Information System Engineering

lumpysteerSoftware and s/w Development

Dec 2, 2013 (3 years and 4 months ago)

48 views

Information System Engineering

Lukito Edi Nugroho


Department of Electrical Engineering

Gadjah Mada University

Course Outline


Introduction: what is IS engineering (a.k.a.
what is software engineering) ?
-

1 wk


Software project management
-

1
-
2 wk


Software requirement analysis
-

2
-
3 wk


Object
-
oriented analysis


Software design
-

3 wk


Object
-
oriented design


Implementation
-

2 wk


Object
-
oriented programming


Testing and maintenance
-

2 wk

Requirements


Hard work :
-
)


Understanding of object
-
orientation will be
advantageous


Object
-
oriented
analysis


Object
-
oriented
design


Object
-
oriented
programming



One or more REAL programming language


Try Java!


Team work

What is Information System Engineering?


The
engineering

of
information systems


… with respect to
engineering


Problem
-
driven activity


Analysis, planning, design, and implementation


Systematic approach, using well
-
known principles


What is an information system ?


A system that manipulates information


Search and retrieval


Transformation


Storage


Organization


Dissemination


What is Information System Engineering?


The engineering of information systems

(cont.)


Components


Hardware


Software


People


Environment


An integrated activity


Hardware engineering


Software engineering


Human engineering


Environmental support engineering

What is Information System Engineering?


The engineering of information systems
(cont)


Hardware engineering


Does not mean making new computer hardware


… but instead designing hardware configuration that can
provide optimal support for running an information
system


Example: hardware requirement analysis, network design
and implementation, and network configuration


People engineering


In essence, to prepare people who will be involved in the
execution of an information system (i.e., users)


Through socialization, training, human resource policies,
etc.

What is Information System Engineering?


The engineering of information system


Establishing environmental support is closely
related to human engineering


Organizational structure


Management style


While we (presumably) manage to handle the
engineering of the three system components,
what about the
software

component ?


Software engineering
is not

programming


So many unexplored areas, especially by
practitioners


We will spend much time discussing this aspect in
our lecture

An Illustration: A NASA Project …


A new aircraft safety control
software


To reduce aircraft accident
rate by 5
-
10 factors in 10 yrs


By employing “intelligence”
using neural network software


Ability to “learn” current situ
-
ation and characteristics


… and to adjust to the best
possible flight performance


On
-
line intelligent flight
control

An Illustration: A NASA Project …


Some challenges …


Complexity
… so many flight
control components


Real
-
time performance


exceeding supersonic speed


Cost

… expensive aircraft


Life

… hundreds of human life
aboard


The flight control software
must face all the challenges


What is Software Engineering?


A disciplined approach for software
development


Sound engineering principles


Comprehensive combination of methods, tools,
techniques, and paradigm


Encompassing all stages of development


Driven by well
-
planned management support


It is like other engineering disciplines, but …


Software is an abstract entity


how it differs
from engineering of physical matters ?


Computing is a relatively new field


is it mature
already ?

Why Software Engineering ?


In the early days of software development …


Distress in software development
-

and it lasts a
long time and recurring often


The situation


More than just “software that does not work properly”


… but encompassing many other aspects of software
development and maintenance


Programs are difficult to maintain


Complaints about software quality


Late development projects


Increasing development budget


Incapability of meeting a growing demand for more software

What about Software ?


Types


System software and application software


Business, engineering, and scientific software


Artificial intelligence software


Real
-
time, embedded software


Stand
-
alone, distributed, and mobile software


Software is developed, not physically mass
-
manufactured


Due to its logical nature


Good quality is achieved only by good design
-

as opposed
to good design AND implementation in hardware
manufacturing


Software development needs a correct approach

What about Software ?


Software does not “wear out”


Unlike hardware, software does not fail because of
aging


... but it does deteriorate ...


Software undergoes changes due to maintenance,
while modifications introduce certain defects,
raising its failure rate


There is no “spare
-
part” to replace defected
components
-

software failure means flawed
design


software maintenance is more complex
than hardware maintenance, because software
maintenance related to software failure almost
always requires design modifications

Why are there problems ?


Human factor: the logical characteristics of software
often misleads people who work with it. They tend to
treat software as other physical entities


Management myths


Standards and procedures exist sufficiently


All that we need in development are computers and newest
development tools


If we lag behind schedule, just add more programmers


Customer myths


A general statement is sufficient to start a project, details can
follow later


Changes in requirements can be easily accommodated,
because software is flexible


Developer


Once we finish writing a program, we’re done


The only deliverable of a software project is a working program

Software Engineering Paradigm


Defines how we approach the software crisis
problem


A unified perspective of software development


Comprised of a set of steps that encompass:


Methods: technical “how
-
to” to build software


Tools: automated support for methods


Procedures: gluing methods and tools


timing of when methods should be applied


deliverables (documents, report, forms, etc)


control for quality and coordination


milestones for progress assessment

The Classic Software Life Cycle


Like a “waterfall”, exhibits a sequential nature
of software development


Begin from system level, ending at software
maintenance


System engineering


Software requirement analysis


Software design


Coding


Testing


Maintenance

The Classic Software Life Cycle


Problems with this paradigm


Real projects rarely follow sequential flow


Difficulties in stating requirements in the early stage of
development


Tangible results (i.e., a working program) will not be
available until late in the project

Software Development with Prototyping


Promotes the concept of
modeling


Not all details are clear in the beginning


Start with important concepts, then dive into
details stepwisely


Highly iterative

Software Development with Prototyping


Problems


User temptation to use
prototype as a working
version of the software


Developer tends to forget
finetuning in order to get
a working version quickly

The Spiral Model


Developed to combine the best of the life
cycle and prototyping models


Uses an evolutionary approach suggested by the
prototyping paradigm


Maintains systematic stepwise approach of the life
cycle model, but incorporates it in an iterative
framework


It adds risk analysis component to minimize
risk during development


The Spiral Model


Four major activities


Planning


Risk analysis


Engineering


Customer evaluation


Activities are performed iteratively, progress
-
ively moving towards more complete versions


Risk analysis to evaluate whether it is still feasible
to continue the project


Engineering phase can employ the approach of
the life cycle model

The Spiral Model

A Generic View of Software Engineering


Three generic phases


Definition: what we are going to build


System analysis


Project planning


Requirement analysis


Development: how we build it


Software design


Coding


Software testing


Maintenance: how we adapt to changes


Correction


Adaptation


Enhancement