codingstreets
Search
Close this search box.

Software Engineering: An Introduction to Software Development

person coding on laptop
Photo by ThisIsEngineering on Pexels.com

In this article, you will learn about software engineering, which will be introduced some terms like software, software crisis, software engineering, and SLCM, etc., as well as an introduction to SLCM procedures.

Engineering – It is the tool to provide a cost-effective solution to software engineering problems.

Software – Software is the collection of documentation and programming languages built to complete a specific task.

Software Engineering (SE) – Software Engineering is the method that provides a systematic and disciplined approach to developing and maintaining software.

In other words, Software engineering is the study of developing software.

Software Crisis (SC) – Software Crisis is used in software engineering when you cannot write and provide helpful software solutions to the software issues in the required time.

Causes of Software Crisis –

  1. Project cost is over budget
  2. Project has not complete information to develop
  3. Lack of resources especially in development process
  4. Use of downgraded technology
  5. Improper knowledge of new trends
  6. Project is not profitable
  7. Project seems low quality
  8. Time management
  9. Incomplete plan

Good Qualities of Software are –

  1. Good user-interface
  2. Smooth & speedy running
  3. Simple & easy to understand
  4. Satisfying performance
  5. User-friendly & easy to use

Software Crisis Situation – Nowadays in technology, day by day, upgradation is taking place, but instead of using new tools & technology, we use downgraded technology and early days old tools & services; then, which leads to a software crisis.

Since requirements have been updated for the software as per the technology trend, we fall into software development because of not using upgraded technology.

Software Life Cycle Model (SLCM) or Process Model – Software Life Cycle Model is the development process of a software product; it includes the whole life cycle of software development from beginning to end. It is a descriptive and pictorial representation of SCLM.

The SLCM process includes the following:

  1. Feasibility Study/Analysis/Planning
  2. Requirement Analysis and Specification
    1. Requirement gathering & analysis
    2. Requirement specification
  3. Design Documents
  4. Coding or implementation
  5. Testing
  6. Maintenance

Further Explanation – 

Feasibility Study/Analysis/Planning

  • Feasibility study involves analysis of the problem and it is the most important and fundamental
  • In a company that develops software each customer has problems and we determine whether we can or not to resolve the client’s issues
  • We will estimate the approximate amount of the required resource and also estimate the time to finish.

Feasibilities Checks:

Economic: Can we complete the project within the budget or not?

Legal: Can we handle this project as cyber law and other regulatory framework/compliances.

Operation feasibility: Can we create operations which is expected by the client?

Technical: Need to check whether he current computer system can support the software

Schedule: Decide that the project can be completed within the given schedule or not.

Requirement Analysis and Specification

Requirement Gathering and Analysis:

  • The activity aims to gather all required details from the customer about the product to be created. This helps to be aware of the customer’s needs to ensure that inconsistencies and incompleteness can be eliminated.

  • Analyzing requirements is initiated by collecting all relevant details about the product that can be developed through the user and the customer’s discussions and interviews.

  • This process involves gathering as much information from the customer regarding the product they are interested in. The specifications and details of the product need to discuss with the buyer. The team of developers analyzes the requirements, keeping in mind the program’s design and coding.

Requirement Analysis and Specification

Requirement Specification/Documentation:

  • Once all confusions, contradictions, and inconsistencies have been eliminated and all requirements have been comprehended. After that, the requirement specification activity can begin.

  • Documentation of requirements is an essential process following the gathering of requirements and analysis. It’s a way to document requirements in a uniform format.

  • The user’s requirements are documented in a Software Requirements Specification (SRS) Document.

  • The customer’s requirements are determined in the gathering and analysis and then documented in an SRS document.

  • SRS must include natural language in an unambiguous way that could also contain tables, charts, DFD decision tables, and the like.

  • A Specification document can be:
    • A written document
    • A graphical model
    • A formal mathematical model
    • A collection of scenarios
    • A prototype
    • Or any combination of these

Design Documents

  • The purpose of the design is to convert requirements within documents like the SRS documents to a format that can be used in various programming languages.

  • In this stage, we sketch out the structure of the system by using SRS documents. This means that we sketched out a plan. The blueprint sketching helps team members in their continuous and organized work.

  • In other words, System design is the process of designing the architecture, components, modules, interface, and data for a system to satisfy specified requirements.


    There are two kinds of design documents developed in this phase:

  • High-Level Design (HLD)
    • Brief description and name of each module
    • An outline about the functionality of every module
    • Interface relationship and dependencies between modules
    • Database tables identified along with their key elements
    • Complete architecture diagrams along with technology details
  • Low-Level Design(LLD)
    • Functional logic of the modules
    • Database tables, which include type and size
    • Complete detail of the interface
    • Addresses all types of dependency issues
    • Listing of error messages
    • Complete input and outputs for every module

Coding / Implementation

  • In this stage, the developers begin building the whole system using code written in the language of their choice.

  • The system was initially developed as small programs referred to as units or modules.

  • The tasks are split into modules/units and assigned to different developers when coding.

  • This is the most lengthy stage in the Software Development Life Cycle process.

  • Developers from all levels (seniors, juniors, freshers) are involved in this phase.

Software Testing

  • Testing is a crucial aspect of the project since it can improve the overall quality and efficiency of the work.

  • The first question is, “Why do we need to conduct the testing?” Following software development may be a variety of things in the system or system that need to be fixed as anticipated.

  • Software testing involves studying and testing the software by using various testing methods.

  • The objective of these process can includes:
    • Verifying software completeness in regarding to functional/business requirements.
    • Identifying technical bugs/errors and ensuring the software is error free.
    • Assessing Usability, performance, security, localization, compatibility and installation.

Software Maintenance

  • Software maintenance is changing the software after its delivery to address issues, enhance performance or other aspects, or adapt the software to a new environment.

  • Maintenance is the foundation of software success.

  • If a program is created, the software must be tweaked periodically to ensure that it is up to time with the changes to the environment and the changing requirements of users.

  • These days, businesses are focusing more on the maintenance of their product.

    • For instance: Windows and several antiviruses software are updated regularly to keep their performances up.

  • Regular Maintenance of the product also maintain satisfaction level of
    the customer.

  • Software maintenance is need due to following reasons:
    • Changing the user requirements with time.
    • Changing hardware/software environment
    • To improve system efficiency.
    • To optimize the code to run faster.
    • To modify the components.
    • To eliminate any deviation from specification.
    • To eliminate any unwanted side effects.

Please comment below if you find anything incorrect in the above-discussed topic and have any further questions.

Connect on:

Recent Articles