Upload
jainendra-kumar
View
263
Download
0
Embed Size (px)
Citation preview
Digital Product Engineering
- Jainendra Kumar (Jai)Head of Products and Technology
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.
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
Software Engineering It is a multi-disciplinary discipline
A blend of many older science & engineering disciplines and new ones
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
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
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
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
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
Programming languages
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.
Central role of architecture
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
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
Software Development Trends • Application framework• Open source• Cloud strategies• NoSQL• Machine Learning• MDD• Incremental approaches / Agile /
Lean • Dashboards• Distributed development • Dev Ops
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,
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
Cloud Architecture
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
Cloud service modelSoftware as a
Service (SaaS)Platform as a
Service (PaaS)Infrastructure as a
Service (IaaS)
Google App Engine
SalesForce CRMLotusLive
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.
Cloud Taxonomy
Smartphone Mobile Apps
Mobile App development options
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.
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.
Mobile Hybrid Application
Mobile Application Architecture
Debugging Mobile Application • Chrome / Firefox Debugger• Weinre• Ripple• jsHybugger• Eclipse• Xcode• Visual Studio
Continuous Integration
Process and Tools
Process and Tools
Testing process and workflow
Thank you