Software can be described as a collection of instruction that are executed to get desired functionalities. It is different from a program in the sense that software includes programs, documentation and operating procedures.
Characteristics of software(compared to hardware)
- Software is developed,not manufactured
- Does not wear out
- Has reusable components
Types of software
- System software (software that provides a platform to other software such as Microsoft Windows, GNU/Linux, macOS)
- Application software (programs designed for end users like Notepad, Firefox, Media players)
- Engineering/Scientific software (software built with techniques and formulae specific to specific scientific or engineering field, examples are MATLAB, AUTOCAD)
- Embedded software (programs that control machines or devices such as Traffic light control mechanism, Motorcycle dashboard display)
- Product-line software (a group of products sharing common features that are used to satisfy specific needs of a mission like MS Office supporting home use, business use, enterprise use etc)
- Web application software (programs that are run on web servers and are accessed through a web browser, examples are Gmail, Facebook etc)
- Artificial Intelligence software (software that is capable of intelligent behaviour, like in Robotics, Game Playing etc)
- Legacy software system(software systems that were developed decades ago which becomes costly and risky to maintain and evolve)
Software engineering can be defined as systematic and disciplined engineering approach applied for building and maintaining software.
It is a layered technology comprising
- Quality focus as its central support element since improving quality of process and products through quality improvement techniques is the main focus of an organization.
- Process layer provides framework for management of software project.
- Method layer includes methods such as communication, design, coding and other technical aspects for development of software.
- Tools layer provides supporting tools for Method and Process layers.