Software Engineering

Software Engineering

Exploring the various development cycles involved in software engineering beyond just coding - including SLDC, waterfall, Agile, and many more .

IEEE Definition

The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.

What is Good Software?

Software is intangible And Good software is subjective

Some qualities that are used to assess software

Correctness: a program satisfies its specifications.

Reliability: a program satisfies its intended functions.

Usability: the effort required to learn, operate, prepare input, and interpret the output.

Integrity: Control of access to unauthorized persons.

Efficiency: the number of computing resources required.

Maintainability: the effort required to locate and fix errors in an operational program.

Portability: the required effort to transfer a program from one hardware/software environment to another.

Testability: the required effort to test a program to ensure it's performing its intended functions.

Interoperability: the effort required to couple programs.

Reusability: reuse of programs in other applications

Software Development Life Cycle (SDLC)

It is a process used in software engineering to develop and maintain high-quality software.

The SDLC process typically consists of the following phases:

Planning: In this phase, the project is defined, and the scope is determined. The resources required, timelines, and budget are identified, and a project plan is created.

Requirements Gathering: In this phase, the requirements of the software are identified and documented. This involves gathering information from stakeholders, analyzing business processes, and defining user needs.

Design: In this phase, the software design is created based on the requirements gathered in the previous phase. This includes designing the architecture, creating detailed specifications, and selecting the appropriate technologies to use.

Implementation: In this phase, the software is developed based on the design created in the previous phase. This includes coding, testing, debugging, and integration.

Testing: In this phase, the software is tested to ensure that it meets the specified requirements. This includes functional testing, performance testing, and security testing.

Deployment: In this phase, the software is deployed to the production environment, and users are trained to use it.

Maintenance: In this phase, the software is maintained and updated as necessary. This includes bug fixes, enhancements, and modifications.