Introduction to Software Engineering

Site: Newgate University Minna - Elearning Platform
Course: Introduction to Software Engineering
Book: Introduction to Software Engineering
Printed by: Guest user
Date: Saturday, 4 July 2026, 10:24 AM

Description

Software engineering is the process of designing, developing, testing, and maintaining computer software in a systematic and organized way. It involves using engineering principles to create software that is reliable, efficient, and easy to use. Software engineers work to solve real-world problems by building applications and systems that help people and organizations. The goal of software engineering is to produce high-quality software that meets user needs and works well over time.

1. Description of Software

MODULE ONE


1.0 Introduction 

Software engineering is the process of designing, developing, testing, and maintaining computer software in a systematic and organized way. It involves using engineering principles to create software that is reliable, efficient, and easy to use. Software engineers work to solve real-world problems by building applications and systems that help people and organizations. The goal of software engineering is to produce high-quality software that meets user needs and works well over time.

1.1 Description of Software

Software can be defined as a well-structured collection of instructions or code written to perform specific tasks on a computer system. These instructions are created using programming languages and are designed to process inputs whether from the user, other systems, or sensors and generate meaningful outputs that fulfill user requirements. The primary objective of software is to deliver desired functionalities and optimal performance based on what users expect or need.

A software is a collection of instructions that are designed to acquire inputs and manipulate them in order to generate the desired output in terms of functionalities and performance, as specified by the user of the software. Furthermore, software consists of a collection of resources, such as software manuals, that are designed to assist users in comprehending the software system. Software is characterized by the capabilities it possesses.  The functions that it is able to carry out, the features that it offers, and the facilities that it provides are all instances of capabilities. Software is more than just a collection of computer programs, procedures, rules, and related documentation and data. It can manage, modify, display, or transform information as simple as a single bit or as complex as a multimedia application. A program is an executable code that serves some computational purpose.

At its core, software serves as an interface between the user and the hardware of a computer. While hardware provides the physical components, software gives these components purpose and direction. Every click, command, or input from the user is interpreted and acted upon through software logic and rules. Software is judged by how effectively it carries out its functions and how well it performs under various conditions. Functionality refers to the tasks the software is capable of performing. For example, a word processor can create, edit, and format documents; these are its core functions. Performance, on the other hand, refers to the speed, accuracy, stability, and resource efficiency with which these functions are executed. To meet these criteria, software developers focus on requirements analysis, algorithm optimization, and rigorous testing, ensuring that the software behaves as expected and adapts well to real-world usage scenarios. 

Software is developed or designed; it is different to traditional manufacturing processes.  Software does not experience degradation over time.  While the industry is progressing towards component-based assembly, the majority of software remains custom-built. Therefore, some of the types of software applications include:

• System Software.

• Real-time Software.

• Business Software.

• Engineering and Scientific Software.

• Embedded Software.

• Personal Computer Software.

• Web-based Software.

• Artificial Intelligence Software

1.2 Capabilities and Characteristics of Software

The capabilities of software refer to the specific features and facilities it offers to users. All these elements combine to define the overall utility and value of the software to its users. The broader the range and depth of capabilities, the more powerful and appealing the software becomes. These capabilities include:

Functional Capabilities: The core tasks and processes the software can perform (e.g., data analysis, image editing, transaction processing).

User Interface Features: The ways in which users interact with the software (e.g., graphical interface, voice control, touch support).

System Integration: The ability to work with other systems and platforms (e.g., APIs, file compatibility, database connectivity).

Customization and Scalability: Features that allow users to personalize their experience and the ability of the software to grow with increasing demands.

Security and Privacy: Mechanisms that protect data and ensure safe usage.

1.3 Classification of Software

Software, as a critical tool in computing, is developed to fulfill the needs of users from diverse disciplines.  Software is essentially grouped into two basic groups based on its purpose, audience, and flexibility of use: generic and customized software. Knowing the difference between generic and customized software helps people and businesses make smart choices based on their budget, time frame, and unique functional needs.  For general needs, generic software is quick and cheap. Customized software, on the other hand, gives a more personalized approach that can greatly increase operational efficiency and productivity in certain situations.

1.3.1 Generic Software 

Generic software refers to software applications that are designed and developed to serve a broad range of users with similar needs. These are off-the-shelf products that are available for public use without the need for significant modifications. Generic software is designed for the broad market.  Pre-packaged and widely available.  Users have no control over the development process.  The developer generally tests and updates on a regular basis.  Frequently incorporates general-purpose functions that apply to a wide range of industries and user types.  Examples include Microsoft Word (word processing), Adobe Photoshop (graphic design), VLC Media Player (video playback), and antivirus software (computer protection).  Generic software is widely available and simple to install, cost-effective due to collected development costs, well-documented, and supported by a large user community, with regular updates and patches.  However, generic software may have capabilities that are not required by all users, have limited customization choices, and do not fully fit unique organizational procedures or requirements.

1.3.2 Customized software

Customized software is designed to satisfy the special requirements of an individual, business, or organization.  It is designed from the ground up or adapted from existing software to meet specific workflows, goals, or processes.  Customized software is created on demand for a specific client; the client is typically involved in the requirements gathering and development process; the features and interface are specifically aligned with the client's operations; and the software is easier to modify and adapt to changes in client needs.  Examples include hospital management systems tailored to a given facility.  Payroll software adapted to a local company's policies and tax systems, as well as a learning management system customized for a certain university.  Benefits of customized software include meeting unique user needs and business objectives, improving compatibility with current systems, providing a competitive advantage through specialized capabilities, and making it easier to grow and alter as organizational needs change.  Similarly, some of the challenges of customized software include the fact that it is more expensive and time-consuming to produce, requires ongoing maintenance and support, and the quality is strongly dependent on the development team's experience.

1.4 Attribute of a Good Software

Software attributes, also known as software quality characteristics, refer to the essential properties that determine how well a software system performs in real-world conditions. These attributes influence how users perceive and interact with the software, as well as how developers manage and improve it over time. The following are four critical attributes of high-quality software:

i. Maintainability refers to the simplicity with which a software system can be altered to rectify defects, enhance performance, or accommodate a modified environment. It encompasses post-delivery software updates, facilitates bug fixes, allows for enhancements, and adapts to new platforms. Well-structured, readable, and modular code enhances maintainability. This attribute diminishes the cost and duration of future modifications, ensures long-term software viability, and fosters improved collaboration among developers.

ii. Dependability denotes the extent to which users can trust software to execute its functions accurately, safely, and reliably under anticipated conditions. It encompasses elements such as reliability, safety, security, and robustness. Reliable software consistently operates without failure, while secure software safeguards against unauthorized access and data loss. The advantages of dependability include fostering user confidence, ensuring the flawless operation of critical systems (e.g., medical, banking), and reducing the risks of system failures.

iii. Efficiency is the effectiveness with which a software system utilizes system resources—such as memory, processing power, and storage—during task execution.  Evaluated by reaction time, throughput, and resource use, efficient software executes tasks rapidly with little hardware consumption, whereas poor efficiency results in latency, crashes, or sluggish performance.  The efficiency of software improves system performance, facilitates scalability and multitasking, and decreases operational costs through resource optimization.

iv. Usability refers to the degree of ease with which users can learn, utilize, and engage with a software application effectively and satisfactorily. It encompasses interface design, accessibility, and user experience. High usability indicates that the software is intuitive, user-friendly, and necessitates minimal training. Feedback mechanisms and assistance features enhance usability, leading to increased user satisfaction and productivity, reduced support and training expenses, and fostering ongoing software usage.

1.5 What is Software Engineering?

Engineering uses scientific principles to solve real-world problems. 

• Programming involves a single person writing a complete program on a single computer; Well-defined problems; and require programming-in-the-small. 

• Software Engineering applies computer science principles to create functional software systems; Individuals write program components; while teams assemble them; and require programming-in-the-large. Despite the fact that hundreds of authors have published their own definitions of software engineering, Fritz Bauer's description serves as a foundation:

“Software engineering is the establishment and use of sound engineering principles in order to obtain economically software that is, reliable and works efficiently on real machines”.

Similarly, IEEE (IEE93) has developed a more comprehensive definition:

“Software Engineering: The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; that is, the application of software to engineering”.


What is the difference between software engineering and computer science?

Although computer science theories are currently insufficient to provide a comprehensive foundation for software engineering, they serve as the basis for its practical features as illustrated in Figure 1.



Software Engineering is a layered technology that employs a systematic, disciplined, and quantifiable approach to the development, operation, and maintenance of software, essentially applying engineering principles to the development of software. These layers are explained in Figure 1.2. Software Applications types include; the System, real-time, Business, engineering and scientific, Embedded, Personal computer, Web-based, and Artificial Intelligence software respectively. 




1.6 Software Methods:

Software engineering methods provide the technical “how to’s for building software. Software engineering methods rely on a set of basic principles; this is shown in Figure 1.3. 

Methods - - how to encompass a broad array of tasks:

-requirements analysis, design, coding, testing, and maintenance



1.7 Software Engineering Process

The Software Engineering Process is the binding mechanism for technology, allowing for the logical and prompt development of software. The Software Engineering Process is a fundamental structure for a number of critical process areas that provide the groundwork for: - Technical process applications; such as: Project management, Controlling costs and timelines, and Quality assurance of the product. As seen in Figure 1.4, software development process involves crucial experts.



In addition, most software projects fall into one of five general process frameworks. The process framework activities include:

•Communication.

• Planning.

• Modeling.

• Construction.

• Deployment.