SEPM Mod 1 @vtudeveloper - in
SEPM Mod 1 @vtudeveloper - in
Module-01
Introduction to Software Engineering Process Models
Chapter-1
SOFTWARE AND SOFTWARE ENGINEERING
1
Module 1
1.1 The Nature of Software
The Dual Role of Software
Software as a Product
Importance of Software
Information Transformation
Evolution of Software
Impact
2
Module 1
Modern Software Industry
Economic Dominance
A major factor in industrialized economies.
Teams of specialists focus on different technology aspects of complex applications.
Persistent Questions
Why does software development take so long?
Why are development costs high?
Why can't all errors be found before release?
Why is maintaining software so time-consuming?
Why is progress measurement difficult?
Addressing Concerns
The challenges in software development have led to the adoption of software engineering
practices to improve efficiency, quality, and manageability of softwareprojects.
1.1.1 Defining Software
3
Module 1
Hardware failure rate follows a "bathtub curve" with high initial failure rates, a low steady-
state, and rising failure rates over time.
Software failure rate ideally flattens after initial defects are fixed but can spike due to
changes introducing new errors.
Software maintenance is more complex due to the lack of spare parts and the need to
address design errors.
Economic Impact
4
Module 1
Persistent Challenges
1. System Software
Services other programs.
Includes compilers, editors, file management utilities, operating system
components, drivers, networking software, and telecommunications processors.
Characterized by heavy interaction with hardware, multi-user environments, concurrent
operation, complex data structures, and multiple external interfaces.
2. Application Software
Stand-alone programs solving specific business needs.
Processes business or technical data for operations or decision-making.
Includes real-time applications like point-of-sale transaction processing and real- time
manufacturing process control.
3. Engineering/Scientific Software
Known for "number crunching" algorithms.
5
Module 1
Applications range from astronomy to automated manufacturing.
Modern applications include computer-aided design and system simulation, integrating real-
time and system software characteristics.
4. Embedded Software
Resides within products or systems.
Controls features and functions for end users and the system itself.
Examples: key pad control for a microwave oven, digital functions in automobiles like fuel
control and braking systems.
5. Product-Line Software
Provides specific capabilities for many customers.
Targets both niche markets (e.g., inventory control) and mass markets (e.g., word processing,
spreadsheets, multimedia).
6. Web Applications (WebApps)
Network-centric software spanning various applications.
Evolving from simple hypertext files to sophisticated computing environments.
Integrated with corporate databases and business applications.
6
Module 1
1.1.3 Legacy Software Definition
Characteristics
Challenges
Costly to maintain.
Risky to evolve.
7
Module 1
1.2 The Unique Nature of Webapps
In the early 1990s, websites were simple hypertext files with text and limited graphics.
The development of tools like XML and Java enabled more sophisticated Web-based systems and
applications, referred to as WebApps.
WebApps provide both stand-alone functionality and integration with corporate databases and
business applications.
WebApps have unique characteristics that differentiate them from other softwarecategories:
Network Intensiveness
Concurrency
Unpredictable Load
Performance
User retention depends on fast access, server-side processing, and client-side display.
Slow performance can lead users to switch to other WebApps.
Availability
Data Driven
8
Module 1
Content Sensitive
Quality and aesthetics of content are crucial for the overall quality of a WebApp.
Continuous Evolution
Immediacy
Security
Aesthetics
The look and feel of a WebApp play a significant role in its appeal.
Especially important for marketing or selling products and ideas.
Software impacts virtually every aspect of life, increasing the number of stakeholders.
Different stakeholders often have varying ideas of required features and functions.
Understanding the problem thoroughly before developing a solution is crucial.
Increasing Complexity
The perceived value of software increases its user base and longevity.
As software usage grows, demands for adaptation and enhancement also increase.
Software should be maintainable to accommodate these demands.
Bauer's Definition
Software engineering is the use of sound engineering principles to develop software that is reliable and
efficient on real machines.
IEEE's Definition
1. Quality Focus
Quality management philosophies (e.g., Total Quality Management, Six Sigma) foster
continuous process improvement.
Organizational commitment to quality is the foundation.
10
Module 1
2. Process Layer
The software engineering process is the framework for effective software technology
delivery.
It enables management control of projects and defines contexts for technical methods,
work products, milestones, quality assurance, and change management.
3. Methods Layer
Provides technical how-to’s for building software.
Covers tasks such as communication, requirements analysis, design modeling, program
construction, testing, and support.
Relies on basic principles and modeling activities.
4. Tools Layer
Tools provide automated or semi-automated support for the process and methods.
Integrated tools create a computer-aided software engineering (CASE) system, facilitating
the support of software development.
A software process is a collection of activities, actions, and tasks aimed at creating a work product. Here's a
breakdown of its components:
1. Activities: Broad objectives applied across different domains, project sizes, and complexities.
Example: Communication with stakeholders.
2. Actions: Sets of tasks producing major work products. Example: Architectural design.
3. Tasks: Focused on small, well-defined objectives with tangible outcomes. Example: Conducting
a unit test.
Process Framework
11
Module 1
The five generic framework activities are:
Umbrella Activities
Umbrella activities help manage and control progress, quality, change, and risk throughout
the project. They include:
1. Software Project Tracking and Control: Allows the team to assess progress against the plan and
take necessary actions to maintain the schedule.
2. Risk Management: Assesses risks that may affect the project outcome or product quality.
3. Software Quality Assurance: Defines and conducts activities to ensure software quality.
4. Technical Reviews: Evaluates work products to uncover and remove errors.
5. Measurement: Defines and collects process, project, and product measures to assist in delivering
software that meets stakeholders' needs.
6. Software Configuration Management: Manages the effects of change throughout theprocess.
7. Reusability Management: Defines criteria for work product reuse and establishes mechanisms to
achieve reusable components.
8. Work Product Preparation and Production: Encompasses activities required to create work
products like models, documents, logs, forms, and lists.
The software engineering process should be agile and adaptable to various factors like the
problem, project, team, and organizational culture. Differences between processes adopted for
different projects may include:
12
Module 1
Prescriptive Process Models: Emphasize detailed definition and application of activities and tasks to
improve system quality, manage projects, predict delivery dates and costs, and guide teams. However,
if applied dogmatically, they can increase bureaucracy and create difficulties.
Agile Process Models: Focus on project agility, emphasizing maneuverability and adaptability. They
follow principles leading to a more informal yet effective approach to software processes. Agile
models are suitable for many projects, especially when engineering web applications.
A generic software process model was introduced, consisting of activities that form a framework for software
engineering practice. These include:
Framework Activities:
13
Module 1
Umbrella Activities:
Project Tracking and Control: Monitoring progress and adjusting tasks and schedules.
Risk Management: Identifying and mitigating potential risks.
Software Quality Assurance: Ensuring compliance with quality standards.
Technical Reviews: Performing peer reviews to catch defects early.
Measurement: Collecting and analyzing process and product metrics.
Software Configuration Management: Controlling changes to software artifacts.
Reusability Management: Promoting the use of reusable components.
Work Product Preparation and Production: Preparing high-standard deliverables and
documentation.
George Polya's approach to problem-solving, outlined in "How to Solve It," forms the foundation for software
engineering practice, leading to a series of essential steps and questions:
Does the solution conform to the plan (source code traceable to design)?
Is each component part of the solution provably correct (reviews, correctnessproofs)?
14
Module 1
4. Examine the Result for Accuracy (Testing and Quality Assurance)Questions:
Is it possible to test each component part of the solution (reasonable testing strategy)?
Does the solution meet the required data, functions, and features (validation against stakeholder
requirements)?
David Hooker proposed seven principles that underpin effective software engineering practice
7. Think!
Intense thought before action leads to better results and reduces errors.
Clear, complete thought results in systems with higher value and quality.
15
Module 1
1.6 The Software Myths
Management Myths:
Myth: Having a book of standards and procedures is sufficient for software development.
Reality: Often, existing standards are underutilized, outdated, and not adaptable to modernpractices.
Myth: Adding more programmers can accelerate a project that's behind schedule.
Reality: Adding people to a late project can actually delay it further due to the time needed for
integration and coordination.
Myth: Outsourcing a software project means the organization can relax and let the thirdparty handle
it.
Reality: Without internal project management capabilities, outsourcing can lead to projectdifficulties.
Customer Myths:
Myth: A general statement of objectives is enough to start programming, with details filledin later.
Reality: Ambiguous objectives often lead to project failures; clear requirements areessential.
Myth: Software is flexible enough to accommodate continuous changes in requirements.
Reality: While software can be modified, late changes can significantly increase costs andcomplexity.
Practitioner’s Myths:
Myth: The majority of effort in software development is expended before the program isdelivered.
Reality: A significant portion of effort occurs after the initial delivery, often exceeding 60-80%.
Myth: Software quality can only be assessed once the program is running.
Reality: Technical reviews are effective quality assurance mechanisms from projectinception.
Myth: A working program is the only deliverable for a successful project.
Reality: Various work products, including models and documents, are essential for successful
software engineering.
Myth: Software engineering leads to excessive documentation and slows down projects.
Reality: Software engineering focuses on creating quality products, which ultimately speeds up
delivery by reducing rework.
16
Module 1
Chapter-2
PROCESS MODELS
17
Module 1
Five Framework Activities:
1. Communication
2. Planning
3. Modeling
4. Construction
5. Deployment
Process Flow:
Describes organization of framework activities, actions, and tasks with respect to sequenceand time.
Linear Process Flow: Executes each framework activity in sequence (Figure 2.2a).
Iterative Process Flow: Repeats one or more activities before proceeding (Figure 2.2b).
Evolutionary Process Flow: Activities executed in a circular manner, leading to a morecomplete
version of the software (Figure 2.2c).
Parallel Process Flow: Executes one or more activities in parallel with others (Figure 2.2d).
Requires understanding the problem nature, characteristics of the team, and stakeholders.
18
Module 1
Example:
19
Module 1
Validation
Definition:
Purpose:
Provide templates for describing problem solutions within the software process context.
Help solve problems and construct processes that meet project needs.
Stage Pattern: Defines problems associated with a framework activity (e.g., Establishing
Communication).
Task Pattern: Defines problems associated with a software engineering action or work task(e.g.,
Requirements Gathering).
Phase Pattern: Defines the sequence of framework activities within the process (e.g., SpiralModel,
Prototyping).
Pattern Name: Meaningful name describing the pattern within the software processcontext.
Forces: Environment and issues making the problem visible and affecting its solution.
20
Module 1
Type: Specifies the pattern type (stage, task, or phase).
Initial Context: Conditions under which the pattern applies, including prior organizationalor team
activities, entry state, and existing information.
Problem: Specific problem to be solved by the pattern.
Solution: How to implement the pattern successfully, modifying the initial state andtransforming
information.
Resulting Context: Conditions resulting from successful implementation, including exitstate and
developed information.
Related Patterns: List of directly related patterns, possibly represented as a hierarchy ordiagram.
Known Uses and Examples: Specific instances where the pattern is applicable.
Usage:
Defined as a natural state between order and chaos, balancing structure and surprise.
Unstable and partially structured state, constantly attracted to chaos or absolute order.
Absolute order implies no variability, while too much chaos hinders coordination andcoherence.
Some structure allows organized change, while too much rigidity prevents it.
Philosophical Implications:
process elements:
Framework activities
Software engineering actions
Tasks
Work products
Quality assurance
Change control mechanisms
Application:
22
Module 1
2.3.1 The Waterfall Model
Overview:
Best suited for well-understood requirements where work flows linearly fromcommunication to
deployment.
Often used for well-defined adaptations or enhancements to existing systems or in newdevelopment
with stable requirements.
Description:
V- Model:
23
Module 1
Criticisms:
Non-sequential Nature: Real projects rarely follow the proposed sequential flow. Iterations are
accommodated indirectly, causing potential confusion during changes.
Requirement Uncertainty: Difficult for customers to state all requirements explicitly at the beginning.
The model struggles with the natural uncertainty of initial project phases.
Delayed Working Version: Customers must wait until late in the project to see a working version.
Undetected major errors can be disastrous.
Blocking States: Linear nature can lead to blocking states where team members wait for others to
complete dependent tasks. Waiting time can exceed productive work time, especially at the beginning
and end of the process.
Suitable for situations where initial software requirements are well-defined, but the development scope
precludes a purely linear process.
Useful when there is a need to quickly provide limited software functionality and then expand it in later
releases.
24
Module 1
Description:
Example:
Word-processing software:
First Increment: Basic file management, editing, and document production functions.
Second Increment: More sophisticated editing and document production capabilities.
Third Increment: Spelling and grammar checking.
Fourth Increment: Advanced page layout capability.
Each increment can incorporate the prototyping paradigm.
Process Flow:
25
Module 1
Advantages:
Evolutionary process models are designed for scenarios where software requirements and market demands are
dynamic. These models are iterative and focus on gradually developing increasingly complete versions of the
software.
Characteristics:
Iterative Development: The software evolves through repeated cycles, allowing forincremental
improvements based on feedback and changing requirements.
Adaptability: These models accommodate changes in requirements and deliver functionalsoftware at
each iteration.
Continuous Feedback: Stakeholders provide feedback at each iteration, refiningrequirements and
guiding development.
26
Module 1
Prototyping:
Purpose: To clarify requirements and validate functionality when initial requirements areunclear or
when experimenting with new technologies.
Process:
Challenges:
Misinterpretation: Stakeholders may mistake the prototype for the final product, unaware of its
temporary nature and potential lack of quality.
Compromises: Engineers might make suboptimal choices (e.g., using an inappropriate operating system
or inefficient algorithms) to quickly develop the prototype, which may become hard to change later.
27
Module 1
Guidelines for Effective Use:
The concurrent development model, also known as concurrent engineering, is designed to handle iterative and
parallel aspects of software development. This model is suitable for complex projects where various activities
need to be performed concurrently and where dynamic changes in projectstates are frequent.
Characteristics:
Key Components:
Activities and States: Software engineering activities (such as modeling) can be in variousstates at any
given time. Typical states include:
Inactive: The activity is not currently being worked on.
Under Development: The activity is actively being worked on.
Awaiting Changes: The activity is paused, waiting for changes or further input.
Done: The activity is completed but can be revisited if needed.
Event-Driven Transitions: Specific events trigger transitions between states. For example, an
inconsistency in the requirements model might trigger a transition from "done" to "awaiting changes."
28
Module 1
Example Process Flow:
Initial Phase:
Communication: Initially in the "under development" state as requirements are gathered and analyzed.
Modeling: In the "inactive" state until initial communication is completed.
Transition Phase:
Once initial requirements are gathered, the communication activity transitions to "awaitingchanges."
The modeling activity transitions to "under development" to start creating design models.
Dynamic Adjustments:
If new requirements or changes are identified, the modeling activity might transition to "awaiting
changes" while communication might re-enter the "under development" state torefine requirements.
Construction and other activities can proceed in parallel, transitioning between states as necessary.
Advantages:
Flexibility: Allows for adaptive and flexible project management, accommodating changeswithout
significant disruption.
Real-Time Progress Monitoring: Provides a real-time view of the project’s status, helpingin better
tracking and management.
Improved Coordination: Enables better coordination among team members as multipleactivities are
managed concurrently.
Challenges:
Complexity: Managing concurrent activities can be complex and requires robust projectmanagement
practices.
Communication: Requires effective communication and collaboration among teammembers to
ensure synchronization and avoid conflicts.
Applicability:
Complex Projects: Suitable for projects with complex requirements and high levels ofuncertainty.
Large Teams: Beneficial for large teams where different sub-teams can work on differentactivities
simultaneously.
Dynamic Environments: Ideal for environments where requirements and technologies arerapidly
evolving.
29
Module 1
2.4 Specialized Process Models
Specialized process models take on many characteristics of traditional process models but are tailored for
specific software engineering approaches. They are applied in situations requiring a unique or narrowly
defined methodology.
Key Steps:
Research and Evaluation: Identify and assess available components for the applicationdomain.
Integration Considerations: Address issues related to the integration of selectedcomponents.
Architectural Design: Develop a software architecture that accommodates the components.
Component Integration: Integrate the components into the architecture.
Comprehensive Testing: Ensure proper functionality through rigorous testing.
Advantages:
Promotes software reuse.
Reduces development time and costs.
Leverages pre-built, tested components, potentially increasing reliability.
Challenges:
Integration complexity.
Dependency on third-party components.
Potential issues with component compatibility and maintainability.
The formal methods model employs rigorous mathematical notation to specify, develop,and verify
software systems.
This approach aims for high reliability and defect-free software through formalspecification and
mathematical analysis.
30
Module 1
Key Characteristics:
Mathematical Specification: Use of formal mathematical methods to specify systemrequirements.
Program Verification: Employ mathematical techniques to verify software correctness.
Error Detection: Discover and correct ambiguities, incompleteness, and inconsistenciesthrough
formal analysis.
Advantages:
Potential for high reliability and defect-free software.
Effective for safety-critical systems (e.g., medical devices, aircraft avionics).
Challenges:
Time-consuming and expensive development process.
Requires specialized training and expertise.
Difficult to communicate formal models to non-technical stakeholders.
Key Concepts:
Crosscutting Concerns: Issues that span multiple components or system functions.
Aspects: Mechanisms for localizing the expression of crosscutting concerns beyondsubroutines and
inheritance.
Aspectual Requirements: Define the impact of crosscutting concerns across the softwarearchitecture.
Development Approach:
Horizontal Slices: Aspects are horizontal slices through vertically decomposed softwarecomponents.
Parallel Engineering: Aspects are engineered independently but have a direct impact onsoftware
components.
Evolutionary and Concurrent: Combines evolutionary development of aspects withconcurrent
development of localized components.
Challenges:
Immature process model.
Requires asynchronous communication between aspect engineering and componentdevelopment.
Complexity in managing and integrating aspects with core components.
31
Module 1
2.5 The Unified Process
The Unified Process (UP) in Object-Oriented Analysis and Design (OOAD) is a software development
methodology that emphasizes iterative development, collaboration, and flexibility. It is based on the Unified
Modeling Language (UML) and is characterized by its use of use cases to drive development, its focus on
architecture-centric development, and its emphasis on risk management and incremental delivery. UP is a
flexible and adaptable process that can be tailored to meet the specific needs of a project or organization,
making it a popular choice for many software development teams.
1. Inception
This is the initial phase where the project’s scope, objectives, and feasibility are determined. Key activities in
this phase include identifying stakeholders, defining the initial requirements, outlining the project plan, and
assessing risks. The goal of this phase is to establish a solid foundation for the project and ensure that it is
worth pursuing.
2. Elaboration
In this phase, the project requirements are analyzed in more detail, and the architecture of the system is
defined. Key activities include developing use cases, creating the architectural baseline, identifying key
components, and refining the project plan. The goal of this phase is to mitigate major risks and establish a solid
architectural foundation for the project.
32
Module 1
3. Construction
This is the phase where the actual implementation of the system takes place. Key activities include developing,
testing, and integrating the system components, as well as continuously verifying that the system meets the
requirements. The goal of this phase is to build a complete, high-quality software product that is ready for
deployment.
4. Transition
In this final phase, the software is deployed to end users. Key activities include user training, final system
testing, and transitioning the system to the operations and maintenance team. The goal of this phase is to
ensure a smooth transition from development to production and to address any issues that arise during
deployment.
These phases are iterative, meaning that they may be revisited multiple times throughout the project to
incorporate feedback, make improvements, and address changes in requirements. This iterative approach
allows for flexibility and adaptability, making the Unified Process well-suited for complex and evolving
software projects.
Workflows in Unified Process
Requirements Workflow: Identifies, analyzes, and prioritizes system requirements, ensuring
alignment with stakeholder needs.
Analysis and Design Workflow: Translates requirements into system designs, defining the
architecture and high-level structure of the system.
Test Workflow: Designs and executes test cases to verify system functionality, ensuring the software
meets quality standards.
Deployment Workflow: Prepares and transitions the system for deployment, ensuring a smooth
transition from development to production.
Configuration and Change Management: Manages configuration items and tracks changes, ensuring
version control and integrity throughout development.
Project Management Workflow: Oversees project progress, resources, and schedule, ensuring timely
delivery and adherence to quality standards.
Environment Workflow: Sets up and maintains development, testing, and production environments,
33
Module 1
enabling efficient software development.
High-level design. External specifications for each component to be constructed are developed and a
component design is created. Prototypes are built when uncertainty exists. All issues are recorded and
tracked.
High-level design review. Formal verification methods (Chapter 21) are applied to uncover errors in
the design. Metrics are maintained for all important tasks and work results.
Development. The component level design is refined and reviewed. Code is generated, reviewed,
compiled, and tested. Metrics are maintained for all important tasks and work results.
Postmortem. Using the measures and metrics collected (this is a substantial amount of data that
should be analyzed statistically), the effectiveness of the process is determined. Measures and metrics
should provide guidance for modifying the process to improve its effectiveness.
Show managers how to coach and motivate their teams and how to help them sustain peak
performance.
Accelerate software process improvement by making CMM Level 5 behavior normal and expected.
The Capability Maturity Model (CMM), a measure of the effectiveness of a software process, is
discussed in Chapter 30.
34