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:
- Understand the principles and importance of a disciplined software engineering process.
- Elicit, analyze, and document software requirements using modern techniques (e.g., Use Cases).
- Create object-oriented analysis and design models using UML diagrams (Class, Sequence, Use Case).
- Compare and contrast various software development lifecycle models (e.g., Waterfall, Prototyping).
- Appreciate the challenges of building large-scale, maintainable software systems.
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.