Software Product and Software Process
Software Product and Software Process 1 / 47
Contents
1 The Nature of Software
Defining Software
Software Application Domains
Legacy Software
2 The Unique Nature of WebApps
3 Software Engineering
4 The Software Process
5 Software Engineering Practice
The Essence of Practice
General Principles
6 Software Myths
7 How It All Starts
8 Summary
Software Product and Software Process 2 / 47
The Nature of Software: Defining Software
Definition:
Instructions (computer programs) that provide features, function, and
performance.
Data structures enabling programs to manipulate information.
Descriptive information on the operation and use of programs.
Key Characteristics:
Software is developed or engineered, not manufactured.
Software does not ”wear out.”
Software Product and Software Process 3 / 47
Hardware Failure Curve
Software Product and Software Process 4 / 47
Software Failure Curve
Software Product and Software Process 5 / 47
Dual Role of Software
Software as a Product:
Delivers computing potential by transforming, managing, acquiring,
modifying, displaying, and transmitting information.
Examples: Applications on mobile phones, software running
mainframes.
Software as a Vehicle:
Enables delivery of products by controlling hardware (e.g., operating
systems), facilitating communication (e.g., networks), and
creating/managing other programs.
Examples: Software tools, environments, and networks.
Key Insight: Software transforms personal data, manages business
information, and acts as a gateway to global networks like the
Internet.
Software Product and Software Process 6 / 47
Software Product Characteristics (Part 1)
Maintainability:
Ability to modify and adapt software to meet evolving user needs.
Easier debugging, enhancement, and adaptation to changing
environments.
Dependability and Security:
Reliability in performing required functions without failure.
Security against unauthorized access or data breaches.
Ensures safety in critical systems (e.g., medical devices).
Software Product and Software Process 7 / 47
Software Product Characteristics (Part 2)
Efficiency:
Optimized use of system resources like memory, CPU, and bandwidth.
Ensures fast response times and low latency.
Acceptability:
User-friendly interfaces and intuitive operation.
Compatibility with existing systems and workflows.
Provides high user satisfaction.
Software Product and Software Process 8 / 47
Software Application Domains (Part 1)
System Software:
Supports other software, including operating systems, drivers, and
utilities.
Characteristics: high interaction with hardware, multiple users, complex
data structures.
Application Software:
Stand-alone programs for specific business needs.
Examples: payroll systems, inventory management, real-time process
control.
Software Product and Software Process 9 / 47
Software Application Domains (Part 2)
Engineering/Scientific Software:
Numerical algorithms, simulations, and CAD tools.
Examples: stress analysis, molecular biology simulations.
Embedded Software:
Embedded within hardware products.
Examples: automobile control systems, microwave ovens.
Software Product and Software Process 10 / 47
Software Application Domains (Part 3)
Product-Line Software:
Built for specific industries or tasks.
Examples: word processors, spreadsheets.
Web Applications (WebApps):
Network-centric software that spans business to social media
applications.
Characteristics: interactive, aesthetic, and data-driven.
Software Product and Software Process 11 / 47
Software Application Domains (Part 4)
Artificial Intelligence Software:
Uses nonnumerical algorithms to solve complex problems.
Examples: robotics, expert systems, neural networks.
Data Collection Systems:
Collects and processes data from the environment.
Examples: weather monitoring, IoT sensors.
Software Product and Software Process 12 / 47
Legacy Software
Older programs critical for business functions but often of poor
quality.
Challenges:
Maintenance and evolution due to new technology or business needs.
Often lack proper documentation and extensibility.
Software Product and Software Process 13 / 47
Need for Evolution of Legacy Software
What is Legacy Software?
Older systems developed in past decades, often supporting core
business functions.
Characterized by inextensible designs, convoluted code, and poor
documentation.
Why Evolve Legacy Systems?
Adaptation: Align with new computing environments and
technologies.
Enhancement: Meet evolving business requirements.
Software Product and Software Process 14 / 47
Need for Evolution of Legacy Software (Cont.)
Why Evolve Legacy Systems? (Cont.)
Interoperability: Integrate with modern systems and databases.
Re-architecture: Transition to networked or cloud environments.
Challenges in Evolution:
High cost and risk of maintenance.
Managing poor quality and outdated documentation.
Ensuring reliability while making significant changes.
Modern Engineering Goals:
Devise methodologies that support continuous evolution.
Build systems that interoperate and adapt to new requirements.
Software Product and Software Process 15 / 47
The Unique Nature of WebApps
Evolved from basic linked hypertext files to sophisticated systems.
Attributes:
Network-intensive.
Rapid development cycles.
Diverse user bases and platforms.
Software Product and Software Process 16 / 47
Software Engineering
Software engineering applies sound engineering principles to obtain
software that is reliable and efficient.
Defined as:
Fritz Bauer’s Definition: Use of sound engineering principles to
obtain reliable and efficient software economically.
IEEE Definition: A systematic, disciplined, and quantifiable approach
to development, operation, and maintenance of software.
Software Product and Software Process 17 / 47
Generic View of the Software Process
Definition: A software process is a framework for activities, actions,
and tasks required to build high-quality software.
Three major components:
1 Process: Defines ”what” is to be done.
2 Methods: Provide technical ”how-to’s” for building software.
3 Tools: Support the process and methods with automation and
management capabilities.
Goal: Deliver reliable, efficient, and maintainable software.
Software Product and Software Process 18 / 47
Software Engineering Layers
Software Product and Software Process 19 / 47
Process Model Overview
What is a Process Model?
A structured sequence of activities and tasks.
Guides software development to ensure efficiency and quality.
Common Process Models:
1 Waterfall Model
2 Incremental Model
3 Evolutionary Models (Prototyping, Spiral)
4 Agile Methods
Each model provides a unique balance of structure, flexibility, and
adaptability.
Software Product and Software Process 20 / 47
Methods in the Software Process
Definition: Methods encompass the technical ”how-to’s” for building
software.
Key Methods:
Requirements Analysis
Design Modeling (e.g., UML diagrams)
Coding and Testing Techniques
Deployment Strategies
Ensure consistency, maintainability, and high-quality results in
software development.
Software Product and Software Process 21 / 47
Tools in the Software Process
Definition: Tools automate or semi-automate tasks to support the
process and methods.
Examples:
Project Management Tools (e.g., JIRA, Trello)
Version Control Tools (e.g., Git, SVN)
Testing Tools (e.g., Selenium, JUnit)
Modeling Tools (e.g., Enterprise Architect, Visual Paradigm)
Benefits:
Increased productivity.
Better tracking and control.
Improved collaboration.
Software Product and Software Process 22 / 47
Summary of the Software Process
Software processes integrate framework activities, methods, and tools
to guide development.
Process models offer structured approaches tailored to project needs.
Methods provide technical guidance for building software.
Tools enhance efficiency, collaboration, and quality control.
Software Product and Software Process 23 / 47
Overview of Framework Activities
Framework activities are high-level phases common to all software
engineering processes.
They provide structure and ensure a systematic approach to software
development.
Each framework activity consists of tasks, outputs, milestones, and
quality checkpoints.
Software Product and Software Process 24 / 47
Components of Framework Activities
Work Tasks:
Specific actions performed during the activity (e.g., creating design
documents, coding modules).
Work Products:
Deliverables or artifacts produced (e.g., requirements, test plans, code).
Milestones Deliverables:
Significant checkpoints (milestones) and tangible outputs
(deliverables).
Quality Assurance (QA) Checkpoints:
Ensure the work meets standards before proceeding.
Software Product and Software Process 25 / 47
Five Generic Framework Activities
The following framework activities are applicable to most software
projects:
1 Communication:
Collaboration with stakeholders to gather requirements and set
objectives.
Output: Requirement specifications.
2 Planning:
Defining tasks, resources, timelines, and risks.
Output: Project schedule, resource allocation plan.
3 Modeling:
Representing the system through designs and models.
Output: Design documents, system diagrams.
4 Construction:
Developing and testing the software.
Output: Executable software, test results.
5 Deployment:
Delivering the product to users and ensuring proper operation.
Output: Operational software, user manuals.
Software Product and Software Process 26 / 47
How Components and Activities Relate
Framework Activities (What): Components of Each Activity
Communication (How):
Planning Tasks (specific actions)
Modeling Work products (deliverables)
Construction Milestones & deliverables
Deployment QA checkpoints
Software Product and Software Process 27 / 47
Key Takeaways
Framework activities are essential for structuring software
development.
The five generic activities provide a roadmap for the development
lifecycle.
Components within each activity ensure:
Clear objectives (tasks).
Tangible outputs (work products).
Progress tracking (milestones).
Quality assurance (QA checkpoints).
Together, these elements ensure systematic and successful software
engineering.
Software Product and Software Process 28 / 47
The Software Process
A framework for activities, actions, and tasks to build high-quality
software.
Key framework activities:
Communication
Planning
Modeling
Construction
Deployment
Umbrella activities like risk management, quality assurance, and
configuration management span all framework activities.
Software Product and Software Process 29 / 47
Generic Process Model
Software Product and Software Process 30 / 47
Software Process Overview
A software process provides a structured framework for software
development.
It consists of:
Framework Activities: Core development tasks.
Umbrella Activities: Support tasks ensuring quality and control.
Ensures software is developed systematically and efficiently.
Software Product and Software Process 31 / 47
Umbrella Activities
Project Tracking and Control: Monitoring progress and adjusting
plans.
Risk Management: Identifying and mitigating risks.
Software Quality Assurance: Ensuring high-quality deliverables.
Technical Reviews: Detecting and resolving errors early.
Configuration Management: Managing changes to software.
Measurement: Tracking project and product metrics.
Software Product and Software Process 32 / 47
Iterative Nature of the Software Process
Framework activities are applied repeatedly in iterative cycles.
Each cycle produces a software increment.
Increments enhance functionality and allow early feedback from
stakeholders.
Software Product and Software Process 33 / 47
Software Process Characteristics (Part 1)
Repeatability:
Process steps can be consistently followed to produce similar results.
Reduces variability in project outcomes.
Predictability:
Project outcomes (e.g., timelines, costs) can be accurately forecasted.
Enables better planning and resource allocation.
Software Product and Software Process 34 / 47
Software Process Characteristics (Part 2)
Adaptability:
Can be tailored to different projects, teams, or technologies.
Supports a variety of development methodologies (e.g., Agile,
Waterfall).
Transparency:
Progress, quality, and performance are easy to monitor.
Facilitates effective communication among stakeholders.
Software Product and Software Process 35 / 47
What are Software Process Patterns?
Definition:
A software process pattern provides a proven solution to recurring
problems or challenges in software development.
They are reusable and structured approaches to managing and
organizing the software process.
Purpose:
Improve efficiency, consistency, and quality in software projects.
Address common challenges across different stages of the software
development lifecycle.
Software Product and Software Process 36 / 47
Types of Software Process Patterns
1. Phase Patterns:
Focus on a single phase of the software lifecycle.
Example: Requirements Elicitation Pattern.
2. Stage Patterns:
Address challenges across multiple phases.
Example: Spiral Development Pattern.
3. Task Patterns:
Guide specific tasks within a phase or stage.
Example: Code Inspection Pattern.
Software Product and Software Process 37 / 47
Benefits of Software Process Patterns
Reusability: Solutions can be applied to similar projects or
challenges.
Consistency: Ensures uniformity in addressing recurring problems.
Efficiency: Saves time and effort by avoiding reinvention of solutions.
Quality Improvement: Encourages best practices for better software
quality.
Software Product and Software Process 38 / 47
Examples of Software Process Patterns
Requirements Analysis Pattern:
Provides a structured approach to gathering and refining requirements.
Test-Driven Development (TDD) Pattern:
Focuses on writing tests before code to ensure reliability.
Daily Stand-Up Pattern:
Promotes regular communication in Agile teams.
Software Product and Software Process 39 / 47
Software Engineering Practice
Essence of Practice:
Understand the problem.
Plan a solution.
Carry out the plan (coding).
Examine the results (testing and quality assurance).
General Principles:
Provide value to end users.
Keep it simple.
Maintain the vision.
Be open to the future.
Software Product and Software Process 40 / 47
General Principles (Cont.)
Plan ahead for reuse.
Recognize that others will consume your work.
Strive for consistency.
Get feedback as soon as possible.
Software Product and Software Process 41 / 47
Software Myths
Definition: Erroneous beliefs about software and its development process.
Categories of Myths:
Management Myths
Customer Myths
Practitioner Myths
Note: These myths can lead to unrealistic expectations and project
challenges.
Software Product and Software Process 42 / 47
Management Myths
Myth 1: We have a book of standards; that’s all developers need.
Reality: Standards often go unused or are incomplete.
Myth 2: Adding more programmers will fix a late project.
Reality: Onboarding new people slows progress temporarily.
Myth 3: Outsourcing solves all management issues.
Reality: Mismanagement persists even when outsourced.
Software Product and Software Process 43 / 47
Customer Myths
Myth 1: A general statement of objectives suffices.
Reality: Vague objectives lead to unclear requirements.
Myth 2: Software requirements change easily because of its
flexibility.
Reality: Changes increase costs, especially in later stages.
Software Product and Software Process 44 / 47
Customer Myths
Myth 1: A general statement of objectives suffices.
Reality: Vague objectives lead to unclear requirements.
Myth 2: Software requirements change easily because of its
flexibility.
Reality: Changes increase costs, especially in later stages.
Software Product and Software Process 45 / 47
How It All Starts
Every software project arises from a business need:
Correcting defects in existing systems.
Adapting legacy systems to new environments.
Extending functionality of existing applications.
Developing new products or services.
Projects often begin informally, leading to initial ideas that evolve into
formal requirements.
Software Product and Software Process 46 / 47
Summary
Software is vital to modern systems and has evolved into a standalone
industry.
It is used across a wide range of applications, from legacy to
web-based systems.
Software engineering applies systematic processes, methods, and tools
for efficient and reliable development.
The field continues to evolve, addressing myths and adapting to new
challenges.
Software Product and Software Process 47 / 47