The buzzword glossary
You keep using that word. I do not think it means what you think it means. -- Inigo Montoya
In one of my previous articles, Death by buzzwords, I described the problem of overloading words and locutions with many different meanings. Non-technical terms are casually borrowed into software development, and they assume at least the original meaning along with the technical one (or ones). The confusion is easy, especially when the terms are not treated as proper nouns: when I read about Continuos Integration, I know instantly is a precise term which I should look up if I did not know; when I read continuos integration, I just keep on reading.
I hope that this little glossary can help you understand these generic English words which assume a particular meaning in the field of software development. There are some which I won't even try to define, like analysis and component, because they have so many meanings that they actually have none. Keep in mind that outside of our field, these words may transmit a very different idea.
Agile: software development methodologies usually based on incremental and iterative development, and that adopt the Agile Manifesto values: Individuals and interactions over processes and tools, working software over comprehensive documentation, customer collaboration over contract negotiation, responding to change over following a plan. Probably the decision to responding to change instead of fixing the requirements in stone-based documents is what characterizes more agile methodologies.
Backlog: in Agile methodologies, the list of feature which should be added to a product. It can be related to different scopes: a release, an iteration or the entire product life.
Business Logic: the core algorithms contained in an application, which relate to the domain model more than to the infrastructure. Not allowing further replies on a closed discussion is part of the business logic; Contrast with Presentation Logic.
Cloud computing: computational or storage power on demand, usually with the aid of virtualization. Cloud computing aims to provide hardware and software resources like they were utilities such as electricity and water.
Domain: the field which an application is used in. For example, enterprise application can be oriented to the chemical domain, or the accounting one. Domain-related code is typically the least reusable part of an application.
Enterprise (software): software that is sold to enterprises instead of private users. This kind of software is usually custom-made, or part of it is.
Framework: subset of software libraries which provide common infrastructure elements like default behavior and architecture. Using a framework is more restrictive than using a library: the flow of the application and the management are dictated by the framework, along with many other design choices.
Infrastructure: the part of an application which do not directly model the domain. Databases and caches and are typical examples of infrastructure.
Kanban: in Agile development, a scheduling system which do not proceed in iterations (like Scrum) but by pulling ready elements from the earlier stages of development and applying a limit to the item which are currently in each stage (Work In Progress). For example, a Kanban system can establish a limit of implementing no more than three stories at the time.
Methodology: a description of a software development process. Waterfall is the eldest methodology; Scrum is an Agile methodology. There are more complex examples, like IBM's Rational Unified Process, or the Clean Room approach, based on formal methods.
Model: an abstraction which represents a particular domain. There are gazillions types of models in software development, from the more abstract ones (UML and E/R) to the programmatic, executable models like the domain models written in a programming language.
Paradigm: basic structure of thought in programming languages. Functional and object-oriented are different paradigms.
Presentation Logic: the algorithms of an application which exist due to a presence of a user interface. Formatting dates and times is presentation logic. Contrast with Business Logic.
Process: the technical term represents a single independent program execution, but the buzzword refers to a collection of activities that serve a particular goal. Every software house has its own software development process, which adopts a particular methodology and gives (hopefully) working software as its output, given that it takes resources such as people, time and money as its input.
The term is very generic. Other examples of processes are marketing, recruitment, and technical support. In the last years modelling business processes like these has become very fashioned, probably for the goal of automating parts of them or providing software that aids the execution of the process itself.
Product Owner: in the Scrum methodology, the representant of the client and other stakeholders. Prioritizes the product backlog and commits to not introducing or changing new requirements in the middle of iterations.
Role: in a methodology, a team-wide title that a particular person should adopt while implementing a methodology. For example, every Scrum team should have a Product Owner and a Scrum Master: two people should take these roles.
Scrum: one of the oldest and more diffused Agile methodologies. Its major traits are the presence of timeboxed iterations (sprints), where a subset of the features present in the product backlog has to be completed.
Scrum Master: the project manager of a Scrum team. His role is not to tell the team what to do, but to remove the obstacles they encounter during development and making sure they do not drift away from the Scrum values.
Service-Oriented Architecture (SOA): architecture which involves the use of decoupled services to compose an application. Its most common implementation involves using web services and mashup web applications.
Web 2.0: revolution of the web which transitioned its basic entities from documents to applications. Socially, the term Web 2.0 characterizes interactive web sites which involve the user in content creation and facilitate interactions. Social networks and Wikipedia are examples of Web 2.0.