Software Engineering Essentials: Principles and Practices

1. Fundamentals and Professional Responsibility

Software Engineering is not just about writing code; it is an engineering discipline focused on cost-effective and reliable production.

  • Software Engineering vs. Computer Science: Computer science focuses on theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software.
  • The Four Essential Attributes:
    • Maintainability: Software should be written so that it can evolve to meet the changing needs
Read More

OMG Model-Driven Architecture: Principles and Frameworks

OMG Model-Driven Architecture (MDA)

The Object Management Group (OMG) has defined a comprehensive proposal for applying Model-Driven Engineering (MDE) practices to system development: MDA (Model-Driven Architecture).

Four Principles of MDA

  • Models must be expressed in a well-defined notation to enable effective communication and understanding.
  • System specifications must be organized around a set of models and associated transformations (mappings and relations between multi-layered models).
  • Models must
Read More

Fundamentals of Software Testing and Quality Assurance

What is Software Testing?

Software Testing is the process of checking a software application to find errors (bugs) and ensure that it works correctly according to the requirements.

Simple Definition

Software testing means verifying and validating that a program does what it is supposed to do and is free from defects.

Key Points

  • Helps find mistakes or bugs
  • Ensures quality and reliability
  • Checks if software meets user requirements
  • Improves performance and security

Example

If you create a login page, software

Read More

Software Development Models: Waterfall, Iterative, and Spiral

1. Classic Waterfall Model

The Classic Waterfall Model is a sequential software development model where the process flows step-by-step. Each phase must be completed before moving to the next, with no backward movement.

Phases of the Waterfall Model

  • Requirement Analysis: Collect and analyze all system requirements.
  • System Design: Plan the architecture, database, and system design.
  • Implementation (Coding): Developers write the program code.
  • Testing: The system is tested to identify and fix errors.
  • Deployment:
Read More

Software Design Principles and Architectural Patterns

Module Design

What is good vs. bad design?

Good design is characterized by high cohesion and low coupling, meaning each module has a clear, focused responsibility and minimal dependency on other modules. This leads to systems that are easier to understand, test, reuse, and maintain. Good design also emphasizes clarity, simplicity, and well-defined interfaces.

Bad design has low cohesion and high coupling, where modules perform unrelated tasks and depend heavily on each other. This results in systems

Read More

Usability Inspection, Data Gathering, and Analysis Methods


————— LECTURE 4: —————— INSPECTION:

Experts evaluate interface without involving users. Goal: Identify usability problems early in design.
Advantages: Cheap, fast, early design feedback. Disadvantages: Depends on expert judgment, may miss real user issues. 

———– TYPES OF INSPECTION METHODS:

1.) Heuristic Evaluation, 2.) Cognitive Walkthrough, 3.) Pluralistic Walkthrough, 4.) Guidelines Review, 5.) Consistency Inspection.

———– HEURISTIC EVALUATION:

Developed by Jakob

Read More