Software Engineering Processes and Requirements Modeling

Generic Software Framework and Process Flows

A generic software framework consists of five core framework activities: communication, planning, modeling, construction, and deployment. These are supported by umbrella activities, including project tracking and controlling, risk management, quality assurance, and technical reviews.

The process flow describes how these activities are organized. Common flows include:

  • Linear flow: Sequential execution of activities.
  • Iterative process flow: Repeating activities before moving to the next.
  • Evolutionary process flow: Developing increasingly complete versions.
  • Parallel flow process: Executing activities simultaneously.

Software Process Patterns

Process patterns describe common problems and their solutions in software development. There are three main types: stage patterns, task patterns, and phase patterns. Describing these patterns requires a pattern name, forces, types, initial contexts, problem, solution, resulting contexts, related patterns, and known examples.

Evolutionary and Sequential Process Models

Evolutionary models help adapt to changing software needs and market demands by developing software in steps and improving based on feedback.

Prototyping and Incremental Models

  • Prototyping Model: Helps in understanding unclear needs and testing new technologies. The process involves communication, quick design, prototype creation, evaluation, and iteration.
  • Incremental Model: Delivers software in small, manageable pieces. Each increment adds new features and is built upon the previous version.

Spiral and Agile Models

  • Spiral Model: Manages risk through repeated cycles. Each cycle includes planning, risk analysis, engineering, and evaluation, resulting in a refined version of the software.
  • Agile Model: Focuses on flexibility and speed. Development is carried out in short iterations, each resulting in a potentially shippable product, emphasizing heavy customer involvement.

The Waterfall Model

The Waterfall Model is the earliest linear and sequential approach. Each phase must be completed before the next begins. Phases include requirement analysis, system design, implementation, construction, integration and testing, deployment, and maintenance.

  • Characteristics: Sequential flow, heavy documentation, and clear milestones.
  • Advantages: Simplicity, clarity, and structured early planning.
  • Disadvantages: Inflexibility, delayed testing, and the assumption of stable requirements.

Real-World Model Applications

  • Waterfall Model Example: A Library Management System, where requirements and system design are fixed before implementation.
  • Spiral Model Example: An E-commerce website. The first spiral handles planning and prototyping; the second spiral focuses on full feature development, deployment, and maintenance.

Web Applications vs. Traditional Software

Web applications possess unique characteristics compared to standard software:

  • Network-Based: Accessed via browsers on web servers.
  • Platform-Independent: Works across various devices and operating systems.
  • Frequent Updates: Evolves constantly without requiring user action.
  • User-Friendly: High focus on interactivity and smooth experience.
  • Security: Faces unique challenges like XSS and SQL injection.
  • Scalable and Concurrent: Handles many users simultaneously with real-time updates.

David Hooker’s 7 Principles

These principles guide effective software engineering:

  1. The Reason It All Exists.
  2. KISS (Keep It Simple, Stupid!).
  3. Maintain the Vision.
  4. Plan Ahead.
  5. Be Open to Change.
  6. Quality is Everyone’s Responsibility.
  7. Continuous Improvement.

Common Software Myths

Several misconceptions persist in the industry:

  • Adding more programmers can accelerate a project that is behind schedule.
  • Software engineering leads to excessive documentation that slows down projects.
  • A working program is the only deliverable for a successful project.
  • Software quality can only be assessed once the program is running.
  • Software is flexible enough to accommodate continuous changes in requirements.

Requirements Engineering Fundamentals

Requirements Engineering is vital for identifying and managing stakeholder needs. Key activities include:

  • Inception: Identifying stakeholders and understanding the basic problem.
  • Elicitation: Gathering requirements through interviews, surveys, and workshops.
  • Elaboration: Refining requirements into detailed models and behaviors.
  • Negotiation: Resolving conflicts and prioritizing requirements based on feasibility.
  • Specification: Documenting requirements via models or prototypes.
  • Validation: Ensuring requirements are clear, complete, and meet standards.
  • Management: Tracking and controlling changes throughout the project.

Developing and Negotiating Use Cases

Developing use cases defines how users interact with a system. This involves identifying actors, defining scope, listing functions, and writing flows (main and alternate) from the user’s perspective.

Validating and Negotiating Requirements

The goal of negotiation is to reconcile stakeholder needs and agree on deliverables. Validation ensures these requirements are consistent and feasible through collaborative reviews and prototyping.

UML Use Case Diagram: Home Security System

This example illustrates the interaction between users and a security system:

  • Actors: Homeowner (interacts with system), Security Service Provider (monitors alerts), and Emergency Services (responds to alarms).
  • Use Cases: Activate System, Deactivate System, Monitor Status, Receive Alerts, and View Camera Feed.

Example Flow (Activate System): The Homeowner enters an access code, selects “Activate,” and the system confirms the status. Exceptions include incorrect codes or open windows preventing activation.