01

Course Information

  • Course Title: SEN2022 Principles Software Engineering

  • Semester: Fall 2024

  • Instructor: Dr. Günet Eroglu

Textbook Information

  • Title: Software Engineering

  • Author: Ian Sommerville

  • Edition: Tenth Edition

  • Publisher: Pearson (Always Learning)

Course Outcomes

Students who successfully complete this course will be able to:

  1. Describe systems analysis and design concepts, and define the components of information systems.

  2. Discuss the essential phases of systems development.

  3. Explain project management tools and various systems analysis approaches for solving information system problems.

  4. Define the scope of information system problems.

  5. Identify the problems, opportunities, and directives that trigger the project.

  6. Define functional and non-functional system requirements and apply fact-finding techniques.

  7. Identify actors and use cases, and construct context and use case model diagrams.

  8. Construct data models and UML diagrams.

  9. Understand basic concepts and constructs of a process model, and construct context, data flow, event, and system diagrams.

  10. Identify alternative system solutions, define six types of feasibility, prepare cost-benefit analyses, and develop system proposal reports.

Grading Policy

  • Midterm: 30%

  • Project: 30%

  • Final Exam: 40%

Course Outline

  • Preface: 3

  • Part 1: Introduction to Software Engineering

    • Chapter 1: Introduction

    • Chapter 2: Software Processes

    • Chapter 3: Agile Software Development

    • Chapter 4: Requirements Engineering

    • Chapter 5: System Modeling

    • Chapter 6: Architectural Design

    • Chapter 7: Design and Implementation

    • Chapter 8: Software Testing

    • Chapter 9: Software Evolution

  • Part 2: System Dependability and Security

    • Chapter 10: Dependable Systems

    • Chapter 11: Reliability Engineering

    • Chapter 12: Safety Engineering

    • Chapter 13: Security Engineering

    • Chapter 14: Resilience Engineering

  • Part 3: Advanced Software Engineering

    • Chapter 15: Software Reuse

    • Chapter 16: Component-Based Software Engineering

    • Chapter 17: Distributed Software Engineering

    • Chapter 18: Service-Oriented Software Engineering

    • Chapter 19: Systems Engineering

    • Chapter 20: Systems of Systems

    • Chapter 21: Real-Time Software Engineering

  • Part 4: Software Management

    • Chapter 22: Project Management

    • Chapter 23: Project Planning

    • Chapter 24: Quality Management

    • Chapter 25: Configuration Management

Introduction to Software Engineering

  • Definition:

    • Software engineering is a discipline distinct from mere programming.

    • It encompasses systematic approaches to software development.

Difference between Computer Science and Software Engineering

  • Computer Science:

    • Focuses on theoretical foundations of computation, algorithms, and programming languages.

  • Software Engineering:

    • Applies problem-solving tools and techniques to develop software solutions.

    • Involves both individual and team efforts in problem resolution.

Quality and Reliability of Software

  • Software Engineering Goals:

    • Aims to develop high-quality software products and methodologies to improve software development processes.

  • Necessity of Software:

    • Essential for national infrastructure, utilities, industrial manufacturing, education, and entertainment.

Challenges in Software Development

  • Characteristics of Software:

    • Intangible, changeable, and requires human involvement.

  • Quality Impact:

    • Average software products often contain bugs and security vulnerabilities.

  • Examples of Software Failures:

    • Errors in critical systems can lead to financial loss, safety compromises, and general dissatisfaction.

    • Case examples include the Year 2000 bug, airport delays due to software failures, and issues with medical software leading to severe consequences.

Understanding Failure in Software Development

  • Software Failures Include:

    • Over-budget projects, missed deadlines, failure to meet customer requirements, and cancellations before completion.

  • Average Project Success Rates:

    • 36% succeed, 45% are challenged, 19% fail.

    • Challenges include meetings exceeding cost and time overruns.

Reasons behind Software Failures

  1. Unrealistic project goals.

  2. Poor communication among stakeholders.

  3. Ineffective project management.

  4. Inaccurate resource estimates.

  5. Poorly defined system requirements.

  6. Unmanaged risks and project complexities.

  7. Inadequate software development processes.

Future of Software Engineering

  • Key Factors:

    • Increasing demand for faster, more complex systems.

    • Need for new engineering techniques beyond traditional methods.

    • Importance of proper software engineering education and methods to improve software reliability and cost efficiency.