1/68
Looks like no tags are added yet.
Software
Computer programs and associated documentation.
Software Engineering
The application of a systematic, disciplined, and quantifiable approach to the development, operation, and maintenance of software.
Software Documentation
Deliverables including requirements, design models, program comments, configuration files, and user manuals.
Importance of Software Engineering
Societies rely heavily on reliable software produced economically and quickly; using engineering methods is cheaper in the long run than personal programming approaches.
Quality Focus
The bedrock that supports all software engineering practices.
Process
The glue that holds technology layers together and enables timely software development.
Methods
Technical 'how-to’s' for building software.
Tools
Automated or semi-automated support for processes and methods.
Software Specification
Defining the functionality and operational constraints of the software.
Software Development
Producing software that meets the specification through design and implementation.
Software Validation
Verifying that the software does what the customer wants.
Software Evolution
Modifying software to meet changing customer needs over time.
Stand-alone Applications
Run locally on a computer without requiring a network connection.
Interactive Transaction-Based Applications
Remote applications accessed by users over a network (e.g., e-commerce).
Embedded Control Systems
Software that manages and controls hardware devices.
Batch Processing Systems
Business systems designed to process data in large batches.
Entertainment Systems
Personal use systems designed primarily to entertain.
Systems for Modeling and Simulation
Computational models of physical processes containing interacting objects.
Data Collection Systems
Sensor-driven systems that collect environmental data for processing.
Systems of Systems
Complex software systems composed of multiple individual software systems.
Software Process
A structured set of activities required to develop a software system.
Software Process Model
An abstract, high-level representation of a software process from a specific perspective.
Plan-Driven Software Process
A process where all activities are planned in advance and progress is measured against this pre-established plan.
Agile Process
A process where planning is incremental, making it easy to adapt to changing customer requirements.
Waterfall Model
A plan-driven, sequential model with separate and distinct phases of specification and development.
Incremental Development
Interleaved specification, development, and validation that delivers software as a series of increments.
Agile Software Development
Iterative methodology focused on code delivery, frequent releases, customer collaboration, and minimal documentation.
Customer Involvement
Customers actively prioritize requirements and evaluate system iterations.
Incremental Delivery
Software is delivered in small increments based on customer priorities.
People Not Process
Exploiting team skills without imposing prescriptive processes.
Embrace Change
Designing systems to easily accommodate evolving requirements.
Maintain Simplicity
Actively working to eliminate complexity from the software and process.
Extreme Programming (XP)
An extreme iterative approach featuring small releases, automated testing, and strong technical practices.
User Story
Customer requirements expressed as scenarios on cards, which are broken down into implementation tasks.
Refactoring
Continually improving internal code structure without changing its external behavior.
Test-Driven Development (TDD)
Writing automated unit tests before writing the production code to clarify requirements.
Pair Programming
Two developers working together at one screen, sharing knowledge and providing real-time code review.
Scrum
An agile framework focused on managing iterative development using sprints, backlogs, and daily check-ins.
Sprint
A fixed-length development iteration (typically 2–4 weeks).
Product Backlog
A prioritized list of required features, stories, and tasks to be completed.
Potentially Shippable Product Increment
A fully tested, finished software increment produced at the end of a sprint.
ScrumMaster
A facilitator who enforces the Scrum process and protects the development team from external distractions.
Product Owner
The individual responsible for identifying features, maintaining the product backlog, and driving business value.
Development Team
A self-organizing group of software developers (7 people or fewer) responsible for building the software.
Requirements Engineering (RE)
The process of establishing the services required of a system and the constraints under which it operates.
Requirement
A statement defining what a system must do or a constraint under which it must function.
User Requirements
High-level natural language statements and diagrams specifying system services and constraints for customers.
System Requirements
Detailed structured documentation defining precise system functions, services, and operational constraints for developers.
Functional Requirements
Statements describing specific services, inputs, behaviors, or what the system must not do.
Non-Functional Requirements
Constraints on system services or qualities (such as timing, performance, standards, and security).
Requirements Elicitation
Interacting with stakeholders to discover system needs and constraints.
Requirements Specification
Formally documenting user and system requirements into an official requirements document.
Requirements Validation
Checking requirements to ensure they are valid, consistent, complete, realistic, and verifiable.
Requirements Management
Tracking and managing changing requirements throughout the software development lifecycle.
Stakeholders
Any person or organization affected by the system or having a legitimate interest in its outcome.
Software Design
The process of converting requirements into an organized software structure, divided into architectural and detailed design.
Architectural Design
Identifying the principal system components, their relationships, and how they are distributed.
Detailed Design
Decomposing main components to describe them at a finer level of detail.
Coupling
The measure of dependencies between two software subsystems.
Loose Coupling
Subsystems are independent; changes in one have minimal impact on the other.
Strong Coupling
Subsystems are highly dependent; changes in one likely impact the other.
Cohesion
The measure of dependencies among classes or objects within a single subsystem.
High Cohesion
Subsystem contains closely related objects performing similar tasks.
Low Cohesion
Subsystem contains unrelated objects.
Design Inputs
Platform information, requirements specification, and data description.
Design Outputs
System architecture, database specification, interface specification, and component specification.
Interface Design
Defining unambiguous specifications for communication between system components.
Component Design
Designing the precise internal operation and functionality of individual components.
Database Design
Structuring and representing system data structures within a database.