WHAT IS SOFTWARE ENGINEERING?
Software Engineering is the process of designing, developing, testing, and maintaining software. It is a systematic and disciplined approach to software development that aims to create high-quality, reliable, and maintainable software. A career as a software engineer can be both fun and challenging with opportunities to work in almost any industry, including large and small businesses, government agencies, nonprofit organizations, healthcare facilities, and more. And as technology continues to evolve, the need for software developers continues to grow.

- Software engineering is the branch of computer science that deals with the design, development, testing, and maintenance of software applications. Software engineers apply engineering principles and knowledge of programming languages to build software solutions for end users.
- It is a rapidly evolving field, and new tools and technologies are constantly being developed to improve the software development process.
- By following the principles of software engineering and using the appropriate tools and methodologies, software developers can create high-quality, reliable, and maintainable software that meets the needs of its users.
- The main goal of Software Engineering is to develop software applications for improving quality, budget, and time efficiency.
-
Software Engineering is a systematic, disciplined, quantifiable study and approach to the design, development, operation, and maintenance of a software system. There are four main Attributes of Software Engineering:
- Efficiency: It provides a measure of the resource requirement of a software product efficiently.
- Reliability: It assures that the product will deliver the same results when used in similar working environment.
- Reusability: This attribute makes sure that the module can be used in multiple applications.
- Maintainability: It is the ability of the software to be modified, repaired, or enhanced easily with changing requirements.
KEY RPINCIPLES OF SOFTWARE ENGINEERING:
- Modularity: Breaking the software into smaller, reusable components that can be developed and tested independently.
- Abstraction: Hiding the implementation details of a component and exposing only the necessary functionality to other parts of the software.
- Encapsulation: Wrapping up the data and functions of an object into a single unit, and protecting the internal state of an object from external modifications.
- Reusability: Creating components that can be used in multiple projects, which can save time and resources.
- Maintenance: Regularly updating and improving the software to fix bugs, add new features, and address security vulnerabilities.
- Testing: Verifying that the software meets its requirements and is free of bugs.
- Design Patterns: Solving recurring problems in software design by providing templates for solving them.
- Agile methodologies: Using iterative and incremental development processes that focus on customer satisfaction, rapid delivery, and flexibility.
- Continuous Integration & Deployment: Continuously integrating the code changes and deploying them into the production environment.
DUAL ROLE OF SOFTWARE:
-
There is a dual role of software in the industry. The first one is as a product and the other one is as a vehicle for delivering the product. We will discuss both of them.
1. As a Product
- It delivers computing potential across networks of Hardware.
- It enables the Hardware to deliver the expected functionality.
- It acts as an information transformer because it produces, manages, acquires, modifies, displays, or transmits information.
2. As a Vehicle for Delivering a Product
- It provides system functionality (e.g., payroll system).
- It controls other software (e.g., an operating system).
- It helps build other software (e.g., software tools).
CLASSIFICATION OF SOFTWARE:
-
The software can be classified based on various criteria, including:
- Purpose: Software can be classified as system software (e.g., operating systems, device drivers) or application software(e.g., word processors, games).
- Platform: Software can be classified as native software (designed for a specific operating system) or cross-platform software (designed to run on multiple operating systems).
- Deployment: Software can be classified as installed software (installed on the user’s device) or cloud-based software (hosted on remote servers and accessed via the internet).
- License: Software can be classified as proprietary software (owned by a single entity) or open-source software (available for free with the source code accessible to the public).
- Development Model: Software can be classified as traditional software (developed using a waterfall model) or agile software (developed using an iterative and adaptive approach).
- Size: Software can be classified as small-scale software (designed for a single user or small group) or enterprise software (designed for large organizations).
- User Interface: Software can be classified as Graphical User Interface (GUI) software or Command-Line Interface (CLI) software.
TYPES OF SOFTWARE:
-
The software is used extensively in several domains including hospitals, banks, schools, defense, finance, stock markets, and so on.
It can be categorized into different types:
- Based on Application
- Based on Copyright
- BASED ON APPLICATION:
- SYSTEM SOFTWARE:
- System Software is necessary to manage computer resources and support the execution of application programs.
- System software refers to the collection of programs and software components that enable a computer or computing device to function properly. It acts as an intermediary between the user and the computer hardware, allowing the user to interact with the hardware and use various applications and programs.Some common types of system software include operating systems (such as Windows, macOS, or Linux), device drivers, utility programs, programming languages, and system libraries.
-
System software is a type of computer program that is designed to run a computer’s hardware and application programs and examples of system software include operating systems (OS) (like macOS, Linux, Android, and Microsoft Windows), game engines, search engines(like google,Bing,Yahoo!), industrial automation, computational science software, and (SaS)software as a service applications.
- Operating systems (OS): Windows, Linux, macOS, etc.
- Device drivers: software that enables the communication between hardware and OS.
- Firmware: pre-installed low-level software that controls a device’s basic functions.
- Utility software: tools for system maintenance and optimization.
- Boot loaders: software that initializes the OS during startup.
TYPES OF SYSTEM SOFTWARE:
OPERATING SYSTEM:
- An operating system (OS) is a type of system software that manages a computer’s hardware and software resources. It provides common services for computer programs.
- An OS acts as a link between the software and the hardware. It controls and keeps a record of the execution of all other programs that are present in the computer, including application programs and other system software.
PROGRAMMING LANGUAGE TRANSLATOR:
-
Programming language translators are programs that translate code written in one programming language into another programming language. below are examples of programming language translator:
- Compiler: A compiler is a software that translates the code written in one language to some other language without changing the meaning of the program. The compiler is also said to make the target code efficient and optimized in terms of time and space. Examples of compilers may include gcc(C compiler), g++ (C++ Compiler ), javac (Java Compiler), etc.
- Interpreter: An interpreter is a computer program that directly executes, i.e. it performs instructions written in a programming or scripting language. Interpreters do not require the program to be previously compiled into a machine language program. Examples may include Ruby, Python, PHP, etc.
- Assembler: An assembler is a program that converts the assembly language into machine code. It takes the basic commands and operations and converts them into binary code specific to a type of processor.
DEVICE DRIVERS:
- Device drivers are a class of system software that minimizes the need for system troubleshooting. Internally, the operating system communicates with hardware elements. Device drivers make it simple to manage and regulate this communication.The majority of device drivers, including those for a mouse, keyboard, etc., are pre-installed in the computer system by the businesses that make computers.
FIRMWARE:
- These are the operational programs installed on computer motherboards that assist the operating system in distinguishing between Flash, ROM, EPROM, and memory chips.
- However, managing and controlling all of a device’s actions is the main purpose of any Firmware software. For initial installation, it makes use of non-volatile chips.
UTILITY:
- System Software and application software interact through Utility software.
- A third-party product called utility software is created to lessen maintenance problems and find computer system defects. It is included with your computer’s operating system.
II. APPLICATION SOFTWARE:
- The term “Application Software” refers to software that performs specific functions for a user. When a user interacts directly with a piece of software, it is called application software.
- The sole purpose of application software is to assist the user in doing specified tasks. Microsoft Word and Excel, as well as popular web browsers like Firefox and Google Chrome, are examples of application software. It also encompasses the category of mobile apps, which includes apps like WhatsApp for communication and games like Candy Crush Saga.
-
Application software can also be categorized based on its charge ability and accessibility. Here is some application software:
- Freeware: It is offered for free, as the name implies. You can utilize freeware application software that you can obtain from the Internet. This software, on the other hand, does not allow you to change it or charge a fee for sharing it. Examples include Adobe PDF, Mozilla Firefox, and Google Chrome.
- Shareware: This is given away to users for free as a trial, usually with a limited-time offer. If consumers want to keep using this application software, they will have to pay. WinZip, Anti-virus, and Adobe Reader are instances of shareware.
- Open-source: This type of application software comes with the source code, allowing you to edit and even add features to it. These could be offered for free or for a fee. Open-source application software includes Moodle and Apache Web Server.
- Closed source: This category includes the majority of the application software programs used nowadays. These are normally charged, and the source code is usually protected by intellectual property rights or patents. It usually comes with a set of restrictions. Microsoft Windows, Adobe Flash Player, WinRAR, macOS, and other operating systems are examples.
III. 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 like washing machines, satellites, microwaves, etc.
IV. NETWORKING AND WEB APPLICATIONS SOFTWARE:
- Networking Software provides the required support necessary for computers to interact with each other and with data storage facilities. Networking software is also used when software is running on a network of computers (such as the 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, AND XML, etc.
V. BUSINESS SOFTWARE:
- This category of software is used to support business applications and is the most widely used category of software. Examples are software for inventory management, accounts, banking, hospitals, schools, stock markets, etc.
2. BASED ON COPYRIGHT:
I. COMMERCIAL SOFTWARE:
- It represents the majority of software that we purchase from software companies, commercial computer stores, etc. In this case, when a user buys software, they acquire a license key to use it. Users are not allowed to make copies of the software. The company owns the copyright of the program.
II. SHAREWARE SOFTWARE:
- Shareware software is also covered under copyright, but the purchasers are allowed to make and distribute copies with the condition that after testing the software, if the purchaser adopts it for use, then they must pay for it. In both of the above types of software, changes to the software are not allowed.
III. FREEWARE SOFTWARE:
- In general, according to freeware software licenses, copies of the software can be made both for archival and distribution purposes, but here, distribution cannot be for making a profit. Derivative works and modifications to the software are allowed and encouraged. Decompiling of the program code is also allowed without the explicit permission of the copyright holder.
IV. PUBLIC DOMAIN SOFTWARE:
- In the case of public domain software, the original copyright holder explicitly relinquishes all rights to the software. Hence, software copies can be made both for archival and distribution purposes with no restrictions on distribution. Modifications to the software and reverse engineering are also allowed.
SOFTWARE LICENSE
- A Software License is a document that legally permits you for the use and distribution of software. It’s a legal right given by the company to the user to access their application.
- Software license states the rights of the developer and user of a piece of software. It includes how the software should be used and how much it will be paid for. It also includes some terms and conditions which are basically fair use of the software, the limitations of liability, disclaimers, and warranty.
- A license can also be termed as an agreement between the user and the organization. The user must be agreed to the terms of the license while acquiring the software.
-
Working of license: When a new user buys software or install it will normally accept an end-user license agreement (EULA) which comprises the legal definition between the licensor and the licensee. EULA is an agreement that allows users for installing and using the software. Every EULA has a provision that specifies when the term of the agreement is activated by the end-user. This might happen when the user opens the product for example when the user agrees to the EULA’s terms of the condition by clicking on the accepting terms and conditions. For cloud-based applications such as software as a service (SaaS) includes the following details:
- Charges per user on a monthly or annual basis.
- The duration of the agreement.
- Terms of agreements termination.
TYPES OF LICENSES:
-
Software licenses can be classified as:
- Proprietary
- Free and Open source
-
Proprietary License: It consists of software that is licensed by the copyright holder under some given conditions. The software can be used by the users but they will not have the authority to modify it. It is also termed as the closed source license as the original source code of the software is not accessible, which means you cannot see the actual code written by the programmers. This is done for a purpose so that code should not be leaked.
- Proprietary Licensed software doesn’t mean that you have to pay for all of this software. Some of the proprietary licensed software is free to use but still, you can’t access the actual code. Windows, MAC, and even MS Office are proprietary licensed software.
-
Free and Open Source: As the name suggests Free and Open Sourced licensed software in which source code is released. Users can have a look at how the software was made, which language was used to build the software. This type of license authorizes the user to modify the software and share the modified version.
-
Open-source software is generally developed in a synergetic manner where a community of developers is made which develops the software and where user can share their ideas on the enhancement and improvement of the application or program.
Free and Open Source licenses are classified as:
- Permissive License: Permissive License is an open-source license or a free software license with the minutest restrictions. It allows the use, distribution, modification, and selling of the software without source code. Eg: Apache, etc.
- Copyleft License: Copyleft License allows the distribution and modification of the software unless the same rights are preserved. It allows modification and distribution of the software with source code. Eg: Creative Commons License, GPL(General Public License).
-
GPL (General Public License): GPL stands for General Public License which allows users to freely use, modify, and redistribute the software without any charges or restriction. If the software is licensed under GPL it is free. However “free” here doesn’t mean about charging or buying software, the software can also be paid for. Free here replicates freedom. Freedom to perform anything on the software i.e. modification, redistribution, etc. Features of GPL are listed below:
- Right to download and use the software.
- Allowed to modify the software.
- Allowed to redistribute the software.
- Even allowed to modify and distribute the modified software.
2. CCL(Creative Commons License): CCL stands for Creative Commons License. It is a public license and this license is given by the copyright owner to allow people to use their work in any way consistent with that license. It is the standard form license agreement that can be attached to work to enable its use without contacting the author or negotiating terms of use. It has four basic parts:
- Accreditation: The author of the work must be acknowledged himself as the creator then his/her work is available for modification, distribution, copying, and use.
- Shared with CC: The work can only be modified or distributed under this license.
- Non-Commercial: For non-commercial purposes, the work can also be modified and distributed.
- No Derivative Work: You are allowed to copy and distribute the CC-licensed work but you are not allowed to create work based on origin.