Logo Scolaplan

Software engineering

Software engineering

Software engineering (SWE) is the application of engineering to the development of software in a systematic method.

Definitions

Typical formal definitions of software engineering include:

  • "Research, design, develop, and test operating systems-level software, compilers, and network distribution software for medical, industrial, military, communications, aerospace, business, scientific, and general computing applications"—Bureau of Labor Statistics
  • "the systematic application of scientific and technological knowledge, methods, and experience to the design, implementation, testing, and documentation of software"—The Bureau of Labor Statistics—IEEE Systems and software engineering - Vocabulary
  • "The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software"—IEEE Standard Glossary of Software Engineering Terminology
  • "an engineering discipline that is concerned with all aspects of software production"— Ian Sommerville
  • "the establishment and use of sound engineering principles in order to economically obtain software that is reliable and works efficiently on real machines"—Fritz Bauer

Subdisciplines

Software engineering can be divided into 15 sub-disciplines. They are:

  • Software requirements (or Requirements engineering): The elicitation, analysis, specification, and validation of requirements for software.
  • Software design: The process of defining the architecture, components, interfaces, and other characteristics of a system or component. It is also defined as the result of that process.
  • Software construction: The detailed creation of working, meaningful software through a combination of coding, verification, unit testing, integration testing, and debugging.
  • Software testing: An empirical, technical investigation conducted to provide stakeholders with information about the quality of the product or service under test.
  • Software maintenance: The totality of activities required to provide cost-effective support to software.
  • Software configuration management: The identification of the configuration of a system at distinct points in time for the purpose of systematically controlling changes to the configuration, and maintaining the integrity and traceability of the configuration throughout the system life cycle.
  • Software engineering management: The application of management activities—planning, coordinating, measuring, monitoring, controlling, and reporting—to ensure that the development and maintenance of software is systematic, disciplined, and quantified.
  • Software development process: The definition, implementation, assessment, measurement, management, change, and improvement of the software life cycle process itself.
  • Software engineering models and methods impose structure on software engineering with the goal of making that activity systematic, repeatable, and ultimately more success-oriented
  • Software quality
  • Software engineering professional practice is concerned with the knowledge, skills, and attitudes that software engineers must possess to practice software engineering in a professional, responsible, and ethical manner
  • Software engineering economics is about making decisions related to software engineering in a business context
  • Computing foundations
  • Mathematical foundations
  • Engineering foundations

Education

Knowledge of computer programming is a prerequisite for becoming a software engineer. In 2004 the IEEE Computer Society produced the SWEBOK, which has been published as ISO/IEC Technical Report 1979:2004, describing the body of knowledge that they recommend to be mastered by a graduate software engineer with four years of experience. Many software engineers enter the profession by obtaining a university degree or training at a vocational school. One standard international curriculum for undergraduate software engineering degrees was defined by the CCSE, and updated in 2004. A number of universities have Software Engineering degree programs; as of 2010, there were 244 Campus Bachelor of Software Engineering programs, 70 Online programs, 230 Masters-level programs, 41 Doctorate-level programs, and 69 Certificate-level programs in the United States.

For practitioners who wish to become proficient and recognized as professional software engineers, the IEEE offers two certifications that extend knowledge above the level achieved by an academic degree: Certified Software Development Associate and Certified Software Development Professional.

In addition to university education, many companies sponsor internships for students wishing to pursue careers in information technology. These internships can introduce the student to interesting real-world tasks that typical software engineers encounter every day. Similar experience can be gained through military service in software engineering.

Profession

Legal requirements for the licensing or certification of professional software engineers vary around the World. In the UK, the British Computer Society licenses software engineers and members of the society can also become Chartered Engineers (CEng), while in some areas of Canada, such as Alberta, British Columbia, Ontario,and Quebec, software engineers can hold the Professional Engineer (P.Eng) designation and/or the Information Systems Professional (I.S.P.) designation. In Canada, there is a legal requirement to have P.Eng when one wants to use the title "engineer" or practice "software engineering". In Europe, Software Engineers can obtain the European Engineer (EUR ING) professional title.

The United States, starting from 2013 offers an NCEES Professional Engineer exam for Software Engineering, thereby allowing Software Engineers to be licensed and recognized. Mandatory licensing is currently still largely debated, and perceived as controversial. In some parts of the US such as Texas, the use of the term Engineer is regulated by law and reserved only for use by individuals who have a Professional Engineer license. The IEEE informs the professional engineer license is not required unless the individual would work for public where health of others could be at risk if the engineer was not fully qualified to required standards by the particular state. Professional engineer licenses are specific to the state that has awarded them, and have to be regularly retaken.

The IEEE Computer Society and the ACM, the two main US-based professional organizations of software engineering, publish guides to the profession of software engineering. The IEEE's Guide to the Software Engineering Body of Knowledge - 2004 Version, or SWEBOK, defines the field and describes the knowledge the IEEE expects a practicing software engineer to have. The most current SWEBOK v3 is an updated version and was released in 2014. The IEEE also promulgates a "Software Engineering Code of Ethics".

Related fields

Software engineering is a direct sub-field of engineering and has an overlap with computer science and management science. It is also considered a part of overall systems engineering.

Source : Wikipedia
Trending
Videos
Flash info
Source : Google news