BCA (301)
SOFTWARE
ENGINEERING
Unit-01
Introduction
Introduction to Software Engineering-
● It is a systematic and disciplined approach to software development that aims to
create high-quality reliable and maintainable software.
● In reality, software engineering encompasses every phase of the Software
Development pf Life Cycle(SDLC), form planning the budget to analysis,
design, development, software testing, integration, quality and retirement,
software engineering encompasses every phase of the software development of
life cycle.
Important of Software-
● Software engineering is most important because we have software engineers who
play an important role in developing software that makes our life easy.
● Software not only makes your computer hardware perform important tasks, but
can also help your business work more efficiently.
● The right software can even lead to new ways of working. It is therefore crucical
bussiness asset and you should choose your software carefully So, that it matches
your bussiness needs.
Features of Software-
1. Functionality-The functionality of software refers to its ability to perform and
function according to design specifications.
2. Usability- The case with with which users can learn, operate and navigate the
software.
3. Efficiency-
4. Flexibility-
5. Reliability-
6. Maintainability-
7. Protability-
8. Integrity-
Software Development of Life-Cycle(SDLC)-
● The SDLC is the cost-effective and time-efficient process that development teams
use to design and build high quality software. The goal od SDLC is to minimize
project risks through forword planning so that software meets customer
expectation during production and beyond.
● The SDLC has five phase- Inception, Design, Implementation, Maintenance, and
audit or disposal, which include an assessment of the risk management plan.
Unit-02
Software Requirement specification
Software Process-
● Software is the set of forms of instructions in the form of program to govern the
computer system and to process the hardware components. To produce software
product the set of activities is used. This set is called a software process
● It is a coherent set of activities for Specifying, Designing, Implementing and
Testing Software system
Water Fall Model-
● It is a classical model used in system development life-cycle to Create a system
with a linear and Sequential approath.
● It is a linear Sequendial approach to the SDLC that is popular in Software
Engineering and product development. The water fall model use a logical
progression of SDLC steps for a project, similar to the direction water flows over
the edge of a cycle.
Incremental Model-
● The Incremental Model is a software development methodology that can be used
to build large and complex systems.
● It is based on the idea of adding new features, or “Increments” to an existing
system instead of building the entire thing from scratch of once.
● Incremental Modes is a process of software developments where requirements
divided into multiple standaline modules of the software development cycle.
Prototyping spiral Model -
● A Prototype Model is a software development model in which a prototype is built,
tested, and refined as per customer needs. The spiral model is a risk driven
software developnlent model andis made with features of incremental, waterfall,
or evolutionary prototyping models.
● The Prototyping spiral model is a systems development method in which a
prototype in built, tested and then reworked acceptable outcome is achieved from
which the complete system product can be developed. The Spiral Model uses the
approcach of the prototyping model by building a prototype at the start of each
phase as a risk-handling technique.
Role of Management in Software Development-
● A software development manager interfaces between the technical team and the
product Management team and Company leadership. It is their Job to translate
produed requirements into work items that the team con perform.
● To ensure that the development and Maintenance of software is systematic,
disciplined and quantified.
Role of Matrices and Measurement-
● A measurement represents the size, quantity, volume, or dimension of a specific
attribute of a product or process. Software measurement is a titrate attribute of a
property of a software producd or the software development process.
● The matrices can be used to measure size, cost, effort, product quality of a project
as well as putting a value on the quality of the process taken and personal
productivity.
Problem Analysis -
● Problem analysis is a series of steps for identifying problems, analysing them and
developing solutions to address them. It inquiry or investigation into the causes of
an error, failure, or unexpected Incident.
● Problem analysis is way of understanding the context with in which you intend to
work. It helps you to identify what the key issues are and where you might best
apply your resources to achieve the most impact.
Requirement Specification-
● A software requirement Specification (SRS) is a document that describes what the
software will do and how it will be the expected to perform. It also describes the
functionality the product needs to fulfill the needs of all stakeholders (business,
users.).
● A SRS is a document that outlines, the specific needs of a project or system. The
Requirement Specification is important because it serves as the foundation for all
future work on the project.
Monitoring and Control-
● Monitoring and Controlling are processes needed to track, revier and regulate the
progress and performance of the project. It also identifies any areas where
changes to the project management method are required and initiates the required
changes.
Unit-03
Software Design
Introduction
● Software design is the process of envision and defining software solutions to one
or more sets of problem. One of the main components of Software design is the
software development process that liots specifications used in Software
engineering.
● A good software design gives you the privilege of detecting bugs, and debugging,
restructing, and changing the appearance and functionality of the software by
working on a specific Module.
Design principles
● Abstraction, Modularity, Dependency inversion principles interface Segregation
principle, Liskov substitution principle. Single-responsibility principle, SOLID,
Anticipate obsolescene, Correctness.
● Design means to draw or plan something to show the look, functions and working
of it.
Problem Partitioning-
● For small problem, we can handle the entire problem at once but for the
significant problem,
divide the problem and conquer the problem into smaller pieces so that each piece
can be captured seperately.
● It is the process of mapping software functional requirements into a set of
program modules for implementation.
Abstraction-
● Through the process of abstraction, a programmer hides all but the relevant data
about an object in order to reduce complexity and increase efficiency. In the same
way that abstraction sometimes works in art, the object that remainsis a
representation of the original, with unwanted detail omitted.
● It is used to hide background detaits or any unnecessary implementation about the
data so that users only see the required information.
Top-down and Bottom-up Design-
● The Top-down approach starts with an overall design and gradually drills down
into smaller components, while the bottom-up approach starts with small
components and gradually combines them to form a larger system. Depending on
what type of application you are building, you have to decide which way would
be best.
● A Top-down approach with the big pieces the breaks down into smaller segments.
● A Bottom-up approach is the piecing together of systems to give rise to more
complex system.
Structured Approach -
● A System Analyst Studies an existing system against the backdrop of the systemis
overall objective and then do change or implement new Systems (s) to enchance
its operation.
Functional Versus Object Oriented Approach-
● Object oriented design is the result of focusing attention not on the functionne
performed by the program but instead on the data that are to be manipulated by
the program.
● Both functional programming and Object-Oriented Programming uses a different
method for storing and manipulating the data. In functional programming data
cannot be transformed by creating functions. In object-oriented programming data
is stored in object.
Design Specification-
● A design specification is a detailed document that sets out exactly what a product
or a process should present.
● It is a set of design criteria that is created before the designing process begins sed
torgets and it is used to set targets and parameters for the designer in order do
ensure their product is relevant for what it is being designed for.
Design Verification-
● A design verification achieved by identifying input and output design variables
developing a variable dependency graph, propogating constraints over the graph,
and checking the values of the design. Variable against these constraints.
● It provides evidence (test results) that the design output (product's requirements
and Specifi collions).
Monitering and Control-
● Project management monitering and contralling means actively reviewing the
status of your project as it proceeds, evaluating potential abstacles, and
implementing necessary changes.
● The objective of project monitoring and control is to review the project
performance and progress, risks, issues, stokeholders commitments and
involvement against project plans.
Cohesiveness-
● Cohesion refer to what module can do internally. It is also called Intro-Module
binding as it measures the strength of relationship of functionalities inside a
module/ package/component.
It defines to the degree to which the elements of a module belong together.
Coupling -
● It is the Inter-dependency or degree of relationship between multiple
Modules/Packages/Components. Coupling is also called inter module binding.
Multiple Modules/Package/Components that are highly coupled are strongly
dependent on each other.
● It is the degree interdependence between software modules, a measure of how
closely Connected two routines OT Modules are:
Fourth Generation Techniques-
● (4GT) is a software development methodology that emphasizes using high-level
programining launguages and automated tools do expedite the software
development process.
● (4GT) techniques are designed to improve the productivity ofdevelopers and
reduce the time and cost of software developer.
● Each enables the software engineer to specify some characteristics of software at
a high level.
Functional Independence-
● It is achieved by developing function that perform only one kinds of task and do
not excessively interact with other modules. Independence is important because it
make implementation more accessible and faster.
● It mean that a cohesive module performs a single task or function.
● It is a Key of good design.
Software architecture
● A software is an abstract view of a software system distine from the details of
Implementation, Algorithms, and data representation.
● Software Architecture Serues as the blueprint for the System by giving and
overview of how the managing the complexity of it. This helps with the
Coordination of different parts and allows for them to be tracked both during the
development process and after it.
Unit-04
Coding
Top-down-
● It is a programming style the mainstay of traditional procedural language in which
design begins by specifying complex pieces and then dividing them into
successively smaller pieces. It is also about breaking down a systems into the
subsystem that make it-up.
Bottom-up programming-
● Bottom-up programming is the opposite top-down programming. It refers to a
style of programming where an application constructed starting with existing
primitives of the programming language.
Structured Programming-
● Structured Programming encourage dividing an application program into
hierarchy of modules element which in turn may contain other such elements.
With in each element, code may be further structured using blocks of related logic
designed to improve readability and maintainability.
● It is also a programining paradigm to improving the clarity, quality, and
development time of a computer program.
Information Hiding -
● It is the principle segregation of the design decisions in a computer program that
are most likely to change.
● Data hiding is an object-oriented programming(OOP) technique specifically used
to hide internal object details.
Ex: Data Members.
● Data hiding guarantees exclusive data access to class merabers only and protects
and maintains object indegrity.
● Information hiding makes method and variables private, hiding the internal logic
from other classes. Developers can change the internal logic without changing
dependent code.
Programming Style
● It is also known as code style, is a set of rules or guidelines used when writing the
source code for a conmputer progrous. It is often claimed that following a
particular programming style will help programmers read and Understand source
code conforming to the style and help to avoid introducing errors.
● Common style are imperative functional logical, and object-oriented languages.
Programmers can choose from these coding language paradigms to best serve
their need for a specific project.
Internal Documentation
● It in the practice of authoring and maintaining clearly detailed processes and
procedures for reference by your internal team members.
● The definition of internal documentation is a written record of your company's
processes that employees can use to complete their work.
Testing principles -
● The presence of defects indicates that the software is not working as expected.
This principle means that testing help to identify defects or error in the software.
Ex: If a webside to not loading properly it indicates that there is a defect in the
website’s code.
● These principles of software testing describe how testing engineers or software
testers should develop code that is error-free, clear and maintainable.
Levels of texting-
● There are four levels of testing:
1. Unit Testing
2. Integration Testing
3. System Testing
4. Acceptance Testing
● These four levels of testing must be completed before the software is realeased, as
there testing levels add value to the (SDLC).
Functional Testing-
● It is a type of software testing in which the system is tested againt the functional
requirement and specifications. Execute the tests ensure that the desired outputs
are generated.
Structured Testing-
● It is a type of software testing. This testing in used to test the internal design of
the software or the structure of the coding for the particular software. Structural
testing uses white box testing techniques.
● Structural testing is a type of software testing which user the internal design of the
software for testing.
Test Plan
● It is a detailed document that catalogs the test Strategies, Objectives, Schedule,
Estimations, deadlines, and resource required to complete that project.
● It is also a document detailing the Objectives, Resourses, and processes for a
specific test session, for a software οr hardware product.
Test Care Specification-
● It is a document describing a detailed summary of what test scenarios will be
tested and how they will be tested.
● It specifies the test's purpose, identifies required step by step procedures, input
and desired outpud, and outlines the pass/fail criteria for determining acceptance.
● It is a specification of which test suites and test cases to run and which the skin. It
can also group several test cases, into canf cases with in it and clean-up function.
Reliability Assessment-
● It is a field of software testing that relates to testing a software ability to function,
given environmental conditions for a partical amount af time. It helps discover
many problems in the software design and functionality.
● It is a type of software testing that evoluates the ability of a system to perform its
intended function consistently and without failure over an extended period of
time.
● The goal of reliability testing is to identify and address issues that can cause the
system to fail or to become unavailable.
Software testing strategies
● The test strategy is a document that explain the overall approach to testing for a
specific project or product in the software testing life cycle(STLC). It is usually
created at the start of the testing process and is used to guide the entire testing
effort.
● A test strategy is useful in software development to create a plan that define an
approach to the software testing life cycle(STLC). Its primary use is to guide
quality assurance and to define the scope and coverage of testing.
Verification and validation -
● Verification is a process of determining if the software is designed and developed
as per the specified requirements. Validation is the proces of checking if the
software (end product) has meet the client’s true needs and expectations.
● A example of verification testing is unit testing. It checks whether Individual
components of the software meet their specifications. An example of validation
testing is user acceptance testing. It tests whether the software meets end-user’s
needs.
Unit Testing And Integration Testing
Unit Testing:- is typically performed by the developer. It is a testing method
using which every independent are tested to determine if there are any issue by
the developer himself.
Integration Testing:- is the process of testing the interface between two software
units or module.
While unit tests always take results froma single unit, such as a function call,
integration test may aggregate result from various parts and source. In an
integration test there is no need to mack away parts of the application. You can
replace external system but the application works in an integrated way.
Alpha and Beta Testing-
● Alpha Testing is done within the organization, while Beta testing is done is the
user's environment.
● During Alpha testing only functionality and usability are tested, while during Beta
testing usability, functionality, security, and reliability are tested to the same
depth.
● Alpha testing is a type of testing that is done on an application to wards the end of
a development process when the product is almost in a usable state.
● Beta testing is an apportunity for real users to use a product in a production
environment to uncover any bugs or issues before a general release.
● Beta testing is the final round of testing before releasing a product to a wide
audience.
System Testing-
● System testing is defined as testing of a complete and fully integrated software
product. This testing falls in black-box testing where in knowledge not a pre-
requisite and is done by the testing team.
● It takes place after integration testing and before the acceptance test.
Debugging-
● It is the process of finding and fixing errors or bygs in the source code of any
software.
● When software does not work as expected, computer programmers study yhe code
to determine. Why any errors occurred.
● In hardware development the debugging process looks for hardware components
that are not installed or configured correctly.
Unit-05
Software Project Management
● Software Project Management is a proper way of planning and leading software
projects. It is a part of project management in which software project are planned
implemented, monitored and controlled.
The Management Spectrum-
It describes the management of a software project or how to make a project
succesful. It focuses on the 4p’s:
1. People
2. Product
3. Process
4. Project
● Here, the manager of the project has to control all these p’s to have a smoothh
flow in the project process and to reach the goal.
● For properly building a product there’s a very important concept that we all
should know in software project planning while developing a product.
● There are four critical components in software project planning which are know
as the 4p’s:
1. Product
2. Process
3. People
4. Project
● These components play a very important role in your project that can help your
team meet it’s goals and objective.
The People-
● The most important component of a product and it’s successful implementation is
human resources. We need to have a good team in order to save our time, cost,
and effort. Some assigned roles in software project planning are project manager
team leaders, stakeholders, analysts and other IT Professionals. Managing people
successfully is a tricky process which a good project manager can do.
Product-
● As the name inferred this is the deliverable or the result of the project. The project
manager should clearly define the product scope to ensure a successful result
control the team members as well technical hurdles that he or she may encounter
during the building of a project. The product can consist of both tangible or
intangible such as shifting the company to a place or getting a new software in a
company.
The Project-
● The last and final P in software project planning is project. It can also be
considered as a blueprint of process. In this phase, the project manager plays a
critical role. They are responsible to guide the team members to achieve the
project’s target and objectives, helping and assisting them with issues, checking
on cost and budget and making sure that the project stays on track with the given
deadlines.
Cost Estimation-
● Software cost estimation is the process of predicting the effort required do
develop a software system. Many estimation models have been proposed over the
last 30 years. This paper provides a general overview of software cost estimation
methods including the recent advances in the field.
● Cost estimation accounts for ech element required for the project from materials
to labor-and calculates a total amount that determines a project budget. An initial
cost estimate can determine whether an organization greenlights a project.
Project Schedulling
● It is a project management process that consists of creating and managing a
schedule to organize the tasks, deliverables. project on and milestone of a project
on a time table.
● It consists of assigning stard and end data to individual tasks and allocating
appropriate resources within as estimated budget. This is what allows you to make
sure the team can complete their tasks on time. It only focuses on the tasks, their
deadlines and project dependencies.
Staffing
● It is the continuous process of recruiting, evaluating, and hiring employess with
appropriate skills for specific positions. It is a temparary solution to fill vacant
positions for a short period of time.
● It is the process of hiring eligible candidates in the organization or company for
specific positions. In management, the meaning of staffing is an operation of the
recruiting the ermployees by evaluating their skills.
Software Configuration Management-
● It is a systems engineering process that tracks and monitor's changes to a software
system configuration metadata. In SD Configuration management is commonly
used alongside version control and CI/CD in frastructure.
● It is the process of identifying defining the software items in a system, controlling
the realease and change of these items throughout, the system life cycle, recording
and reporting, the status of configuration items and change requests, and
veritying.
Structured us Unstructured Maintenance-
● Software maintenance refers to the process of Modifying and update a software
after it has been delivered to the customer.
● Unstructured maintenance wades straight into the source code and makes changes
based on that alone. Structured maintenance examines and modifies the original
design, and then reworks the code to match it. Clearly structured maintenance is a
more reliable and (usually) a more efficient process.
Block box testing-
● Black box, testing, a form of testing that is performed with no knowledge of a
system’s internals, can be carried out to evaluate the functionality, security,
performance, and other aspects of an application. Dynamic code analysis is an
example of automated black box security testing.
White box besting
● White box testding in a form of application testing that provides the tester with
complete knowledge of the application being tested, including access to source
code and design documents.
Cost efficient software
● Paired with the right software and digital technologies, cost efficiency strategies
can help companies make more strategic decisions that drive innovation, shift
procurement to become a value creation center, and reduce operating costs while
increasing operational efficiency and profidability.