Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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).

share|improve this question
2  
What if there is no usable distinction? What now? Do you feel this hair is really worth splitting? –  S.Lott Feb 9 '12 at 20:10
    
If there is no distinction I would accept but would be sad about this lack of precision. –  Marcos Roriz Junior Feb 9 '12 at 20:16
    
The fact that the definition is not precise like concepts of other sciences. –  Marcos Roriz Junior Feb 9 '12 at 20:19
    
Are you asking why a model of a methodology is not the same thing as the methodology itself? Is that what you're asking? –  S.Lott Feb 9 '12 at 20:23
    
No, I'm asking why the concept of software process model overlap or no with software methodology. –  Marcos Roriz Junior Feb 9 '12 at 20:24
show 3 more comments

4 Answers

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.

share|improve this answer
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
show 5 more comments

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 Agile manifesto, 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.

share|improve this answer
    
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
1  
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
show 1 more comment

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.

share|improve this answer
add comment

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).

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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