In this blog we will learn about software engineering, software engineering is the "application of a systematic, disciplined, quantifiable approach to solve business problems through the design, development, operation and maintenance of software; that is, the application of engineering to software.
Software engineering is a software process focused on the phased approach of developing a software or system, commonly known as Software or Systems Development Life Cycle (SDLC).
The software engineer or systems analyst must understand and analyse the requirements of the business and design software to meet the requirements. They should be able to understand the business processes in multiple disciplines. They should be able to communicate with experts of different domains and gather information, seek clarifications, resolve inconsistencies, ensure completeness of the requirements and extract an abstract model of the requirements. They produce the software system design to meet the requirements, test the system and gracefully evolve with the evolving business needs for many years in the future.
Computer programmers receive specifications from software engineers and turn program design into written instruction codes for computers to follow.
Goal and Features of Software Engenderers
The goal of software engineering is to produce a high quality system or application within a given time frame and satisfy customers’ needs.
In general, useful features of a good software are correctness, acceptability, dependability and security, efficiency and maintainability.
1.2.1 Correctness
Correctness is the degree to which the software performs its required function. Applications must operate correctly or it provides little value to its users.
1.2.2 Acceptability
Software must be acceptable to the type of users for which it is designed. If it is not easy to use, it is often doomed to failure, even if the functions that it performs are valued. Software must also be understandable and relates to the way the business process is executed. Lastly, the software must be compatible with other systems that the users use. Aesthetics or the look and feel of a software should also be considered.
1.2.3 Dependability and Security
Software dependability includes reliability, security and safety. Dependable software should not cause physical or economic damage in the event of system failure. Software has to be secure so that malicious users cannot access or damage the system. Sensitive content should be protected and data transmission should be secure. An estimate of the business risk should be assessed on the system in the event of potential application failures when the application is in operation, and contingency measures to handle the event.
1.2.4 Efficiency
Software should not make wasteful use of system resources such as memory or processor cycles. Efficiency therefore includes responsiveness, processing time, resource utilisation, etc. The causes of inefficiency are usually violations of good architectural and coding practices.
1.2.5 Maintainability
Maintainability is the ease with which a program can be corrected if an error occurs, adapted if its environment changes, or enhanced if the customer requirements change.