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 MoreUsability 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 MoreSoftware Engineering and Requirements Analysis Q&A
Software Engineering Practice Questions
1Q: Which of the following statements about domain requirements is FALSE?
A: Domain requirements typically specify how a system must implement a feature.
2Q: In which scenario would the V-Model be the best choice for software development?
A: When the project requires early testing and strict validation.
3Q: Which of the following is the biggest challenge in requirements elicitation for large-scale systems?
A: Ensuring that all stakeholders provide input without
Interaction Design Principles: Creating Intuitive User Experiences
What is Interaction Design (IxD)?
Interaction Design (IxD) is the practice of designing interactive products to support how people communicate and interact in their everyday and working lives.
- Winograd: “Designing spaces for human communication and interaction.”
- Thackara: Focuses on the why and how of daily interactions.
- Saffer: “Art of facilitating interactions between humans through products and services.”
Key idea: It is about creating meaningful user experiences, not just functional systems.
Read MoreMastering Programming Fundamentals and Project Management
What Is Programming?
Programming is a process consisting of a sequence of detailed and ordered steps called algorithms. We transcribe these instructions using a programming language (such as Python) so they can be executed by a computer to create an application or software.
Why Learn to Program?
Programming teaches you to think differently. Learning to code enhances your problem-solving skills, effectively rewiring your brain to tackle challenges not just in software development, but in all aspects
Read MoreSoftware Development Process Models Explained
Software Development Life Cycle (SDLC)
The Software Development Life Cycle is a framework that defines how software is developed step by step.
Core Software Engineering Activities
- Software Specification
- Software Development
- Software Validation
- Software Evolution
Typical Development Flow
Planning → Requirements Analysis → System Design → Implementation → Testing → Maintenance
Software Process Structure
A Software Process consists of: Phase → Activity → Task
Process Activities Require:
- Resources
