Software Design & Development part-1
Software Design & Development part-1
Software Engineering
• What is software engineering?
• The problem of complexity
• Methodologies
• Stages of Software Development Life Cycle
• Each interface is a
potential point of
failure. Need to be
controlled.
https://cnx.org/contents/[email protected]:8KeV8AMJ@4/What-is-Project-Management
Software Crisis – Consequences
Loss of Life
Loss of money
Not something you can do by just sitting down and starting to program.
Decomposition of complex problem
The larger the project, the more useful decomposition becomes.
Problem: Design a system to land on the moon
What systematic
approaches exist for
decomposition?
Approaches to decomposition
Functional decomposition vs Object-oriented decomposition
Functional Decomposition Object-Oriented Decomposition
The system is decomposed into The system is decomposed into
modules of related functions classes of objects
Emphasises the operations to be Emphasises the agents that cause
performed the operations
Useful for requirements Useful to design a system around a
engineering, for a high-level set of functional requirements
description of the system function
Waterfall Methodologies
Source: Shelly et al. (2003) Systems analysis and design
Process Stage Deliverable
Planning Preliminary
Investigation
Analysis Requirements
Design
Design Specification
Users Clients
• Software should enhance user • Paying for the software
experience • May or may not be users
• Should solve their problem
Stakeholders
in SE
Risk registry
• Risk name, likelihood, impact and mitigation plans should be provided
• More effort should be allocated into tasks in the critical path
Work planning
• Task allocation
• Setting up milestones and deliverables
Managing the process
Managing the process
Source: Shelly et al. (2003) Systems analysis and design
System Analysis
Domain analysis
• Understanding the background
Requirement gathering
• Collect ideas on what the system should do
Requirement analysis
• Come up with precise set of instructions on what the system should do
• How the software behaves, from the perspective of the user
• Separate ‘What’ from ‘How’
System Analysis: Requirements & specification
• Example listing of system requirements
System Analysis: Requirements & specification
• Example listing of system requirements
Quality Requirements How easy it is for the users to
use the software?
User experience
Usability heuristics
Using components across
several different systems Usability Resource utilization,
Reduce long term costs energy/power consumption
(CPU time, memory usage, disk
usage)
Costs of running the software
Reusability Efficiency
Quality
attributes Fewer failures
Easily recoverable, easy to
Anticipate future changes, change
introduce flexibility Testing: Unit testing, integration,
Use of design patterns validation, stress testing; black
Maintain- box, white box testing
Reduces cost for developers and Reliability
ability
customers
Source: Shelly et al. (2003) Systems analysis and design
System Design
• Deciding how the requirements should be implemented
Design details
• Data structures, classes, algorithms procedures of each sub-system, data storage options
Structural modelling
• Represent classes, objects and entities in the software system
Behavioural modelling
• Represent states the system can be in, activities, interactions of the components
Visual representation
• Using diagrams
Mathematical representation
• Use of formal methods
Source: Shelly et al. (2003) Systems analysis and design
Implementation & Testing
• Translation of high-level designs to programming languages
Interpreted languages:
Slow. Interpreted at runtime. Instructions can be entered interactively without
compiling.