These two words are completely synonymous for me, but I wonder if there's actually a useful semantic difference that I can incorporate into coding/naming conventions/process.
Difference between property and attribute
documentationterminology
Related Solutions
Wikipedia's definition of an Algorithm:
In mathematics and computer science, an algorithm is an effective method expressed as a finite list of well-defined instructions for calculating a function. Algorithms are used for calculation, data processing, and automated reasoning.
Algorithms can be described in various ways, from pure mathematical formulas to complex graphs, more times than not, without pseudocode.
Pseudocode describes how you would implement an algorithm without getting into syntactical details.
So no, they're not really synonymous.
The terms describe very similar concepts and responsibilities, and in general they are somewhat synonymous. The term "DevOps" is a relatively new one, popularized by the Devopsdays Ghent 2009 conference and subsequent Devopsdays events. It's best described in this diagram:
On the other hand, Software Configuration Management is a far more established term within the profession, and derives from the non software specific term Configuration Management. Software Configuration Management is often referenced in a software engineering context, a simple definition is given by Roger Pressman in "Software Engineering: A Practitioner's Approach":
is a set of activities designed to control change by identifying the work products that are likely to change, establishing relationships among them, defining mechanisms for managing different versions of these work products, controlling the changes imposed, and auditing and reporting on the changes made.
Although all the terms you reference are vague, DevOps seems to be just a less formal way of describing more or less the same set of principles as Configuration Management, or Software Configuration Management if seen from a software developer's perspective, especially prioritizing tightly coupled teams:
DevOps is a response to the growing awareness that there is a disconnect between what is traditionally considered development activity and what is traditionally considered operations activity. This disconnect often manifests itself as conflict and inefficiency.
In the same article, the similarities with SCM are noted:
Adding to the Wall of Confusion is the all too common mismatch in development and operations tooling. Take a look at the popular tools that developers request and use on a daily basis. Then take a look at the popular tools that systems administrators request and use on a daily basis. With a few notable exceptions, like bug trackers and maybe SCM, it's doubtful you'll see much interest in using each others tools or significant integration between them. Even if there is some overlap in types of tools, often the implementations will be different in each group.
As for the usage of the terms, your comparison doesn't really makes sense:
- SCM is a subset of CM, not a competitive term,
- DevOps is a fairly new term, no point in comparing against established terms,
- DevOps derives from Developer Operations (obviously) but is rarely expanded as such.
Best Answer
The English words have overlapping meanings but slightly different implications. Property implies something possessed by something else. Attribute suggests something that is an inherent characteristic.
However, because their meanings almost completely overlap, you can substitute one for the other. The exception would be where the terms are jargon, for example in C# where property and attribute have different, much more specific, meanings. In HTML, there is something specifically called a tag attribute and calling it a property would be confusing.
If you're inventing new jargon for a specific context, I would say to prefer whichever sounds more natural. If it's something discrete that something else contains, I'd generally prefer property. If it's something that is an inseparable inherent characteristic of something else (and especially if it's something other things can have as well), I'd generally prefer attribute.