class is a blueprint or template or set of instructions to build a specific type of object. Every
object is built from a class. Each class should be designed and programmed to accomplish
one, and only one, thing. (You'll learn more about the Single Responsibility Principle
in OOP concepts, Because each class is designed to have only a single responsibility, many
classes are used to build an entire application.
Then you create the new object—using the keyword new—and assign it to the reference
variable.
You can either declare a reference variable and assign a newly instantiated object into it in
separate statements:
It’s simple to instantiate the same class numerous times. The code below creates four
instances of the Sprite class. Each instance is assigned to its own reference variable.
Data abstraction:
Abstraction is a basic OOP concept which focuses on just the relevant data of an object and
hides all the irrelevant details which may or may not be for generic or specialized behavior.
It hides the background details and emphasizes on the essential points to reduce complexity
and increase efficiency. Basically, abstraction is a programming tool to manage complexity.
Abstraction focuses on ideas rather than events. It hides the details on the design level by
providing functionality to the users. The resulting object can also be called an abstraction.
The programmer makes sure the named entity will have all the essential aspects included
and none of the irrelevant ones.
Let’s take a real-world example of abstraction. Let’s consider the case of a vehicle, which
in this case is your vehicle. A mechanic tries to repair your car or let’s say a specific part of
your car. Here, you are the user and you don’t want to get into the specifics of your car or
what part actually broke. You don’t actually care about those things; you just want your
vehicle back in its original condition without worrying about the details. So, you actually
told the mechanic what you want by segregating the implementation part. This is
abstraction. You focused on the most essential thing, which is getting your car fixed, rather
than focusing on the specifics.
Data encapsulation:
Encapsulation is yet another OOP concept which binds data and functions into a single
component while restricting access to some components. It’s one of the main fundamental
concepts of OOP which wraps data and information under a single unit. In technical terms,
encapsulation means hiding attributes to shield variables from outside access so that
change in one part of an application won’t affect the other parts. On the contrary, by
making the information more open you’ll risk misuse of data. It provides basic integrity to
the data by protecting it from the outside world. In simple terms, it hides the extra details
Let’s take an example of a Bluetooth mouse. You only need to know about the device’s
behavior without worrying about the implementation details like what kind of sensors the
mouse has, is it wireless or not, etc. Every single detail describes the mouse but regardless
of the details, it’s just a mouse. You just need an interface to use the mouse, which in this
Abstraction is a fundamental OOP concept which emphasizes on all the essential aspects of
an object by hiding the irrelevant details to increase efficiency and eliminate complexity.
Encapsulation, on the other hand, is a data hiding mechanism which wraps the data and
information in a capsule to restrict access from outside world.
Abstraction is a data hiding mechanism which highlights only the essential features to
make complex programs simpler, while encapsulation, on the other hand, is a method of
binding data and codes into a single entity. The idea is to shield the implementation details
from external access.
The idea behind abstraction is to focus on what rather than how. Encapsulation hides the
internal mechanics of how. For example, when you drive a car, you know exactly what the
brake pedal does but you may not know the whole mechanism behind it because the data is
encapsulated.
a smartphone. You know what it does but you may not know how it does what it does. You
only care about the display screen and keypad buttons rather than worrying about its
inner circuitry. Here, smartphone is an abstract where the inner implementation details
are encapsulated.
Agile
Agile has been the buzzword in project management for about a decade, and with
good reason. Agile is actually an umbrella term over several project management
approaches that are characterized by their ability to allow project teams to respond
to changing requirements and priorities by using incremental work packages. While
all agile methods have common characteristics, each agile method has unique
processes that set it apart. Let's look at how each method is used with Charlie's
team, who is developing a new software game.
Agile types:
1: Scrum
Scrum Master
o Master is responsible for setting up the team, sprint meeting and removes
obstacles to progress
Product owner
o The Product Owner creates product backlog, prioritizes the backlog and is
responsible for the delivery of the functionality at each iteration
Scrum Team
o Team manages its own work and organizes the work to complete the sprint
or cycle
Product Backlog
This is a repository where requirements are tracked with details on the no of requirements
to be completed for each release. It should be maintained and prioritized by Product
Owner, and it should be distributed to the scrum team. Team can also request for a new
requirement addition or modification or deletion
Scrum Practices
In this type of methodology, releases are based on the shorter cycles called Iterations with
span of 14 days time period. Each iteration includes phases like coding, unit testing and
system testing where at each phase some minor or major functionality will be built in the
application.
There are 6 phases available in Agile XP method, and those are explained as follows:
Planning
Analysis
Design
Execution
Coding
Unit Testing
Execution of Manual test scenarios
Defect Report generation
Conversion of Manual to Automation regression test cases
Wrapping
Small Releases
Regression Testing
Demos and reviews
Closure
Pilot Launch
Training
Production Launch
SLA Guarantee assurance
3: Crystal Methodologies
Crystal Methodology is based on three concepts
1. Time Boxing
2. MoSCoW Rules
3. Prototyping
1. Pre-project
2. Feasibility Study
3. Business Study
4. Functional Model Iteration
5. Design and build Iteration
6. Implementation
7. Post-project
SDLC
Software is a complex product that is developed and delivered through a series of
steps. That is the one thing all the various methods have in common: one way or
another, software, like all products, starts as an idea. The idea then becomes a
document, or perhaps a prototype, depending on the method in use.
Reports from error monitoring software about usability and bugs feed back into
the process of software development, and become new feature requests and
improvements to existing features. This is why the Software Development Life
Cycle is the most general term for software development methods. The steps of
the process and their order vary by method. Regardless of method, they typically
run in cycles, starting over with each iteration.
PHASES OD SDLC:
1. Planning
The planning phase involves aspects of project and product management. This
may include:
Capacity planning
Project scheduling
Cost estimation
Provisioning
The outputs of the planning phase include: project plans, schedules, cost
estimations, and procurement requirements. Ideally, Project Managers and
Development staff collaborate with Operations and Security teams to ensure all
perspectives are represented.
2. Requirements
The business must communicate with IT teams to convey their requirements for
new development and enhancement. The requirements phase gathers these
requirements from business stakeholders and Subject Matter Experts (SMEs.)
Architects, Development teams, and Product Managers work with the SMEs to
document the business processes that need to be automated through software.
The output of this phase in a Waterfall project is usually a document that lists
these requirements. Agile methods, by contrast, may produce a backlog of tasks
to be performed.
Once the requirements are understood, software architects and developers can
begin to design the software. The design process uses established patterns for
application architecture and software development. Architects may use an
architecture framework such as TOGAF to compose an application from existing
components, promoting reuse and standardization.
Design documents that list the patterns and components selected for the project
4. Software development
This phase produces the software under development. Depending on the
methodology, this phase may be conducted in time-boxed “sprints,” (Agile) or
may proceed as a single block of effort (Waterfall.) Regardless of methodology,
development teams should produce working software as quickly as possible.
Business stakeholders should be engaged regularly, to ensure that their
expectations are being met. The output of this phase is testable, functional
software.
5. Testing
The testing phase of the SDLC is arguably one of the most important. It is
impossible to deliver quality software without testing. There is a wide variety of
testing necessary to measure quality:
Code quality
Integration testing
Performance testing
Security testing
The best way to ensure that tests are run regularly, and never skipped for
expediency, is to automate them. Tests can be automated using Continuous
Integration tools, like Codeship, for example. The output of the testing phase is
functional software, ready for deployment to a production environment.
6. Deployment
The operations and maintenance phase is the “end of the beginning,” so to speak.
The Software Development Life Cycle doesn’t end here. Software must be
monitored constantly to ensure proper operation. Bugs and defects discovered in
Production must be reported and responded to, which often feeds work back into
the process. Bug fixes may not flow through the entire cycle, however, at least an
abbreviated process is necessary to ensure that the fix does not introduce other
problems (known as a regression.)