Вы находитесь на странице: 1из 39

http://en.wikipedia.

org/wiki/Fair_use

Software Development

Construction of useful software systems.

System components include:

Hardware (Server, Desktop, Printers, Wires, Routers )

People (Wetware -- fluid, dynamic, unstable?)

Software (ERP, CRM, Operating Systems, Telecom/Security/Analytics/Integration

software)

Not everything constructed from a scratch!

Why do we develop/implement software

To retain existing customers and add new customers

To improve customer relationships

To improve productivity/efficiency (within an organization or


team)
To upgrade a technology

To support changed business processes

To improve business value

and many
other
reasons!!
7

Business Context
Any organization has three primary interacting entities:

Clients (Downstream - they buy/get from organization)

Employees (Middle layer, provides knowledge/technical know-how for


organisational strategy and operations)

Suppliers (Upstream they provide things to the organization)


Suppliers
Organization

Customers

Business Context (cont.)


Organization

can be a single person (or) much larger

An entity that is organized to deliver some service/product

From a business perspective, software systems are built to


optimize the key relationships with

Supplier: Reduce cost, improve predictability/quality

Client: Keep existing clients, increase client base

Employee: Increase productivity, retain talent etc.

These optimizations help to achieve business goals

Drivers of Software
Development
What are the main drivers to consider?

Pain/pleasure points of customer and/or clients

Adding Business value

Exposure to environment Touch points outside organisation

New/changed technologies
Legal and social considerations

10

What is a project?
A temporary endeavour undertaken to accomplish a unique
purpose/goal.
Usually involves several people performing interrelated
activities.
Requires efficient and effective use of resources to complete the
project in a timely manner.
Significant attributes of a project:

Requires resources (of many kinds)

Has a primary sponsor or customer,

Involves uncertainty.
12

IEEE PMBOK

A project is a temporary endeavor undertaken to crea


unique product, service, or result. Temporary means th
every project has a definite beginning and a definite en
Unique means that the product, service, or result is diff
in some distinguishing way from all similar products, se
or results.
(Source: IEEE 1490 - Project Management Body of Knowledge)

13

Project types Complexity


How
would you rate the following projects in terms of complexity .
Amending a financial computer system to deal with a common
European currency

Putting a robot vehicle on Mars to search for signs of life

Writing an operating system for a new computer

A second-year programming assignment for a computing student

Getting married

14

Software Projects
Almost all software products are obtained via projects

Project Concerns = Deliver on time and within budget

Achieve Interdependent &


Common Goals

Limited Resources

The Project Team is the


primary Resource!
15

Software Projects (cont.)


Distinguish between software projects:
designed to provide a service to a single client (internal
in a company, or external)
designed to produce a product for sale.
In each case the project results in a product, but often in
the former case above, the project will be designated as a
service provision project, whilst in the latter case, it will be
designated as a product development project.
16

Software Project vs. Other Project

Invisibility - Non physical material

Complexity - Per dollar, how much to pay on a task?

Conformity - Individual is inconsistent

Flexibility - Changes to deliverables

17

Project - an Engineering Perspectiv


Project Inception
P

Validation

rototyping
SDLC model -

Design

Compartmentalisation

Elicitation
Testing
Maintenance
Does this
sound
familiar?

Analysis
Coding
Deployment
Phase Out
19

Project - a Management Perspectiv


Project Inception
Planning
Estimating
Scope Definition
Scheduling

Tracking

Management model
defines how, when,
where, by whom.

Measuring
Resource Allocation

Risk assessment
Budget
Phase Out
21

An IT Project Methodology

What is Project Management?

Project Management = Plan the work and work the plan.


Basic Management Functions:

Planning: define out what needs to be done


Systematized
common
sense!!

Organizing: who does what (and when)

Staffing: recruiting and motivating personnel

Directing: ensure team acts as a (coherent) whole

Monitoring (Controlling): detect plan deviations + corrective actions

Innovating: develop new solution

Representing: liaising with clients, users, developer

22

Why Do Projects Go Wrong?


Too many people say its management problems or its
people problems

Often it is. But


it is sometimes because of faulty planning! And sometimes lack of

clear objectives/goal

23

Software Development Lifecycle Mod

A Software Development Lifecycle (SDLC) mode


a process model for developing software-intensive
systems

Set of activities and their relationships to each oth


to support the development of a software system
(Bruegge and Dutoit)

25

Macro Steps vs. Micro Steps


Every SDLC model defines a process as an order of macro
development steps

may also involve repetition of macro steps ?.

Every macro step may contain a number of micro steps

A specific macro/micro step always has the same purpos


and results in a similar outcome

E.g., every implementation step will always produce executable

code (and not suddenly requirements)

An SDLC model defines a specific order of


macro and micro steps.

26

The Classical Software Lifecycle


The classical software
lifecycle models the
software development
as a step-by-step
waterfall between the
various development
phases.

Does this
sound
familiar?

Requirements
Collection
Analysis
Design
Implementation
Testing

Maintenance

The waterfall model is often problematic because:


requirements must be frozen early in the life-cycle
requirements are validated late
27

The Waterfall Model


Requirements
Collection
Analysis
Design
Implementation
Testing
Maintenance

The Waterfall model is due to Winston Royce - look up his original paper at
http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf

28

Problems with Waterfall Model (cont


No insight on effectiveness of transformation from one artefact to another
takes place

how effective are requirements turned into a design?

Requirements needed to be frozen at an early stage in the


development

no guidance on how to handle changes to a requirement during coding

Too abstract to convey the complex process steps required to resolve


the myriad of problems which arise at all stages of a software
development.
No recognition that software development is part science, part art.

But: waterfall is quite adequate for small, well-defined and well-scop


problems!

29

Iterative Development (Incrementa


In practice, development is often iterative, and activities
progress in parallel (this has partly inspired recent
approaches known as agile development).
Requirements
Collection

Testing based on requirements

Testing

Maintenance through iteration

Analysis

Testing throughout implementation


Validation through prototyping

Implementation
Design

Does this
sound
familiar?

Design through refactoring

30

Iterative Development (cont.)


Pros
Cost of accommodating
change is reduced
Customers feedback is
quick
Rapid delivery and
deployment

Cons
Process is less structured
Upfront resource commitments
of all types

31

Scrum - an Agile Development Metho

Reuse-oriented Software Engineerin

Reuse the component that aims to meet similar goal

Requirement
Specification

Component
Analysis

Requirement
Modification

System
Validation

Development
and Integration

System Design
with Reuse

Coping with Change

Change is inevitable in large software projects

There

are plenty of reasons for change

Client pressure

New technology

Business process changes

35

Project Management Activities


Feasibility
Study

Is it worth
doing?

Plan

How do we
do it?

Project
Execution
Elicitation &

Requirement
Specification
Analysis

Design/Coding

Verification &
Validation

Do it!!

Implementation

Maintenance
38

Project Forces

Time
Scope
Quality

Cost
41

Project Forces (cont.)

The way the software development game is played i


stakeholders can pick the values of three of the
four forces. The fourth value is a consequence of the c
of the other three values.
Kent Beck, eXtreme Programming Explained, 2000.

42

Scope and Objectives


In order to start a project, you must set c
scope and objectives.
Objective identify the general goals of the project

Scope identifies the primary functions that the software is to


accomplish, and bounds these functions in a quantitative manner.

Objectives must be realistic and measurable


Objectives are concrete statements describing what the project is
trying to achieve. Written at a lower level, so that it can be
evaluated at the conclusion of a project to see whether it was
achieved or not.
SMART is normally used to describe well-defined objectives

43

Objectives

Do these objectives sound appropriate?


To implement the new application on time and within budget
To implement the new software application with the fewest
possible software errors that might lead to operational failure

To design a system that is user-friendly

To produce full documentation for the new system

44

Software Quality
But what is Software Quality?

Depends on who you ask

will judge it based on fitness for purpose and fault


frequency
Developers will judge it based on how technically sound it is
and how easily it can be maintained
Operations and Support staff will judge it based on ease and use
and the fit with their needs
Users

Managers will judge based on development cost, conflicts that


it causes.

45

Software Quality (cont.)


Software Quality is conformance to:

explicitly stated functional and performance requiremen

explicitly documented development standards,

implicit characteristics that are expected of all professionally

developed software.

More about Software Quality later

46

Customer Expectations

A [real] customer wants his/her software product to co


current and future needs, built at no cost, and delivere
yesterday. And of course the customer will change his/h
mind several times along the way!
Rick Harvey, CA Labs

One of the key issues in any software project is to manage


customer expectations!

this often means to help customers to define project scope.


47

Balance of Power
Business decisions should be made by business people
(and not technical people)

Technology decisions should be made by technical people


(and not business people)

Comments ?

48

Sins of Software Projects

Volatile Requirements (and too big a scope)

Lack of understanding between clients and developers

Poor Estimation and Planning

Unrealistic Schedules and Budgets (which often force


fiction into the estimation and planning process!)

Inadequate Controls

Insufficient focus on Quality Control (eg, inadequate testing)

49

Key Ingredient to Successful Softwa

51