Unit 1 Software Process and Model
Introduction to Software Engineering: Objectives,
Principles, and Practices
Agenda
•Definition of Software Engineering
•Objectives of Software Engineering
•Key Principles of Software Engineering
•Common Practices in Software Engineering
2 v 1.2
What is Software Engineering?
•Definition:
Software Engineering is the application of engineering principles to the development
of software in a systematic method.
•Importance:
Ensures reliability, efficiency, and maintainability of software systems.
Objectives of Software Engineering
• Objective 1: Deliver high-quality software that meets customer needs.
• Objective 2: Ensure the software is reliable and performs efficiently.
• Objective 3: Make software maintainable and scalable.
• Objective 4: Optimize cost and time of software development.
• Objective 5: Facilitate team collaboration and communication.
3 v 1.2
4 v 1.2
Key Principles of Software Engineering
• Principle 1: Abstraction : Simplifying complex systems by modeling classes
appropriate to the problem.
Benefits: Easier to understand, manage, and modify.
• Principle 2: Modularity : Dividing a software system into discrete modules
that can be developed independently.
Benefits: Enhances reusability, maintainability, and parallel development.
• Principle 3: Encapsulation : Bundling the data with the methods that
operate on the data.
Benefits: Protects the internal state of an object and promotes modularity.
• Principle 4: Separation of Concerns: Dividing a program into distinct
sections, where each section addresses a separate concern.
Benefits: Reduces complexity and enhances readability and maintainability.
5 v 1.2
• Principle 5: Incremental Development : Developing software in small,
manageable increments.
Benefits: Allows for early detection of issues, user feedback, and continuous
improvement.
• Principle 6: Maintainability : Writing code in a way that it can be easily
understood, modified, and extended by others.
Benefits: Reduces future costs and effort in maintaining the software.
• Principle 7: Scalability: esigning software to handle growth, whether in data
volume, number of users, or transaction frequency.
Benefits: Ensures long-term usability and performance.
6 v 1.2
Common Practices in Software Engineering
•Practice 1: Requirement Analysis : Gathering and defining what the software needs to do.
Tools: User stories, use cases, interviews.
•Practice 2: System Design: Planning the architecture and components of the system.
Tools: UML diagrams, design patterns, architectural blueprints.
•Practice 3: Implementation (Coding): Writing the actual code according to the design
specifications.
Tools: IDEs, version control systems, coding standards.
•Practice 4: Testing : Verifying that the software works as intended and is free of defects.
Types: Unit testing, integration testing, system testing, acceptance testing.
•Practice 5: Deployment : Delivering the software to the end-users.
Methods: Continuous integration/continuous deployment (CI/CD), manual deployment.
•Practice 6: Maintenance : Updating and improving the software post-deployment.
Activities: Bug fixing, adding new features, performance optimization.
7 v 1.2
8 v 1.2
9 v 1.2
10 v 1.2
11 v 1.2
12 v 1.2
13 v 1.2
Software Myths
•Common Software Myths
•Management Myths
•Customer Myths
•Developer Myths
•Impact of Software Myths
•Debunking the Myths
14 v 1.2
Management Myths
• Myth 1: "If we get behind schedule, we can add more programmers to catch
up.“
Reality: Adding more programmers to a late project often makes it later due to
the ramp-up time and increased communication overhead (Brooks' Law).
Impact: Can lead to increased complexity, miscommunication, and reduced
productivity.
• Myth 2: "Project requirements are clear from the beginning and do not
change.“
Reality: Requirements often evolve as stakeholders better understand their
needs and the possibilities.
Impact: Can result in scope creep, requiring flexible and iterative development
processes.
15 v 1.2
Management Myths
• Myth 3: "Software development is a straightforward process similar to
manufacturing."
Reality:Software development is a creative process involving discovery and
problem-solving, unlike predictable manufacturing processes.
Impact:Misalignment in expectations, leading to frustration and inefficiencies.
Customer Myths:
Myth 1: "A general statement of objectives is sufficient to start coding."
Reality:Clear, detailed requirements are crucial for successful development.
Impact:Vague objectives can lead to misinterpretation, rework, and project
failure.
16 v 1.2
• Myth 2: "Software can be changed easily at any time.“
Reality: Changes, especially late in the development process, can be costly
and time-consuming.
Impact: May lead to significant redesign, regression bugs, and schedule
delays.
• Myth 3: "The final product will work perfectly as initially envisioned."
Reality: The final product often requires iterations and refinements based on
testing and user feedback.
Impact: Unrealistic expectations can result in dissatisfaction and perceived
project failure.
17 v 1.2
Developer Myths
• Myth 1: "Once the program is written and works, our job is done.“
Reality: Maintenance, support, and updates are ongoing responsibilities.
Impact: Neglecting post-release phases can lead to unaddressed bugs and
technical debt.
• Myth 2: "The only deliverable is the working program.“
Reality:Documentation, testing artifacts, and user manuals are also critical
deliverables.
Impact:Lack of comprehensive deliverables can hinder future maintenance and
user adoption.
• Myth 3: "We can always fix problems later.“
Reality:Deferring fixes can escalate issues, making them harder and costlier to
address.
Impact:Accumulated technical debt and degraded software quality over time.
18 v 1.2
Impact of Software Myths
• Negative Consequences:
– Misaligned expectations
– Inefficiencies and delays
– Increased costs
– Poor software quality
– Team frustration and burnout
Debunking the Myths
• Strategies: Education and Training: Equip all stakeholders with accurate
knowledge.
• Communication: Foster open, honest dialogue about project realities.
• Process Improvement: Adopt agile practices, continuous integration, and
iterative development.
• Realistic Planning: Set achievable goals and timelines, acknowledging
potential changes.
19 v 1.2
20 v 1.2
Attributes Of Good Software
• Maintainability
Software must evolve to meet changing needs.
• Dependability
Software must be trustworthy.
• Efficiency
Software should not make wasteful use of system resources.
• Usability
Software must be usable by the users for which it was designed.
21 v 1.2
Challenges Of Software Engineering
The key challenges facing software engineering are
• Coping with legacy systems, coping with increasing diversity and coping
with demands for reduced delivery times.
• Legacy systems
Old, valuable systems must be maintained and updated.
• Heterogeneity
Systems are distributed and include a mix of hardware and software.
• Delivery
There is increasing pressure for faster delivery of software
22 v 1.2
Summary:
• Software myths can significantly impact project success.
• Awareness and proactive measures are key to debunking myths.
• Continuous improvement and realistic planning lead to better software
outcomes.
23 v 1.2