Chapter 2 SE (Customised) Updated
Chapter 2 SE (Customised) Updated
Module 2
By
Dr Deepak M D
Dept. of CSE
GST, BLR
Introduction
• Definition:
• Software Engineering is the application of engineering principles to software development in
a systematic method.
• Key Concepts:
• Systematic Approach:
– Emphasizes a structured process from requirement gathering to design, development,
testing, deployment, and maintenance.
– Ensures consistency, efficiency, and quality in software products.
• Engineering Principles:
– Utilization of engineering concepts such as modularity, abstraction, encapsulation, and
software architecture to create scalable and maintainable systems.
• Interdisciplinary Impact:
– Integrates principles from computer science, project management, and various
engineering disciplines to address software complexity and performance issues.
• Objectives:
• To design, develop, and manage software projects that are robust, efficient, and meet user
requirements.
• To adapt to evolving technologies and methodologies while maintaining a high standard of
software quality and functionality.
• Why It Matters:
• Software engineering practices are critical for the development of reliable and scalable
software systems that drive modern economies and societal functions.
• Traditional Software Engineering
– Focus: Initial stages of the discipline, primarily focused on structured
methodologies.
– Methodologies: Waterfall Model, Spiral Model.
– Characteristics: Emphasis on thorough documentation, sequential
development phases, and rigid adherence to initial requirements.
• Contemporary Software Engineering
– Focus: Adapting to rapidly changing technologies and market demands.
– Methodologies: Agile, DevOps, and Continuous Integration/Continuous
Deployment (CI/CD).
– Characteristics: Emphasis on flexibility, iterative development,
collaboration, and responding to change over following a fixed plan.
• Technological Advancements
– The role of new technologies like Artificial Intelligence, Cloud Computing,
and Blockchain in shaping modern software development practices.
• The Importance of Both Approaches
– Balancing the structure of traditional methods with the agility of
contemporary methods to meet diverse project needs.
Evolution
SDLC
Waterfall Model
Verification and Validation
• Verification:
– Are we building the product right?
– It is concerned with Phase containment of errors
– Verification is the process of evaluating software to ensure that
it complies with specified requirements and that it was built
correctly.
• Validation:
– Are we building the right product?
– It is concerned with the final product being error-free
– Validation is the process of evaluating the final product to ensure it
meets the user's needs and requirements.
Verification Validation
QA/QC Quality Assurance Quality Control (QC)
(QA)
Time Before and during After the majority of
software software development
development work has been done
Metho Review, Analysis, Black-box testing
d Inspection,
Walkthrough
November 18, 2024 ***DRAFT*** 7
Advantages of the V-Model
1.Simple and Easy to Use: The model is straightforward and easy to
understand.
2.Emphasis on Verification and Validation: Ensures that testing is
planned and executed at every phase.
3.Early Detection of Defects: Problems are identified early in the
development process, reducing the cost and effort of fixing them later.
4.Structured Approach: Provides a disciplined and systematic approach
to software development.
4. Transition
In this final phase, the software is deployed to end users.
Key activities include:
1. User training,
2. Final system testing, and
3. Transitioning the system to the operations and
4. maintenance team
Agile Software Development
• Conflict Management
• Risk Management
• Requirement Management
• Change Management
• Software Configuration Management
• Release Management
• Aspects of Software Project Management
Sources of Conflict in Software Engineering
•Technical Disagreements: Team members may have differing opinions on the
choice of technologies, design patterns, or approaches to solving a problem.
•Resource Allocation: Conflicts can arise over the distribution of limited resources,
such as time, budget, or personnel.
•Role Ambiguity: Unclear or overlapping roles and responsibilities can lead to
confusion and disputes over who is accountable for specific tasks.
•Communication Issues: Miscommunication or lack of communication can cause
misunderstandings, leading to conflicts.
•Differing Priorities: Conflicts may occur when team members or stakeholders have
different priorities or expectations regarding project goals, features, or deadlines.
Risks in Software Projects
Technical Risks: These involve challenges related to the technology used in the project
•, such as the adoption of new or unproven technologies, integration issues, or the risk of
• technical debt due to rushed development.
Project Management Risks: These include risks associated with poor project planning
•, inadequate resource allocation, unrealistic timelines, scope creep, and communication
• breakdowns within the team.
External Risks: These are risks that originate outside the project but can impact its
•success, such as changes in market conditions, regulatory changes, or dependency
•on third-party vendors.
Organizational Risks: These involve risks related to the organization's environment,
• such as changes in management, company policies, or business priorities that may
• affect the project.
Operational Risks: These risks are related to the day-to-day operations of the project,
•including staff turnover, lack of expertise, and issues with the development
•environment or tools.
Aspects of Software Project Management
• Planning
• Leading
• Execution
• Time Management
• Budget
• Maintenance
SOFTWARE PROJECT MANAGEMENT
• Introduction to Software Project Planning
• Overview
– Importance of Project Planning: Essential for defining the project's scope, schedule, resources, and
risks. Ensures alignment with business goals and sets clear expectations for stakeholders.
– Key Objectives: To identify project activities, allocate resources efficiently, and accurately estimate
time and effort required to complete the project.
• Identification of Activities and Resources
• Activities Identification
– Work Breakdown Structure (WBS): A hierarchical decomposition of the total scope of work to be
carried out by the project team. It breaks down the project into smaller, more manageable tasks.
– Task Sequencing: Identifying dependencies between tasks to determine the optimal order for
completion.
– Milestones and Deliverables: Key checkpoints and outputs that measure project progress.
• Resource Allocation
– Human Resources: Identifying team members with the necessary skills and assigning them to
appropriate tasks.
– Material Resources: Tools, software, and equipment needed for project completion.
– Financial Resources: Budget allocation for various activities and resources.
A feasibility study
• Feasibility study is an essential step in the
planning phase of any project, including
software development.
• It aims to assess the viability of a project by
evaluating various factors that can affect its
success.
• Here are the key concepts of a feasibility
study:
Feasibility Study
• Estimation Techniques
– Expert Judgment: Leveraging the experience and
insights of experts to estimate effort and time.
– Analogous Estimating: Using historical data from
similar projects to estimate.
– Parametric Estimating: Applying statistical models
based on project parameters (e.g., cost per line of
code).
– Three-Point Estimating: Using optimistic, pessimistic,
and most likely estimates to calculate an average.
Effort Estimation
– Story Points and Velocity in Agile: Story points
represent the effort required to implement a user
story. Velocity is the average number of story
points completed in an iteration.
– Time boxing: Allocating a fixed time period
(sprint) for each iteration, during which specific
tasks must be completed.
Software Cost Estimation Models
• Human Resources
• Roles:
– Project Manager
– Business Analyst
– System Architect
– Developers (front-end, back-end, full-stack)
– QA Engineers
– DevOps Engineers
– Support Engineers
Technical Resources
• Hardware:
– Servers
– Workstations
– Network infrastructure
• Software:
– Development tools (IDEs, compilers)
– Testing tools (manual and automated)
– Deployment and CI/CD tools
– Project management and collaboration tools
• Infrastructure:
– Cloud services (IaaS, PaaS, SaaS)
– Virtualization platforms
– Databases and storage solutions
Financial Resources
• Budget:
– Salaries and wages
– Software licenses and subscriptions
– Hardware procurement
– Training and development
– Contingency funds for unexpected expenses
• Time Resources
• Schedules:
– Project timelines
– Milestones
– Deadlines and deliverables
• Time Tracking:
– Time management tools (e.g., Toggl, Harvest)
Information Resources
• Documentation:
– Requirement documents
– Design documents
– Code repositories
– Test plans and reports
• Knowledge Bases:
– Internal wikis
– Technical support forums
– External documentation and manuals
Techniques of Software Project Control
and Reporting
6. Risk Management
•Purpose: Identify, analyze, and respond to project risks.
•Use: By monitoring risks, you can mitigate potential issues before they affect the
project's success.
8. Status Reporting
•Purpose: Provide regular updates on project progress to stakeholders.
•Use: Weekly or monthly reports that summarize project status, risks, issues, and
next steps are essential for keeping all stakeholders informed.
Configuration Control
•Purpose: Manage changes to configuration items. This involves evaluating and
approving or rejecting changes based on their impact on the project.
•Process: Using a change control process where proposed changes are reviewed,
and if approved, are implemented in a controlled manner. This helps in avoiding
unauthorized changes and ensures that all changes are documented and
traceable.
Configuration Status Accounting
•Purpose: Record and report the status of configuration items throughout the project
lifecycle.
•Process: Maintaining records of the current configuration, including versions and
build numbers. This provides visibility into the progress of the project and the status of
different components.
Configuration Audits
•Purpose: Ensure that configuration items conform to their specifications and
that changes have been made correctly.
•Process: Conducting audits to verify that the actual configuration matches
the documented configuration. This helps in identifying discrepancies and
ensuring that the software meets its requirements.
Version Control
Purpose: Manage different versions of software components to ensure that
changes are tracked and previous versions can be restored if needed.
Process: Using version control systems (VCS) like Git, SVN, or Mercurial to
manage changes to source code and other configuration items. Version control
helps in managing concurrent development efforts and ensures that teams are
working with the correct versions of files.
Baseline Management
•Purpose: Establish baselines, which are stable reference points for
configuration items at different stages of the project.
•Process: Once a baseline is established, any changes to the configuration items
must go through the configuration control process. Baselines are essential for
managing releases and ensuring that all components are in sync.
Benefits of Configuration Management
1.Improved Consistency: CM ensures that the software and its
components remain consistent throughout the development process,
reducing errors and rework.
2.Enhanced Collaboration: By maintaining a clear record of changes,
CM facilitates collaboration among team members, allowing them to
work on different parts of the project without conflicts.
3.Traceability: CM provides a history of changes, making it easier to
trace the origins of issues and understand the evolution of the
software.
4.Better Risk Management: CM helps in identifying potential risks
related to changes and provides a structured way to manage those
risks.
5.Streamlined Release Management: CM simplifies the process of
building and deploying software by ensuring that all components are
correctly versioned and tested.
6.Regulatory Compliance: In industries where compliance with
standards is required, CM ensures that all changes are documented
and traceable, meeting regulatory requirements.
Being Agile
• Move quickly
• Travel light
• Keep aware
• Commit late
• Respond to change
• Don’t get overweight
• Be good at following a moving target
• Evolve and adapt to the local environment
AGILE METHODOLOGY-SCRUM CEREMONY
• • Accelerating time-to-market
• • Enhancing software quality
• • Increasing productivity
• • Improving alignment between IT and business
objectives
• • Improving project visibility
• • Reducing cost
• • Enhancing the ability to manage changing
priorities
• • Reducing project risk
• • Reducing process complexity
Agile Practices:
• - “User Stories"
• - Test Driven Development
• - Refactoring: is the process of restructuring
existing computer code without changing its
external behavior. It aims to improve the
internal structure of the code, making it
cleaner, more efficient, and easier to
understand and maintain.
• - Acceptance Testing
•The WBS starts with the overall project at the top level.
•It breaks down into major phases (e.g., Requirements Gathering, Design,
Development, Testing, Deployment).
•Each phase is further decomposed into smaller tasks (e.g., Stakeholder
Interviews, System Architecture Design, Unit Testing).
•The decomposition continues until tasks are manageable and assignable to team
members.
Three-Tier Client-Server Architecture