8

I'm an academic guy, who is now venturing into the software engineering world, puzzled by the fact that many terms seem to overlap each other. I'm reading some books and cannot quite distinguish/correlate a software process model from software engineering methods.

For instance, in Software Engineering Ian Sommerville defines a software process model as:

A simplified representation of a software process, presented from a specific perspective.

And software methodology (software engineering methods) as:

Structured approaches to software development which include system models, notations, rules, design advice and process guidance.

However, Wikipedia defines software development methodology like this:

A software development methodology or system development methodology in software engineering is a framework that is used to structure, plan, and control the process of developing an information system.

In my opinion, Sommerville's definition of a software process model can enter on the scope of the Wikipedia definition. Can anyone enlighten me on this issue? An example would rock, e.g, A is a software process model and B is a software engineering methods (methodology).

14

The way that I was taught, there is a clear difference between the two.

A software process model is an abstract representation of a process methodology. Waterfall1 is a process model. Agile is a process model. They don't specify how to do things, but outline the types of things that are done. For example, Waterfall identifies the phases that a project goes through - requirements, design, implementation/unit testing, integration testing, system testing, deployment - without saying what artifacts to produce or what tools to use (although the output of code is implied). Agile defines core values in the form of the Manifesto for Agile Software Development, time-boxed iterations, and continuous response to change, but it doesn't say how long your iterations should be or how you go about responding to change. The Spiral model is a third software process model.

A software process methodology is a specific way of conducting a software project. These are things like the Rational Unified Process and Scrum. They define exactly what, when, and/or how various artifacts are produced. They might not be entirely explicit with all regards - for example, Scrum doesn't identify what documents to produce or not to produce, since it's focus is on delivering value to the customer - but they define, in some way, the actions that members of the project team must deliver.

However, in actuality, the point is often moot. Many times, process methodologies are presented as frameworks in which you tailor to the needs of your customer and development team, based on requirements and resources. On top of this, organizations might deal with regulatory or legal guidelines that dictate certain aspects of what must be produced or how to go about performing certain tasks (especially related to verification and validation activities).

It frequently becomes more important to discuss each team or organization's process in terms of plan-driven versus agile or amount of formality and ceremony. Discussing the terminology difference between a "process model" and a "process methodology" is mostly useful during academic discussions of process models.


1 I'm referring to the traditionally taught Waterfall, not the more explicitly defined Waterfall in Winston Royce's paper.

  • It makes sense. :) – Marcos Roriz Junior Feb 9 '12 at 22:46
  • So software process methodology is more of a project management thing than a software process model one? – Marcos Roriz Junior Feb 9 '12 at 22:51
  • @MarcosRoriz No, not at all. They are both related to managing software projects, but they are at different levels of granularity. – Thomas Owens Feb 9 '12 at 22:55
  • 1
    @MarcosRoriz I'm really not sure how to be more specific. A model is more abstract than a methodology. A model defines activities, but says nothing about how they are performed. A methodology defines how you carry out those activities (to varying degrees - some are more specific than others). – Thomas Owens Feb 10 '12 at 1:56
  • 2
    The model is a way of looking at the process as a whole--a simplified view of a software development life cycle--so that it can be fairly easily understood and talked about. The methodology uses the model (and expands on it) to guide how one can or should develop software. – Matthew Flynn Feb 10 '12 at 6:26
1

For every task it is possible to create a model, complex enough to describe that task. But always out there exists another task, that couldn't be covered by that very model. But - that is the first important point - for any real task such model would be useless.

Models are made to look at the task or solution process from some one side, to provide easy understanding for some features of the subject. Of course, model consist of views, that is correct, but it is the view itself, too. Methodology is the organization of the process (as opposed to the final product and the starting task). It could demand many models for the task/product/process or their parts/stages.

Of course, it could contain some model(s) that look(s) at the process as a whole. But that bird view is not the methodology, too. It is not even "the root" of the methodology. The attempt to push all methodology into one model simply causes the unwholeness of the methodology. Because - that is the second important point - methodology is much more alive and changing thing than model. At least, it should be.

0

Software model describes a hypothetical or existing instance of software. Software methodology are the steps to create an instance of software regardless of its model.

  • 2
    @MarcosRoriz: The Agile Methodoloy and Waterfall Process would be examples of software methodologies. A UML diagram or an ER diagram would be examples of software models. – FrustratedWithFormsDesigner Feb 9 '12 at 19:52
  • 1
    Just to add insult to injury, a methodology is a model of a process (not a model of software). The actual process is what people actually do. The model is a summary of relevant points of what they should do. – S.Lott Feb 9 '12 at 19:58
  • 2
    @MarcosRoriz: It's a "software development model". Please understand that "model" can apply to anything that's being modeled. Software development is separate from software. If it confuses you, please always add the word "development" when talking about a process ("Agile", "Waterfall"). – S.Lott Feb 9 '12 at 20:00
  • 1
    There is no distinction between "software process model" and "software methodology". – S.Lott Feb 9 '12 at 20:09
  • 1
    @MarcosRoriz: Does the word "simplified" in the model definition (missing from the methodology definition) have any significance to you? – S.Lott Feb 9 '12 at 20:17
0

Software Process Model is an abstraction or a visual representation of an idea, event or a process. Modeling is used mainly to help us understand complex processes or events and decide what to do with them. Modeling is also used in other domain like Mathematics (Mathematical Model) and Economics (Financial Model).

By applying the definition above in software engineering context, we simply model the software processes that we understand specifically during requirements gathering.

Software Development Methodology is simply a guideline for developing a software that consists of steps and deliverables to finish the software. A development method is consist of model, tools and techniques. The most common method or approach to developing a software is the SDLC a.k.a Waterfall model that consist of different stages (e.g. Planning, Analysis, Design, Implementation, and Maintenance). Each of the stage can be accomplish by using techniques (e.g relational database design techniques, requirements gathering and analysis techniques), models ( use- case model, data flow diagram, relational database model, etc..) and tools (Visio, Visible Analyst and other software tools). There are various methodologies that exists today with the efforts of industry professionals and academe; Each of these methodologies, however, has strengths and weaknesses and their techniques,tools and model may differ from the SDLC. (e.g. Scrum, Unified Process and Extreme Programming).

0

You have a good point: depending on the book you are reading, different terms have the same connotation and the same concept may be named differently. In its classic Modern Structured Analysis (not so modern nowadays), Yourdon seems to define methodology in the same way modern authors define process:

More and more large and small organizations are adopting a single, uniform project life cycle—sometimes known as a project plan or systems development methodology or, simply, "the way we do things around here."

So, if you are an old school guy like myself, the words "process", "software development life cycle" (or "SDLC") and "development methodology" will all be referring to the same concept: a theoretical framework that dictates what are the phases or activities you should execute in order to deliver your software. Interesting enough, here "methodology" is used caressly because, strictly speaking, methodology means the study of methods, not a particular method. As a matter of fact, the Merriam-Webster on line dictionary states that methodology is the analysis of the principles or procedures of inquiry in a particular field. However, this etymological missuse of "methodology" is now widespread and doesn't matter anymore.

Now, the must. Judging by the Pressman's excellent book (Software Engineering, A Practicioner Approach), that's the meaning of the words process, method and tool:

Process - a collection of activities, actions, and tasks that are performed when some work product is to be created. A process forms the basis for management control of software projects and establishes the context in which technical methods are applied

Methods - provide the technical how-to's for building software. Methods encompass a broad array of tasks that include communication, requirements analysis, design modeling, program construction, testing, and support.

Tools - provide automated or semi-automated support for the process and the methods. When tools are integrated so that information created by one tool can be used by another, a system for the support of software development, called computer-aided software engineering, is established.

As previously noted, "process" is a synonym for "methodology". The latter, in turn, is not meant to be confused with "method" (as it is implied in your question): "methods" are the technical resources you resort to in order to tackle the phases prescribed in your process. So, the same method may be used in different processes (e.g., E/R modeling can be used by both RUP and XP practitioners). Note that the nomenclature is not neat: it is really weird to state that different "methodologies" can employ the same "methods". No wonder the term "process" is now widespread.

The definition of "tools" given by Pressman in this context is not clear. In a few words, "tools" are the hacks you employ to leverage your productivity as a developer. In order to (try to) clarify all those concepts, think like this: "RUP is a (reference) process to develop a system, E/R modeling is a method to design databases and ERWin is a CASE tool to perform E/R modeling".

All in all, if Pressman is your guy on Software Engineering, you should not employ the expression "software engineering methods" as a synonym for "methodology".

As for the difference between "process model" and "process", Ian Sommerville is pretty clear on that:

a software process model is a simplified representation of a software process. Each process model represents a process from a particular perspective, and thus provides only partial information about that process. For example, a process activity model shows the activities and their sequence but may not show the roles of the people involved in these activities.

So, a "software process model" is a development paradigm, a kind of a very general reference model that inspires the actual software process of your organizaton. In fact, regarding the "software process", Sommerville states that:

The systematic approach that is used in software engineering is sometimes called a software process. A software process is a sequence of activities that leads to the production of a software product.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.