Monday, 18 November 2019

Deep Learning about Programming Language:


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

The Difference Between a Program Manager and a Project Manager

The Difference Between a Program Manager and a Project Manager A program manager manages multiple projects, and sometimes multiple program...