Fundamental Concepts in Software Engineering
A comprehensive exploration of requirements elicitation, analysis, validation, and system modeling techniques using UML and modern engineering practices.
Requirements Engineering is the systematic process of establishing services that customers require from a system and the constraints under which it operates and is developed.
Definition: The process of establishing the services that a customer requires from a system and the constraints under which it operates and is developed.
System requirements are the descriptions of system services and constraints generated during the requirements engineering process.
Discovering stakeholder needs and system requirements
Understanding and organizing requirements
Checking requirements correctness and completeness
Handling changes throughout development
Requirements engineering is an iterative process where activities are interleaved rather than sequential, allowing for continuous refinement and adaptation.
The process of discovering what stakeholders need from the system through systematic investigation and communication.
Identifying and understanding stakeholder needs and system constraints
Organizing requirements into coherent clusters and categories
Resolving conflicts and prioritizing requirements
Documenting requirements for the next development iteration
Formal and informal conversations with stakeholders to understand their needs and expectations
Observational technique to understand how people actually work in their environment
Real-life examples that stakeholders can relate to and provide feedback on
Creating early versions of the system to elicit requirements through interaction
Best Practice: Be open-minded, avoid preconceptions, and use springboard questions to encourage discussion.
A social science research method where analysts observe and analyze how people actually work in their natural environment.
Real-life examples of how a system may be used for particular tasks, providing concrete context for stakeholder discussions.
"Sarah, a busy professional, needs to transfer money to her landlord while traveling. She opens the banking app on her phone, logs in using her fingerprint, navigates to transfers, enters the recipient details, confirms the amount, and receives immediate confirmation of the successful transaction."
Stakeholders can relate to concrete examples and provide meaningful feedback on realistic usage patterns.
Facilitate requirements discussions and validate system concepts with end users.
Stakeholders often don't know exactly what they want from the system
Stakeholders express requirements using their own specialized terminology
Different stakeholders may have contradictory or competing needs
Organizational and political influences may affect requirement specifications
Requirements evolve during analysis as understanding develops
New stakeholders may be identified as the project progresses
The process of documenting user and system requirements in a structured requirements document.
High-level statements written in natural language for customers and end-users who lack technical background.
Detailed technical specifications that define what should be implemented, often part of development contracts.
Requirements may form part of a contract for system development, making completeness and precision crucial.
Expressive and intuitive but can lack precision and clarity
Standard forms and templates that limit writer freedom for consistency
UML diagrams supplemented with text annotations for visual clarity
Formal mathematical notations that eliminate ambiguity but require expertise
Achieving precision without making documents difficult to read presents ongoing challenges.
Functional and non-functional requirements often become mixed together.
Multiple different requirements may be expressed as a single statement.
Natural language inherently contains ambiguities that can lead to misinterpretation.
Function: Brief description of the function or entity
Description: Detailed explanation of the functionality
Inputs: Description of inputs and their sources
Outputs: Description of outputs and destinations
Action: Detailed description of the action to be taken
Pre-conditions: Conditions that must be true before execution
Post-conditions: Conditions guaranteed after execution
Side effects: Any additional effects of the function
Form-based specifications provide structure while maintaining readability for technical stakeholders.
The process of checking requirements for validity, consistency, completeness, realism, and verifiability.
Does the system provide functions that best support customer needs?
Are there any conflicting requirements within the specification?
Are all functions required by the customer included in the specification?
Can requirements be implemented within available budget and technology?
Systematic manual analysis involving both client and contractor staff in formal or informal review sessions.
Developing tests for requirements to verify their testability and completeness.
Using executable models of the system to check requirements with stakeholders.
Using tools to check consistency, completeness, and other formal properties.
The process of managing changing requirements during requirements engineering and system development.
Unique identification for cross-referencing
Formal process for assessing impact and cost
Policies for tracking relationships
Automated management systems
A systematic approach to analyzing, evaluating, and implementing changes to requirements throughout the development lifecycle.
System modeling is the process of developing abstract models of a system, with each model presenting a different view or perspective of that system.
Models the context or environment of the system, showing what lies outside system boundaries.
Models interactions between system and environment, or between system components.
Models the organization of a system or the structure of data processed by the system.
Models the dynamic behavior of the system and how it responds to events.
Show interactions between system and its environment
Show interactions between actors and system components over time
Show object classes and associations between them
Show activities involved in processes or data processing
Show how system reacts to internal and external events
Show system boundaries and external dependencies
Context models illustrate the operational context of a system, showing what lies outside the system boundaries.
Purpose: Define system scope, identify external dependencies, and establish system boundaries for stakeholder understanding.
Sequence diagrams model interactions between actors and objects within a system, showing the sequence of interactions over time.
Key Elements: Actors/objects listed horizontally, time flows vertically, interactions shown as annotated arrows between lifelines.
Show the static structure of classes in a system and the associations between these classes.
Models of the dynamic behavior of a system as it executes, showing responses to stimuli from the environment.
Show sequence of actions for processing input data and generating output. Useful for business systems.
Show how systems respond to external and internal events. Based on finite state assumptions.
Model system behavior in response to stimuli, showing states as nodes and events as transitions.
Show the flow of control and data through system processes and activities.
Represents application domain and business logic
Handles display of application state to users
Processes user interactions and coordinates between Model and View
An approach where models rather than programs are the principal outputs of the development process.
Models important domain abstractions and business requirements without implementation details
Models system operation without reference to specific implementation platforms using UML
Transformations of PIM with platform-specific details for particular execution environments
Requirements engineering is iterative with interleaved activities of elicitation, analysis, validation, and management
Use diverse elicitation techniques including interviews, ethnography, and scenarios for comprehensive understanding
Validate requirements for validity, consistency, completeness, realism, and verifiability
System modeling requires external, interaction, structural, and behavioral perspectives
UML provides comprehensive notation for modeling different aspects of software systems
MVC and other patterns provide proven approaches for system architecture and maintainability