Introduction to Software Engineering

Introduction to Software Engineering

The application of scientific principles to the design and creation of software. The field uses a systematic approach to collect and analyze business requirements in order to design, build, and test software applications to satisfy those business requirements.



SDLC - Software Development Life Cycle

Systematic process to develop high-quality software in a predictable timeframe and budget. The goal of the SDLC is to produce software that meets a client’s business requirements. The SDLC defines phases of the software development process that encompass their own process and deliverables. It is a cycle of planning, design, and development that can be implemented as an iterative approach to software development. Adherence to the SDLC minimizes risks and costs to the development of high-quality, deployable software. 

Systematic process for software development

Advantages :- Risk reduction and improved efficiency, Facilitates communication, Team members know their responsibilities, Iteration allows for changing requirements

Phases in the SDLC

  1. Planning
  2. Design
  3. Development
  4. Testing
  5. Deployment
  6. Maintenance

Requirement gathering is collecting and documenting the set of requirements that the software needs to adhere to

Designing transforms requirements into a structure that developers can use

Coding for quality entails following a set of coding practices during development

Testing is the process of verifying that the software matches established requirements and is free of bugs

Release types include alpha, beta and general availability

Documenting requires text/video that explains the software to technical and non-technical users



Requirements documentation

  1. Software requirements specification(SRS)
  2. User requirements specification(URS)
  3. System requirements specification(SysRS)



Methodologies

  1. Waterfall
  2. V-Shape Model
  3. Agile

Article content
Waterfall method
Article content
V-Shape Method
Article content
Agile method

Software Version

Version Number -> history of changes, updates and patches to software

Some version number follows the semantic numbering system

eg:- Version 9.1.33.6

  1. Indicates the major changes to the software, such as new release (9)
  2. Indicates the minor changes were made to a piece of software (1)
  3. Indicates the patches/minor bug fixes (33)
  4. Indicates the build numbers, Build Dates, and less significant changes (6)


Software Testing

Three categories of testing

  1. Functional
  2. Non-Functional
  3. Regression

Unit testing - verifies small , independent chunks of code

Integration testing - looks for errors when two / more chunks of code are combined

System testing - validates the system as a fully completed product

Acceptance testing - verifies implementation of user requirements and business processes


Software Documentation

Product Documentation - Relates to product functionality

Process Documentation - Describes how to complete a task

Types of product documentations

  1. Requirements
  2. Design
  3. Technical
  4. QA
  5. User


Summary

  • Software engineering is the application of scientific principles to the design and creation of software. 
  • Responsibilities of a software engineer include designing, building, and maintaining software systems.  
  • Using the SDLC can improve efficiency and reduce risks by:  
  • letting team members know what they should be working on and when  
  • facilitating communication between the customer, other stakeholders, and the development team 
  • letting stakeholders know where they fit into that process and  
  • letting cross-domain teams know when they have completed their tasks so development can move to the next phase.   
  • Common software engineering processes are requirements gathering, design, coding, testing, releasing, and documenting. 
  • The requirement gathering process entails identifying stakeholders, establishing goals and objectives, eliciting requirements from the stakeholders, documenting the requirements, analyzing, prioritizing, and confirming the requirements. 
  • An SRS is a document that captures the functionalities that the software should perform and also establishes benchmarks or service levels for its performance. 
  • A URS is a subset of the SRS that details user specification requirements. 
  • The SysRS contains the same information as an SRS, but can also additionally include system capabilities, interfaces, and user characteristics, policy requirements, regulation requirements, personnel requirements, performance requirements, security requirements, and system acceptance criteria. 
  • Waterfall, V-shape model, and agile are all different methodologies for implementing the software development life cycle. 
  • Functional testing is concerned with inputs and corresponding outputs of the system under test, non-functional testing tests for attributes such as performance, security, scalability, and availability. Whereas regression testing confirms that a recent change to the application, such as a bug fix, does not adversely affect already existing functionality. 
  • Types of documentation include requirements, design, technical, quality assurance, and user. 

To view or add a comment, sign in

More articles by Nancy Varghese

Others also viewed

Explore content categories