Full-Stack
Development:
Work with Front-End Technologies (HTML/CSS)
and Back-End Technologies (Servers and Middleware/Database) using with
Programming Language Java,.Net and C#.
Types of Programming:
·
Procedural
Programming Language
·
Functional
Programming Language
·
Object-oriented
Programming Language
·
Scripting
Programming Language
Procedural Programming Language:
The procedural programming language is
used to execute a sequence of statements which lead to a result. Typically,
this type of programming language uses multiple variables, heavy loops and
other elements, which separates them from functional programming languages.
Functions of procedural language may control variables, other than function’s
value returns. For example, BASIC, C,
FORTRAN, Java, and Pascal.
Functional Programming Language:
Functional programming language
typically uses stored data, frequently avoiding loops in favor of recursive functions.
The functional programming’s primary
focus is on the return values of functions, and side effects and different
suggests that storing state are powerfully discouraged. For example, in an
exceedingly pure useful language, if a function is termed, it’s expected that
the function not modify or perform any o/p. It may, however, build algorithmic
calls and alter the parameters of these calls. Functional languages are usually
easier and build it easier to figure on abstract issues, however, they’ll even
be “further from the machine” therein their programming model makes it
difficult to know precisely, but the code is decoded into machine language
(which are often problematic for system programming)
For examples, Lisp, Python, Erlang,
Haskell, Clojure, etc.
Object-oriented Programming Language:
This programming language views the world as a group of objects that
have internal data and external accessing parts of that data. The aim this
programming language is to think about
the fault by separating it into a collection of objects that offer services
which can be used to solve a specific problem. One of the main principle of
object oriented programming language is
encapsulation that everything an object will need must be inside of the object.
This language also emphasizes reusability through inheritance and the capacity
to spread current implementations without having to change a great deal of code
by using polymorphism.
For examples, Java, C++, C#, Python,
PHP, JavaScript, Ruby, Perl, Object Pascal, Objective-C, Dart, Swift, Scala,
Common Lisp, MATLAB, and Smalltalk.
Scripting Programming Language:
These programming languages are often
procedural and may comprise object-oriented language elements, but they fall
into their own category as they are normally not full-fledged programming languages
with support for development of large systems. For example, they may not have
compile-time type checking. Usually, these languages require tiny syntax to get
started.
For example, JavaScript, VBScript, PHP, Perl, Ruby
Project
Team Roles and Responsibilities:
·
Project
Sponsor
·
Executive
Sponsor
·
Business
Analyst
·
Subject
Matter Expert (SME)
·
Product
Owner
·
Project
Manager (PM)
·
Software
Architect/Solution team
·
Technical
Lead
·
Software
Developer
·
Software
Tester
Project Sponsor:
The Project Sponsor is the person or
group that provides direction and resources, including financial resources for
the software project. The Project Sponsor works with the project management
team, aiding with wider project matters such as scope clarification, progress,
monitoring, and influencing others in order to benefit the software project.
Executive Sponsor:
The executive sponsor is ideally a
high-ranking member of management. He or she is the visible champion of the
project with the management team and is the ultimate decision-maker, with final
approval on all phases, deliverables and scope changes.
Executive sponsor duties typically
include:
·
Carry
ultimate responsibility for the project
·
Approve
all changes to the project scope
·
Provide
additional funds for scope changes
·
Approve
project deliverables
Business Analyst:
The business analyst defines needs and
recommends solutions to make an organization better. When part of a project
team, they ensure that the project’s objectives solve existing problems or enhance
performance, and add value to the organization. They can also help maximize the
value of the project deliverables.
Business analyst duties:
·
Assist
in defining the project
·
Gather
requirements from business units or users
·
Document
technical and business requirements
·
Verify
that project deliverables meet the requirements
·
Test
solutions to validate objectives.
Subject Matter Experts (SME):
A Subject Matter Expert (SME) or Domain
Expert is a person who is an authority in a particular area or topic. A Subject
Matter Expert has superior (expert) knowledge of a discipline, technology,
product, business process or entire business area. They are normally the people
from who technical requirements are captured.
Product Owner:
The Product Owner is also responsible
for the prioritised backlog and maximising the return on investment (ROI) of
the software project. Part of this role’s responsibility includes documenting
user stories or requirements for the software project. They act as the main
point of contact for all decisions concerning the project and as such, need to
be empowered to perform their responsibilities without the need to seek too
much prior authorisation from the Project Sponsors.
In particular, the Product Owner is
responsible for:
·
ensuring
that the software product vision statement is adhered to
·
making
the final decision on all scope related decisions
·
maintaining
and updating the product backlog on a continuous basis by
·
refining
new requirements
·
removing
requirements that fall out of scope
·
adding
new requirements identified as being required to achieve the software product
vision statement
·
reviewing
and setting the priorities assigned to the product backlog and heading up all
project planning meetings
·
resolving
any disputes either with the software development team or inter
Project Manager:
The Project Manager (PM) is responsible
for knowing the “who, what, where, when and why” of the software project. This
means knowing the stakeholders of the project and being able to effectively
communicate with each of them. The Project Manager is also responsible for
creating and managing the project budget and schedule as well as processes
including scope management, issues management and risk management.
Some of the Project Manager duties can
include:
·
Developing
a software project plan
·
Manage
deliverables according to the software project plan
·
Recruiting
software project staff
·
Leading
and managing the software project team
·
Determining
the methodology used on the project
·
Establishing
a project schedule and determine each phase
·
Assigning
tasks to project team members
·
Providing
regular updates to senior management
Software Architect/Solution team:
·
Understand
client’s requirements and its business viabilities
·
Determine
the gaps between requirements and functionalities and define workable solutions
to bridge the gaps
·
Design
the solutions in detail with the help from the consultants and business
·
Plan
the closure of the solutions and see through the implementation of the
solutions
Technical Lead:
The Technical Lead is the development
team leader and works with the developers to provide technical details and
estimates for the proposed solution. This information is used by the Project
Manager to create the Statement of Work and the Work Breakdown Structure
documents for the software project. It is critical that the Technical Lead can
effectively communicate the status of the software project to the Project
Manager so that issues or variances can be effectively addressed as soon as
possible. The Technical Lead is also responsible for establishing and enforcing
standards and practices with the software development team.
Software Developers:
The Software Developers (front-end and
back-end) are responsible for using the technical requirements from the
Technical Lead to create cost and timeline estimates. The Software Developers
are also responsible for building the deliverables and communicating the status
of the software project to the Technical Lead or Project Manager. It is
critical that the other team members effectively communicate the technical
requirements to the Software Developers to reduce project risk and provide the
software project with the greatest chance of success.
Software Testers:
In the test planning and preparation
phases of the software testing, Software Testers should review and contribute
to test plans, as well as be analysing, reviewing and assessing technical
requirements and design specifications.
Software Testers are involved in
identifying test conditions and creating test designs, test cases, test
procedure specifications and test data, and may automate or help to automate
the tests.
Some of the Software Testers duties can
include:
·
They
often set up the test environments or assist system administration and network
management staff in doing so
·
As
test execution begins, the number of testers often increases, starting with the
work required to implement tests in the test environment
·
Testers
execute and log the tests, evaluate the results and document problems found
·
They
monitor the testing and the test environment, often using tools for this task,
and often gather performance metrics
·
Throughout
the software testing life cycle, they review each other’s work, including test
specifications, defect reports and test results
.Net Developer:
A
software framework developed by Microsoft that runs primarily on Microsoft
Windows. It includes a large class library named as Framework Class Library
(FCL) and provides language interoperability (each language can use code
written in other languages) across several programming languages. Programs written
for .NET Framework execute in a software environment (in contrast to a hardware
environment) named the Common Language Runtime (CLR). The CLR is an
application virtual machine that provides services such as security, memory
management, and exception handling. As such, computer code written using .NET
Framework is called "managed code" OR Native Code. FCL and CLR
together constitute the .NET Framework.
FCL
provides user interface, data access, database connectivity, cryptography, web
application development, numeric algorithms, and network communications.
Programmers produce software by combining their source code with .NET Framework
and other libraries. The framework is intended to be used by most new
applications created for the Windows platform. Microsoft also produces an
integrated development environment largely for .NET software called Visual
Studio.
Types
of Framework:
C#:
C# is a simple, modern, general-purpose, object-oriented programming language
developed by Microsoft within its .NET initiative led by Anders Hejlsberg. This
tutorial will teach you basic C# programming and will also take you through
various advanced concepts related to C# programming language.
C#
programming is very much based on C and C++ programming languages, so if you
have a basic understanding of C or C++ programming, then it will be fun to
learn C#
C#
is a modern, general-purpose, object-oriented programming language developed by
Microsoft and approved by European Computer Manufacturers Association (ECMA)
and International Standards Organization (ISO).
C#
is designed for Common Language Infrastructure (CLI), which consists of the
executable code and runtime environment that allows use of various high-level
languages on different computer platforms and architectures.
The
following reasons make C# a widely used professional language −
- It is a modern, general-purpose
programming language
- It is object oriented.
- It is component oriented.
- It is easy to learn.
- It is a structured language.
- It produces efficient programs.
- It can be compiled on a variety of
computer platforms.
- It is a part of .Net Framework.
Strong
Programming Features of C#
Although
C# constructs closely follow traditional high-level languages, C and C++ and being
an object-oriented programming language. It has strong resemblance with Java,
it has numerous strong programming features that make it endearing to a number
of programmers worldwide.
Following
is the list of few important features of C# −
- Boolean Conditions
- Automatic Garbage Collection
- Standard Library
- Assembly Versioning
- Properties and Events
- Delegates and Events Management
- Easy-to-use Generics
- Indexers
- Conditional Compilation
- Simple Multithreading
- LINQ and Lambda Expressions
- Integration with Windows
- Vb.Net
Java Developer:
A Java developer is a specialised type
of programmer who may collaborate with web developers and software engineers to
integrate Java into business applications, software and website.
If the job is related to Java based web
applications, the developer must be good at:
·
OOPs
Concepts & Patterns
·
Abstract
Classes and Interfaces
·
Constructors
·
File
IO and Serialization
·
Collections
– List, Map, Set
·
Access
Specifiers
·
Exceptions
– Checked, Unchecked
·
Generics
·
Java
Keywords – Static, Final, volatile, synchronized, transient, this super etc.
·
JVM
and Memory Management
·
Multithreading
and Synchronization
·
Dependency
Injection
If the job is related to networking or
distributed applications, he following skills will be needed:
Knowledge of Protocols like IP, HTTP,
TCP, FTP, UDP
Sockets, RMI, RCP
If the job is related to Java based web
applications, the developer must be good at:
·
JSP
/ Servlets
·
Web
Frameworks like Struts / Spring
·
Service
Oriented Architecture / Web Services – SOAP / REST
·
Web
Technologies like HTML, CSS, Javascript and JQuery
·
Markup
Languages like XML and JSON
If someone has to work on Java UI, then
he should know:
Applets
·
Frameworks
like Swing, SWT, AWT, JavaFX (SWT only if you’re building something on top of
Eclipse)
Every Java Developer is expected to have
Database Knowledge, so he should know:
·
SQL
Queries – Inner Outer Joins, Group By , Having
·
Stored
Procedures
·
Triggers
·
Cursors
Micro Services:
Microservices - also known as the
microservice architecture - is an architectural style that structures an
application as a collection of services that are:
·
Highly
maintainable and testable
·
Loosely
coupled
·
Independently
deployable
·
Organized
around business capabilities
·
Owned
by a small team
·
The
microservice architecture enables the rapid, frequent and reliable delivery of
large, complex applications. It also enables an organization to evolve its
technology stack.
·
The
pattern language is your guide
·
The
microservice architecture is not a silver bullet. It has several drawbacks.
Moreover, when using this architecture there are numerous issues that you must
address.
The microservice architecture pattern
language is a collection of patterns for applying the microservice
architecture. It has two goals:
·
The
pattern language enables you to decide whether microservices are a good fit for
your application.
·
The
pattern language enables you to use the microservice architecture successfully.
Spring and
Spring-boot Framework
Spring
Framework:
The Spring Framework provides a comprehensive programming
and configuration model for modern Java-based enterprise applications - on any
kind of deployment platform.
A key element of Spring is
infrastructural support at the application level: Spring focuses on the
"plumbing" of enterprise applications so that teams can focus on
application-level business logic, without unnecessary ties to specific deployment
environments.
Features
·
Core
technologies:
dependency injection, events, resources, i18n, validation, data binding, type
conversion, SpEL, AOP.
·
Testing: mock objects, TestContext framework,
Spring MVC Test, WebTestClient.
·
Data
Access: transactions,
DAO support, JDBC, ORM, Marshalling XML.
·
Spring
MVC and Spring WebFlux web frameworks.
·
Integration: remoting, JMS, JCA, JMX, email, tasks,
scheduling, cache.
·
Languages: Kotlin, Groovy, dynamic languages.
Spring Data
Spring Data’s mission is to provide a
familiar and consistent, Spring-based programming model for data access while
still retaining the special traits of the underlying data store.
It makes it easy to use data access
technologies, relational and non-relational databases, map-reduce frameworks,
and cloud-based data services. This is an umbrella project which contains many
subprojects that are specific to a given database. The projects are developed
by working together with many of the companies and developers that are behind
these exciting technologies.
Features
·
Powerful
repository and custom object-mapping abstractions
·
Dynamic
query derivation from repository method names
·
Implementation
domain base classes providing basic properties
·
Support
for transparent auditing (created, last changed)
·
Possibility
to integrate custom repository code
·
Easy
Spring integration via JavaConfig and custom XML namespaces
·
Advanced
integration with Spring MVC controllers
·
Experimental
support for cross-store persistence
Main modules
·
Spring
Data Commons - Core
Spring concepts underpinning every Spring Data module.
·
Spring
Data JDBC - Spring Data
repository support for JDBC.
·
Spring
Data JDBC Ext - Support
for database specific extensions to standard JDBC including support for Oracle
RAC fast connection failover, AQ JMS support and support for using advanced
data types.
·
Spring
Data JPA - Spring Data
repository support for JPA.
·
Spring
Data KeyValue - Map
based repositories and SPIs to easily build a Spring Data module for key-value
stores.
·
Spring
Data LDAP - Spring Data
repository support for Spring LDAP.
·
Spring
Data MongoDB - Spring
based, object-document support and repositories for MongoDB.
·
Spring
Data Redis - Easy
configuration and access to Redis from Spring applications.
·
Spring
Data REST - Exports
Spring Data repositories as hypermedia-driven RESTful resources.
·
Spring
Data for Apache Cassandra -
Easy configuration and access to Apache Cassandra or large scale, highly
available, data oriented Spring applications.
·
Spring
Data for Apache Geode -
Easy configuration and access to Apache Geode for highly consistent, low
latency, data oriented Spring applications.
·
Spring
Data for Apache Solr -
Easy configuration and access to Apache Solr for your search oriented Spring
applications.
·
Spring
Data for Pivotal GemFire -
Easy configuration and access to Pivotal GemFire for your highly consistent,
low latency/high through-put, data oriented Spring applications.
Community modules
·
Spring
Data Aerospike - Spring
Data module for Aerospike.
·
Spring
Data ArangoDB - Spring
Data module for ArangoDB.
·
Spring
Data Couchbase - Spring
Data module for Couchbase.
·
Spring
Data Azure Cosmos DB -
Spring Data module for Microsoft Azure Cosmos DB.
·
Spring
Data Cloud Datastore -
Spring Data module for Google Datastore.
·
Spring
Data Cloud Spanner -
Spring Data module for Google Spanner.
·
Spring
Data DynamoDB - Spring
Data module for DynamoDB.
·
Spring
Data Elasticsearch -
Spring Data module for Elasticsearch.
·
Spring
Data Hazelcast -
Provides Spring Data repository support for Hazelcast.
·
Spring
Data Jest - Spring Data
module for Elasticsearch based on the Jest REST client.
·
Spring
Data Neo4j -
Spring-based, object-graph support and repositories for Neo4j.
·
Spring
Data Vault - Vault
repositories built on top of Spring Data KeyValue.
Related modules
·
Spring
Data JDBC Extensions -
Provides extensions to the JDBC support provided in the Spring Framework.
·
Spring
for Apache Hadoop -
Simplifies Apache Hadoop by providing a unified configuration model and easy to
use APIs for using HDFS, MapReduce, Pig, and Hive.
·
Spring
Content - Associate
content with your Spring Data Entities and store it in a number of different
stores including the File-system, S3, Database or Mongo’s GridFS.
Modules in Incubation
·
Spring
Data R2DBC - Spring Data support for R2DBC.
Release train
Spring Data is an umbrella project
consisting of independent projects with, in principle, different release
cadences.
release train contains the following
modules:
·
Spring
Data Commons
·
Spring
Data JPA
·
Spring
Data KeyValue
·
Spring
Data LDAP
·
Spring
Data MongoDB
·
Spring
Data Redis
·
Spring
Data REST
·
Spring
Data for Apache Cassandra
·
Spring
Data for Apache Geode
·
Spring
Data for Apache Solr
·
Spring
Data for Pivotal GemFire
·
Spring
Data Couchbase
·
Spring
Data Elasticsearch
·
Spring
Data Neo4j
Spring Cloud Greenwich
Spring Cloud provides tools for
developers to quickly build some of the common patterns in distributed systems
(e.g. configuration management, service discovery, circuit breakers,
intelligent routing, micro-proxy, control bus, one-time tokens, global locks,
leadership election, distributed sessions, cluster state). Coordination of
distributed systems leads to boiler plate patterns, and using Spring Cloud
developers can quickly stand up services and applications that implement those
patterns. They will work well in any distributed environment, including the
developer’s own laptop, bare metal data centres, and managed platforms such as
Cloud Foundry.
Spring Cloud focuses on providing good
out of box experience for typical use cases and extensibility mechanism to
cover others.
·
Distributed/versioned
configuration
·
Service
registration and discovery
·
Routing
·
Service-to-service
calls
·
Load
balancing
·
Circuit
Breakers
·
Global
locks
·
Leadership
election and cluster state
·
Distributed
messaging
Spring Cloud takes a very declarative
approach, and often you get a lot of features with just a classpath change
and/or an annotation.
Spring-boot
makes it easy to create stand-alone, production-grade Spring based Applications
that you can "just run".
We take an opinionated view of the
Spring platform and third-party libraries so you can get started with minimum
fuss. Most Spring Boot applications need very little Spring configuration.
Features
·
Create
stand-alone Spring applications
·
Embed
Tomcat, Jetty or Undertow directly (no need to deploy WAR files)
·
Provide
opinionated 'starter' dependencies to simplify your build configuration
·
Automatically
configure Spring and 3rd party libraries whenever possible
·
Provide
production-ready features such as metrics, health checks and externalized
configuration
·
Absolutely
no code generation and no requirement for XML configuration

No comments:
Post a Comment