Software Engineering Hand Notes
Software Engineering Hand Notes
Introduction
Introduction to Software Engineering
● A software is a program or set of program ............... instructions which provide
desired functionality and engineering is the process of designing building
something that serve a particular purpose and find a cost effective solution to
problem.
● Software Engineering is a systematic approach to the design, development,
operation and maintenance.
Role of Software
1. As a Product:-
● It delivers the computing potential accross network hardware.
● It enable the hardware to....... the expected functionality.
● It acts as information transformer because it produces, manages, modifies, display
or transmit information.
2. As a vehical for delivering a product:-
● It provides system functionality. (Ex: Payroll system)
● It controls other software. (Ex: Operating system)
● It help build other software. (Ex: Software tools)
3. Reusability:- A software product has good reusability if the different modules of the
product can easily be reued to develop new product.
4. Testability:- Here software facilitates both the establishment of test criteria and
evaluation of the software with respect to those criteria.
6. Portability:- In these case, software can be transferred from one computer system to
another computer system.
7.Adaptability:- In these case, software allows differing system constraints and user
needs to be satisfied by making changes to the software.
3. Handing Big Project:- Big project are not made in few days and they require lot of
planning and management. Software engineering handle big projects without any
problem, company has to go for software engineering approach.
4. To Reduce Time:- Anything that is not made according to the plan always........ time
and if you are making big software then you may need to run many code to get the
ultimate running code. If it is not well managed then it can be take a lot of time. So if
you making your software according to software engineering approach then it will be
reduced lot of time.
5. Reliable Software:- Software should be relable means if you have delivered the
software then it should be work for at least its give time. If any buges come in the
software then company is responsible for soving all these bugs. Because in software
engineering, testing and maintanence is provide so there is no worry of its reliability.
3.Efficiency:- It refer to the ability of the software to use system resources in the most
effective and efficient manner. The software should make effective use of storage space
and executive command as per desired timing requirement.
-:SDLC Phases:-
The SDLC process divided into the following stage:-
Requirement collection and analysis
Feasibility study
Design
Coding
Testing
Installation/Deployment
Maintenance
Phase:-3 Design
In this phase, the system and software design document are prepare as per the
requirement specification document. This help define overall system architecture.
There are two kinds of design document development in thie phase: High-
Level Design(HLD):-
1. Brief description and name of each module.
2. An outline about the functionality of every module.
3. Database tables identified along with their key elements.
4. Complete architecture diagrams along with technology.
2. Low-Level Design(LLD):-
1. Functional logic of the module.
2. Database table which include type and size.
3. Complete detail of the interface.
4. Listing if error message.
5. Complete input and outputs for every module.
Phase:-4 Codings
Once the system design phase is over, the next phase is coding. In this phase,
development start build the entire system by writing code using the chosen
programming language. In the coding phase, tasks are divided into units or modules and
asigned to the various developments. It is the longest phase of the Software
Development Life Cycle process.
Phase:-5 Testing
Once the software is complete, and it is deployed in the testing environment the testing
team starts testing the functionality of the entire system. This is done to verify that the
entire application. This proces continues until the software is bug-free, stable, and
working according to he business needs of the system.
Phase:-6 Installation
Once the software testing phase is over and no bugs or errors left in the system then the
final deployment process starts. Based on the feedback given by the project manager, the
final software is released and checked for depolyment issues if any.
Phase:-7 Maintenance
Once the system is deployed, and customers start using the developed system following
three activities
Bug fixing:- buys are reported because of some.......... which are not tested at all.
Upgrade:- upgrading the application to the never versions of the software.
Enhancement:- Adding some new features into the existing software.
Fuction requirement:-
→ Discrive fuctionality of system Service
→ Depends on types of software expected user.
SRS Document:-
Software Process:-
A Software Process (also known as software methodology) is a set of related activities
that leads to the production of the software. These activities may involve the
development of the software from the scratch, or modifying an existing system.
A software process must include the following four activities:-
1) Software Spacification:- It is define main functionality of the Software.
2) Software Design and Implimentation:- The Software is to be designed and
programmed.
3) Software Verification and Validation:- The Software must confirm its spacification
and meets the customer need.
4) Software Evalution or Software Maintenance:- The Software is being modified to
meet customer and market requirment changes.
● In the waterfall model, we must plan and schedule all of the activities before
starting working on them (plan-driven process).
● Plan driven process is a process where all the activities are planned first, and the
progress is measured against the plan.
Disadvantage:-
1) No work software is produced until late during the life cycle.
2) High amount of risk.
3) No good for object oriented.
4) Poor model for large and orgoing project.
Incremental Model:-
● It is use when requirments are well undarstood.
● Multiple independent deliveries are identified.
● Work flow in a linear fashion.
● Interative in nature, focuses on an operational product with each.
● Incremental model is process of software development where requirments are
broken down into multiple standalone moduls of software development cycle.
● Incremental model is done in steps from analysis, design implementation,
testing/verification, maintenance.
Advantage:-
1) The software will be generated quickly during the software life cycle.
2) It is flexible and less expensive to change requirements and scope.
3) This model is less costly compared to other and the development stage change can
be done.
4) A costomer can respond to each steps of building.
5) Errors are easy to be identified.
Disadvantage:-
1) It require a good planning designing.
2) All requirement not collected up front for the entire software.
3) Each phase is rigid and does not overlap each other.
Advantage:-
1) Additional fuctionality and change can be done at letter stage.
2) Cost estimation becomes easy.
3) Development is fast & featurs are added in systematic way.
4) There is always space for costomer feedback.
Disadvantage:-
1) Risk is not meeting the schedule and budget.
2) Documentation is made as it has intermediate phases.
3) It is not advisable for smaller projects it might cost is lots.
Role of Management in Software Development:-
1) Planning:- Project manager begins with planning which is perhaps the single largest
responsibility of the project manager.
2) Monitoring and control:- The projet monitoring & control phase of the management
process is the longest in terms of duration. It include alt activity of project management
has to perform while the development is going on to ensure that project
developed to the plan.
1) Software Engineer:- A Person who is develop the Software and Solve the
problem in software engineering.
2) Managers:- A Person who is guid every things.
3) Costomers:- A person who view the problem.
4) Users:- A person who view the solution.
⇒ It is use for calculate the effort, development time average staff size and productive.
The most important principal is SOLID Principal. The key Software Design Principal
are as:-
Ex. An Account class is responsible for managing Saving and Current Accout but
current and Saving Account Classes wouldbe responsible for manager.
(2) Open/Closed Principal (OCP):- This Principal states that software entities (Class,
modules, fuctions) shoud be open for extension but closed for modification
(3) Liscov Substitution Principal (LSP):- This Principal states that fuction That use
pointers or references to base classes must be able to use objects of derived classes
without Knowledge it.
(4) Interface Segregation Principal (ISP):- This pricipal states that clients should not be
forced to depend upon Interfaces that they donot use. This means the numbers of
members In the Interface that is visible to the dependent class should be minimized.
2. DRY (Don't Repeat yourself):- This Principal states each small pieces of knowledge
(code) may only occur exactly once in the entire system. This helps us to write scalable,
maintainable and reusable Code
Ex:- Asp.net mvc framework, work on this principal.
3. KISS (Keep it Simple, Stupid:- This Principal states that try to keep each small piece
of software simpal and unnecessary complexity should be avoided. This helps us to
write easy maintainable Code.
4. YAGNI (You ain't gonna need it):- This principal states that always implement things
when you actually need theem never implements things before you need them.
Problem Partitioning
Dependence between modules in a software System is one reasons for high maintenance
costs. Clearly proper partitioning will make the system easier design easier to
understand.
When solving a small problem, the entire problem can be tackled at once.
The complexity of large problems and the limitations of human minds do not allow large
problem to be treated
Basic aim of problem analysis is to obtains a clear understanding of the need of the
clients and the user.
The goal is to divide the problem into manageable small pieces that can solve
speparately, because the cost of solving the entire problem is more than the sum of the
cost of solving all the pieces.
Abstraction
Abstraction is the act of representing essential features without including the
background details or explanations. In the computer science and software engineering
domain the absraction principle is used to reduce complexity and allow efficient design
and implementation of Complex software system.
IMAGE
Top-down approach starts with the big picture it bracks down from there into smaller
segments.
A bottom-up approch is the piecing togeter of systems to give rise to more complex
system, thus making the orginal systems, Sub-systems of the emergent system.
Top-Down approach
Each system is divided into several subsystems and Components. Each of the Subsystem
is further divided into set of subsystem and Components.
The complete software system is considered as a single entity and in relation to the
characteristics, the system is spit into sub system and Components.
The Same System is done with each of the sub system. This Process is continued until
the lowest Level of the system is reached.
Advantage:- The main advantage of Top-down approch is That its strong focus on
requirements helps to make a Design responsive according to its requirments.
Bottom-up approach:-
The Design Start with the lowest level component and Subsystem.
By using these system components, the next imidieate higher level components and
subsystem are created.
The process of contintinued till all the components and subsystem are composed into
Single Component
The amount of abstraction grow high as the design move to more high levels.
Disadvange:-
It is not so closely related to the structure of the Problem.
High Quality bottom-up solution are very hard to construct.
It lead's to proliferation of 'Potentially usefull' fuction rather than most approprite ones.
Advantage:-
The economics can results when general solution can be reused.
It can be used to hide the low-level details of Implementation and be merged with top-
down technique.
⇒ System that Interoperate with the target System are represent as:-
Super Ordinate System:- using the target system as part of higher level processing
scheme
Sub ordinate system:- use by the target system to provide data and proceessing needed
to complete the target System.
Peer level System:- Peer levet System Producing and Consuming information needed by
beers and Target System.
Actors:- Those entites that intract with the Target System by producing and consuming
information that is necessary for request.
IMAGE
The main purpose of OOA is the recognization application domain and specific
requirements of the system.
Object Modeling:- object modeling develops the static Structure of the system regarding
to object.
→It recognize the objects; relation between object and class
Process of object modeling:-
1. Recognization object and grouped into class.
2. Relationship between the classes
3. User object model diagram is generated.
4. Define attributes of user object.
5. Define operations need to perform on classes.
2. Dynamic modeling:- Examine the behaviour of the Object regarding time and
external change
Functional modeling
It is last components of object oriented design. It shows the process executed in an
object how to data change when in move between the method.
Ex:- 1. All input and output and application are recognized
2. Create data flow dig to show fuctional dependency
3. Identify the motive of every function
4. Identify the constrants.
5. Descrive the optimization criteria
Object oriented design (OOD) works around the entities and thesis characteristics
instead of fuctions involved in the software system.
Objects:- All entities involved in the solution design are know as object for example:-
Person, Banks, Company and costomers are treated as objects.
Encapsulation:- In OOD the attributes (Data and Variables) and methods (operation on
the data) are bundled together is called encapsulation. Encapsulation not only bundled
important information of an object together, but also restricts access of the data and
method.
Inheritance:- OOD allows similar classes to stack up in hierarchical manner where the
lower or sub classes are import, impliment and reuse allowed Variables and methods
from their immediate suber classes.
2. Low Cohesion:- Low Cohesion associate with undesirable Traits including difficult
is:- maintaning, reusing and understanding.
1. Fuctional Chesion:- fuction cohesion is Best Type of cohision. In which the Part of
module are grouped. besause they all contribute to the module single well defined task.
Two Element perform one fuction.
2. Sequential Cohesion:- when the Parts of module grouped due to output from one part
is the input to other.
Ex:-
27
3. Communication Cohesion:- The Port of the module are grouped between they operate
on. Same data when two Element can share one data. work on same data
4. Procedural Cohesion:- The Part of the module are grouped between a certain
sequence of execution is followed by them.
Ex-Algorithms for decoding massage.
5. Logical Cohesion:- It one of wrest type Tegunice. all the Element of module perform
similar operations.
Ex:- A set of print fuction to generate an output report arranged into single module
Coupling:-
A Coupling Indicates How closely two modules intract and how Interdependent they are
The degree of modules between two module depends on ther their interface complexity.
If the system has low coupling, its is deign of Well structured Computer System and
great design
The Coupling is an indication of strength of interconnection between all the components
system.
Highly Coupled:- system have interconnection in which program, unit depend upon
each other.
→Highly coupled fully depend upon each other.
Loosely Coupled:- The loosely coupled are made up of Components which are
Indeprent and all most independent.
→Loosely coupled are Less dependancy. But it can depend to one module to another
module Elements.
Types of Coupling
Data:- Data coupling are communicate with each Other is called data coupling. They are
just passing information.
Stamp:- When two module Can Share Same data structure is called stamp coupling.
Control:- When two module are communicate with the help of control like flags.
Common:- When two module can share global data its Called common coupling.
Content:- When two module can interchang data is called Content Coupling.
Functional Independence that a module Perform a single task and need very little
intration with Other module.
A module that is highly cohesiove and also have Low Coupling with other moduls is
said to be functionaly independent of other modules.
Error Isolation:-
Whenever an error exists in a module fuctional Independences redus chances of error
propagating to other module
Further once a failure is detected, error Isolation makes it Very easy to locate error.
Module Reusability:-
A functionaly independent module performs some well defined speacific Fask.
So it becomes easy to reuse such modules is defferent Program requiring same
fuctionality
Understandability:
When moduler and functionlly indepedent Complete of design is greatly reduced
Testing begins at the Component level and work toward the integration of Entire
Computer base System.
Defferent testing techniques are appropriate at differed Point in Time.
Testing is done by developer of software, for long Prorect by on independent test group.
Testing and debugging are different activities but debugging must be accommodated in
any test start
This method is applied at Every level of software testing unit, integration, system and
acceptance.
It providing Input, If output matches with the desired results, the program is tested 'OK'
In this testing method the design & structure of code are not known to tester and testing
engineers and End user conduct this test on software.
True → Valid
False → Invalid
1. Range: between a and b the test case should be designed beyond a and b
Ex:- range(3-5)
1 2| 3 4 5 |6
2. If input selects min<max than Values Just above <just b. blow also tested.
Ex:-{20, 18, 21, 24}
4. If Internal Program or its Data Structured Pre dscribed Some Boundory values like an
array of 100 nos then it Should use test cases that are upto 100 entries only.
4. Orthogonal array testing:- The problems in which the input domain is small but it is long
enough to accomodate the testing.
Consider 3 input valu X, Y and Z all these of value have three discrete valu associated with it.
3. Graph matrices:-
1. Condition Testing:-
1. Relational Expression→E, <relational operator> E2
2. Simpal Condition→unary operators (~) NOT
3. Compound condition (E1&E2) | (E2&E3)
4. Boolen Expression→ True/False
3. Loop Testing:-
Unit Testing:-
Unit testing focuses on the smallest Element of the Software design module.
It make heavy use of white box testing
Unit box testing use white Box testing methology.
Unit testing is smallest part of Application called as units. Here testing will be done on the
Induvisual modode Independently.
Local Data structure:- Local data Structure examin to ensure that the intermediate results or
data is maintind or store properly..
Independent/Basic Path:- Independents Path are tested to Ensure that all the statement within
the module are exicuted at list once during test.
Internal Logic:- Internal Logic we have cheek Loops, Precedence Comparision of data type
Boundry conditions:- Boundry conditions are testes output or Computation at boundry valu is
correct.
Error Handling:-
Integration Testing:-
The Purpose of integration testing is to expose falts in the interaction between integrated unit.
The integration testing is the process of testing the interface between two software units or
module.
1- big bang approach: combining all the modules once and verifying the fuctionality after
Completion of individual module testing.
Ex
2. Top Down Approach:-
In top Down approach, testing takes place From top to Bottom
High level modules are tested first and then Low-Level. module and finally integrating the low
level modules to high level module.
Stubs are use as a temporary module, if a module is not ready for Integration testing.
(Stubs are dumy module) only Top module is tested with stubs.
stubs are replace with actual components one at a time in a depth-first or breadth
first mannar.
3. Bottom-up approach:-
Bottom-up approch testing take Place from bottom to up.
lowest level modules are tested first and then high level moduls and finally integrating the
high level modules to low level module.
System testing verifing that all system Element work Properly and that overall system fuction
and Performance has been achived or not
1. Alpha Testing:- It Carred out by the test team within the developing organization.
4. Performance Testing:- It is carried out to cheek whaether the System meets the non
Fuctional requirments Identified in the SRS document.
Unit:05
Software Project Management:-
Software Project Management is the art and science of planning and Leading software
projects. It is a Sub-discipline of Projects management in which software Projects are Planned,
Implemented, monitored and controlled.
The People:- It Deals with the cultivation of motivated, highly skilled People.
Software Engineering Institute has developed a people Management Capability Maturity
Model (PM-CMM) to enhance the readiness of software organizations to undertake Increasing
complex application by helping to
(1) Senior Manager:- Seniess manager Define business Issues that often have Significant
Influence on the project.
(2) Project (Tech.) Manager:- They plan, Motivate, organize and control the Practitioners who
do the work.
(3) Practitioners:- Deliver the technical skills that are necessary to engineer a product or
application.
(4) Customers:- Specify the requirements for the software to be engineered and other
stakholders who have a Peripheral interest in the outcome.
(5) End User:- Intract with the software once it is released for Production use.
3. The Software Team:- Seven Project factors to be considered when structuring a software
developments
Team:-
Dificulty
Size
Time
Degree
Quality
Delivery
Communication.
(a) Closed Paradigm:- Traditional hierarchy of authority works well when producing software
similar to Past efforts, members are less likely to be innovative-
(b) Random Paradigm:- Depends on individual initiatue of team members, work well for
Projects requiring innovation or technological break.
(c) Open Paradigm:- Hybrid of the closed and random peradigm works well for solving
complex problems, requiring Collaboration, communication
(d) Synchronous Paradigm:- Organizes team members based on the natural pieces of the
problem members have little communication outside of their Subgroups-
The PRODUCT:- The Scope of the Software Development must be establised and bounded:-
Context:- How does the software to be built fit into a larger System, Procluct, or business
context and what constraints are imposed as a result of the Context?
Information:- what customer visible data objects are produced as output from the software?
what data objects are required for Input?
fuction and Performance:- what fuction does the software performance the transform input
data into output? Are there only special
The Process:- The project managers must decide which Process model is must appropriate
based on-
→The Customer who have requested the product and the people who will do the work.
→The characteristics of the product itself.
→The Project environment in which the software team works.
The Project:- Planning and controlling a software project is done for one Primary Reason, it is
only know way to manage complexity.
Cost Estimation:-
Number of estimalion technique have been developed having Some attributes in common:-
[C=aLb]
C= Cast
L= Line of Code (Size of code)
a, b are constants
[E=1.4L 0.93]
E = Effort in Person/month
L= Line of Code (size of con
[DOC=30.4L]
Doc = documentation in no of Pages
L= Line of code
[D=4.6L o.26]
D= Duration
They actully depend on several veriable representing various aspects of software development
Environment.
for Example:-
1-user participation
2- Customer oriented change
3- memory constrants.
E =5.2 L0.91
D=4.1 L0.36
Poject Scheduling:-
An activity in which we decided how you will divide the Project Into the Smaller tasks.
you we also how these tasks will be executed.
How much time a task will take to complete.
what is milestone?
It Can be any like your software is consist of three functions the first fuction is consist on 1 st
two tasks so you will achieve it after Completing first two task
for Example: To complete task 1, I need SGB of storage as it will be consist on high graphics
and movi clips so I should check if I have enough space for task 1 or not.
Key Point:-
Some tasks will goes on in parallel
Some time things go wrong don't make Schedule to much tight
People working on the Project may fall ill.
Make estimate as nothings will go wrong and then add more few days to the final estimation
as it goes something wrong so we have at least Some extra days.
Schedule Representation
T 14
T2 7 T
T3 20 (M1)
T4 6 T3
T5 27 maxday (M2)
T6 7
T7 10 (M3)
Software Maintenance
Any work done to change the software after it is in operation is concidered to be mantenance
work.
Categories of mantenance:-
1- Corrective Maintenance
2- Adaptive maintenance
3- Perfective Maintenance
4. Preventive maintenance
1- Corrective Maintenance:-
Initiated as result of defect in software.
Change the any kind of coding, design, logical errors.
→ appropriate actions are taken to restore the correct fuctionalty of the software system.
2. Adaptive maintenance:
Modifying the Software to match changes in ever changing Environment.
→ Environment any type of outside factor:-Platform changes, Gov. Policies, bussiness rules.
4- Preventive mantenance:- Making the program easter understand and this helps us in future
mantenance work
Maintenance Log
it store→ what will be change
→what?
→when?
→why?