2. 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.
3. Techniques (Methods)
Formal procedure for
producing results using some
well-defined notion
Methodologies
Collection of techniques
applied across software
development and unified by a
philosophical approach
Tools
Instrument or automated
systems to accomplish a
technique
4. It is a multi-disciplinary discipline
A blend of many older science
& engineering disciplines and
new ones
6. • 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
7. • 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
8. • Website development
programming
languages
• Web administration
Google 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
9. • 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
10.
11. • 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.
12.
13. • Increased connectivity
• Scale and complexity
• decentralization and distribution
• Big data
• increased operational tempo
• inter-reliant ecosystems
• vulnerability
• collective action
• Disruptive and emerging
technologies
•
14. • Increased connectivity
• Scale and complexity
• decentralization and distribution
• Big data
• increased operational tempo
• inter-reliant ecosystems
• vulnerability
• collective action
• Disruptive and emerging
technologies
•
16. • 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,
17. • 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
18.
19. Common Characteristics:
Low Cost Software
Virtualization Service Orientation
Advanced Security
Homogeneity
Massive Scale Resilient Computing
Geographic Distribution
Essential Characteristics:
Resource Pooling
Broad Network Access Rapid Elasticity
Measured Service
On Demand Self-Service
20. Software as a
Service (SaaS)
Platform as a
Service (PaaS)
Infrastructure as a
Service (IaaS)
Google
App
Engine
SalesForce CRM
LotusLive
21. Services
Application
Development
Platform
Storage
Hosting
Description
Services – 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 SalesForce
Platform – 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.
22.
23.
24.
25. • 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.
26. • 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.
ScalabilityInfrastructure capacity allows for traffic spikes and minimizes delays.
ResiliencyCloud providers have mirrored solutions to minimize downtime in the event of a disaster. This type of resiliency can give businesses the sustainability they need during unanticipated events.
Homogeneity: No matter which cloud provider and architecture an organization uses, an open cloud will make it easy for them to work with other groups, even if those other groups choose different providers and architectures.
On-demand self-service. A consumer can unilaterally provision computing capabilities, such as server time and network storage, as needed automatically without requiring human interaction with each service’s provider.
Broad network access. Capabilities are available over the network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs).
Resource pooling. Multi-tenant model.. There is a sense of location independence in that the customer generally has no control or knowledge over the exact location of the provided resources but may be able to specify location at a higher level of abstraction (e.g., country, state, or datacenter). Examples of resources include storage, processing, memory, network bandwidth, and virtual machines.
Rapid elasticity. Capabilities can be rapidly and elastically provisioned, in some cases automatically, to quickly scale out and rapidly released to quickly scale in. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be purchased in any quantity at any time.
Measured Service. Cloud systems automatically control and optimize resource use by leveraging a metering capability at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts).
Native apps are specific to a given mobile platform (iOS or Android) using the development tools and language that the respective platform supports (e.g., Xcode and Objective-C with iOS, Eclipse and Java with Android). Native apps look and perform the best.
HTML5 apps use standard web technologies—typically HTML5, JavaScript and CSS. This write-once-run-anywhere approach to mobile development creates cross-platform mobile applications that work on multiple devices. While developers can create sophisticated apps with HTML5 and JavaScript alone, some vital limitations remain at the time of this writing, specifically session management, secure offline storage, and access to native device functionality (camera, calendar, geolocation, etc.)
Hybrid apps make it possible to embed HTML5 apps inside a thin native container, combining the best (and worst) elements of native and HTML5 apps.