Está en la página 1de 25

SynapseIndia Feedback

on Programming and
Software Development
Session 1: Introduction to Software
Development

Content

Software

Introduction to Software Development

Process Models
The Waterfall Model

Introduction to Computer Programming

What is Software?
Types of Software
Why develop new Software?

System Software
Languages

Module Overview
2

Software

Why is it so important?

The economies of ALL developed nations are


dependent on software.

9/11 highlights this with the destruction of the stock


exchange computers

More and more of our daily lives are being


supported/monitored by software

The engines of our cars


Our washing machines
Getting on a bus/train
3

What is Software?

Software is the part of a


computer that makes it
useful.

Software

Application
Operating System
Hardware

Software is not tangible.

In this module we are going to


focus upon application software
development.

The Computer

It is conceptual so doesnt wear


out like hardware.

Software is a set of
instructions (Programs).

These are acted upon (executed)


by the hardware.
Software is also the documents
that describe the operation and use
of the programs.

Windows 98/2000/XP
Linux/Unix
Browser
Email
Word Processor

What does it do?

Application
Operating System
Hardware

Generally software takes in data and processes it


into information.
The many different types of software basically vary
from where/whom data is acquired and where/whom
information is sent/given.

From the
user/device
/sub-system

Data In

Processing

Information
Out

To the
user/device
/sub-system

Types of Software

Application
Operating System
Hardware

Generic (Off-the-shelf) Applications

Well known packages such as word processors,


accounting, image editing, to name but a few.
Anyone is able to buy them.

Bespoke (Customized) Products

Systems that are built specifically for individual


people/organisations.

They can also be generic software packages that are


customized.

The high-cost nature of this type of software


means it is not economically available to all.
6

Types of Software

Application
Operating System
Hardware

System Software

This type of software exists at the Operating


System layer. It is the operating system itself,
compilers, editors.any kind of software that
supports the execution and/or development of
applications.

Application Software

Real-time Software

Programs that monitor/analyse/control real world events.


A nuclear power plant cooling system is a good
example.
7

Types of Software

Application
Operating System
Hardware

Application Software

Business Software

Business Information Systems such as payroll, accounts


and order management/tracking. There are off-the-shelf
packages available for small businesses, however large
businesses usually develop their own software.

Engineering and Scientific Software

Typically number crunching programs for areas such as


astronomy, molecular biology, weather forecasting and
Computer Aided Design (CAD) for engineers. Generic
programs do exist for some of these areas, however
research usually requires new software to be developed.
8

Types of Software

Application
Operating System
Hardware

Application Software

Embedded Software

Intelligent products such as cookers, washing machines


and microwaves use embedded software that typically
resides in a Read Only Memory (ROM). Due to the
individual nature of such products this software is usually
developed/tailored for each.

Personal Computer Software

Spreadsheets, word processors, computer graphics,


multimedia and database applications are typical. This
type of software is predominantly off the shelf but does go
through many versions to remove bugs and increase
functionality.
9

Types of Software

Application
Operating System
Hardware

Application Software

Artificial Intelligence (AI) Software

AI is used to solve complex problems such as scheduling


the maintenance of manufacturing equipment to
minimise their shutdown. Other uses include pattern
recognition (speech/visual). This software is typically
newly developed for each application.

The application of computers through


software development is only limited by our
imaginations(and its cost)
10

Why develop new Software?

As hardware will always eventually wear out, it will


need to replaced.

Software on the other hand, doesnt wear out in this


traditional sense, but will become increasingly less
useful as users requirements for it changes over
time.

This means that software needs to be either periodically


updated or replaced.

Understanding the process of software development


is therefore paramount in keeping software
systems/applications continually useful to its users.
11

Introduction to the Software


Development Process

There are many documented software development


processes; too many to mention here. However, all
software development processes can be
categorised into:

Sequential Process Models

Were software is developed in a sequence of stages,


typically: Analyse, Design, Code, Test.

Iterative Process Models

Were a sequential process model is repeated until the


software is deemed correct. Typically used when the
requirements for a piece of software are not fully known when
development starts.
12

The Prototyping Model


(Iterative)
Listen to customer
Build/revise
Start

Spec

- Analyse their
Requirements

Finish

mock-up

Customer
test-drives
mock-up

This allows the requirements of the system to be explored by the


customer.
Once the customer is satisfied with the software system, it can
then be taken as the final system or thrown away to allow a fresh
system to be developed from the requirements specification.
13

The Waterfall Model


(Sequential)

While other process models will be


investigated in this module, we will be
focussing upon the central stages of the
Waterfall Model of Software Development.

Requirements

Analysis
Design
Code
Test

Softwar
e

14

Analysis (Waterfall Model)

The analysis phase of software development aims


to develop a requirements specification that can be
used to design the new software system.
While there is usually more to a requirements
specification, we will be focussing on two of its main
parts:

Functional Requirements

First, an abstract definition of what the system must do.


Then, a detailed set of functional requirements can be
bulleted.

Non-functional Requirements

Usually qualitative factors such as performance, efficiency


and usability are described.

15

Design (Waterfall Model)

System design is concerned with how the


system functionality is to be provided by the
different components of the system. It
involves:

Requirements Partitioning and Identification of


Sub-systems (if any)
Assign requirements to sub-systems and specify
their functionality
Define sub-system interfaces
16

Design (Waterfall Model)

For each sub-system, a detailed design document is


then created.

Design is often an iterative process, especially in a


system made up of several sub-systems

It specifies the structural make-up of the sub-system and


were necessary how data is stored, manipulated and
communicated as well as how information is presented.

As problems identified during the design of one sub-system


can cause the re-design of another.

Design is typically specified using a mixture of


textual descriptions and structural diagrams.
17

Coding (Waterfall Model)

Coding can be seen as simply interpreting the


design documents into machine executable
instructions.

There are many different programming languages

Factors including the applications domain will help


in making a choice of which programming language
to use:

Platform (Hardware, Operating System, Network),


Programming Paradigm (Object-Oriented/ Functionbased/Event-based)
Experience of the programmers available to do the coding.
18

Testing (Waterfall Model)

Testing should start as soon as the


requirements specification is available.
A test plan document should be drawn up in
parallel with the initial design of the system

The plan uses the requirements to provide an


overall testing strategy for the complete system in
order to satisfy the following conditions:

Verify Have we built the system right?


Validate Have we built the right system?

19

Testing (Waterfall Model)

As a more detailed design for each of the


sub-systems is generated, specific testing
strategies for each sub-system can be
designed
When the code for a sub-system is complete,
specific tests for each sub-system can be
designed based upon the chosen strategy

20

Introduction to Computer
Programming
As mentioned previously, coding is
(Coding)

interpreting a design into a set of instructions


for the computer to execute.
There are many languages that can be used
to code a program:

(Abstractly) High-Level Languages

Java, C, C++, Pascal

Low Level Languages

Assember, Machine Code


21

Introduction to Computer
Programming

In this module we will be using Java, a highlevel language.


Although it is an object-oriented language we
will not be teaching or examining on the
object-oriented part of the language.

Instead we will be using Java as if it were a


functional language, like C or Pascal.
The course book supports this approach of using
Java to teach programming in this way.
22

Introduction to Computer
Programming

Throughout the module we will be helping


you understand how programs are built and
tested.
Their structural make-up is central to this:

Sequence of instructions
Iteration of instructions
Selection of instructions
Grouping of Instructions

In this case Functions


23

Module Overview

Semester 1

Software Development Process, Project Management,


Requirements Analysis and Specification, Testing and
Debugging, Problem Solving
Book:

Software Engineering, 7th Edition, Ian Sommerville, Publishers:


Addison Wesley

Semester 2

Problem Solving, Design, Coding (Programming)


Book:

Introduction to Java Programming, Comprehensive, 5th Edition,


Y. Daniel Liang, Publishers: Prentice Hall, ISBN: 0131857215
This book will not be available until December, but will not be
needed until Semester 2

24

Module Overview

This module is assessed using 100%


coursework

Coursework 1 (40% of the module mark)

Given out week starting 1st November 2004


To be handed in 17th January 2005
Several small essay type questions and the production
of a requirements specification and test plan.

Coursework 2 (60% of the module mark)

Dates to be confirmed at the beginning of semester 2


Production of a software system, from requirements
specification through design, coding and testing.
25