Computer programs, the software (see Computer Programming) that is becoming an ever-larger part of the computer system, are growing more and more complicated, requiring teams of programmers and years of effort to develop. As a consequence, a new subdiscipline, software engineering, has arisen. [1] Before studying the "Software Engineering" topic, please glance at the below two questions, third question focuses on the software development engineering phases.

  1. What is an Engineering?
  2. What is a Computer Engineering?
  3. What is SDLC?

Software Engineering (SE) is concerned with developing and maintaining software systems that behave software engineering reliably and efficiently, are affordable to develop and maintain, and satisfy all the requirements that customers have defined for them. It is important because of the impact of large, expensive software systems and the role of software in safety-critical applications. [2] The development of a large piece of software is perceived as an engineering task, to be approached with the same care as the construction of a skyscraper, for example, and with the same attention to cost, reliability, and maintainability of the final product. It integrates significant mathematics, computer science and practices whose origins are in engineering, see the picture.

More about SE: Software Engineering, SE book, SW Requirements, SW Development, Head first Software Development, History of SE, Complexity of Software Engineering, Complexity within Software Engineering

   The software-engineering process (software development process, also known as a software development life-cycle (SDLC)) is usually described as consisting of several phases variously defined but in general consisting of below six-phases: software engineering 1) identification and analysis of user requirements, 2) development of system specifications (both hardware and software), 3) software design (perhaps at several successively more detailed levels), 4) implementation (actual coding), 5) testing, and 6) maintenance. Even with such an engineering discipline in place, the software-development process is expensive and time-consuming. [1]

For more detailed information see:
  1. What is a SDLC?
  2. Development methodology
  3. Supporting disciplines

Other Tools: Java ToolkitAPI'sProgrammer's CornerDatabase ToolsModeling & DesignMultimediaMaths and ScienceSE Summary


  1. 1. Brittanica
  2. 2. Computing
  3. System
  4. Careers at Facebook
  5. Webopedia
  6. Sun
  7. Java Platform
  9. searchsoa