Software Engineering Notes
Software Engineering Notes
Introduction to Software Engineering
Course Code: CSC 421
Description: This course introduces software engineering processes, lifecycle phases like problem analysis, requirements definition, design, implementation, testing, maintenance, integration, and project management.
CILOs: At the end of this course, students will:
Understand basic software engineering concepts.
Illustrate software development processes.
Explain the importance of software engineering.
Assess software engineering roles and responsibilities.
Design, verify, validate, implement, apply, and maintain software systems.
Properly document systems.
Course Requirements
Assessment Items:
Prelim Grade:
Term Examination: 50%
Quizzes/Exercises: 20%
Class Participation: 5%
Attendance: 5%
Others: 20%
Midterm and Final grade calculation follows similar percentages.
Passing Grade: 60%
Module Overviews
Module 5: Agile Software Development
Introduction: Focuses on rapid software development processes that can adapt to changing requirements. Traditional waterfall processes are often too slow for current business needs.
Learning Outcomes:
Understand agile methods and their rationale.
Learn about Extreme Programming and Scrum.
Address challenges in scaling Agile development for larger systems.
Lesson 1: Agile Methods
Overview: A shift from heavy planning and documentation to flexibility and responsiveness.
Agile Manifesto Principles:
Individuals and interactions over processes and tools.
Working software over comprehensive documentation.
Customer collaboration over contract negotiation.
Responding to change over following a plan.
Success Contexts: Agile is effective in small-to-medium product development and when customer collaboration is prioritized.
Lesson 2: Plan-driven vs Agile Development
Plan-driven Development: Structured approach with distinct stages. Agile is iterative and promotes informal interaction between teams.
Questions for Balance:
Importance of detailed specifications?
Feasibility of incremental delivery?
Size and nature of the system?
Module 6: System Requirements
Introduction: Requirements are critical for software functionality and constraints, it's a balance of specifying what is needed vs what can be done.
Learning Outcomes:
Understand functional vs non-functional requirements.
Grasp requirements management importance.
Lesson 1: Functional and Non-Functional Requirements
Functional Requirements: What the system should do (e.g., services, behaviors).
Non-Functional Requirements: Constraints like performance, security, etc.
Module 7: Design Concepts and Principles
Overview: Design transforms requirements into a functional system.
Levels of Software Design:
Architectural Design: Overall system structure.
High-Level Design: Modular breakdown of architecture.
Detailed Design: Specific module implementation details.
Lesson 1: Software Design Levels
Importance of modular design; smaller, independent modules are easier to manage and maintain.
Module 8: System Modeling
Purpose: Abstract models represent different views of a system for clarity and analysis.
Types of Models:
External Perspective
Internal Perspective
Structural Perspective
Behavioral Perspective.
Lesson 1: Types of UML Diagrams
Activity Diagrams - depict process activities.
Use Case Diagrams - show system interactions.
Sequence Diagrams - show system interactions over time.
Module 9: Software Architecture and Design
Architecture Definition: Major components, relationships, and interactions.
Architectural Models: Include views like logical, process, development, physical, and use-case diagrams.
Common Architectural Patterns:
Model-View-Controller (MVC)
Repository Pattern
Client-Server Architecture
Pipe and Filter Architecture.
Conclusion and Exam Preparation
Review key concepts from agile methods, requirements engineering, design principles, and system architecture.
Prepare for discussions regarding advantages of prototyping, importance of DFD, and flowcharts in system development.
For further detail, consult the manuals and recommended references from various lectures.