OVERVIEW SOFTWARE ENGINEERING
Software Engineering:
Software engineering is the systematic, disciplined application of engineering principles to the design,
development, testing, and maintenance of software, ensuring it's reliable, efficient, and meets user
needs.
Need for Software Engineering
• Complexity: Manages large, intricate systems beyond manual control.
• Cost & Schedule: Controls budget overruns and missed deadlines.
• Quality: Ensures reliability, security, efficiency, and usability.
• Scalability & Maintenance: Enables software to grow and adapt to changes.
• Systematic Approach: Provides discipline for predictable, high-quality outcomes.
Software Product Types
• Generic: Broadly applicable, for many users (e.g., Microsoft Office).
• Customized (Custom/Tailored): Built for a specific organization's unique needs (e.g., a
hospital's patient management system).
Characteristics of Good Software (Quality Attributes)
• Functionality: Does what it should.
• Reliability/Dependability: Works consistently, safely, securely.
• Efficiency: Uses resources (memory, CPU) wisely.
• Maintainability: Easy to fix and evolve.
• Usability: Easy to learn and use.
• Portability: Runs on different environments.
Software Paradigms (Approaches)
• Rational: Focuses on planning, design, formal methods (e.g., Waterfall).
• Empirical/Agile: Emphasizes practice, iteration, feedback, adaptation (e.g., Scrum, XP).
• Object-Oriented (OOP): Uses objects, classes (Java, C++).
• Functional: Uses functions (Haskell, Lisp).
Challenges in Software Projects
• Varying Requirements: User needs change constantly.
• Estimation Difficulties: Hard to predict time/cost accurately.
• Technical Hurdles: Integration, performance issues.
• Communication Gaps: Between stakeholders and developers.
• Risk Management: Unforeseen problems (security, market changes).
Factors Influencing Development
• People: Skill, team dynamics, communication.
• Technology: Tools, platforms, languages.
• Process: Chosen methodology (Agile, Waterfall).
• Requirements: Clarity, stability, complexity.
• Environment: Market, regulations, hardware.
Software Process & Success
• Need for Process: Provides structure, predictability, quality control, risk management.
• Components: Activities (communication, planning, modeling, construction, deployment),
artifacts (documents, code), roles, tools.
• Process Activities (SDLC): Planning, Analysis, Design, Implementation, Testing, Maintenance.
Product vs. Project vs. Process:
• Product: The software itself (code, docs).
• Project: The effort to build the product (schedule, budget, team).
• Process: The methodology used (e.g., Agile, Waterfall)
Process Assessment & Improvement (SPI)
• Definition: A systematic way to evaluate an organization's software development processes
(using frameworks like CMMI, SPICE) to find strengths/weaknesses and implement changes for
better efficiency, quality, and predictability.
• Key Models:
• CMMI (Capability Maturity Model Integration): Rates process maturity across
different levels.
• SPICE (ISO/IEC 15504): An international standard for assessing process capability.
• Types of Assessments: Internal (self-assessment), Second-Party (external oversight), Third-
Party (independent audit).
• Goal: To learn from current practices, implement automation (like DevOps), manage risks, and
achieve business goals.
Software Engineering Ethics
• Core Principle: Software engineers must act in the public interest, balancing their work with
societal well-being, privacy, and environmental impact.
• Key Codes: The IEEE/ACM Code of Ethics provides principles like taking responsibility,
approving only safe software, and considering broader impacts.
• Ethical Challenges: Algorithmic bias, privacy violations, intellectual property, safety
vulnerabilities, and AI's impact.
• Frameworks: Uses ethical frameworks (like deontology, utilitarianism) to navigate dilemmas.
• Goal: To build a digital world that is fair, respects privacy, and enhances quality of life, not
diminishes it.