FACTOID # 127: Costa Rica leads the world in per capita exports of bananas, cassava, melons, and pineapples to the United States. Unsuprisingly, they’re also first in pesticide use.
 
 Home   Encyclopedia   Statistics   Countries A-Z   Flags   Maps   Education   Forum   FAQ   About 
 
WHAT'S NEW
RECENT ARTICLES
More Recent Articles »
 

FACTS & STATISTICS    Simple view

  1. Select countries to view: (hold down Control key and click to select several)

     

     

    Compare:

     

     

  1. Select fact or statistic: (* = graphable)

     

     

     

  2. (OPTIONAL) Compare to statistic: (both need to be graphable)

     

     

     

  3. View result as:

     

       
(OR) SEARCH ALL encyclopedia, stats & forums:   

Encyclopedia > Criticism of software engineering

Critics argue that many of the foundations of software engineering are inherently flawed. The following paragraphs list many criticisms and responses. Note that many of these criticisms apply to other human activities including business and education. A critic (from Greek κριτικός, kritikós - one who discerns, from Ancient Greek κριτής, krités, a judge) is a person who offers judgement or analysis, value judgement, interpretation, or observation. ... Software engineering (SE) is the profession that creates and maintains software applications by applying technologies and practices from computer science, project management, engineering, application domains and other fields. ... This article does not cite its references or sources. ...

Contents


Managing Expectations

Criticism 
One key to successful software engineering projects is managing the customer's expectations to something that can be built and delivered. So, the field resembles marketing or sociology more than traditional engineering with its responsibilities to society at large and the perils of legal liability when they fail to protect the public interest.
Response 
Every profession manages expectations, including all branches of engineering. Moreover, responsibility to society means meeting the expectations of the general public, which is often a stakeholder.

expectation in the context of probability theory and statistics, see expected value. ... It has been suggested that Product marketing be merged into this article or section. ... Social interactions of people and their consequences are the subject of sociology studies. ... In moral philosophy, the word responsibility has at least two related meanings: The obligation to answer for actions. ... ... In the most general sense, a liability is anything that is a hindrance, or puts one at a disadvantage. ... Public interest is a term used to denote political movements and organizations that are in the public interest—supporting general public and civic causes, in opposition of private and corporate ones (particularistic goals). ... A profession is an occupation that requires extensive training and the study and mastery of specialized knowledge, and usually has a professional association, ethical code and process of certification or licensing. ...

Poor Requirements

Criticism 
The requirements for most SE projects are incomplete or inconsistent. Some clients have little experience writing requirements. Other clients do not know what they want, and say "I'll know it when I see it" (IKIWISI). Even experienced clients who know exactly what they want may not precisely articulate their requirements. Clients often expect much more than they write in the requirements. And, requirement documents can describe applications that have no computable or practical solutions.
Response 
Clarifying vague requirements is one task that often forms part of a larger project. Various methodologies to clarify requirements are available, such as structured client interviews, conceptual design and simulation. Agile development methods use rapid prototyping to clarify project goals and deliver value (the most important requirements) quickly. In projects where the software to be developed is part of a larger system designed by other engineers (such as embedded systems) it sometimes possible to define the software requirements completely at the outset of the project, since the process of clarifying the requirements has already been carried out by the system-level designers. Poor requirements are a problem in many engineering disciplines, not just in software engineering. Attempting to avoid all projects with poor requirements would exclude most projects.

A requirement is a singular documented need of what a particular product should be or do. ... The term client may have the following meanings. ... IKIWISI is an acronym for Ill know it when I see it. Within technical fields, it is often seen as the mantra of the indecisive individual who wants to let other people figure out the details for them. ... Computability theory is that part of the theory of computation dealing with which problems are solvable by algorithms (equivalently, by Turing machines), with various restrictions and extensions. ... A 3D printer for rapid prototyping Rapid prototyping also describes a software engineering methodology. ... Engineering applies scientific and technical knowledge to solve human problems. ... An embedded system is a special-purpose computer system, which is completely encapsulated by the device it controls. ... A requirement is a singular documented need of what a particular product should be or do. ... Engineering applies scientific and technical knowledge to solve human problems. ...

Rising Complexity

Criticism 
Critics argue that the complexity of requirements and user expectations have only increased. The probability of failure increases with the size, scope and complexity of the project. Technologies and practices have consistently improved over the years, but the gap between what is expected and what is delivered has not improved.
Response 
Rising complexity actually shows the success of practitioners, because demand naturally follows supply. When clients demand more, it shows their belief that their demands will be supplied.

Dimension (from Latin measured out) is, in essence, the number of degrees of freedom available for movement in a space. ... Scope (products) of a project is the sum total of all projects products and their features. ... Complexity is the opposite of simplicity. ...

Ongoing Change

Criticism 
Practitioners continually develop new technologies and practices and use them whenever possible. Critics argue that ongoing change proves that older technologies and practices were failures.
Response 
Many view ongoing change as proof that software engineering successfully learns and grows. Traditional engineers also continually develop new technologies and practices.

Ongoing Failure

Criticism 
Critics argue that incomplete or poorly designed systems are still too common. The early disasters in the field did not prevent subsequent disasters.
Response 
No field that strives to do bigger and better projects has ever avoided all failures. Traditional engineers also have ongoing failures: automobiles kill 40,000 people every year in the U.S.; Three Mile Island, Chernobyl, and Bhopal Disaster harmed thousands; Space Shuttles Challenger and Columbia exploded; MTBE added to gasoline to reduce air pollution also contaminated drinking water. Although large, reliable software systems can be and have been constructed, software projects that fail during construction or in service are still too common. Ongoing failure is a problem for both traditional engineers and software engineers. Some claim that software engineering is already as predictable and reliable as many fields of engineering, such as space or biological engineering.

Three Mile Island Nuclear Generating Station consists of two nuclear reactors, each with its own containment building and cooling towers. ... Chernobyl area. ... Time cover about Bhopal disaster. ... The launch of the Space Shuttle Challenger on mission 51L/STS-33, the 25th of the STS (Space Transportation System) program, began at an estimated time of 16:38:00. ... Biological engineering (a. ...

Failure to Pinpoint Causes

Criticism 
Critics argue that unlike traditional engineers (who analyze failures, find precise causes, and set up guidelines to avoid them in the future), software engineers routinely fail to pinpoint causes of failure or delay precisely enough to avoid repeats in the future.
Response 
Debugging is the activity of pinpointing the cause of failures in applications. Process improvement includes the activity of pinpointing the cause of process problems. Software engineers routinely pinpoint causes and then use the results to create better languages, databases, processes, and applications.

Nothing New

Criticism 
Critics argue that software engineers created nothing on their own, but merely use what computer scientists already know.
Response 
A similar argument could be made about other engineering disciplines, which are consumers of knowledge from the physical sciences and mathematics. But the primary focus of engineering (including software engineering) is the synthesis of existing knowledge into new designs to solve new problems. This inevitably involves using knowledge from other disciplines, but also requires an undertstanding of how best to use and combine that knowledge to produce useful products. In software engineering the result has been the development of optimizing compilers, make, cvs, extreme programming, scripting, and bug databases. Regardless of who creates or improves technologies and practices, software engineers (should) adopt the best ones.

Engineering applies scientific and technical knowledge to solve human problems. ...

Anyone Can Do SE

Criticism 
Many bright people from other fields (engineers, scientists, business people) write spreadsheet templates or simulations, and eventually switch to writing large applications, and believe that they do software engineering. So, software engineering is not a special skill.
Response 
Software engineering is a skill that is refined through long learning and practice. Software engineers are the ones who get the necessary education and experience, and keep up with evolving technologies, practices, and applications. This is true of every skill.

Engineering applies scientific and technical knowledge to solve human problems. ... Albert Einstein is almost without question, currently the most widely recognized scientist among the general public. ... This article does not cite its references or sources. ... To meet Wikipedias quality standards, this article or section may require cleanup. ...

We Do Not Know What SE Is

Criticism 
SE does not yield to the standard ways of categorization, under traditional definitions of engineering (calculus and science). This claim is often made by critics who want to impose their own definitions on everyone else.
Response 
We know a lot about what software engineering is. Software engineering is grounded in SE technologies and practices, and applications; and in the community of SE practitioners. Of course, software engineers continue to disagree about many details.

To meet Wikipedias quality standards, this article or section may require cleanup. ... A practice refers to a way that something is done. ... Application software is a loosely defined subclass of computer software that employs the capabilities of a computer directly to a task that the user wishes to perform. ... This article needs a complete rewrite for the reasons listed on the talk page. ...

No Software Science

Criticism 
Civil, electrical, mechanical, and chemical engineering build on solid results from physics and chemistry. These results enable assembling complex systems in a principled and systematic way. No corresponding results are available for software: With software, we don't know how to systematically decompose complex systems into parts. Because there is no unified and agreed system for instruction on Software Engineering, it is difficult to evaluate the qualifications of those in the practice.
Response 
Software engineering builds on solid results from computer science and information science. These results enable the building of very sophisticated software systems.

No Mathematics

Criticism 
Many traditional engineering disciplines are based on logic and the mathematical disciplines of arithmetic, algebra, linear algebra and differential calculus, as well as the first principles of science such as Newton's laws, the laws of thermodynamics, Maxwell's equations, etc. Most of the engineering rules-of-thumb that make up traditional engineering derive from the first principles of their respective physical and mathematical foundations. Software engineering has no such first principles that all practitioners agree to, and this makes it harder to justify it as an engineering discipline as opposed to a trade or a craft.
Response 
Software engineers uses logic, proof theory, generating functions and wide variety of discrete mathematics when creating programs.

No Theorems About People and Projects

Criticism 
No theorems explain why one software engineer is more productive than another. No theorems explain why some software projects succeed and others fail. Without such knowledge, engineering is impossible.
Response 
Software engineering, like other engineering disciplines, is a complex social activity. No theorems explain why one mechanical engineer is more productive than another. No theorems explain why some civil projects go over budget and fail, for example why the Big Dig in Boston went way over budget, or why two space shuttles exploded.

The Big Dig is the unofficial name of the Central Artery/Tunnel Project (CA/T), a massive undertaking to route the Central Artery (Interstate 93), the chief controlled-access highway through the heart of Boston, Massachusetts, into a tunnel under the city, replacing a previous elevated roadway. ...

Meaning of Success

Criticism 
According to a study by the Standish Group[citation needed] in 2000, 28 percent of software projects were complete successes (meaning they were executed on time and on budget), and 23% failed outright.
Response 
Many engineering projects fail to live up to expectations: many bridges and buildings run over budget or schedule. Consider that 40% of all space shuttles have blown up and the rest have been out of service for years. Almost all custom housing projects run over budget and schedule. Success rates for software projects are meaningless without context.

Magic

Criticism 
When programmers work hard and the system works, customers frequently do not appreciate how difficult the task was.
Response 
This is true for every profession.

Software Creation is Inherently Creative

Criticism 
Software is executable knowledge, which is discovered in a creative process, where trial and error, learning, and the ability to challenge one's assumptions are important. The true "construction" phase of software development is already automated by compilers and linkers. The difficult aspects relate to gathering requirements and designing systems. These are more like a craft than a science or engineering task. So, the potential benefit of software engineering is limited to making it easier for developers to try out ideas, to discover errors earlier, and to give them information about the state of a software system.
Response 
Engineering design in general is "a creative process, where trial and error, learning, and the ability to challenge one's assumptions are important". Many engineers in non-software disciplines also have limited or no contact with the "construction" phase of a product or system they have designed (for example, processor designers are rarely involved in the direct fabrication of their designs). Many software engineers use agile software development to embody the creative nature of software engineering and to foster learning. The area of requirements engineering looks at how to elicit and capture what a system should do and how this knowledge can be used in software engineering activities.

Knowledge is information of which someone is aware. ... Trial and error is a method for obtaining knowledge, both propositional knowledge and know-how. ... A supervised child learning the countries of Asia on the floor of the central hall of the Field Museum, Chicago, Illinois Learning is the process of acquiring knowledge, skills, attitudes, or values, through study, experience, or teaching, that causes a change of behavior that is persistent, measurable, and specified or... A craft is a skill, especially involving practical arts. ... For use in social policy, see the article social welfare. ... Trial and error is a method for obtaining knowledge, both propositional knowledge and know-how. ... A supervised child learning the countries of Asia on the floor of the central hall of the Field Museum, Chicago, Illinois Learning is the process of acquiring knowledge, skills, attitudes, or values, through study, experience, or teaching, that causes a change of behavior that is persistent, measurable, and specified or... Intel 80486DX2 microprocessor in a ceramic PGA package A central processing unit (CPU), or sometimes simply processor, is the component in a digital computer that interprets instructions and processes data contained in software. ... Agile software development is a conceptual framework for undertaking software engineering projects. ... Requirements analysis, in software engineering, is a term used to describe all the tasks that go into the instigation, scoping and definition of a new or altered computer system. ...

Software Engineering does not Match Knowledge Acquisition

Criticism 
Software engineering methodologies force developers to commit to the wrong decisions. The need for feedback loops in the waterfall model illustrates how the information needed to make good decisions is often discovered after the decisions are made. Decisions should not be made until developers have the information required to judge correctly, but the availability of information is always unpredictable, so a development methodology is impossible. We teach students to understand a problem completely, before starting to write a program; but this really just collapses the problem into the first step; what is the methodology used to understand the problem completely?
Response 
This is why multiple methodologies are needed for different kinds of projects and why new and better methodologies should continue to be developed. This is also why development of a software methodology is an empirical process; good methodology results from the discovery that some design concept actually works in practice. The elements of a good methodology must be proven through use and if it works, the theory was right. These same problems are faced in any engineering design project.

No Consensus

Criticism 
In traditional engineering there is a clear consensus how things should be built, which standards should be followed and which risks must be taken care of: If an engineer does not follow these practices and something fails he gets sued. There is no such consensus in software engineering: Everyone promotes their own methods, claiming huge benefits in productivity, usually not backed up by any scientific, unbiased evidence.
Response 
SE is a young discipline. As consensus emerges, SE will be thought of as a mature discipline.

  Results from FactBites:
 
Software engineering (1422 words)
Software engineering (SE) is the profession concerned with creating and maintaining computer software by applying computer science and other technologies and practices.
It should also be noted that Software Engineering is considered an engineering discipline because there are pragmatic scientific approaches and expected characteristics of the engineer.
The Future of Software Engineering conference (FOSE) held at the ICSE 2000 documented the state of the art of SE in 2000 and listed many problems to be solved over the next decade.
Software engineering (3949 words)
Software engineering applications embody social and economic value, in that they make people more productive, improve their quality of life, and enable them to do things that would otherwise be impossible.
Software engineering was spurred by the so-called software crisis of the 1960s, 1970s, and 1980s.
Criticism: In Zepplins and Jet Planes [1], Philip Armour argues that software is executable knowledge, which is discovered in an creative process where trial and error, learning, and the ability to challenge one's assumptions are important.
  More results at FactBites »


 

COMMENTARY     


Share your thoughts, questions and commentary here
Your name
Your comments
Please enter the 5-letter protection code

Want to know more?
Search encyclopedia, statistics and forums:

 


Lesson Plans | Student Area | Student FAQ | Reviews | Press Releases |  Feeds | Contact
The Wikipedia article included on this page is licensed under the GFDL.
Images may be subject to relevant owners' copyright.
All other elements are (c) copyright NationMaster.com 2003-5. All Rights Reserved.
Usage implies agreement with terms.