Sepm 25
Sepm 25
Software engineering has evolved significantly over the years, transitioning from simple
programming tasks to complex systems that integrate various technologies and methodologies. The
role of software is now central to almost every industry, influencing how businesses operate, how
services are delivered, and how products are developed. This evolution can be attributed to several
factors including advancements in technology, increased demand for software solutions, and the
growing complexity of systems.
The nature of software has changed from monolithic applications to modular architectures that
support scalability and maintainability. Modern software is often designed with a focus on user
experience (UX), performance, and security. Additionally, the rise of cloud computing has
transformed how software is deployed and accessed, leading to new paradigms such as Software as a
Service (SaaS). Furthermore, the integration of artificial intelligence (AI) and machine learning (ML)
into software applications has introduced new capabilities that were previously unimaginable.
Software Myths
Software myths are misconceptions about software development processes and practices. Common
myths include beliefs such as “adding more programmers will speed up development” or “once the
software is written, it’s done.” These myths can lead to unrealistic expectations and poor project
management outcomes. Understanding these myths is crucial for effective communication among
stakeholders and for setting realistic goals in software projects.
1. Quality Focus: Emphasizes the importance of quality in all aspects of software development.
2. Process: Refers to the structured set of activities required to develop a software product.
4. Tools: Involves the automated tools that assist in various stages of development.
A Process Framework
CMMI is a process improvement framework that helps organizations improve their processes
through five maturity levels:
Organizations use CMMI to assess their current process maturity level and identify areas for
improvement.
Process patterns refer to reusable solutions or best practices that can be applied across different
projects or contexts within an organization. Process assessment involves evaluating existing
processes against established standards or benchmarks like CMMI or ISO/IEC 15504 (SPICE) to
identify strengths and weaknesses.
2. Team Process Models: Collaborative frameworks designed for teams working together on
projects.
3. Iterative Models: Emphasize repeated cycles (iterations) through phases like planning,
design, coding, testing until completion.
4. Prototyping Models: Involve creating prototypes early in the development cycle to gather
feedback from users before finalizing requirements.
5. Spiral Model: Combines iterative development with systematic risk assessment at each
iteration stage.
Requirement Engineering
Requirements engineering is a crucial phase in the software development lifecycle that involves
defining, documenting, and maintaining requirements throughout the project. It encompasses
various types of requirements, processes, and modeling techniques.
1. Functional Requirements: These specify what the system should do. They describe the
interactions between the system and its users or other systems. Examples include user
authentication, data processing, and reporting functionalities.
2. Non-Functional Requirements: These define how the system performs its functions rather
than what functions it performs. They include performance metrics (e.g., response time),
security standards, usability criteria, reliability measures, and compliance with regulations.
• User Requirements: These are high-level statements of what users need from the system.
They are often expressed in natural language and focus on user goals and tasks.
• System Requirements: These provide a detailed description of the system’s functionality and
constraints. They can be further divided into functional requirements (specific behaviors) and
non-functional requirements (quality attributes).
Interface Specification
Interface specification defines how different components of a system interact with each other or
with external systems. This includes APIs (Application Programming Interfaces), user interfaces,
communication protocols, and data formats.
The SRD is a comprehensive document that captures all requirements for a software project. It
serves as a reference for stakeholders throughout the development process and typically includes:
• Introduction
• Overall description
• Interface specifications
1. Feasibility Studies: This initial step assesses whether the proposed project is viable within
given constraints such as budget, technology, time frame, and resources.
2. Requirements Elicitation and Analysis: This involves gathering requirements from
stakeholders through interviews, surveys, workshops, or observation. The goal is to
understand their needs clearly.
System Models
System models help visualize different aspects of the system being developed:
1. Context Models: These illustrate how the system interacts with external entities like users or
other systems.
2. Behavioral Models: These depict how the system behaves in response to certain inputs or
events over time.
3. Data Models: These represent data structures within the system including relationships
between different data entities.
4. Object Models: These focus on objects within object-oriented design showing their
attributes and methods.
5. Structured Methods: These involve using structured analysis techniques to break down
complex systems into manageable components.
Modeling with UML (Unified Modeling Language) provides standardized ways to visualize these
models through diagrams such as use case diagrams for functional requirements or class diagrams
for object-oriented designs.
UNIT – 3
Design Engineering: Design Process and Design Quality, Design Concepts, the Design Model
The design process in engineering is a systematic approach to problem-solving that involves several
stages. These stages typically include:
2. Research and Analysis: Gathering information about the problem, including existing
solutions and constraints.
3. Concept Development: Generating ideas and concepts that could potentially solve the
problem.
4. Design Evaluation: Assessing the feasibility and effectiveness of the proposed designs.
6. Final Design: Refining the chosen concept into a final design ready for implementation.
Design quality refers to how well a design meets specified requirements and user needs. It
encompasses various attributes such as functionality, reliability, usability, efficiency, maintainability,
and aesthetics. High-quality designs often result from iterative processes where feedback is
continuously integrated into the development cycle.
The design model serves as a framework for understanding how different components of a system
interact with one another. It can take various forms, including diagrams or mathematical
representations, which help visualize relationships and dependencies within the system.
Creating an Architectural Design: Software Architecture, Data Design, Architectural Styles and
Patterns, Architectural Design
Architectural design in software engineering focuses on defining a structured solution that meets all
technical and operational requirements while optimizing common quality attributes like performance
and security.
1. Software Architecture: This refers to the high-level structure of a software system. It defines
how components interact through interfaces and protocols while considering non-functional
requirements such as scalability and maintainability.
2. Data Design: This aspect involves structuring data effectively to support application
functionality while ensuring data integrity and accessibility.
3. Architectural Styles and Patterns: These are standard solutions to recurring design problems
within specific contexts:
• Layered Architecture: Organizes code into layers (presentation, business logic, data
access).
4. Architectural Design: This is the process of defining software architecture at a high level
based on requirements analysis while considering trade-offs among competing concerns like
performance versus complexity.
Object-Oriented Design: Objects and Object Classes, An Object-Oriented Design Process, Design
Evolution
Object-oriented design (OOD) emphasizes modeling real-world entities as objects that encapsulate
both state (attributes) and behavior (methods).
• The process typically includes identifying objects based on use cases or scenarios.
3. Design Evolution:
• As systems grow or change over time due to new requirements or technology shifts,
OOD allows for easier modifications through its modular structure.
Performing User Interface Design: Golden Rules, User Interface Analysis and Design, Interface
Analysis, Interface Design Steps, Design Evaluation
User interface (UI) design focuses on creating interfaces that enhance user experience by being
intuitive and efficient.
• This involves understanding user needs through research methods like surveys or
interviews.
• Personas are created representing typical users which guide design decisions.
• Analyze workflows to understand how users will interact with the system.
5. Design Evaluation:
• Conduct usability tests with real users to gather feedback on interface effectiveness.
A strategic approach to software testing involves a comprehensive plan that outlines how testing will
be conducted throughout the software development lifecycle. This includes defining objectives,
selecting appropriate test techniques, and determining the resources required for effective testing.
The strategy should align with project goals and stakeholder expectations while ensuring that quality
is maintained.
3. Validation Testing: This type of testing ensures that the software meets business needs and
requirements as specified by stakeholders. Validation can be performed through various
means such as user acceptance testing (UAT) or system integration testing.
4. System Testing: System testing evaluates the complete and integrated software product to
verify that it meets specified requirements. It encompasses functional and non-functional
tests, including performance, security, and usability assessments.
5. The Art of Debugging: Debugging is a critical skill in software development where developers
identify, analyze, and fix bugs or defects in the codebase. Effective debugging often involves
using tools like debuggers, log analyzers, or profilers to trace issues back to their source.
Product Metrics
Software quality metrics are essential for assessing various aspects of a software product throughout
its lifecycle:
1. Metrics for Analysis Model: These metrics evaluate how well requirements are captured
during analysis phases, focusing on completeness, consistency, and traceability.
2. Metrics for Design Model: Design metrics assess attributes such as modularity, complexity,
coupling, cohesion, and maintainability of design artifacts.
3. Metrics for Source Code: Source code metrics include cyclomatic complexity (a measure of
code complexity), lines of code (LOC), code churn (the amount of code added/modified), and
adherence to coding standards.
4. Metrics for Testing: These metrics help gauge test effectiveness through measures like test
coverage (the percentage of requirements tested), defect density (number of defects per
unit size), and pass/fail rates.
5. Metrics for Maintenance: Maintenance metrics track issues related to bug fixes,
enhancements made post-release, time spent on maintenance activities versus new
development work.
6. Metrics for Process and Projects: Software measurement encompasses tracking progress
against project timelines, resource allocation efficiency, cost estimation accuracy, etc.,
providing insights into overall project health.
7. Software Quality Metrics: These metrics assess end-user satisfaction levels through surveys
or feedback mechanisms alongside defect rates post-deployment.
Risk Management
Effective risk management in software development can be categorized into reactive vs proactive
strategies:
1. Reactive Risk Strategies: These strategies involve responding to risks after they have been
identified or have occurred—often leading to increased costs or delays in project timelines
due to unforeseen issues arising during development or after deployment.
2. Proactive Risk Strategies: Proactive approaches focus on anticipating potential risks before
they materialize by implementing preventive measures during planning stages—this includes
thorough risk identification processes such as brainstorming sessions with stakeholders or
expert consultations.
3. Software Risks Identification & Projection: Identifying risks involves recognizing potential
sources of failure within the project scope—these could range from technical challenges to
resource limitations—and projecting their impact helps prioritize which risks need
immediate attention based on severity assessments.
4. Risk Refinement & RMMM Plan (Risk Mitigation Monitoring Management): Once risks are
identified and projected, refining them involves developing detailed plans outlining
mitigation strategies tailored specifically to each risk’s nature—this may include contingency
plans or alternative approaches if certain risks become reality.
UNIT – 5
Quality Concepts
Quality management in software development encompasses various principles and practices aimed
at ensuring that software products meet specified requirements and are free from defects. Key
concepts include:
Software Quality Assurance refers to the systematic process of ensuring that software development
processes and products conform to defined standards and procedures. SQA involves:
1. Defining Standards: Establishing quality standards that the software must meet.
Software Reviews
Software reviews are critical evaluations of software artifacts (like requirements, design, code)
conducted at various stages of the development lifecycle. Types include:
2. Formal Technical Reviews (FTRs): Structured meetings involving stakeholders where specific
criteria are evaluated.
Formal technical reviews are a structured process involving multiple stakeholders who evaluate a
product against predefined criteria. They typically include:
1. Planning: Defining objectives, participants, and materials needed for the review.
3. Review Meeting: Participants discuss findings, identify issues, and suggest improvements.
Statistical Software Quality Assurance employs statistical methods to measure and improve software
quality metrics such as defect density, reliability, and performance metrics over time. Techniques
include:
1. Control Charts: Used to monitor process stability over time.
2. Sampling Methods: Involves selecting a subset of data for analysis rather than examining all
data points.
This approach helps organizations make informed decisions based on quantitative data.
Software Reliability
Software reliability refers to the probability that software will perform its intended function under
specified conditions for a designated period of time without failure. Key aspects include:
2. Testing Strategies: Employing rigorous testing methods like stress testing or fault injection to
assess reliability.
Reliability is often quantified using metrics such as Mean Time To Failure (MTTF).
The ISO 9000 family of standards provides guidelines for quality management systems (QMS). Key
components include:
Organizations seeking ISO 9000 certification must demonstrate their ability to consistently provide
products that meet customer requirements and comply with regulations.
• Define clear goals, scope, resources, timelines, and deliverables for the project.
2. Project Estimation
• Estimation techniques help predict project costs, duration, and resource needs using
historical data or expert judgment.
3. Decomposition Techniques
• Breaking down larger tasks into smaller manageable components facilitates better
estimation and tracking.
5. System Engineering
7. Procurement Management