Core Concepts in Software Testing and Code Quality
Graphs and Cyclomatic Complexity
A graph is a structure composed of nodes (also called vertices) and the connections between them, known as edges or arcs. They are used to represent relationships between elements.
Graph Types
- Directed: Connections have a specific direction (e.g., A → B).
- Undirected: Connections have no specific direction (e.g., A – B).
McCabe’s Cyclomatic Complexity
Cyclomatic complexity measures the number of linearly independent paths through a program’s source code. This metric helps
Read MoreFundamentals of Software Development, Testing, and Modeling
What is Software and Its Common Myths?
Definition of Software
Software is a set of instructions, data, or programs used to operate computers and execute specific tasks. It is the intangible component of computers, as opposed to hardware.
Types of Software
- System Software: e.g., Operating Systems
- Application Software: e.g., MS Word, Web Browsers
- Programming Software: e.g., Compilers, Editors
Common Software Myths
(Content for this section was not provided).
Core Software Engineering Concepts
Software Engineering
Read MoreSoftware Maintenance, Evolution, and Documentation Best Practices
Software Maintenance Fundamentals (Week 1)
Definition of Software Maintenance (SM)
- “The modification to a software product after delivery to correct faults.”
Maintenance vs. Software Evolution
| Maintenance | Evolution |
|---|---|
| All activities preventing failure or decay of a software system. | Activities that provide new or changed functionality only. |
Software Aging and Decay
- Software ages when it does not adapt to changing technology, user needs, or competitors.
Lehman’s Laws of Software Evolution
- Continuing Change:
- Real-
Foundations of Computation and Compiler Techniques
A Turing Machine (TM) is a theoretical model that defines an abstract machine capable of performing computations using a tape, a head for reading and writing symbols, and a finite set of states. The tape is infinite and divided into cells, each holding a symbol.
The machine reads the current symbol, changes it, moves left or right, and transitions between states based on a predefined set of rules. TMs can simulate any algorithm and are fundamental to understanding the limits of computation.
However,
Agile vs. Waterfall: Choosing the Right Project Methodology
Agile vs. Waterfall: The Stacey Matrix Framework
Agile and Waterfall represent contrasting software development methodologies. Their suitability is often determined by the Stacey Matrix, which assesses project complexity based on certainty (technology) and agreement (requirements). Agile is an iterative approach that delivers functional software in short cycles and embraces adaptability, making it ideal for complex or chaotic projects with high uncertainty. In contrast, Waterfall is a linear model
Read MoreAutomated Program Analysis for Enhanced Software Quality
What is Program Analysis?
Program analysis is the automated process of checking computer programs for measurable quality attributes. The focus is on automation that can be integrated into continuous integration and deployment (CI/CD) pipelines, ensuring checks are performed automatically on releases.
The analysis targets specifically measurable qualities, avoiding subjective assessments like user interface aesthetics. While crucial, such aspects are not easily quantifiable through automated means.
Read More