1|M G CP
CP 1441 SOFTWARE ENGINEERING
COURSE CONTENT
Module I: Introduction: Evolution, Software Development Projects-Program versus product,
Types of Software Development Projects Software life cycle models: A few basic concepts,
Waterfall model and its extensions, Rapid Application Development (RAD), Agile development
models, Spiral model, Comparison of different life cycle models
Module II: Software Project Management, Project Planning, Metrics for project size estimations,
Project Estimation Techniques, Basic COCOMO model, Scheduling-Work break down structure,
Activity Network, Basic concepts of CPM, PERT and Gantt Chart. Software Requirements
Analysis and Specification: Requirements gathering and analysis, Software Requirements
Specification.
Module III: Software Design: overview of the design process, How to characterize a good software
design, Cohesion and Coupling, Approaches to software design, Function oriented design:
Overview of SA/SD Methodology, Structured analysis, Developing the DFD model of a system,
Structured Design, Object modelling Using UML, Unified Modelling Language(UML), UML
diagrams-Class, Interaction, Activity and State chart diagram .
Module IV: Coding and Testing: Coding, Code review, Testing, Unit testing, Black box testing,
white box testing: Basic concepts, Debugging, Integration testing, system testing, Software
Reliability and quality management: Software reliability, Software maintenance: Characteristics
of software maintenance, Software reverse engineering, Emerging Trends: Client Server Software,
Client Server architectures, CORBA, Service Oriented Architectures (SOA), Software as a
Service.
1
,2|M G CP
MODULE 1
INTRODUCTION
Software is a program or set of programs containing instructions that provide desired
functionality. And Engineering is the process of designing and building something that serves a
particular purpose and finds a cost-effective solution to problems. Software engineering is the
process of designing, developing, testing, and maintaining software. It is a systematic and
disciplined approach to software development that aims to create high-quality, reliable, and
maintainable software. Software engineering includes a variety of techniques, tools, and
methodologies, including requirements analysis, design, testing, and maintenance.
Some key principles of software engineering include:
1. Modularity: Breaking the software into smaller, reusable components that can be developed
and tested independently.
2. Abstraction: Hiding the implementation details of a component and exposing only the
necessary functionality to other parts of the software.
3. Encapsulation: Wrapping up the data and functions of an object into a single unit, and
protecting the internal state of an object from external modifications.
4. Reusability: Creating components that can be used in multiple projects, which can save time
and resources.
5. Maintenance: Regularly updating and improving the software to fix bugs, add new features,
and address security vulnerabilities.
6. Testing: Verifying that the software meets its requirements and is free of bugs.
7. Design Patterns: Solving recurring problems in software design by providing templates for
solving them.
8. Agile methodologies: Using iterative and incremental development processes that focus on
customer satisfaction, rapid delivery, and flexibility.
9. Continuous Integration & Deployment: Continuously integrating the code changes and
deploying them into the production environment.
Software engineering is a rapidly evolving field, and new tools and technologies are constantly
being developed to improve the software development process. By following the principles of
software engineering and using the appropriate tools and methodologies, software developers
can create high-quality, reliable, and maintainable software that meets the needs of its users.
Software Engineering is mainly used for large projects based on software systems rather than
single programs or applications. The main goal of software Engineering is to develop software
application for improving the quality, budget and time efficiency. Software Engineering ensures
that the software that has to built should be consistent, correct, also on budget, on time and within
the required requirements. There are Four main Attributes of Software Engineering:-
Efficiency
Reliability
Robustness
Maintainability
Software Engineering is a systematic, disciplined, quantifiable study and approach to the
design, development, operation, and maintenance of a software system.
2
, 3|M G CP
Need of Software Engineering
The necessity of software engineering appears because of a higher rate of progress in user
requirements and the environment on which the program is working.
o Huge Programming: It is simpler to manufacture a wall than to a house or building,
similarly, as the measure of programming become extensive engineering has to step to give
it a scientific process.
o Adaptability: If the software procedure were not based on scientific and engineering ideas,
it would be simpler to re-create new software than to scale an existing one.
o Cost: As the hardware industry has demonstrated its skills and huge manufacturing has let
down the cost of computer and electronic hardware. But the cost of programming remains
high if the proper process is not adapted.
o Dynamic Nature: The continually growing and adapting nature of programming hugely
depends upon the environment in which the client works. If the quality of the software is
continually changing, new upgrades need to be done in the existing one.
o Quality Management: Better procedure of software development provides a better and
quality software product
Dual Role of Software:
1.As a product –
It delivers the computing potential across networks of Hardware.
It enables the Hardware to deliver the expected functionality.
It acts as an information transformer because it produces, manages, acquires, modifies,
displays, or transmits information.
2. As a vehicle for delivering a product –
It provides system functionality (e.g., payroll system)
It controls other software (e.g., an operating system)
It helps build other software (e.g., software tools)
Objectives of Software Engineering:
1. Maintainability –
It should be feasible for the software to evolve to meet changing requirements.
2. Efficiency –
The software should not make wasteful use of computing devices such as memory, processor
cycles, etc.
3. Correctness –
A software product is correct if the different requirements as specified in the SRS document
have been correctly implemented.
3
CP 1441 SOFTWARE ENGINEERING
COURSE CONTENT
Module I: Introduction: Evolution, Software Development Projects-Program versus product,
Types of Software Development Projects Software life cycle models: A few basic concepts,
Waterfall model and its extensions, Rapid Application Development (RAD), Agile development
models, Spiral model, Comparison of different life cycle models
Module II: Software Project Management, Project Planning, Metrics for project size estimations,
Project Estimation Techniques, Basic COCOMO model, Scheduling-Work break down structure,
Activity Network, Basic concepts of CPM, PERT and Gantt Chart. Software Requirements
Analysis and Specification: Requirements gathering and analysis, Software Requirements
Specification.
Module III: Software Design: overview of the design process, How to characterize a good software
design, Cohesion and Coupling, Approaches to software design, Function oriented design:
Overview of SA/SD Methodology, Structured analysis, Developing the DFD model of a system,
Structured Design, Object modelling Using UML, Unified Modelling Language(UML), UML
diagrams-Class, Interaction, Activity and State chart diagram .
Module IV: Coding and Testing: Coding, Code review, Testing, Unit testing, Black box testing,
white box testing: Basic concepts, Debugging, Integration testing, system testing, Software
Reliability and quality management: Software reliability, Software maintenance: Characteristics
of software maintenance, Software reverse engineering, Emerging Trends: Client Server Software,
Client Server architectures, CORBA, Service Oriented Architectures (SOA), Software as a
Service.
1
,2|M G CP
MODULE 1
INTRODUCTION
Software is a program or set of programs containing instructions that provide desired
functionality. And Engineering is the process of designing and building something that serves a
particular purpose and finds a cost-effective solution to problems. Software engineering is the
process of designing, developing, testing, and maintaining software. It is a systematic and
disciplined approach to software development that aims to create high-quality, reliable, and
maintainable software. Software engineering includes a variety of techniques, tools, and
methodologies, including requirements analysis, design, testing, and maintenance.
Some key principles of software engineering include:
1. Modularity: Breaking the software into smaller, reusable components that can be developed
and tested independently.
2. Abstraction: Hiding the implementation details of a component and exposing only the
necessary functionality to other parts of the software.
3. Encapsulation: Wrapping up the data and functions of an object into a single unit, and
protecting the internal state of an object from external modifications.
4. Reusability: Creating components that can be used in multiple projects, which can save time
and resources.
5. Maintenance: Regularly updating and improving the software to fix bugs, add new features,
and address security vulnerabilities.
6. Testing: Verifying that the software meets its requirements and is free of bugs.
7. Design Patterns: Solving recurring problems in software design by providing templates for
solving them.
8. Agile methodologies: Using iterative and incremental development processes that focus on
customer satisfaction, rapid delivery, and flexibility.
9. Continuous Integration & Deployment: Continuously integrating the code changes and
deploying them into the production environment.
Software engineering is a rapidly evolving field, and new tools and technologies are constantly
being developed to improve the software development process. By following the principles of
software engineering and using the appropriate tools and methodologies, software developers
can create high-quality, reliable, and maintainable software that meets the needs of its users.
Software Engineering is mainly used for large projects based on software systems rather than
single programs or applications. The main goal of software Engineering is to develop software
application for improving the quality, budget and time efficiency. Software Engineering ensures
that the software that has to built should be consistent, correct, also on budget, on time and within
the required requirements. There are Four main Attributes of Software Engineering:-
Efficiency
Reliability
Robustness
Maintainability
Software Engineering is a systematic, disciplined, quantifiable study and approach to the
design, development, operation, and maintenance of a software system.
2
, 3|M G CP
Need of Software Engineering
The necessity of software engineering appears because of a higher rate of progress in user
requirements and the environment on which the program is working.
o Huge Programming: It is simpler to manufacture a wall than to a house or building,
similarly, as the measure of programming become extensive engineering has to step to give
it a scientific process.
o Adaptability: If the software procedure were not based on scientific and engineering ideas,
it would be simpler to re-create new software than to scale an existing one.
o Cost: As the hardware industry has demonstrated its skills and huge manufacturing has let
down the cost of computer and electronic hardware. But the cost of programming remains
high if the proper process is not adapted.
o Dynamic Nature: The continually growing and adapting nature of programming hugely
depends upon the environment in which the client works. If the quality of the software is
continually changing, new upgrades need to be done in the existing one.
o Quality Management: Better procedure of software development provides a better and
quality software product
Dual Role of Software:
1.As a product –
It delivers the computing potential across networks of Hardware.
It enables the Hardware to deliver the expected functionality.
It acts as an information transformer because it produces, manages, acquires, modifies,
displays, or transmits information.
2. As a vehicle for delivering a product –
It provides system functionality (e.g., payroll system)
It controls other software (e.g., an operating system)
It helps build other software (e.g., software tools)
Objectives of Software Engineering:
1. Maintainability –
It should be feasible for the software to evolve to meet changing requirements.
2. Efficiency –
The software should not make wasteful use of computing devices such as memory, processor
cycles, etc.
3. Correctness –
A software product is correct if the different requirements as specified in the SRS document
have been correctly implemented.
3