Software Engineering Essentials: Principles and Practices

Introduction to Software Engineering

Software engineering is a discipline through which we develop or create software for computer systems and other electronic devices. It is a process where user needs are analyzed, and software is designed based on these needs. Software engineering defines scientific principles, methods, and procedures. Software engineers build software and applications using design and programming languages.

To create complex software, we should use engineering techniques. To reduce

Read More

Project Management: Deliverables, Milestones & Scheduling

Project Deliverables

Definition: Products that, in a certain state, are exchanged between customers and developers throughout the IT project implementation.

Feasibility Study Deliverables

Brief description of the proposed system and its features.

Analysis Deliverables

  • Requirements capture
  • System Specification

Design Deliverables

A detailed description of the system will contain:

  • Programs, reusable modules, and objects.
  • Files and databases.

Coding Deliverables

Documents the final design of the system and each

Read More

Consensus Building: Achieving Win-Win Outcomes in Requirements Engineering

Consensus Building (Win-Win)

Aims at bringing a number of stakeholders to consensus, a typical problem during requirements engineering.

Incremental, Risk-Driven Spiral Process

  • Identification of stakeholders
  • Identification of win conditions
  • Conflict resolution

Asynchronous Groupware Tool

  • Stakeholders post win conditions
  • Facilitator detects conflict
  • Stakeholders discuss alternatives
  • Stakeholders make agreements
  1. Review and expand negotiation topics

    Objective: Refine and customize the outline of negotiation topics.

Read More

UI Design: Key Concepts and Methods

Here’s a concise cheat sheet summarizing the key definitions and concepts from your notes:

Direct Manipulation and Invisible Interfaces

Direct Manipulation

– The user interacts directly with the task, reducing the interface’s role as an intermediary.
Key principle: The user should feel like they are controlling the object, not the interface.
Reduces the gulf of execution & evaluation, making interactions more intuitive.
Examples: Dragging files with a mouse vs. typing commands; touchscreen gestures.
Read More

Software Development Life Cycle Models: Waterfall, Incremental, RAD, Prototype

Software Development Life Cycle Models

Waterfall Model

The Waterfall model means that the requirements of a problem are well understood and stable in the 5 Stages of Generic Software Engineering. Documents are generated in each stage. Revisions are made after each stage; the process only passes to the next stage if the previous stage is completed.

Advantages:

  1. Recommended for products that have a stable definition.
  2. Recommended when working with known methodologies.
  3. Helps to minimize the costs of planning
Read More

Software Engineering: Testing, ISO 12207, Quality & Planning

Software Testing Principles

Analyze the set of testing principles adopted in software engineering? Here’s a concise summary of the testing principles in software engineering:

  1. Testing Shows Presence of Defects: Testing reveals defects but cannot prove the software is defect-free.
  2. Exhaustive Testing Is Impossible: It’s impractical to test all possible scenarios; prioritize critical areas.
  3. Early Testing Saves Time and Costs: Detecting defects early in the SDLC reduces effort and cost.
  4. Defect Clustering:
Read More