Handout

CS504 Software Engineering – I

Document Information

Subject
Computer Science
University
Virtual University of Pakistan
Academic Year
2025
Upload Date
November 5, 2025

Tags

CS504: Software Engineering – I

CS504 Software Engineering – I is the foundational course that introduces the principles, practices, and methodologies for developing high-quality software in a systematic and disciplined way. This course addresses the "software crisis"—the fact that building software is inherently difficult, error-prone, and often over budget and late. It teaches you to move from "programming" (a solo, creative activity) to "software engineering" (a team-based, disciplined, engineering-process).

This course focuses on the first half of the software development lifecycle, primarily requirements, analysis, and design. You will learn how to properly understand a customer's problem and translate it into a detailed specification and design plan *before* writing any code. The course also introduces various process models that provide a roadmap for development.

Key Topics Covered:

  • Introduction to Software Engineering: Understanding the challenges of software development, the role of an engineer, and the importance of a defined process.
  • Software Process Models: A survey of different lifecycles for building software.
    • Waterfall Model: The classic, sequential, and linear approach.
    • Prototyping Model: Building a "throwaway" version to clarify requirements.
    • Iterative/Incremental Models: Building and delivering the software in pieces.
    • Introduction to Agile: A brief mention of the philosophy that will be covered in SE-II.
  • Requirements Engineering: The most critical phase. This includes:
    • Requirements Elicitation: How to get information from the client (interviews, surveys).
    • Requirements Analysis: Modeling the problem. This is where Object-Oriented Analysis (OOA) is introduced, using UML (Unified Modeling Language) diagrams like Use Case Diagrams.
    • Requirements Specification: Writing a clear, unambiguous Software Requirements Specification (SRS) document.
  • Software Design: The 'how-to' blueprint.
    • Object-Oriented Design (OOD): Translating analysis models into design models. This includes creating UML Class Diagrams and Sequence Diagrams to show the static structure and dynamic behavior of the system.
    • Design Principles: Introduction to core concepts like cohesion (good) and coupling (bad).
  • Good Programming Practices: Introduction to coding standards, commenting, and the importance of clear, modular code.

Course Objectives:

  1. Understand the principles and importance of a disciplined software engineering process.
  2. Elicit, analyze, and document software requirements using modern techniques (e.g., Use Cases).
  3. Create object-oriented analysis and design models using UML diagrams (Class, Sequence, Use Case).
  4. Compare and contrast various software development lifecycle models (e.g., Waterfall, Prototyping).
  5. Appreciate the challenges of building large-scale, maintainable software systems.
  6. CS504 provides the essential "blueprint" for building software correctly. It lays the groundwork for CS605 (Software Engineering II), which typically covers the second half of the lifecycle: project management, testing, and maintenance.

2025
Computer Science

Comments and Discussion

Comments (0)

0/2000 characters

No comments yet

Be the first to share your thoughts about this document!