Comparing traditional engineering
Some practitioners believe that they apply concepts of traditional engineering to software design and implementation. They believe this provides a structured, logical approach and subsequently, a stable final product. Other practitioners are inspired by traditional engineering, but believe that software problems need particular solutions. They believe that traditional engineering concepts may not apply, because software is fundamentally different than bridges and roads. For example, traditional engineers do not use compilers or linkers to build roads.
Software engineers aspire to build low-cost, reliable, safe software, which is much like what traditional engineers do.
Software engineers borrow many metaphors and techniques from traditional engineering disciplines: requirements analysis, quality control, and project management techniques.
Traditional engineers now use software tools to design and analyze systems, such as bridges and buildings. These new kinds of design and analysis resemble programming in many respects, because the work exists as electronic documents and goes through analysis, design, implementation, and testing phases, just like software.