This document provides an overview of key topics in software engineering including the software development life cycle (SDLC), common software development models, software testing, the unified modeling language (UML), software maintenance, and case tools. It also outlines potential thesis, research, and project topics such as data modeling, UML, SDLC methodologies, software quality, and software project management. The document introduces software engineering principles and describes why software engineering practices are required to manage large, complex software projects and products.
2. Table of Contents
● Introduction
● Need of Software Engineering
● SDLC
● Software Development Models
● Software Testing
● UML
● Software Maintenance
● Case Tools
● Thesis, Research and Project Topics
3. Introduction
Software Engineering is a branch that deals with the development and evolution of
software products by employing certain methodologies and well-defined scientific
principles. For developing a software product certain processes need to be followed
and outcome of which is an efficient and authentic software product. The software is
a group of executable program code with associated libraries. Software designed to
satisfy a specific need is known as Software Product.
4. Why Software Engineering is required?
Software Engineering is required due to the following
reasons:
● To manage Large Softwares
● For more Scalability
● Cost Management
● To manage dynamic nature of software
● For better Quality Management
5. SDLC(Software Development LifeCycle)
SDLC consists of the following phases:
● Requirement Gathering
● Feasibility Study
● Software Design
● Coding and Implementation
● Testing
● Deployment
● Maintenance
7. Waterfall Model
It is a simple model for software development which defines that all the
phases of SDLC take place in a linear manner. Simple meaning that if
one phase is finished then only the next phase is started. According to
this model, all the phases are executed in sequence with the planning
of next phase in the previous phase. Also, this model will not function
properly if there are certain issues left in the previous phase.
8. Iterative Model
It is another model for software development in which the whole process takes
place in iterations. Iteration simply means repeating steps after a cycle is over.
On the first iteration, the software is developed on a small scale and then the
subsequent steps are followed. During the next iteration, more features and
modules are added. On completion of each iteration cycle, software is produced
which have their own features and capabilities. The management team works
on the risk management and prepare for next iteration.
9. Spiral Model
Spiral Model is a combination of iterative model and any one of the other
SDLC model. The most important feature of this model is the consideration
of risk factor which left unnoticed by other models. Initially, the objectives
and constraints of the software product are determined. During next
iteration, the prototype of the software is created. This process also
includes risk analysis. In the fourth phase, next iteration is prepared.
10. V-Model
In the waterfall model, we can go to next step only if the previous step is
completed. Also, we cannot go back to the previous stage if some
change is required. This drawback of waterfall model is fulfilled by the V-
Shaped Model which provides testing of each phase in a reverse
manner. In this model, test plans and test cases are created according to
the requirements of that stage to verify and validate the software product.
Thus verification and validation go in parallel in this case.
11. Software Testing
It is the process of verifying and validating the software product to
check whether it meets the user requirements or not as expected.
Moreover, it also detects underlying defects, errors, and bugs that left
unnoticed during the process of software development. As a whole,
software testing detects software failures.
12. Types of Software Testing
Following are the types of Software Testing:
● Alpha Testing
● Beta Testing
● Acceptance Testing
● Unit Testing
● Integration Testing
● System Testing
13. UML
UML or Unified Modeling Language is language in software
engineering for visualizing and documenting the components of a
software system and is created by Object Management Group
(OMG). It is different from programming languages. UML
implements object-oriented concepts for analysis and design.
15. Software Maintenance
After the Software product is successfully launched in the market,
timely updations and modifications needed to be done. This all comes
under Software Maintenance. It includes all those measures taken
after the delivery to correct errors and to enhance the performance.
Software Maintenance does not merely means fixing defects but also
providing time to time updations.
16. Types of Software Maintenance
Following are the types of Software Maintenance:
● Corrective Maintenance
● Adaptive Maintenance
● Perfective Maintenance
● Preventive Maintenance
17. Case Tools
Case or Computer-aided Software Engineering are computer-based automated
tools for development and maintenance of software products. Just as the CAD
(Computer-aided design) is used for designing of hardware products, Case is
used for designing of software products. Case tools develop high-quality and
easily maintainable software products.
Elements of Case Tools are:
● Central Repository
● Upper Case Tools
● Lower Case Tools
● Integrated Case Tools
18. Main Topics in Software Engineering for
project, thesis and research
● Data Modeling
● UML
● SDLC
● Software Models
● Ontology
● Software Quality
● Software Testing
● Software Maintenance
● Verification and Validation
● Software Project Management