Software Development Processes and Methodologies
Software Development Processes and Methodologies
Software Development Processes and Methodologies
V Model
Sashimi Model
RUP Model
Spiral Model
Scrum
Kanban
XP - Extreme Programming Project
Continuous Integration
Automated Testing
Automated Deployment
Automation
DevOps Culture
Importance of Requirements
Software being intangible makes it hard
What is Requirement(s) Specifications?
2 things
Process
Create high level descriptions
Distinguis between ‘right’ and ‘wrong’ system
Capture WHAT not the HOW of the solution
Engineering Argument
Economic Argument
Requirements vs Specifications
User requirements
System specification
Non-functional requirements
System Design Constraints.
Quality related constraints like security, performance, and usability
Product Requirements
Organization Requirements
External Requirements
Product – Requierments which specify that the delivered product must behave in a
particular way
Organizational – requirements which are a consequence of organizational policies and
procedures
External – requirements which arise from factors which are external to the system and its
development process
Non-functional requirements
Never be overlooked
Very important on nearly every project
Be sure to consider them separately from the functionality
Consider each classification separately
A constraint to only use Microsoft Project during the system development is a non-
functional requirement.- True
Some product requirements, like using a specific encryption protocol, are non-functional
requirements.
Organization requirements imposed by the company, like a specific coding style, are non-
functional requirements.
External requirements imposed by external organization, like using a specific development
style, are non-functional requirements.
WRSPM Model is a reference model for how we understand problems in the real world
Looking at the difference between user requirements and system specifications in the ATM
example, we know that swiping the card and prompting for a PIN are requirements, while
reading the card details and a 4-digit PIN are specifications. – TRUE
The purpose of the WRSPM model is to ensure that: Specifications meet the requirements
WRSPM – Real World Example – the model helps identify the elements involved in solving
problems
Parellels
- Architects are the technical interface between customer and contractor building <the
thing>
- Bad architectural design cannot be rescued by good construction
- Specialist types of projects require architect expertise
- Schools and styles have emerged
Partitioning large systems into smaller ones that can be created sepearetly and integrated
with one another and with existing systems
Mistakes are the architectural level are hard to fix by just coding
Partitioning of a large system into smaller subsystems helps the buy-or-build decision because
we can examine each subsystem and reason about possible buy-or-build options for each. –
TRUE
Shared data between data sources which can be interspersed between data streams,
components talk to each other
Blackboard
Using a hub of data to share data or process, no interaction between components all feed to
main (blackboard) point
Layered
Business
Data
Application
Tech / Infrastructure
Client Server
Event Based
Similar to blackboard, Event manager is a central point components feed into, Event manager
has a separate connection to component
Software Architecture Models are best practice solutions to commonly encountered problems
A UNIX program where the output of one program is the input of another, is an example of which
of the software architecture models below: -- Pipe and Filter Model
A vehicle identification and tracking system, where each moving vehicle is tracked and monitored
through a shared program, is best modeled by: Blackboard Model
System structuring
Control modelling
Modular decomposition
Subsystem vs Modules
Software architecture process concerns itself with estimation, quality and partitioning
The difference between subsystems and modules are: Subsystems can independently comprise
the business logic by itself while modules cant
Software architecture concerns itself with both estimation and quality but not partitioning. -
FALSE
A process
A product of the process
What is it not?
Architecture
Design
Stages of Design:
- Problem understanding
- Identify one or more solutions – There is More Than One Way To Do It - TMTOWTDI
- Describe solution abstractions
- Repeat process for each identified abstraction until the design is expressed in primitive
terms
System Architecture
o Component Spec
Component Interface Spec
Component Design
o Data Structure Design
Algorithm Design
Software Design takes abstract requirements and creates detail ready to be developed
Software design is the process of transforming the stated problem into a ready-to-use
implementation – FALSE
Abstract solutions do not require extensive domain knowledge and effectively reduce the costs
during the software design phase. – FALSE
It is often advised that abstract solutions do not provide optimization details regarding the
implementation. – TRUE
When it comes to software design, it is always best to follow a solution that is widely popular in
the industry – FALSE
While a solution coming from software design does not include implementation details, there are
still common cases where pseudocode may be provided to correctly capture the sense of a
complex algorithm. - TRUE
Coupling
Cohesion
Information hiding
Data encapsulation
3 primary goals:
Decomposability – divide and conquer
Composability
Ease of understanding
Information Hiding:
Example:
Which of the four aspects of modularity is defined as: How well modules work together. –
Coupling
Which of the four aspects of modularity can be described as: Abstracting away implementation
details. – Information Hiding
Three aspects of ______ can be described as (1) Decomposability, (2) Composability, and (3)
Ease of Understanding. – Modularity
You have a sort function that provides no details on which sorting algorithm is used. This is an
example of which aspect of modularity? – Information Hiding
A benefit to using ______ is that you know if your data is corrupted, then it must have been
corrupted by the module. – Data Encapsulation
A benefit to using ______ is that you know if your data is corrupted, then it must have been
corrupted by the module. – Cohesion
Which of the four aspects of modularity can be described as: Containment of constructs and
concepts within a module. – Data Encapsulation
Tight
Content Coupling
Common Coupling
External Coupling
Medium
Control Coupling
Data Structure Coupling
Loose
Data coupling
Message coupling
No coupling
The goal in low coupling is to ensure that changes don't cross the boundaries of modules. –
TRUE
he three types of tight coupling are: Control, Common, External
Module A relies directly on local data of module B. This is an example of what type of coupling? -
Tight content coupling
Modules A and B both rely on global data or a global variable. This is an example of what type of
coupling? – tight common coupling
Modules rely on externally imposed format (or protocol or interface). This is an example of what
type of coupling? – tight external coupling
The two types of medium coupling are: Control, data structure
Module A controls the logical flow of module B. This is an example of what type of coupling? –
Medium control coupling
Module A and B both rely on the same composite data structure. This is an example of what type
of coupling? – medium data structure coupling
The three types of loose coupling are: data message none
Modules only share parameters. This is an example of what type of coupling? – loose data
coupling
The loosest type of coupling; components only communicate through parameters or message
passing. This is an example of what type of coupling? – loose message coupling
Weak
Coincidental cohesion
Temporal cohesion
Procedural cohesion
Logical association
Medium
Communicational cohesion
Sequential cohesion
Strong
Object cohesion
Functional cohesion
Cohesion and Inheritance
Cohesion is concerned with how well the components of a modules serve a single goal
Choose the most accurate answer: Cohesion describes... how well everying within a module fits
together
Which of the following statements about cohesion is true? -
The goal in real-life software development is to aim for object and functional cohesion and
anything less than this should be justified. – TRUE
The four types of weak cohesion are: Coincidental, temporal, procedural, logical association
Parts of modules are together in the same file. This is an example of what type of cohesion?
Coincidental cohesion
Different pieces of code are activated at the same time. This is an example of what type of
cohesion? – temporal cohesion
One piece of code runs after the other. This is an example of what type of cohesion? Procedural
cohesion
Components do similar but separate things. This is an example of what type of cohesion? –
logical association cohesion
The two types of medium cohesion are: communicational sequential
All elements of a component operate on the same input or produce the same output. This is an
example of what type of cohesion? Communicational cohesion
One component's output provides the input to another component. This is an example of what
type of cohesion? Sequential cohesion
The two types of strong cohesion are: object, functional
Each operation in a module is provided to allow object attributes to be modified or inspected.
This is an example of what type of cohesion? Object cohesion
Every part of a component is necessary for a single well-defined behavior. This is an example of
what type of cohesion? Functional cohesion
True or False: inheritance strengthens cohesion. – FALSE
Implementation
Write your comments, test and exception handling before you write functional code
Break long methods into manageable pieces – google says no more than 40 lines
These tips will help you understand the difference between coder and developer
People, not computers are the primary focus
Let the computer handle optimization for computers
These tips make the developers using them more effective
Deployment
Occurs after testing/ QA and others have signed off on the release
Planning
Deployment Plan
Physical environment
Hardware
Documentation
Training
Database related activities
3rd party software
Software being deployed
Software deployment is the event of launching your product to users
The reversal of actions, completed during a deployment with the intent to revert a system
back to its previous working state
Why rollback
At some point rolling back with take longer and or cost more than pushing through
If at all possible know this point prior to initializing the deployment
Just prior to reaching the point verify that rollback is not the best course of action
Cutover Strategies
Hot failover – virtual machine all machines ready but don’t receive the info
Testing Definitions
The process of executing a program (or part of a program) with the intention of
finding errors( Myers vs Humphrey)
What is a Test
Test Cases
Oracle
Test Data
Inputs which have been devised to test a system
Test Cases
Inputs to the system and the predicted outputs from operating the system on these inputs,
if the system performs to its specification
What is a Bug?
Failure
Error
Latent
Effective
Fault
‘dependable computing and fault tolerance: concepts and terminology – Jean Clause Laprie
1985
Programmers mistake is fault, leads to error, stays latent until it becomes effective, then
when the outcome is not as expected it causes failure
Axiom of Testing
Program testing can be used to show the presence of bugs but never their absence –
Dikkstra 1969
When to stop testing? No right answer, testing is to prove that it is not good
Checking a program against the most closely related design documents or specifications
Confirm that the software performs and conforms to its specification ‘Are we building the
right thing’
Confirm that the software performs to the users satisfaction. Assure that the software
system meets the users needs ‘Are we building the right thing’
Dynamic V & V
Concerned with exercising and observing product behaviour
Testing in all forms
Static V&V
Concerned with analysis of the static system representations to discover problems
Proofs and inspections – formal testing
Top down testing – stubs are for levels not created yet, single or few lines of code that
return a set value. Mock is similar but not returned value, just line works
Test Scaffolding
Goal - setup the environment for executing test
Driver
Stub
Program Unit
Oracle
Developer
‘This is my baby’
Understands the system
Will test gently
Driven by deadlines
Tester
‘smashy smashy’
Must learn the system
Will attempt to break it
Driven by ‘quality’
Axioms of testing
As the number of detected defects in a piece of software increases the probability of
the existence of more undetected defects also increases
Assign your best programmers to test
Exhaustive testing is impossible
You cannot test a program completely
Even if you do find the last bug you’ll never know it
It takes more time than you have to test less than you’d like
You will run out of time before you run out of test cases
Blackbox Testing
Designed without knowledge of programs internal structure
Based on functional requirements
V&V Process
Stages of testing
Unit Testing – single unit
Module Testing – collection of units
Sub system testing – collections of modules
System testing – testing complete system, made up of sub systems
Acceptance testing – testing by users, alpha / beta testing
Predictive vs Adaptive
Predicitive – understand what the requirements are from the outset – Design,
implementation, testing – product delivered
Adaptive – Has an idea but not fully – initial version built, feedback gathered, version
updated etc etc
Incremental vs Iterative
Incremental – understand what is required, however each part is built part at a time
Iterative – Idea is known, version is built, next version is built upon & enhanced and end
may be totally different to original idea
All models are going to have characteristics, use cases, pros & cons, where it fits adaptive vs
predictive through the normal flow:
requirements,design,implementation,testing,deployment,maintenance
Waterfall Model
Feedback loop between next stage and previous exists should any problem occur
V Model
Very similar to waterfall but as a V
Sashimi Model
Requirements
Design
Implementation
Testing
Deployment
Maintenance
3months 6months 9 months
+ Shorten the development time. People with different skill can start without waiting. Can
do learning spike early
<- May result in rework
Incremental Models
Built in parts, multiple mini waterfalls. May overlap. Can use different model for each
increment.
Predictive with some movement towards adaptive depending on model associated
alongside
+ Deliver value early. Get feedback and make necessary changes between increments
<- May result in rework. May cost more
Use. If organisation may benefit from early delivery of part of product. If building one
increment will help define future increments
Each top section are broken down into iterations and there can be various iterations per
phase
Inception
Short phase
What happens?
Establish business case
Feasibility
Build vs Buy
Preliminary schedule and cost
Milestone: lifecycle objective
Elaboration
What happens
o Capture requirements
o Address known risks
o Validate the system architecture ->
o Executable architecture baseline ->
Milestone: lifecycle architecture
Construction
Largest Phase
What happens?
o Software is built
o Multiple iterations – each results in release
o Iterative and incremental
Milestone: lnitial operational capability
Transition
What happens
o Deployment
o Get feedback and refine
System conversion and user training
Any step may involve different kinds of work (requirements, design etc) but relative effort
and emphasis might be different
Architecture centric
+ Adaptive. Quality and reuse. Focus on risk mitigation increases chances of success. Flexible
to incorporate other software development models
<- Complicated. Need more resources. Too much overheard for smaller project
Uses – Bigger and riskier projects. All requirements not known early in the project. Desire to
deliver value earlier
Spiral Model
Cyclic model
Four basic steps in each cycle:
Determine objectives
Identify risks
Double up
Plan for next iteration
Not every step needs to be performed
Determine Objectives
Objectives
Constraints
Alternatives
Summary
First described in 1986 by Barry Boehm as process model generator
Risk driven
4 basic activities in every cycle
Risk determines level of effort and degree of details
Not every activity in the diagram need to be performed
+ Adaptive. Risk focus increases chances of success. Flexible for using any model. Minimizes
waste. Options for go / no go
<- Complicated. Coss more to manage. Need stakeholder engagement
Use – Very large high risk projects
Phase Gates / Stage Gates
Gate Requirements gate Design gate Implementation gate Testing gate Deploy
Sumary:
+ Poor projects can be quickly rejected. Cost and fiscal analysis provides quantitative
information around feasibility. Provides opportunity to validate the updated business case.
<- Potential for structural organization to interfere with creativity and innovation
Example:
Example 2
Very large hospital with locations all over want to automate processes
Hired a company that is expert in this area and has done similar automation but not on this
scale
Hospital management want consistency across the globe byt not sure about the nuances in
different parts
Few of the place can benefit greatly from the immediate automation
Incremental Model
Assignment Topic:
As a software development professional, you will run into all kind of projects and situations within
those projects. This assignment is designed to present you with a fictitious situation and ask you
to recommend a software development approach suited to the situation.
Zenith Healthcare is a new company in the market and has launched its product two years ago.
The product is loved by clients and is growing in popularity. The level of product demand was not
anticipated, and the current system architecture cannot support the rising demand. To support
the anticipated demand, the company needs to re-architect the system and provide the exact
same functionality. Thus, the requirements from the client perspective are very well known and
do not need to change. What needs to be changed in the system to support the growing demand
is also well understood. The product has 4, fairly independent components. All 4 components
need to be re-architected. Out of the 4, one of them has caused the most pain and the
organization could benefit greatly if that component could be replaced first with a new, highly
scalable architecture. The work of migrating to a new platform is a tedious job and the
deployment of a new system will involve a lot of external communication, managing customer
expectations, etc.
The technical architect and one project manager will be working from the corporate headquarters
in Germany, but most of the team who will be doing the coding for the migration will be offshore
in Belarus. The testing team will also be in Belarus.
What software development methodology would you suggest for this situation and why?
Imagine that you were the lead or project manager for this project. For the selected model, take
us through a simulated / fictitious journey on how this project will be completed all the way from
defining requirements to deployment. You are free to make up characters as you feel appropriate
to fit your story. Please watch the video on" Model Selection" to get an idea. The video stays at
high level, but you can go in further details as you feel necessary. In your story, please make
sure to talk about artifact and practices followed by the team on this project.
Assume that you are the quality lead or technical lead on this project. What kind of testing would
you suggest the team to do? Be sure to justify your answer. To answer this question, first list
down the key things from the use case above that are really important. For e.g. scalability,
performance, usability, integration between components etc. After that, identify what type of
testing would you want the team to do to make sure that upgraded product is high quality and
deployed defect free. Please refer to the "Testing and Verification" section in module 2. Also,
please watch following videos to learn about various types of testing
methods: https://www.coursera.org/learn/software-processes/lecture/G30EZ/software-testing-
perspectives
Continuing your role as a quality lead or technical lead for the project. Write a few example of
test cases or a descriptive narrative for what you expect the testing team to use when testing this
product. Please refer to the "Testing and Verification" section in module 2. Feel free to make
assumptions about the functionality of the system to come up with a scenario.
Why Agile?
Verification phase a lot of errors would occure in the waterfall method. Expensive to fix as
found late in the process. Errors in what delivered vs what was needed / required
Market shift may have changed from concept through to delivery during the time line
Whether it's scrum, kanban, xp, lean, dsdm, or another kind of agile methodology, they all rely on
the 4 Agile Value Statements.
While both the items on the right and the items on the left are valued, the items on the left are
valued more:
Principles
1. Our highest priority is to satisfy the customer through early and continuous devliery
of valuable software
2. Welcome changing requirements even late in development. Agile processes harness
change for the customers competitive advantage
3. Delivery working software frequently from a couple of weeks to a couple of months
with a preference to the shorter timescale
4. Business people and developers must work together daily throughout the project
5. Build projects around motivated individuals. Give them the environment and support
they need and tryst them to get the job done
6. The most efficient and effective method of conveying information to and within a
development team is face to face conversation
7. Working software is the primary measure of progress
8. Agile processes promote sustainable development. The sponsors developers and
users should be able to maintain a constant, pace indefinitely
9. Continuous attention to technical excellence and good design enhances agility – cost
of exploration
10. Simplicity the art of maximizing the amount of work not done is essential
11. The best architectures requirements and designs emerge from self organizing teams
12. At regular intervals the team reflects on how to become more effective then tunes
and adjusts its behaviour accordingly
Practices
Principles
Values
Agile Frameworks
Scrum
1 to 4 week sprint
Define, design, build, test
Product owner – Inputs from executives, team, stakeholders, customer users to create what
is to be done, list of what is required, definitions etc.
Product backlog – Sprint Planning meeting, work out what order from the product backlog
things will be done.
Sprint backlog, what exactly needs to be done for each task, during each sprint.
Daily scrum meeting (stand-up) to review what was done yesterday and for today. Sprints
are 1-4 weeks, and the sprint end date and team deliverable do not change. – Finished
work.
Sprint review – full team gets together with all involved, customers, stakeholders etc to go
through what was done and if any changes are needed
Sprint retrospective – how can it be better next time, what went well, badly, how it can be
improved.
Burndown / Burnup charts – breaksdown what daily work is needed and to be finalised for
that sprint
Kanban
Set or properties and principals so long as there is a continuous flow.
Backlog, Analyze, Develop, Rest, Release – all steps are put into columns, with Doing, Done
breakdown within each
From the backlog each task with the breakdown is moved from Doing to Done as it
progresses.
Kanban Principles
Start with what you do know
Agree to pursue incremental evolutionary change
Respect the current process, roles, responsibilities and titles
Kanban Properties
Visualize the workflow
Limit WIP – work in progress
Manage flow
Make process policies explicit
Improve collaboratively
Lean Startup
Unique approach, how to learn faster about market or user need. Validated learning.
Assumption Build
Learn Experiment
Measure
Metric
‘We must learn what customers really want, not what they say they want or what we thing
they should want. We must discover whether we are on a path that will lead to growing a
sustainable business’ Eric Ries
Example – big retailer wants to sell online, understand they need to but not sure what to
offer, need to offer something asap, ecommerce is new, company stakeholders of the
company will be driving it.
Lean Statup
Example
Existing successful company has a new disruptive idea. Like to create a new company for it
Learn Startup
Assignment Topic:
As a software development professional, you will run into all kind of projects and situations within
those projects. This assignment is designed to present you with a fictitious situation and ask you
to recommend an approach to software development for that situation.
Georgia school of Arts has been the choice for higher education in the state. The college has
been serving the state for last 50 years. College has mostly operated using manual processes
and state has been expecting the college to match the other colleges in the country in terms of
automation. College leadership also sees great benefit by automation as it hopes to keep tuition
in check and provide better service to student and faculty.
The college wants to automate most of its processes in next 5 years. College do not have budget
to shorten the timeframe and wants to do this automation mostly in-house with hired consultants
when needed.
The IT department has lot to learn in terms technology to build this system. Also, college
leadership has some idea on what to build but not sure what exactly are college needs in terms
of automation. College has formed a group from various departments of college that will help
define and drive the development. This group will work closely with IT department on this effort.
College wants to reap the benefit of automation as it is being built and use feedback from system
users to guide future automation efforts.
The automation will start with processes that impact the students for e.g. admissions, class
registration, grading, learning management system etc. Some of the key things identified for this
software are the privacy and security concerns. College wants to make sure that systems can't
be hacked and only the right people have access to the info.
To start with, the team working on this project consists of 5 developers, 3 QA and a Team Lead.
Organization had signed a contract with a local company to provided additional resources when
needed.
What software development methodology would you suggest for this situation and why?