MC4102 - OOSE (Important Topics)
MC4102 - OOSE (Important Topics)
1. Changing Requirements
2. Providing complete Security to the software applications
3. Some times Misinterpreted requirements gives rise to a problem
4. Many times software developers face problem during System and Application
integration leading to failure of software projects also.
2) An Engineering Perspective
1
Why Software Engineering? Software Crisis & its Solution:
The Solution
Product
Description
Characteristics
The software should evolve to meet the changing demands of the
Maintainability
clients.
Dependability includes various characteristics. Dependable
Dependability software should never cause any physical or economic damage at
the time of system failure.
The software application should overuse system resources like
Efficiency
memory and processor cycle.
The software application should have specific UI and
Usability
documentation.
2
Characteristics of Good Software
Operational
Transitional
Maintenance
3) Object Orientation
Object-oriented refers to a programming language, system or software methodology
that is built on the concepts of logical objects.
Terms that are used universally in object orientation:
Objects
Classes
Object References
Encapsulation
Inheritance
Polymorphism
3
Usually, any software development is categorized into two types:
1. Backend Development
2. Frontend Development
The product development life cycle (PDLC) is the complete process of creating and
bringing a new product into the market. It includes the following 5 steps:
1. Product Conceptualization
2. Product Architecture and Design
3. Product Construction or Development
4. Product Release
5. Product Realization and Future Upgrade
Example
Planning
Implementation
Testing
Documentation
Deployment and maintenance
Maintaining
1. Waterfall model
2. Agile model
Requirements
Design
Code
Testing
4
Operations
In this Model, you can start with some of the software specifications and develop the
first version of the software. After the first version if there is a need to change the
software, then a new version of the software is created with a new iteration. Every
release of the Iterative Model finishes in an exact and fixed period that is called
iteration.
2. Design
3. Implementation
4. Testing
5. Deployment
6. Review
7. Maintenance
5
When to use the Iterative Model?
6) Process Models
Software Processes
A software process is the set of activities and associated outcome that produce a
software product. Software engineers mostly carry out these activities. These are four
key process activities, which are common to all software processes. These activities
are:
1. Software specifications
2. Software development
3. Software validation
4. Software evolution
Some examples of the types of software process models that may be produced are:
1. A workflow model
2. A dataflow or activity model
3. A role/action model
Software Crisis
1. Size
2. Quality
3. Cost
4. Delayed Delivery
6
7
7) Life Cycle Models
8) Unified Process
Unified process (UP) is an architecture centric, use case driven, iterative and
incremental development process. UP is also referred to as the unified software
development process.
8
9) Iterative and Incremental
As the name indicates, Iterative and incremental development (IID) is a model that
is an incremental model that is developed in multiple cycles of iterations. Project is
started with a comparatively small task or component and increments are made in
each cycle of the iterations until desired product is reached.
Inception
Elaboration
Construction
Transition
Advantages of IID
Disadvantages of IID
9
1. Requirements gathering
2. Design the requirements
3. Construction/ iteration
4. Testing/ Quality assurance
5. Deployment
6. Feedback
Scrum
Crystal
Dynamic Software Development Method(DSDM)
Feature Driven Development(FDD)
Lean Software Development
eXtreme Programming(XP)
Example
Attributes
Instance Connections
10
Services
Message Connections
Structures
Generalization-Specialization Structures
Whole-Part Structures
Subjects
Layers
The Booch method helps to design systems using the object paradigm. It covers the
analysis- and design phases of an object-oriented system. The method defines
different models to describe a system and it supports the iterative and incremental
development of systems.
The Booch method includes six types of diagrams such as class diagrams, object
diagrams, state transition diagrams, module diagrams, process diagrams and
interaction diagrams.
11
The Booch method notation
12
Identification of their semantics
Identification of their relationships
Specification of their interfaces and implementation
13
14
15
14) Object Modeling Technique (OMT)
Object Modeling Technique (OMT) is real world based modeling approach for
software modeling and designing. It was developed basically as a method to develop
object-oriented systems and to support object-oriented programming. It describes the
static structure of the system.
16
Purpose of Object Modeling Technique
Object Modeling Technique’s Models:
There are three main types of models that has been proposed by OMT:
Object Model:
17
Dynamic Model:
18
Functional Model:
19
Phases of Object Modeling Technique:
OMT has the following phases:
Analysis
System Design
Object Design
Implementation
20
#1) Stakeholder Analysis
#2) Brainstorming
#3) Interview
#4) Document Analysis/Review
#5) Focus Group
#6) Interface Analysis
#7) Observation
#8) Prototyping
#9) Joint Application Development (JAD)/ Requirement Workshops
#10) Survey/Questionnaire
use case
A use case is a methodology used in system analysis to identify, clarify and organize
system requirements.Every use case contains three essential elements:
The actor
The goal
The system
21
Characteristics of use case
How to write a use case
There are two different types of use cases: business use cases and system use cases.
Preconditions, or the elements that must be true before a use case can occur.
Post-conditions, or what the system should have completed by the end of the
steps.
22
Title
Value
Actor
Stakeholders
Triggers
Main Flow
Alternative Flows
Post Conditions
Non-Functional Requirements
A use case can be written in different levels of detail. For example:
23
The Difference Between Functional and Non-functional Requirements
Create an Outline
Define the Purpose
Give an Overview
Get Approval
24
How to Write Software Use Cases in an SRS
Class diagrams are the main building block in object-oriented modeling. They are
used to show the different objects in a system, their attributes, their operations and the
relationships among them.
25
The following figure is an example of a simple class:
Association
Directed Association
Reflexive Association
Multiplicity
Aggregation
Composition
Inheritance/Generalization
Realization
26
19) Identifying State and Behavior
A class includes objects with similar
properties
behavior
relationships to other objects
State
All objects have three essential features:
state
behavior
identity
27
The three most common types of operations that a class can have are
modifiers
selectors
iterators
Two types of operation are needed to create and destroy instances of a class. These
are:
Constructor
Destructor
Sequence diagram
Collaboration diagram
Timing diagram
28
Purpose of an Interaction Diagram
Important terminology
29
Drawbacks of a Collaboration Diagram
30
How to draw a Interaction diagram?
UML Tools
Structural Things
Graphical notations used in structural things are most widely used in UML. These are
considered as the nouns of UML models. Following are the list of structural things.
31
Classes
Object
Interface
Collaboration
Use case
Active classes
Components
Nodes
Behavioral Things
Grouping Things
Organizing the UML models is one of the most important aspects of the design. In
UML, there is only one element available for grouping and that is package.
Annotational Things
In any diagram, explanation of different elements and their functionalities are very
important. Hence, UML has notes notation to support this requirement.
Relationships
Dependency
Association
Generalization
Extensibility
32
UNIT III DESIGN PATTERNS
Abstract Factory
Builder
Factory Method
Object Pool
Prototype
Singleton
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Private Class Data
Proxy
Chain of responsibility
Command
Interpreter
Iterator
Mediator
Memento
Null Object
Observer
33
State
Strategy
Template method
Visitor
Criticism
The concept of design patterns has been criticized by some in the field of computer
science.
Controller
Information Expert
Creator
High Cohesion
Low Coupling
Polymorphism
Protected Classes
34
25) GoF
In 1994, four authors Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides
published a book titled Design Patterns - Elements of Reusable Object-Oriented
Software which initiated the concept of Design Pattern in Software development.
These authors are collectively known as Gang of Four (GOF). According to these
authors design patterns are primarily based on the following principles of object
orientated design.
State diagram relates with events and states. Events represents external functional
activity and states represents values objects.
The static model addresses the static structural view of a problem, which does not
vary with time. In particular, a static model defines the classes in the system, the
attributes of the classes, the relationships between classes, and the operations of each
class.Static modeling refers to the modeling process and the UML class diagram
notation is used to depict the static model.
35
Table 1. Static and dynamic models
Characteristics Static models Dynamic models
set to 1000 records on
each output link from the
stage.
o For all other source stage
types, the sample size is
set to the minimum
number of input records
among all sources on all
partitions.
A data range specifies the
number of records to include in
the sample for each data source.
36
UNIT IV SYSTEM TESTING
1. Inspections
2. Reviews
3. Walkthroughs
4. Desk-checking
Activities involved in validation:
Static verification, also known as analysis or, static testing - This is useful for
proving the correctness of a program.
37
Formal verification
28) Object Oriented Checklist
OOPs Concepts:
1. Encapsulation
2. Abstraction
3. Polymorphism
4. Inheritance
It mainly concentrates on -
Mainline functions
Basic Usability
Accessibility
Error Conditions
38
How to do Functional Testing
Manual Testing or automation tools can Using tools will be effective for this
be used for functional testing testing
39
Functional testing describes what the Nonfunctional testing describes how good
product does the product works
Here is a list of popular Functional Testing Tools. They are explained as follows:
Selenium
QTP
JUnit
soapUI
Watir
40
Types of Structural Testing:
There are 4 types of Structural Testing:
Statement Coverage
Branch Coverage
Path Coverage
41
31) Class Testing
According to Davis the dependencies occurring in conventional systems are:
42
How to Create Mutant Programs?
A mutation is nothing but a single syntactic change that is made to the program
statement. Each mutant program should differ from the original program by one
mutation.
There are several techniques that could be used to generate mutant programs. Let's
look at them
Stryker
PIT Testing
Mutation Score:
The mutation score is defined as the percentage of killed mutants with the total
number of mutants.
43
33) Levels of Testing
Testing was done without executing the program Testing is done by executing the program
This testing does the verification process Dynamic testing does the validation process
Static testing is about prevention of defects Dynamic testing is about finding and fixing the defects
Static testing gives an assessment of code and Dynamic testing gives bugs/bottlenecks in the software
documentation system.
44
Static testing involves a checklist and process to be Dynamic testing involves test cases for execution
followed
This testing can be performed before compilation Dynamic testing is performed after compilation
Static testing covers the structural and statement Dynamic testing techniques are Boundary Value
coverage testing Analysis & Equivalence Partitioning.
Cost of finding defects and fixing is less Cost of finding and fixing defects is high
Return on investment will be high as this process Return on investment will be low as this process
involved at an early stage involves after the development phase
More reviews comments are highly recommended for More defects are highly recommended for good
good quality quality.
Since testing is of two types like 1) Static testing 2) Dynamic testing; accordingly the
tools used during these testing are also known as
1) Static testing tools
2) Dynamic testing tools
Static Test Tools:
1) Flow analyzers: They ensure consistency in data flow from input to output.
2) Path tests: They find unused code and code with contradictions.
3) Coverage analyzers: It ensures that all logic paths are tested.
4) Interface analyzers: It examines the effects of passing variables and data between
modules.
Dynamic Test Tools:
1) Test driver: It inputs data into a module-under-test (MUT).
2) Test beds: It simultaneously displays source code along with the program under
execution.
3) Emulators: The response facilities are used to emulate parts of the system not yet
developed.
4) Mutation analyzers: The errors are deliberately ‘fed’ into the code in order to test
fault tolerance of the system.
45
35) Software Maintenance – Categories – Challenges of Software Maintenance
Software maintenance is widely accepted part of SDLC now a days.
It stands for all the modifications and updations done after the delivery of software
product.
There are number of reasons, why modifications are required, some of them are
briefly mentioned below:
Market Conditions
Client Requirements
Host Modifications
Organization Changes
Types of maintenance
Corrective Maintenance
Adaptive Maintenance
Perfective Maintenance
Preventive Maintenance
Cost of Maintenance
46
There are various factors, which trigger maintenance cost go high, such as:
Maintenance Activities
Software Re-engineering
47
Re-Engineering Process
Decide
Perform
Restructure Program
Re-structure data
Component reusability
Reuse Process
48
36) Maintenance of Object Oriented Software
Object-oriented management is a model for management and for project
management. The objective of object-oriented management is to provide a clear set of
principles set into a framework that enables all participants while minimizing
management overhead.
Concepts
49
Following are the most important tools used for both functional and regression testing
in software engineering:
Selenium
50
UNIT V SOFTWARE QUALITY AND METRICS
Use-Cases are a way to capture functional requirements of a system. The user of the
system is referred to as an ‘Actor’. Use-Cases are fundamentally in text form.
The environment in which the project will be developed (such as the language,
the team’s motivation, etc.)
51
Step 1: Calculate Unadjusted Use-Case Points.
CP = TUCP*TCF
52
It is adapted from the TFPCP. The main aim of this paper is to use all the available
information during the OO design phase to estimate Object Oriented Design Function
Points (OODFP).
The novel feature of this approach is that it considers all the basic concepts of OO
systems such as inheritance, aggregation, association and polymorphism.
Importance
All risk management plans follow the same steps that combine to make up the overall
risk management process:
Establish context
Risk identification
Risk analysi
Risk mitigation
Risk monitoring
Risk management strategies should also attempt to answer the following questions:
1. What can go wrong? Consider both the workplace as a whole and individual
work.
2. How will it affect the organization? Consider the probability of the event and
whether it will have a large or small impact.
3. What can be done? What steps can be taken to prevent the loss? What can be
done recover if a loss does occur?
53
4. If something happens, how will the organization pay for it?
After the company's specific risks are identified and the risk management process has
been implemented, there are several different strategies companies can take in regard
to different types of risk:
Risk avoidance
Risk reduction
Risk sharing
Risk retaining
Limitations
The ISO recommends the following target areas, or principles, should be part of the
overall risk management process:
54
It should be tailored to the project.
There are three major items to consider for choosing the analysis technique.
55
Design considerations
It can be classified into three categories: product metrics, process metrics, and
project metrics.
Product metrics
Process metrics
Project metrics
Data collection
Reliability models
Management by metrics
56
Goal Question Metric (GQM)
The GQM, developed by Dr. Victor Bassili defines a top-down, goal oriented
framework for software metrics.
GQM Steps
Six Sigma
From the software process aspect, Six Sigma has become a top-down methodology or
strategy to accelerate improvements in the software process and software product
quality. It uses analysis tools and product metrics to evaluate the software process and
software product quality.
Process mapping
The purpose of process mapping is helping project define the project process,
depict inputs, outputs and units of activity.
57
Metrics in Project Estimation
Some examples of metrics include Size Projections like Source Byte Size, Source
Lines of Code, Function pointers, GUI Features and other examples are Productivity
Projections such as Productivity Metrics.
Cost Estimation
Effort Estimates
Expert Judgement
Estimation by Analogy
1. Code Quality
2. Reliability
3. Performance
4. Usability
5. Correctness
6. Maintainability
7. Integrity
8. Security
58
McCabe Cyclomatic Complexity (CC)
Weighted Method per Class (WMC)
Depth of Inheritance Tree (DIT)
Number of Children (NOC)
Coupling between Objects (CBO)
Lack of Cohesion in Methods (LCOM)
Method Hiding Factor (MHF)
Attribute Hiding Factor (AHF)
Method Inheritance Factor (MIF)
Attribute Inheritance Factor (AIF)
Class
Attribute
Method
59