Debates within software engineering

Debates within software engineering

Many debates are raging within the software engineering community. As software becomes more pervasive, most recognize the need for better software, but few agree on how to obtain it.

Right to use the word engineering

The word "engineering" within the term software engineering 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 termFact|date=March 2007.

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 statesFact|date=February 2007. 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" [ [http://www.eng.hawaii.edu/~hspe/report07.htm Report on 2007 NSPE Annual Conference ] ] .

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 fact|date=August 2008.

In New Zealand, IPENZ, 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. [IPENZ, Good Practice Guidelines for Software Engineering in New Zealand http://www.ipenz.org.nz/ipenz/forms/pdfs/Software-engineering-guidelines.pdf]

The United States Patent and Trademark Office considers computer science to be a legitimate field within the "technological arts". Hence a person with an accredited computer science degree will meet the [http://www.uspto.gov/web/offices/dcom/olia/oed/grb17feb05.pdf scientific and technical training requirements] to be licensed as a patent agent or patent attorney or be hired by the patent office as a patent examiner.

Technological arts include engineering (e.g. chemical engineering) and natural sciences (e.g. biology). Technological arts have not included abstract reasoning (e.g. mathematics) or the social sciences (e.g. sociology).

The fields of data engineering, knowledge engineering, user interface engineering, and so on have similar concerns about the term "engineering". Even smaller or newer fields of biological engineering, safety engineering, and corrosion engineering 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 often believe that SEs apply concepts from traditional engineering 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 and formal methods); 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 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, 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 took this approach and created the CMM.

; 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, SPICE, and other methods and processes.

; Tools : Some advocate that software engineering means tools, especially CASE tools (like Unix tools and IDEs) that emphasize high-level architecture issues. Today's CASE tools emphasize UML.

; 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 the state governments sponsor 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.

References

See also

*Software Engineering Body of Knowledge (SWEBOK)
*Software patent debate
*GNU/Linux naming controversy
*Alternative terms for free software


Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Look at other dictionaries:

  • Software patent debate — is the argument dealing with the extent to which it should be possible to patent software and computer implemented inventions as a matter of public policy. Policy debate on software patents has been active for years. [Cite book |last=Nichols… …   Wikipedia

  • Component-based software engineering — A simple example of two components expressed in UML 2.0. The checkout component, responsible for facilitating the customer s order, requires the card processing component to charge the customer s credit/debit card (functionality that the latter… …   Wikipedia

  • Software engineer — A software engineer is an engineer who applies the principles of software engineering to the design, development, testing, and evaluation of the software and systems that make computers or anything containing software, such as computer chips,… …   Wikipedia

  • Software prototyping — Software prototyping, a possible activity during software development, is the creation of prototypes, i.e., incomplete versions of the software program being developed.A prototype typically simulates only a few aspects of the features of the… …   Wikipedia

  • Regulation and licensure in engineering — Regulation of the engineering profession is established by various jurisdictions of the world to protect the safety, well being and other interests of the general public, and to define the licensure process through which an engineer becomes… …   Wikipedia

  • Open-source software — The logo of the Open Source Initiative Open source software (OSS) is computer software that is available in source code form: the source code and certain other rights normally reserved for copyright holders are provided under a software license… …   Wikipedia

  • Architecture and Civil Engineering — ▪ 2009 Introduction Architecture       For Notable Civil Engineering Projects in work or completed in 2008, see Table (Notable Civil Engineering Projects (in work or completed, 2008)).        Beijing was the centre of the world of architecture… …   Universalium

  • Controversies over the term Engineer — stem from the traditional uses in design and analysis, as compared to newly emerging uses of the term. Several nations are currently dealing with the definition of the term in both the Legal arena and between professional bodies.CanadaThe use of… …   Wikipedia

  • IT service management — (ITSM) is a discipline for managing information technology (IT) systems, philosophically centered on the customer s perspective of IT s contribution to the business. ITSM stands in deliberate contrast to technology centered approaches to IT… …   Wikipedia

  • Ontology (information science) — In computer science and information science, an ontology formally represents knowledge as a set of concepts within a domain, and the relationships between those concepts. It can be used to reason about the entities within that domain and may be… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”