Software Engineering is an engineering discipline which is used to solve larger and more complex problem in cost-effective and efficient ways. It is mainly related with software system implementation, operation and maintenance etc. Software engineering uses systematic approaches, methods, tools and procedure to solve a problem.

In this unit we will introduce you a brief description of software components, software characteristics, different software attributes, software processes and also the phases of a software development life cycle (starting from software requirement specification to design, testing, implementation and maintenance phase) and different software development life cycle models.


A software component is an independent software unit that can be composed with other components to create a software system. 

Component characteristics: 

  • Independent: A component should be independent
  • Composable: It means that all the external instruction must take place through publicly defined interfaces.
  • Deployable: A component has to be self-contained and must be able to operate as a stand-alone entity.

Fundamental Principle of component:

Independent Software development: 

  • Large software system are necessarily assembled from components develop by different people.
  • To facilitate independent development, it is essential to decouple developers and users of components.


  • Some parts of a large system will necessarily be special-purpose software, it is essential to design and assemble pre-existing components in developing new components.

Software quality:

  • A component or system needs to be shown to have desired behavior, either through logical reasoning or testing.


  • Medical Upgrade- The Rise of 3D Printing
  • Reskilling- Upscaling Human's Digital Sophistication
  • Data-Driven Policing- Countering Data Breaches and Cyber-Attacks
  • Autonomous Driving
  • Democratization
  • 5G Technology
  • HyperAutomation
  • Robotic Process Automation (RPA)
  • Artificial Intelligence (AI) and Machine Learning
  • Software Engineering
  • Software Testing