College of Technology Pantnagar lecture- Jainendra

34
Digital Product Engineering - Jainendra Kumar (Jai) Head of Products and Technology

Transcript of College of Technology Pantnagar lecture- Jainendra

Page 1: College of Technology Pantnagar lecture- Jainendra

Digital Product Engineering

- Jainendra Kumar (Jai)Head of Products and Technology

Page 2: College of Technology Pantnagar lecture- Jainendra

Software Engineering It is much more that writing code.

It is an act of applying a collection of techniques, methodologies, and tools that help with the production of a high quality software system, within a given budget, before a given deadline, while change occurs.

Page 3: College of Technology Pantnagar lecture- Jainendra

Techniques (Methods)Formal procedure for producing results using some well-defined notion

MethodologiesCollection of techniques applied across software development and unified by a philosophical approach

Tools Instrument or automated systems to accomplish a technique

Understating a few key terminologies

Page 4: College of Technology Pantnagar lecture- Jainendra

Software Engineering It is a multi-disciplinary discipline

A blend of many older science & engineering disciplines and new ones

Page 5: College of Technology Pantnagar lecture- Jainendra

Software Engineering Computing

Fundamentals

Algorithms and Data Structure

Computer Architecture

Operating Systems

Programing Languages

Mathematical

Foundations

Software Product

Engineering

Requirements

Engineering

Software Design

Software Coding

Software Testing

Software Operations & Maintenance

Software Managemen

t

Product Management

Program & Project

Management

Risk Management

Quality Management

Configuration

Management

Dev. Process Management

Software Domains

Artificial Intelligence

Database Systems

Machine Learning

Real-Time Systems

Big Data Analytics

Page 6: College of Technology Pantnagar lecture- Jainendra

Software Engineering Job / Role • Software Engineer• Solution / Product

Architect • Software Engineer in Test• Business Analyst • System Analyst• System Engineer• Database Administrator • Software Security

Engineer• Webmaster

• Data scientist• Analytics specialist • Customer support

engineer• Deployment Architect • Dev Ops Engineer • Software configuration

Manager• Program / Project

Manager • Product Manager

Page 7: College of Technology Pantnagar lecture- Jainendra

Software Engineer’s Skills & Tools • Programming languages • Database

• Relational• Non – Relational

• Data structure • Web Server • Application Server• Design Patterns• Scalable Architecture• Cloud deployment and

management

• Tools:• Development and debug

environment • Design• Source and version control• Dev. Operations• Testing tools• Performance testing• Installer • Cloud EC2 console and

dashboard• Bug tracking

Page 8: College of Technology Pantnagar lecture- Jainendra

Webmaster's Skills & Tools • Website

development programming languages

• Web administrationGoogle analytics and other analytics

• SEO, SMM• Tag Management

• Tools:• Development and debugging tools

• Google Web master• Google Analytics • Tag Manager • Other Analytics • SEO tool(s)• Social media monitoring tool

Page 9: College of Technology Pantnagar lecture- Jainendra

Project Manager's Skills & Tools • Project management • Requirement analysis• Risk management• Project controlling • Architecture• Estimation• People management• Communication

• Tools:• Project management• Data analysis • Bug tracking and management

• Reporting • Product requirement & prioritization management

• Communication management & tracking

Page 10: College of Technology Pantnagar lecture- Jainendra

Programming languages

Page 11: College of Technology Pantnagar lecture- Jainendra

Software Architecture • The quality and

longevity of a software-reliant system is largely determined by its architecture

• Architecture is of enduring importance because it is the right abstraction for performing ongoing analyses throughout a system’s lifetime.

Page 12: College of Technology Pantnagar lecture- Jainendra

Central role of architecture

Page 13: College of Technology Pantnagar lecture- Jainendra

What has changed? • Increased connectivity• Scale and complexity

• decentralization and distribution• Big data• increased operational tempo• inter-reliant ecosystems• vulnerability• collective action

• Disruptive and emerging technologies

Page 14: College of Technology Pantnagar lecture- Jainendra

What has changed? • Increased connectivity• Scale and complexity

• decentralization and distribution

• Big data• increased operational tempo• inter-reliant ecosystems• vulnerability• collective action

• Disruptive and emerging technologies

Page 15: College of Technology Pantnagar lecture- Jainendra

Software Development Trends • Application framework• Open source• Cloud strategies• NoSQL• Machine Learning• MDD• Incremental approaches / Agile /

Lean • Dashboards• Distributed development • Dev Ops

Page 16: College of Technology Pantnagar lecture- Jainendra

Cloud computing• Cloud computing is Internet-based computing, whereby

shared resources, software and information are provided to computers and other devices on-demand, like the electricity grid.

• The cloud computing is a culmination of numerous attempts at large scale computing with seamless access to virtually limitless resources.• on-demand computing, • utility computing, • ubiquitous computing, • autonomic computing, • platform computing, • edge computing, • elastic computing, • grid computing,

Page 17: College of Technology Pantnagar lecture- Jainendra

Advantage of cloud computing• Business viewpoint

• Reduce IT cost• Improvement in time to market • Pay as you go (variable cost over fixed investment)• Reduce IT dependency • Work from anywhere • Competitiveness • Process efficiency

Page 18: College of Technology Pantnagar lecture- Jainendra

Cloud Architecture

Page 19: College of Technology Pantnagar lecture- Jainendra

Cloud computing characteristics

Common Characteristics:

Low Cost Software

Virtualization Service Orientation

Advanced Security

Homogeneity

Massive Scale Resilient Computing

Geographic Distribution

Essential Characteristics:

Resource PoolingBroad Network Access Rapid Elasticity

Measured Service

On Demand Self-Service

Page 20: College of Technology Pantnagar lecture- Jainendra

Cloud service modelSoftware as a

Service (SaaS)Platform as a

Service (PaaS)Infrastructure as a

Service (IaaS)

Google App Engine

SalesForce CRMLotusLive

Page 21: College of Technology Pantnagar lecture- Jainendra

Cloud computing layers

Services

Application

Development

Platform

Storage

Hosting

DescriptionServices – Complete business services such as PayPal, OpenID, OAuth, Google Maps, Alexa

Services

Application

Focused

Infrastructure

Focused

Application – Cloud based software that eliminates the need for local installation such as Google Apps, Microsoft Online

Storage – Data storage or cloud based NAS such as CTERA, iDisk, CloudNAS

Development – Software development platforms used to build custom cloud based applications (PAAS & SAAS) such as SalesForcePlatform – Cloud based platforms, typically provided using virtualization, such as Amazon ECC, Sun Grid

Hosting – Physical data centers such as those run by IBM, HP, NaviSite, etc.

Page 22: College of Technology Pantnagar lecture- Jainendra

Cloud Taxonomy

Page 23: College of Technology Pantnagar lecture- Jainendra

Smartphone Mobile Apps

Page 24: College of Technology Pantnagar lecture- Jainendra

Mobile App development options

Page 25: College of Technology Pantnagar lecture- Jainendra

Native Mobile Application• Multi touch - double taps, pinch-spread, and other

compound UI gestures• Fast graphics API - the native platform gives you

the fastest graphics, which may not be a big deal if you’re showing a static screen with only a few elements, or a very big deal if you’re using a lot of data and require a fast refresh.

• Fluid animation - related to the fast graphics API is the ability to have fluid animation. This is especially important in gaming, highly interactive reporting, or intensely computational algorithms for transforming photos and sounds.

• Built-in components - The camera, address book, geolocation, and other features native to the device can be seamlessly integrated into mobile apps. Another important built-in components is encrypted storage, but more about that later.

• Ease of use - The native platform is what people are accustomed to, and so when you add that familiarity with all of the native features they expect, you have an app that’s just plain easier to use.

Page 26: College of Technology Pantnagar lecture- Jainendra

HTML5 Mobile Application• An HTML5 mobile app is basically a web page, or

series of web pages, that are designed to work on a tiny screen. As such, HTML5 apps are device agnostic and can be opened with any modern mobile browser.

• HTML5 apps are easier to develop, easier to support, and can reach the widest range of devices

• Users won’t have the familiarity of the native look and feel, or be able to use compound gestures they are familiar with.

• significant limitations, especially for enterprise mobile, are offline storage and security.

Page 27: College of Technology Pantnagar lecture- Jainendra

Mobile Hybrid Application

Page 28: College of Technology Pantnagar lecture- Jainendra

Mobile Application Architecture

Page 29: College of Technology Pantnagar lecture- Jainendra

Debugging Mobile Application • Chrome / Firefox Debugger• Weinre• Ripple• jsHybugger• Eclipse• Xcode• Visual Studio

Page 30: College of Technology Pantnagar lecture- Jainendra

Continuous Integration

Page 31: College of Technology Pantnagar lecture- Jainendra

Process and Tools

Page 32: College of Technology Pantnagar lecture- Jainendra

Process and Tools

Page 33: College of Technology Pantnagar lecture- Jainendra

Testing process and workflow

Page 34: College of Technology Pantnagar lecture- Jainendra

Thank you