Software Engineering: Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.[1] It encompasses techniques and procedures, often regulated by a software development process, with the purpose of improving the reliability and maintainability of software systems.[2] The effort is necessitated by the potential complexity of those systems, which may contain millions of lines of code.[3]
Software development process
Activities and steps
Requirements · Specification
Architecture · Design
Implementation · Testing
Deployment · Maintenance
Models
Agile · Cleanroom · Data model · Iterative · RAD
RUP · Spiral · Waterfall · XP · Scrum
Supporting disciplines
Configuration management
Documentation
Quality assurance (SQA)
Software engineering
Project management
User experience design
Tools
Performance analysis
Debugger
This box: view • talk • edit
The term software engineering was coined by F.L. Bauer and popularized by the 1968 NATO Software Engineering Conference, which was organized by Brian Randell.[4]
The discipline of software engineering includes knowledge, tools, and methods for software requirements, software design, software construction, software testing, and software maintenance tasks.[5] Software engineering is related to the disciplines of computer science, computer engineering, management, mathematics, project management, quality management, software ergonomics, and systems engineering.[6]
Software Testing:Software testing is an empirical investigation conducted to provide stakeholders with information about the quality of the product or service under test[1] , with respect to the context in which it is intended to operate. This includes, but is not limited to, the process of executing a program or application with the intent of finding software bugs.Testing can never completely establish the correctness of computer software. Instead, it furnishes a criticism or comparison that compares the state and behaviour of the product against oracles—principles or mechanisms by which someone might recognize a problem. These oracles may include (but are not limited to) specifications, comparable products, past versions of the same product, inferences about intended or expected purpose, user or customer expectations, relevant standards, applicable laws, or other criteria.
Over its existence, computer software has continued to grow in complexity and size. Every software product has a target audience. For example, the audience for video game software is completely different from banking software. Therefore, when an organization develops or otherwise invests in a software product, it presumably must assess whether the software product will be acceptable to its end users, its target audience, its purchasers, and other stakeholders. Software testing is the process of attempting to make this assessment.
A study conducted by NIST in 2002 reports that software bugs cost the U.S. economy $59.5 billion annually. More than a third of this cost could be avoided if better software testing was performed.[2