Software Engineering is an engineering branch associated with development of software product using well-defined scientific principles, methods and procedures. The outcome of software engineering is an efficient and reliable software product.
Software project management has wider scope than software engineering process as it involves communication, pre and post delivery support etc.
What is Software Engineering?
The term software engineering is the product of two words, software, and engineering.
The software is a collection of integrated programs.
Software subsists of carefully-organized instructions and code written by developers on any of various particular computer languages.
Computer programs and related documentation such as requirements, design models and user manuals.
Engineering is the application of scientific and practical knowledge to invent, design, build, maintain, and improve frameworks, processes, etc.
Why is Software Engineering required?
Software Engineering is required due to the following reasons:
- To manage Large software
- For more Scalability
- Cost Management
- To manage the dynamic nature of software
- For better quality Management
Need of Software Engineering
The necessity of software engineering appears because of a higher rate of progress in user requirements and the environment on which the program is working.
- Huge Programming: It is simpler to manufacture a wall than to a house or building, similarly, as the measure of programming become extensive engineering has to step to give it a scientific process.
- Adaptability: If the software procedure were not based on scientific and engineering ideas, it would be simpler to re-create new software than to scale an existing one.
- Cost: As the hardware industry has demonstrated its skills and huge manufacturing has let down the cost of computer and electronic hardware. But the cost of programming remains high if the proper process is not adapted.
- Dynamic Nature: The continually growing and adapting nature of programming hugely depends upon the environment in which the client works. If the quality of the software is continually changing, new upgrades need to be done in the existing one.
- Quality Management: Better procedure of software development provides a better and quality software product.
Characteristics of a good software engineer
The features that good software engineers should possess are as follows:
- Exposure to systematic methods, i.e., familiarity with software engineering principles.
- Perfect technical knowledge of the project range (Domain knowledge).
- Best programming abilities.
- Good communication skills. These skills comprise of oral, written, and interpersonal skills.
- High motivation.
- Sound knowledge of fundamentals of computer science.
- Ability to work in a team
- Discipline, etc.
What was the Software Crisis?
- It was in the late 1960s when many software projects failed.
- Many software became over budget. Output was an unreliable software which is expensive to maintain.
- Larger software was difficult and quite expensive to maintain.
- Lots of software not able to satisfy the growing requirements of the customer.
- Complexities of software projects increased whenever its hardware capability increased.
- Demand for new software increased faster compared with the ability to generate new software.
All the above issues lead to ‘Software Crisis.’
Solution was to the problem was transforming unorganized coding effort into a software engineering discipline. These engineering models helped companies to streamline operations and deliver software meeting customer requirements.
- The late 1970s saw the widespread uses of software engineering principles.
- In the 1980s saw the automation of software engineering process and growth of (CASE) Computer-Aided Software Engineering.
- The 1990s have seen an increased
Challenges of Software Engineering
Here are some critical challenges faced by software engineers:
- In safety-critical areas such as space, aviation, nuclear power plants, etc. the cost of software failure can be massive because lives are at risk.
- Increased market demands for fast turnaround time.
- Dealing with the increased complexity of software need for new applications.
- The diversity of software systems should be communicating with each other.
- on the ‘management’ aspects of projects standard of quality and processes just like ISO 9001
Applications of Software Engineering
- Software engineering develops software for specific business needs that is either needed in daily life or helpful in some other means. It converts the business functions into real time activity. It is helpful in solving business needs.
- Software is developed for automation, services, astronomy, stress analysis, design of engines and space shuttles. It also helps in the field of biology and molecular and Nano sciences.
- Control systems are used with the help of software to manage and control the hardware devices. Software is used in mobile phones, micro-wave ovens to control the working of the device and this saves time and energy by avoiding mechanical work.
- Custom based software can be developed based on specific customer needs. This can be used in the multimedia or graphics field.
Classification of Software
On the basis of application:
- System Software –
System Software is necessary to manage the computer resources and support the execution of application programs. Software like operating systems, compilers, editors and drivers etc., come under this category. A computer cannot function without the presence of these. Operating systems are needed to link the machine dependent needs of a program with the capabilities of the machine on which it runs. Compilers translate programs from high-level language to machine language.
- Networking and Web Applications Software –
Networking Software provides the required support necessary for computers to interact with each other and with data storage facilities. The networking software is also used when software is running on a network of computers (such as World Wide Web). It includes all network management software, server software, security and encryption software and software to develop web-based applications like HTML, PHP, XML, etc.
- Embedded Software –
This type of software is embedded into the hardware normally in the Read Only Memory (ROM) as a part of a large system and is used to support certain functionality under the control conditions. Examples are software used in instrumentation and control applications, washing machines, satellites, microwaves, washing machines etc.
- Reservation Software –
A Reservation system is primarily used to store and retrieve information and perform transactions related to air travel, car rental, hotels, or other activities. They also provide access to bus and railway reservations, although these are not always integrated with the main system. These are also used to relay computerized information for users in the hotel industry, making a reservation and ensuring that the hotel is not overbooked.
- Business Software –
This category of software is used to support the business applications and is the most widely used category of software. Examples are software for inventory management, accounts, banking, hospitals, schools, stock markets, etc.
- Entertainment Software –
Education and entertainment software provides a powerful tool for educational agencies, especially those that deal with educating young children. There is a wide range of entertainment software such as computer games, educational games, translation software, mapping software, etc.
- Artificial Intelligence Software –
Software like expert systems, decision support systems, pattern recognition software, artificial neural networks, etc. come under this category. They involve complex problems which are not affected by complex computations using non-numerical algorithms.
- Scientific Software –
Scientific and engineering software satisfies the needs of a scientific or engineering user to perform enterprise specific tasks. Such software is written for specific applications using principles, techniques and formulae specific to that field. Examples are software like MATLAB, AUTOCAD, PSPICE, ORCAD, etc.
- Utilities Software –
The programs coming under this category perform specific tasks and are different from other software in terms of size, cost and complexity. Examples are anti-virus software, voice recognition software, compression programs, etc.
- Document Management Software – A Document Management Software is used to track, manage and store documents in order to reduce the paperwork.Such systems are capable of keeping a record of the various versions created and modified by different users (history tracking). They commonly provide storage, versioning, metadata, security, as well as indexing and retrieval capabilities.