CM1400 Introduction to Python
Programming
Lecture:9
Software Development Process
In this Lecture
1. Modelling
2. Models for Software Development
3. Requirements
4. Software Development Life Cycle
CM1400 Introduction to Python Programming 2
Modelling
CM1400 Introduction to Python Programming 3
Models for Software Development
We build models to:
• Communicate
• Visualise
• Understand
CM1400 Introduction to Python Programming 4
Why Build Models?
A Dog Kennel:
•Can be built by one person And requires
• Minimal modeling
• Simple process
• Simple tools
CM1400 Introduction to Python Programming 5
Why Build Models?
A House:
•Usually built by a team and Requires
• Modeling
• Well-defined process
• Power tools
CM1400 Introduction to Python Programming 6
Why Build Models?
A High Rise building:
Developed by a large group of people
Requires:
• Extensive planning
• Major investment
CM1400 Introduction to Python Programming 7
What has this to do with computer systems?
Dog kennel sized project:
Database for Music Library
House sized project:
Tracking forensic evidence
Grampian Police
High rise building project: Appointments
A computerised NHS Consultant
GP
Pharmacy
CM1400 Introduction to Python Programming 8
Chart Title
6 “Curiously, a lot of software
development organizations
5
start out wanting to build
4
high rises, but approach the
problem as if they were
3 knocking out a dog house”
UML User Guide
2
0
Category 1 Category 2 Category 3 Category 4
Series 1 Series 2 Series 3
CM1400 Introduction to Python Programming 9
A model is a • An abstraction which provides the blueprints of a system.
simplification • We build models so that we can better understand the system we are
of reality developing.
• Different aspects of a system can be described by using different
models.
<<include>>
<<include>> Member Customer
Maintain product list
: Assistant
Receptionist Find product
member details=findMembyMemCode
findDVD
Sell hairdressing product
Loan
<<extend>> Loan(startDate)
Payment
Make appointment
Payment(amount)
Handle customer payments
printReceipt
Maintain staff list
Manager
Use Case Sequence
Class diagram diagram
diagram
CM1400 Introduction to Python Programming 10
We focus on the aspects of a system that we want
to understand
CM1400 Introduction to Python Programming 11
2o Python Programming
We need to
examine different
When constructing a
aspects of a building
system; We need:
• Floor plans
so we use • Elevations
different • Electrical plans
• Heating plans
diagrams •Plumbing plans
etc
Views of an IT system
Databases,
Programmers exe files,
view libraries of code
Concurrency,
Hardware
performance,
components
scalability
[Link]
CM1400 Introduction to Python Programming 13
4o Python Programming
Object–Oriented Systems
That interact with each other
O-O systems give the illusion of simplicity to their
systems
CM1400 Introduction to Python Programming 15
Encapsulation
Objects encapsulate data
Object-oriented systems hide data and program code within an object.
This protects it so it cannot be accidentally corrupted.
CM1400 Introduction to Python Programming 16
Requirements Patrons
may not
A user can search for borrow
‘A feature or behaviour of more than
all jobs in a selected
geographical area
the system that is desired by three
any one affected by the books at a
system, such as users, time
clients, developers or
management.’
All train doors shall
always remain closed
while a train is moving The system must keep a record of all
customers and their past transactions
CM1400 Introduction to Python Programming 17
Requirements
It is important that systems developers
understand the requirements of a new
system as fully as possible.
Problems will occur if they don’t!
CM1400 Introduction to Python Programming 18
Requirements Engineering
The activities that capture and record client requirements
• Requirements engineering is crucial in systems development.
• Getting the requirements right is essential
• If we get the requirements wrong, the system will not do what the users want and
will be pretty much useless.
• We are, after all, developing the new system for them.
CM1400 Introduction to Python Programming 19
Functional Requirements
Describe what the system should do, i.e. the services provided for the users and for
other systems.
For example:
• What inputs the system should accept
• What outputs the system should produce
• What data the system will store
• What computations the system should perform.
• The user can change the margins, paper size and orientation on
the page
• The user can view a preview of the pages before printing
• The user can check for spelling mistakes
• The user can add words to the dictionary
CM1400 Introduction to Python Programming 20
Non-Functional Requirements
Refer to behavioural properties that the system must have
e.g.
Response time
• Throughput
• Response time Reliability
• Resource usage
• Reliability
• Availability Availability
• Recovery from failure
[Link]
qa
• Response times must be less than 3 seconds
• The system will operate in Windows and Macintosh environments
• All system data shall be backed up once per day and stored off-site
• All system users shall be identified using their password
CM1400 Introduction to Python Programming 21
Software
Development
Lifecycle (SDLC)
CM1400 Introduction to Python Programming 22
• Why build the system?
• Maintain the system • How should we go about building it?
• Enhance the system Chart Title • How long will it take?
• Support the users • How much will it cost?
SDLC
6
• Building the system • Who will use the
4 • Testing it system?
• Installing it • What will it do?
3
• Training users • Where will it be used?
• Conversion • When will it be used?
0
Category 1 Category 2 Category 3 Category 4
Series 1 Series 2 Series 3
How will the system work
CM1400 Introduction to Python Programming 23
Stages in a Software Development Project
There are several phases in a software development project’s lifespan:
Planning • Organizing and scheduling
Problem
domain
Requirements • What should it do?
Design • How will the solution be structured?
Implementation • Create the solution
Implementation
Testing • Debug, fix, improve the solution.
domain
Evaluation • Assess if the solution fulfils requirements
Documentation • Let users know how it works.
Maintenance • Fix, improve, enhance, update the software.
CM1400 Introduction to Python Programming 24
Stages in a Software Development Project
• What is the project all about - what is its purpose and what does it aim to accomplish?
• What are the objectives and scope of the project?
• How long will it take?
• How much will it cost? Planning
• What are the major risks involved?
• Is it possible? Should we proceed with the project?
▪ Feasibility study: economic, technical and operational considerations
CM1400 Introduction to Python Programming 25
Stages in a Software Development Project
Analysis
▪ Research the problem domain. Examine any existing solutions. Determine what the
new system will do
What are the User requirements?
Establishing Requirements
▪ Detailed list of what new system must do.
▪ Formulated in discussion with user/client
▪ Expressed using descriptions in natural language or diagrams to explain services(s)
that system will provide and any constraints
What are the System requirements?
▪ Descriptions of systems functions and operational constraints.
▪ Define clearly and unambiguously what needs to be implemented.
CM1400 Introduction to Python Programming 26
Stages in a Software Development Project
• What are the Functional requirements?
▪ i.e. what is the purpose of the software?
▪ What precisely should it do?
▪ How will the system respond to specific inputs or situations
• What are the Non-Functional requirements.
▪ i.e. how does the software work? Stating Requirements
▪ How does it behave?
▪ Constraints (timing, security, legal, cost) relevant to system and its development
• How will users use the system or product?
29
CM1400 Introduction to Python Programming 27
Stages in a Software Development Project
• What components will the system require? Design
How will those components interact? System architecture
• How will the users interact with the system? Interaction design
• What data will system work with? Data Structure
• What story will a Digital Media Product tell? Storyboard
• What objects need to be represented? Class/Component Design
• What will the user interfaces look like? GUI Design
• How will the system be tested/evaluated? Test and Evaluation plans
CM1400 Introduction to Python Programming 28
Stages in a Software Development Project
• Code the Classes
Implementation
• Create the Web-pages
• Create the Databases
• Code the GUI
• Create the Animation or Content
• Code the interactions between components
• Testing of correct functionality should be ongoing
CM1400 Introduction to Python Programming 29
Stages in a Software Development Project
• Making sure the code is error free
• Making sure the code does its intended task
• Making sure the code is robust against foreseeable misuse
Testing
• Checking links on a web page
• Reviewing Digital Media for completeness, aesthetics, quality, content
CM1400 Introduction to Python Programming 30
Stages in a Software Development Project
• Deliver and install the system
Deployment
• Train the users
• if replacing an existing system, there are
different ways to transition to the new
system (i.e. stop using the old system and
start using the new one)
CM1400 Introduction to Python Programming 31
Stages in a Software Development Project
• The objective is to keep the system running productively following initial
installation:
▪ Support users Maintenance
▪ Repair of defects discovered during use of the system
▪ Small upgrades or enhancements to expand system capabilities
▪ Identify aspects that can be improved, such as performance, security or
reliability and update system accordingly
CM1400 Introduction to Python Programming 32
Stages in a Software Development Project
• Software Development will usually require some documentation, which
might include:
▪ Feasibility study
Documentation
▪ Analysis and design documentation
▪ Support documentation
▪ User manual or in-application help system
▪ Marketing documentation (for a product that is to be sold)
▪ Training documentation
▪ Operations manual
CM1400 Introduction to Python Programming 33
There are many
variations on the SDLC
but they are really doing
the same set of things!
CM1400 Introduction to Python Programming 34
Wrap up
1. Model building
2. Requirement Gathering
3. Stages in a Software Development Project
CM1400 Introduction to Python Programming 35
Any Questions ?
Drop a message in Forum
Or
Drop an email at [Link]@[Link]
CM1400 Introduction to Python Programming 36