Software engineering is a branch of engineering concerned with the creation of software products based on well-defined scientific principles, methods, and procedures.

The end result of software engineering is a reliable and efficient software product. Basically, Software is a combination of Program + Documentation + Operating Procedure. A program is a set of instructions that run simultaneously. Documentation helps to know all the aspects of a software model. Operating procedure Consist User Manuals and Operational manuals. The user manuals include a system overview, a beginner’s guide, a tutorial, and a reference guide.Installation Guide and System Administrator Guide are examples of operational manuals.
- Working with the BIOS/CMOS
- Working with Portable PCs
- Wireless Communication & Security Threats : Definition, Types
Brief History
Beginning in the 1960s, software engineering was regarded as a distinct branch of engineering. Furthermore, the advancement of software engineering was viewed as a challenge. It was difficult for software engineers to keep up with the hardware, which caused numerous problems. Problems included software that was over budget, missed deadlines, necessitated extensive debugging and maintenance, failed to meet the needs of consumers, or was never completed at all. NATO held the first Software Engineering conference in 1968, where software issues were addressed and guidelines and best practices for software development were established.
Why is software engineering required ?
Software engineering is required to get efficient work with less hardware and To manage large amounts of software
For greater scalability, Management of Costs
For better quality management, manage the dynamic nature of software.
14 Characteristics of a good software
There are numerous characters in good software. Among them are the following.
- Correctness : The importance of correctness in software cannot be overstated. There must be no flaws in the specification, design, or implementation.
- Usability : A system should be simple for users to learn and use.
- Efficiency : The fewer resources that a piece of software consumes, the better. Processor, memory, and disc space usage should be kept to a minimum.
- Reliability : It is critical to have a system that can perform the required functions consistently. Failures should occur as infrequently as possible.
- Integrity : Consideration should be given to security. Our software should allow attackers to gain unauthorised access to resources. Data validation is also necessary to ensure that incorrect data is not saved into the system.
- Adaptability : It’s preferable to have a system that can be used in a variety of situations without needing to be modified.
- Accuracy : Its outputs are fairly accurate. This determines whether the software produces the desired results for users.
- Robustness : If a system continues to function despite invalid inputs and stressful environmental conditions, it is a good sign for our system.
- Maintainability : The ease with which an existing system can be modified is critical. The easier it is for us to make changes, the better.
- Portability : It is a good system if it can operate in environments other than the one for which it was originally designed.
- Reusability : The more reusable components a piece of software contains, the better. We don’t have to start from scratch when we use reusable parts.
- Readability : It is simple to change code that is easy to read. We can make changes faster and with fewer errors if we understand them better.
- Testability : It is critical that our software system be testable. If our code is simple to unit test, that’s a good thing.
- Understandability : It is critical for us to be able to understand our system from a global perspective as well as at the detailed code level.