Chapter2 - Software Processes
Chapter2 - Software Processes
❑ Process activities
❑ Process improvement
➢ What
➢ set of activities required to develop software.
➢ Activities:
➢ Specification (What)
➢ Design and implementation (How)
➢ Validation – checking that it does what the customer wants;
➢ Evolution – changing the system in response to changing
customer needs.
➢ Model
➢ abstract representation of a process.
➢ describes process from perspective.
➢ Plan-driven processes
➢ all of the process activities are planned in advance
❑ Drawbacks?
➢ difficulty to adapt to changes
➢ Sequential phases
➢ Phases takes long to execute
❑ Usage
➢ Appropriate when the requirements are well-
understood
➢ Appropriate when changes are limited
➢ Appropriate for large critical systems & large systems
➢ Pros
➢ cost of requirement changes is reduced.
➢ Rapid delivery
➢ Working software
➢ Cons
➢ The process is not visible. Managers always need deliverables,
not documentation
➢ Documentation is costly if system is developed quickly
➢ Pros
▪ Less software is developed
▪ Reduced cost
▪ Faster delivery and deployment
➢ Cons
▪ New requirements (CR) are inevitable
▪ Loss of control over evolution of reused system elements
▪ High learning curve for enterprise components
▪ Tracking system versions for updates
▪ Integration bugs
30/10/2014 Chapter 2 Software Processes 16
Process activities
managerial activities
➢ Specification
➢ Development
➢ Validation
➢ Evolution
➢ What
➢ services are required?
➢ constraints are there (operational & development)
➢ Steps (process)
➢ Pre
➢ Feasibility study
➢ Market survey
➢ Requirements elicitation and analysis
➢ What do the system stakeholders require or expect from
the system?
➢ Requirements specification
➢ Defining the requirements in detail
➢ Requirements validation
➢ Checking the validity of the requirements 19
The requirements engineering process
➢ What
➢ converting specs to exe.
➢ Design
➢ Design a software structure that realises the specification;
➢ Implementation
➢ Translate this structure into an executable program;
➢ Interleaved activities
30/10/2014 Chapter 2 Software Processes 22
A general model of the design process
Architectural design
▪ overall structure of the system,
▪ principal components (subsystems or modules),
▪ relationships & distribution.
Database design
▪ data representation in DB
Interface design
▪ contract implementation
Component selection
▪ search for reusable components.
▪ design reusable components
30/10/2014 Chapter 2 Software Processes 24
System implementation
• by developing a program
process.
❑ Unit testing
• Unit testing is done on an individual unit or component to test its corrections.
Unit testing is done by the developer. Each unit can be viewed as a method,
function, procedure, or object. Developers use test automation tools such as
JUnit for the test execution.
❑ Integration Testing
• two or more modules of an application are logically grouped together and
tested as a whole. The focus of this type of testing is to find the defect on
interface, communication, and data flow among modules
Functional testing
❑ System testing
• End to end testing: testing a complete application environment to mimic real-
world use, such as interacting with a database, using network communications, or
interacting with other hardware, applications, or systems if appropriate
• Smoke testing: is performed to verify that basic and critical functionality of the
system is working fine at a very high level, whenever a new build is provided by
the development team
• Sanity testing: is performed on a system to verify that newly added functionality
or bug fixes are working fine. Sanity testing is done on stable build. It is a subset
of the regression test
• Monkey testing: is to check if an application or system gets crashed by providing
random input values/data. Monkey Testing is performed randomly
Functional testing
❑ Acceptance testing
• Alpha testing: a type of acceptance testing performed by the team in an
organization to find as many defects as possible before releasing software to
customers
• Beta testing (aka UAT): a type of software testing which is carried out by the
clients/customers. It is performed in the Real Environment before releasing the
product to the market for the actual end-users
Non-Functional testing
❑ Penetration testing
o Pen testing is the type of security testing performed as an authorized cyberattack
on the system to find out the weak points of the system in terms of security
o Pen testing is performed by outside contractors, generally known as ethical
hackers. That is why it is also known as ethical hacking
o Contractors perform different operations like SQL injection, URL manipulation,
Privilege Elevation, session expiry, and provide reports to the organization
Non-Functional testing
❑ Performance testing
• Load testing: testing of an application’s stability and response time by applying
load, which is equal to or less than the designed number of users for an
application
• Stress testing: testing an application’s stability and response time by applying
load, which is more than the designed number of users for an application
• Scalability testing: same as stress testing, but increasing load gradually until
finding the avalanche point of the system
Usability & Compatibility testing
Testing phases in a plan-driven software
process (V-model)
▪ New technologies
▪ Changing platforms
• re-analysing requirements
Change anticipation.
▪ By experience
▪ Community trends
▪ Similar products
▪ Flexible architecture
▪ System prototype for next project phase
Change tolerance
▪ Adopt process that welcomes changes at low costs
▪ Incremental delivery
▪ Change avoidance and tolerance
▪ Prevents premature commitment to requirements
30/10/2014 Chapter 2 Software Processes 40
Software prototyping
What
▪ initial version of a system used to demonstrate concepts
and try out design options.
Usage:
▪ The requirements engineering process to help with requirements
elicitation and validation;
Improved maintainability.
▪ Normally undocumented;
Why
1. Enhancing software quality
2. Cost reduction
3. Development acceleration
SPI means understanding existing processes and
changing these processes to meet the items above
CMM approach
• focuses on improving process and project
management and introducing good software
engineering practice.
• The level of process maturity reflects the extent to which
good technical and management practice has been adopted
in organizational software development processes.
Agile approach
• focuses on iterative development and the reduction of
overheads in the software process.
• The primary characteristics of agile methods are rapid delivery
of functionality and responsiveness to changing customer
requirements.
53
The process improvement cycle
Process measurement
▪ You measure one or more attributes of the software process or
product. These measurements forms a baseline that helps
you decide if process improvements have been effective.
Process analysis
▪ The current process is assessed, and process weaknesses and
bottlenecks are identified. Process models (sometimes called
process maps) that describe the process may be developed.
Process change
▪ Process changes are proposed to address some of the identified
process weaknesses. These are introduced and the cycle
resumes to collect data about the effectiveness of the
changes.
30/10/2014 Chapter 2 Software Processes 55
Process measurement
Micro Small
Enterprise Medium
1. Vision: Defines the overall vision and goals for the enterprise
architecture.
2. Business Architecture: Analyzes business processes, capabilities, and
information needs.
3. Information Systems Architecture: Defines the architecture of
information systems and data.
4. Technology Architecture: Describes the infrastructure and
technology components.
5. Opportunities & Solutions: Identifies potential solutions and
opportunities.
6. Requirements Management: Defines and manages requirements for
the architecture.
7. Implementation Governance: Establishes processes for
implementing and overseeing changes.
8. Architecture Change Management: Controls and manages changes
63
to the architecture.
Questions
25. What are the major difference between CMM and Agile
approach for software process improvement?