All Topics  
Debates within software engineering

 

   Email Print
   Bookmark   Link






 

Debates within software engineering



 
 
Many debates are raging within the software engineering
Software engineering

Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches....
 community. As software becomes more pervasive, most recognize the need for better software, but few agree on how to obtain it.

term has been used less formally:



Some people believe that software engineering implies a certain level of academic training, professional discipline, and adherence to formal processes that often are not applied in cases of software development.






Discussion
Ask a question about 'Debates within software engineering'
Start a new discussion about 'Debates within software engineering'
Answer questions from other users
Full Discussion Forum



Encyclopedia


Many debates are raging within the software engineering
Software engineering

Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches....
 community. As software becomes more pervasive, most recognize the need for better software, but few agree on how to obtain it.

Ambiguity and controversy


Typical formal definitions of software engineering are:
  • "the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software".
  • "an engineering discipline that is concerned with all aspects of software production"
  • "the establishment and use of sound engineering principles in order to economically obtain software that is reliable and works efficiently on real machines"
The term has been used less formally:

  • as the informal contemporary term for the broad range of activities that were formerly called programming and systems analysis
    Systems analysis

    Systems analysis is the interdisciplinary part of Science, dealing with analysis of sets of interacting or entities, the systems, often prior to their automation as computer systems, and the interactions within those systems....
    ;
  • as the broad term for all aspects of the practice of computer programming, as opposed to the theory of computer programming, which is called computer science
    Computer science

    Computer science is the study of the theoretical foundations of information and computation, and of practical techniques for their implementation and application in computer systems....
    ;
  • as the term embodying the advocacy of a specific approach to computer programming, one that urges that it be treated as an engineering
    Engineering

    Engineering is the discipline and profession of applying Technology and science knowledge and utilizing natural laws and physical resources in order to design and implement materials, structures, machines, devices, systems, and process that safely realize a desired objective and meet specified criteria....
     discipline rather than an art or a craft, and advocates the codification of recommended practices.


Some people believe that software engineering implies a certain level of academic training, professional discipline, and adherence to formal processes that often are not applied in cases of software development. A common analogy is that working in construction
Construction

In the fields of architecture and civil engineering, construction is a process that consists of the building or assembling of infrastructure. Far from being a single activity, large scale construction is a feat of multitasking....
 does not make one a civil engineer
Civil engineer

A civil engineer is a person who practices civil engineering, one of the many engineering professions. Originally a civil engineer worked on public works projects and was contrasted with the military engineer, who worked on armaments and defenses....
, and so writing code
Source code

In computer science, source code is any collection of statements or declarations written in some human-readable computer programming language....
 does not make one a software engineer. It is disputed by some - in particular by the Canadian Professional Engineers Ontario
Professional Engineers Ontario

Professional Engineers Ontario, PEO, is the self-regulatory body that governs Ontario's 70,000 professional engineers, and sets standards for and regulates engineering practice in the province....
 (PEO) body, that the field is not mature enough to warrant the title "engineering". The PEO disputed that "software engineering" was not an appropriate name for the field since those who practiced in the field and called themselves "software engineers" were not properly licensed professional engineers, and that they should therefore not be allowed to use the name.

In each of the last few decades, at least one radical new approach has entered the mainstream of software development (e.g. Structured Programming
Structured programming

Structured programming can be seen as a subset or subdiscipline of procedural programming, one of the major programming paradigms. It is most famous for removing or reducing reliance on the GOTO Statement ....
, Object Orientation
Object-oriented programming

Object-oriented programming is a programming paradigm that uses "Object_" and their interactions to design applications and computer programs....
), implying that the field is still changing too rapidly to be considered an engineering discipline. Proponents argue that the supposedly radical new approaches are evolutionary rather than revolutionary.

Individual commentators have disagreed sharply on how to define software engineering or its legitimacy as an engineering discipline. David Parnas
David Parnas

David Lorge Parnas is a Canadian early pioneer of software engineering, who developed the concept of information hiding in modular programming, which is an important element of object-oriented programming today....
 has said that software engineering is, in fact, a form of engineering. Steve McConnell
Steve McConnell

Steven C. McConnell is an author of many software engineering textbooks including Code Complete, Rapid Development, and Software Estimation....
 has said that it is not, but that it should be. Donald Knuth
Donald Knuth

Donald Ervin Knuth is a renowned computer science and Emeritus of the Art of Computer Programming at Stanford University.Author of the seminal multi-volume work The Art of Computer Programming , Knuth has been called the "father" of the run-time analysis, contributing to the development of, and systematizing formal mathematical techn...
 has said that programming is an art and a science. Edsger W. Dijkstra claimed that the terms software engineering and software engineer have been misused, particularly in the United States
United States

The United States of America is a Federal government constitutional republic comprising U.S. state and a federal district. The country is situated mostly in central North America, where its Contiguous United States and Washington, D.C., the Capital districts and territories, lie between the Pacific Ocean and Atlantic Oceans, Borders of the U...
.

Regulatory classification

The U.S. Bureau of Labor Statistics
Bureau of Labor Statistics

The Bureau of Labor Statistics , a unit of the United States Department of Labor, is the principal fact-finding agency for the government of the United States in the broad field of labor economics ....
 classifies computer software engineers as a subcategory of "computer specialists", along with occupations such as computer scientist, programmer, and network administrator. The BLS classifies all other engineering disciplines, including computer hardware engineers, as "engineers".

The U.K. has seen the alignment of the Information Technology Professional and the Engineering Professionals.

Software engineering in Canada has seen some contests in the courts over the use of the title "Software Engineer" The Canadian Council of Professional Engineers (C.C.P.E. or "Engineers Canada") will not grant a "Professional Engineer" status/license to anyone who has not completed a recognized academic engineering program. Engineers qualified outside Canada are similarly unable to obtain a "Professional Engineer" license. Since 2001, the Canadian Engineering Accreditation Board has accredited several university programs in software engineering, allowing graduates to apply for a professional engineering licence once the other prerequisites are obtained, although this does nothing to help IT professionals using the title with degrees in other fields (such as computer science).

Some of the United States of America regulate the use of terms such as "computer engineer" and even "software engineer". These states include at least Texas and Florida. Texas even goes so far as to ban anyone from writing any real-time code without an engineering license.

Right to use the word engineering

The word engineering within the term software engineering
Software engineering

Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches....
 causes a lot of confusion.

The wrangling over the status of software engineering (between traditional engineers and computer scientists) can be interpreted as a fight over control of the word engineering. Traditional engineers question whether software engineers can legally use the term.

Traditional engineers (especially civil engineers and the NSPE) claim that they have special rights over the term engineering, and for anyone else to use it requires their approval. In the mid-1990s, the NSPE sued to prevent anyone from using the job title software engineering. The NSPE won their lawsuit in 48 states. However, SE practitioners, educators, and researchers ignored the lawsuits and called themselves software engineers anyway. The U.S. Bureau of Labor Statistics uses the term software engineer, too. The term engineering is much older than any regulatory body, so many believe that traditional engineers have few rights to control the term. As things stand at 2007, however, even the NSPE appears to have softened its stance towards software engineering and following the heels of several overseas precedents, is investigating a possibility of licensing software engineers in consultation with IEEE, NCEES and other groups "for the protection of the public health safety and welfare" .

In Canada, the use of the words 'engineer' and 'engineering' are controlled in each province by self-regulating professional engineering organizations, often aligned with geologists and geophysicists, and tasked with enforcement of the governing legislation. The intent is that any individual holding themselves out as an engineer (or geologist or geophysicist) has been verified to have been educated to a certain accredited level, and their professional practice is subject to a code of ethics and peer scrutiny. This system was originally designed for the practise of engineering where public safety is a concern, but extends to other branches of engineering as well, including electronics and software .

In New Zealand, IPENZ
IPENZ

The Institution of Professional Engineers New Zealand is a not-for-profit professional body representing the engineering profession in New Zealand....
, the professional engineering organization entrusted by the New Zealand government with legal power to license and regulate chartered engineers (CPEng), recognizes software engineering as a legitimate branch of professional engineering and accepts application of software engineers to obtain chartered status provided he or she has a tertiary degree of approved subjects. Software Engineering is included but Computer Science is normally not.

The United States Patent and Trademark Office
United States Patent and Trademark Office

The United States Patent and Trademark Office is an agency in the United States Department of Commerce that issues patents to inventors and businesses for their inventions, and trademark registration for product and intellectual property identification....
 considers computer science
Computer science

Computer science is the study of the theoretical foundations of information and computation, and of practical techniques for their implementation and application in computer systems....
 to be a legitimate field within the "technological arts". Hence a person with an accredited computer science degree will meet the to be licensed as a patent agent
Patent attorney

A patent attorney is an Lawyer who has the specialized qualifications necessary for representing clients in obtaining patents and acting in all matters and procedures relating to patent law and practice, such as filing an opposition....
 or patent attorney
Patent attorney

A patent attorney is an Lawyer who has the specialized qualifications necessary for representing clients in obtaining patents and acting in all matters and procedures relating to patent law and practice, such as filing an opposition....
 or be hired by the patent office as a patent examiner.

Technological arts include engineering (e.g. chemical engineering
Chemical engineering

Chemical engineering is the branch of engineering that deals with the application of physical science , with mathematics, to the process of converting raw materials or chemicals into more useful or valuable forms....
) and natural sciences (e.g. biology
Biology

Biology is a branch of the natural sciences concerned with the study of living organisms and their interaction with each other and their environment ....
). Technological arts have not included abstract reasoning (e.g. mathematics
Mathematics

Mathematics is the study of quantity, structure, space, change, and related topics of pattern and form. Mathematicians seek out patterns whether found in numbers, space, natural science, computers, imaginary abstractions, or elsewhere....
) or the social sciences (e.g. sociology
Sociology

Sociology is a branch of the social sciences that uses systematic methods of Empiricism and critical theory to develop and refine a body of knowledge about human social structure and activity, sometimes with the goal of applying such knowledge to the pursuit of social welfare....
).

The fields of data engineering, knowledge engineering
Knowledge engineering

Knowledge engineering has been defined by Feigenbaum, and McCorduck as follows:""KE is an engineering discipline that involves integrating knowledge into computer systems in order to solve complex problems normally requiring a high level of human expertise."...
, user interface engineering, and so on have similar concerns about the term engineering. Even smaller or newer fields of biological engineering
Biological Engineering

Biological Engineering is a form of biotechnology that uses broad-based engineering disciplines of product design, sustainability and analysis to improve and focus utilization of biological systems....
, safety engineering
Safety engineering

Safety engineering is an applied science strongly related to systems engineering and the subset System Safety Engineering. Safety engineering assures that a life-critical system behaves as needed even when pieces fail....
, and corrosion engineering
Corrosion engineering

Corrosion Engineering is the specialist discipline of applying scientific knowledge, natural laws and physical resources in order to design and implement materials, structures, devices, systems and procedures to manage the natural phenomenon known as corrosion....
 have these concerns.

It is important to remember that the foundational subjects of traditional engineering, like advanced calculus and physical science, are tools and do not fully define what engineering actually is. The aspects of innovation and professional judgment apply to both engineering and software development. The well known axiom that we can strive to build systems that are better, faster, and cheaper, but not all three at the same time, applies equally well to traditional engineering as it does to software development.

Substance versus metaphor


Some believe that the name SE means that practitioners must also be traditional engineers. Others believe that engineering is only a metaphor that SEs should apply appropriately.

Substance : Those who define software engineering as a branch of traditional engineering
Engineering

Engineering is the discipline and profession of applying Technology and science knowledge and utilizing natural laws and physical resources in order to design and implement materials, structures, machines, devices, systems, and process that safely realize a desired objective and meet specified criteria....
 often believe that SEs apply concepts from traditional engineering
Traditional engineering

Traditional engineering, also known as sequential engineering, is the process of marketing, engineering design, manufacturing, testing and Production, costs, and pricing where each stage of the development process is carried out separately, and the next stage cannot start until the previous stage is finished....
 to software development. This means that software engineering students, like students in other engineering disciplines, should study the science and mathematics necessary to understand the systems they will be designing (in the case of SE, things like computer science
Computer science

Computer science is the study of the theoretical foundations of information and computation, and of practical techniques for their implementation and application in computer systems....
 and formal methods
Formal methods

In computer science and software engineering, formal methods are particular kind of mathematically-based techniques for the formal specification, development and formal verification of software and hardware systems....
); practitioners should earn professional licenses; and so on. They believe engineering provides a structured, logical approach, and therefore, a stable final product.

Metaphor : Others are inspired by traditional engineering, but believe that software needs its own solutions. They believe that many traditional engineering concepts cannot apply, because software is fundamentally different from other kinds of products. They believe that students should study computer science and other useful topics, and that practitioners do not necessarily need licenses.

Meanings of terms


Prior to the mid-1990s, most software practitioners called themselves programmers or developers, regardless of their actual jobs. Many people prefer to call themselves software developer and programmer, because most widely agree what these terms mean, while software engineer is still being debated.

Programmer : We widely agree what this means.

Developer : We widely agree what this means.

Software engineer : We disagree what this means.

The term programmer has often been used as a pejorative term to refer to those who lacked the tools, skills, education, or ethics to write quality software. In response, many practitioners called themselves software engineers to escape the stigma
Social stigma

Social stigma is severe social disapproval of personal characteristics or beliefs that are against Norm . Social stigma often leads to marginalization....
 attached to the word programmer. In many companies, the titles programmer and software developer were changed to software engineer, for many categories of programmers.

These terms cause confusion
ConFusion

ConFusion is an annual science fiction convention organized by the Stilyagi Air Corps and its parent organization, the Ann Arbor Science Fiction Association....
, because some denied any differences (arguing that everyone does essentially the same thing with software) while others use the terms to create a difference (because the terms mean completely different jobs).

Fighting over priorities


In the pursuit of better software, the community disagrees on priorities, approaches, and on what an individual should do in specific circumstances. Everyone seems to advocate a different combination of the following issues. Proponents and methodologists advocate conflicting solutions and often heatedly debate their merits. All subfields mix the following priorities to varying degrees.

Management : Some advocate that software engineering is primarily about the management practices necessary to make reliable budgets and schedules. People at the Software Engineering Institute
Software Engineering Institute

The Carnegie Mellon Software Engineering Institute is a federally funded research and development center headquartered on the campus of Carnegie Mellon University in Pittsburgh, Pennsylvania, United States....
 took this approach and created the CMM
Capability Maturity Model

The Capability Maturity Model in software engineering is a model of the maturity of the capability of certain business processes. A maturity model can be described as a structured collection of elements that describe certain aspects of maturity in an organization, and aids in the definition and understanding of an organization's processes....
.

Formal methods : Some advocate applying rigorous mathematical analysis to computer programming, especially proofs of correctness. They believe that traditional engineering is carried out with mathematical rigor, while programming is an iterative, trial-and-error process. These advocates strive to make programming more rigorous.

Process : Some advocate that software engineers must follow step-by-step processes, much like assembly line workers. This inspired CMM
Capability Maturity Model

The Capability Maturity Model in software engineering is a model of the maturity of the capability of certain business processes. A maturity model can be described as a structured collection of elements that describe certain aspects of maturity in an organization, and aids in the definition and understanding of an organization's processes....
, SPICE
ISO 15504

ISO/IEC 15504 also known as SPICE is a "framework for the assessment of processes" developed by the Joint Technical Subcommittee between ISO and IEC ....
, and other methods and processes.

Tools : Some advocate that software engineering means tools
Programming tool

A programming tool or software development tool is a computer program or application software that software developers use to create, debug, maintain, or otherwise support other programs and applications....
, especially CASE
Computer-aided software engineering

Computer-Aided Software Engineering , in the field of Software Engineering is the scientific application of a set of tools and methods to a software which results in high-quality, defect-free, and maintainable software products....
 tools (like Unix
Unix

Unix is a computer operating system originally developed in 1969 by a group of American Telephone & Telegraph employees at Bell Labs, including Ken Thompson , Dennis Ritchie, Douglas McIlroy, and Joe Ossanna....
 tools and IDEs
Integrated development environment

An integrated development environment also known as integrated design environment or integrated debugging environment is a software application that provides comprehensive facilities to computer programmers for software development....
) that emphasize high-level architecture issues. Today's CASE tools emphasize UML
Unified Modeling Language

Unified Modeling Language is a standardized general-purpose modeling language in the field of software engineering.UML includes a set of graphical notation techniques to create abstract models of specific systems....
.

Ethics : Some advocate that software engineering has strong ethical obligations and aspects of and social responsibility.

Licenses : Some advocate defining software engineering in terms of professional licenses, like some traditional engineers have. The biggest advocates of this position are from Texas and Canada, where government sponsors licenses for SEs.

Degrees : Some advocate defining SE by college degrees. Most professions have college degrees tailored to the needs of practitioners. Many graduate software engineering degrees are available and undergraduate degrees are becoming available.

Attributes : Cost, Time, Quality: Different kinds of applications are sensitive to different attributes. Consumer applications are sensitive to cost. Military and medical applications are sensitive to quality. Business web applications are most sensitive to time. Some researchers argue that one attribute or another (usually quality) matters more than the others. But, software engineers work on all kinds of applications.

Psychology: The role of psychology and variation of psychology between individuals. Are the "best" software organization solutions to be found via formal math-like proofs (such as "formal methods" above), or by matching the developer's psychology to the software design regardless of mathematical purity?

See also

  • Software Engineering Body of Knowledge (SWEBOK)
  • Software patent debate
    Software patent debate

    Software patent debate is the argument dealing with the extent to which it should be possible to software patent and computer-implemented inventions as a matter of public policy....
  • GNU/Linux naming controversy
    GNU/Linux naming controversy

    The GNU/Linux naming controversy is a dispute among members of the free and open source software community. It centers around how to refer to the computer operating systems commonly called "Linux", as the term advocated by the Free Software Foundation and some other proponents of free software for such systems is GNU/Linux....
  • Alternative terms for free software
    Alternative terms for free software

    Alternative terms for free software have been a controversial issue among free software users from the late 1990s onwards. Coined in 1983 by Richard Stallman, "free software" is used to describe software which can be used, modified, and redistributed with little or no restriction....