Mohamed Taman @_tamanm
Enterprise Architect / Innovation & R&D Sr. manager @e-finance
Java Champion
Why Software Architecture
(Mobile Architecture)
Me, I, and Myself
• Java Champion, and Java Geek
• Enterprise Architect / Innovation & R&D Sr. Manager @efinance
• Mobile/Web/Blockchain/HashGraph/Cloud/DevOps/Big Data/IoT
• JCP (Won Duke’s choice award 2013, 2014, 2015)
• Speaks Java (Won Outstanding adopt-a-jsr participant 2013 JCP annual award)
• International Speaker
• Author (“JavaFX 8 essentials”, and upcoming “Mastering JDK 9” Video training
for Packt and Lynda.com)
Mohamed Taman @_tamanm
Reach me on
@_tamanm
http://eg.linkedin.com/in/mohamedtaman/
https://www.facebook.com/mohamed.m.taman.7 (Mohamed Mahmoud Taman)
http://tamanmohamed.blogspot.com
https://github.com/mohamed-taman
https://www.slideshare.net/tamanm
Software Architecture why Do We Need It?
• Like any other complex structure, software must be built on a solid foundation.
Failing to consider key scenarios, failing to design for common problems, or failing
to appreciate the long term consequences of key decisions can put your
application at risk.
• With no architecture in place, the code grew like ivy on a moisty garden shed,
resulting in poor maintainability and low productivity in adding new features to
the software.
Mohamed Taman @_tamanm
What is Software Architecture?
• Software application architecture is the process of defining a structured solution
that meets all of the technical and operational requirements, while optimizing
common quality attributes such as performance, security, and manageability.
• It involves a series of decisions based on a wide range of factors, and each of
these decisions can have considerable impact on the quality, performance,
maintainability, and overall success of the application.
Mohamed Taman @_tamanm
Concerns when thinking about software
architecture
• How will the users be using the application?
• How will the application be deployed into production and managed?
• What are the quality attribute requirements for the application, such as security,
performance, concurrency, internationalization, and configuration?
• How can the application be designed to be flexible and maintainable over time?
• What are the architectural trends that might impact your application now or
after it has been deployed?
Mohamed Taman @_tamanm
The Goals of Architecture
• Expose the structure of the system but hide the implementation details.
• Realize all of the use cases and scenarios.
• Try to address the requirements of various stakeholders.
• Handle both functional and quality requirements.
Mohamed Taman @_tamanm
Software Architecture offers some rather
relevant benefits
• Higher productivity. It is easier to add new features to existing software, since the structure is already
in place, and the location for every new piece of code is known beforehand.
• Better code maintainability. It is easier to maintain existing software, as the structure of the code is
visible and known, so it’s easier to find bugs and anomalies.
• Higher adaptability. New technical features, such a different front ends, or adding a business rule
engine are easier to achieve, as your software architecture creates a clear separation of concerns.
• Hype agnostic. Last but not least, it will allow you to see hypes and fads in the industry – or which
there are a lot – in the light of your current structure, and to fit these hypes and fads in if so required.
Mohamed Taman @_tamanm
Basic Building Block: OOP
• Encapsulation
• Composition, inheritance, and delegation
• Polymorphism
Mohamed Taman @_tamanm
OOP principals is the foundation to “Design Patterns”.
What is mobile application?
• A mobile application, most commonly referred to as an app, is a type of application software
designed to run on a mobile device, such as a smartphone or tablet computer.
• A mobile app is a software application developed specifically for use on small, wireless computing
devices, such as smartphones and tablets, rather than desktop or laptop computers.
• Mobile apps are designed with consideration for the demands and constraints of the devices and
also to take advantage of any specialized capabilities they have. A gaming app, for example, might
take advantage of the iPhone's accelerometer.
Mohamed Taman @_tamanm
What is mobile Website ?
The mobile web refers to access to the world wide web, i.e. the use of
browser-based Internet services, from a handheld mobile device, such
as a smartphone or a feature phone, connected to a mobile network or
other wireless network.
Mohamed Taman @_tamanm
What is mobile application architecture?
Mobile Application Architecture is set of techniques and patterns to
build fully structured mobile applications based on industry and vendor
specific standards and procedures those works on wireless mobile
devices like smartphones and tablets.
Mohamed Taman @_tamanm
Mobile Architecture Objectives
• Define a mobile application.
• Understand components found in a mobile application.
• Learn the key scenarios where mobile applications would be used.
• Learn the design considerations for mobile applications.
• Identify specific scenarios for mobile applications, such as deployment, power usage, and
synchronization.
• Learn the key patterns and technology considerations for designing mobile applications.
Mohamed Taman @_tamanm
Designing
Mobile
Applications
Mohamed Taman @_tamanm
General Design Considerations
• Decide if you will build a rich client, a thin Web client, or a Hybrid app.
• Determine the device types you will support.
• Consider occasionally connected and limited-bandwidth scenarios when appropriate.
• Design a UI appropriate for mobile devices, taking into account platform constraints.
• Design a layered architecture appropriate for mobile devices that improves reuse and maintainability.
• Consider device resource constraints such as battery life, memory size, and processor speed.
Mohamed Taman @_tamanm
Specific Design Issues
• Authentication and Authorization
• Caching
• Communication
• Configuration Management
• Data Access
• Device Specifics
• Exception Management
Mohamed Taman @_tamanm
• Logging
• Porting Applications
• Power Management
• Synchronization
• Testing
• User Interface
• Validation
Mobile Application types
Mohamed Taman @_tamanm
Supported
features
Mohamed Taman @_tamanm
Pros and Cons
Mohamed Taman @_tamanm
How Hybrid apps works?
Mohamed Taman @_tamanm
Resources and references
• https://prezi.com/dsuuipwgdzfc/developing-mobile-apps-hybrid-android-with-
netbeans-8/
• https://www.slideshare.net/hassandar18/architecture-of-mobile-software-
applications
• https://en.wikipedia.org/wiki/Object-oriented_programming
• https://www.codeproject.com/Articles/1064240/Introduction-to-Software-
Architecture
• https://msdn.microsoft.com/en-us/library/ee658098.aspx
• https://msdn.microsoft.com/en-us/library/ee658108.aspx
Mohamed Taman @_tamanm
Mohamed Taman @_tamanm

Why software architecture (Mobile Architecture)?

  • 1.
    Mohamed Taman @_tamanm EnterpriseArchitect / Innovation & R&D Sr. manager @e-finance Java Champion Why Software Architecture (Mobile Architecture)
  • 2.
    Me, I, andMyself • Java Champion, and Java Geek • Enterprise Architect / Innovation & R&D Sr. Manager @efinance • Mobile/Web/Blockchain/HashGraph/Cloud/DevOps/Big Data/IoT • JCP (Won Duke’s choice award 2013, 2014, 2015) • Speaks Java (Won Outstanding adopt-a-jsr participant 2013 JCP annual award) • International Speaker • Author (“JavaFX 8 essentials”, and upcoming “Mastering JDK 9” Video training for Packt and Lynda.com) Mohamed Taman @_tamanm
  • 3.
    Reach me on @_tamanm http://eg.linkedin.com/in/mohamedtaman/ https://www.facebook.com/mohamed.m.taman.7(Mohamed Mahmoud Taman) http://tamanmohamed.blogspot.com https://github.com/mohamed-taman https://www.slideshare.net/tamanm
  • 4.
    Software Architecture whyDo We Need It? • Like any other complex structure, software must be built on a solid foundation. Failing to consider key scenarios, failing to design for common problems, or failing to appreciate the long term consequences of key decisions can put your application at risk. • With no architecture in place, the code grew like ivy on a moisty garden shed, resulting in poor maintainability and low productivity in adding new features to the software. Mohamed Taman @_tamanm
  • 5.
    What is SoftwareArchitecture? • Software application architecture is the process of defining a structured solution that meets all of the technical and operational requirements, while optimizing common quality attributes such as performance, security, and manageability. • It involves a series of decisions based on a wide range of factors, and each of these decisions can have considerable impact on the quality, performance, maintainability, and overall success of the application. Mohamed Taman @_tamanm
  • 6.
    Concerns when thinkingabout software architecture • How will the users be using the application? • How will the application be deployed into production and managed? • What are the quality attribute requirements for the application, such as security, performance, concurrency, internationalization, and configuration? • How can the application be designed to be flexible and maintainable over time? • What are the architectural trends that might impact your application now or after it has been deployed? Mohamed Taman @_tamanm
  • 7.
    The Goals ofArchitecture • Expose the structure of the system but hide the implementation details. • Realize all of the use cases and scenarios. • Try to address the requirements of various stakeholders. • Handle both functional and quality requirements. Mohamed Taman @_tamanm
  • 8.
    Software Architecture offerssome rather relevant benefits • Higher productivity. It is easier to add new features to existing software, since the structure is already in place, and the location for every new piece of code is known beforehand. • Better code maintainability. It is easier to maintain existing software, as the structure of the code is visible and known, so it’s easier to find bugs and anomalies. • Higher adaptability. New technical features, such a different front ends, or adding a business rule engine are easier to achieve, as your software architecture creates a clear separation of concerns. • Hype agnostic. Last but not least, it will allow you to see hypes and fads in the industry – or which there are a lot – in the light of your current structure, and to fit these hypes and fads in if so required. Mohamed Taman @_tamanm
  • 9.
    Basic Building Block:OOP • Encapsulation • Composition, inheritance, and delegation • Polymorphism Mohamed Taman @_tamanm OOP principals is the foundation to “Design Patterns”.
  • 10.
    What is mobileapplication? • A mobile application, most commonly referred to as an app, is a type of application software designed to run on a mobile device, such as a smartphone or tablet computer. • A mobile app is a software application developed specifically for use on small, wireless computing devices, such as smartphones and tablets, rather than desktop or laptop computers. • Mobile apps are designed with consideration for the demands and constraints of the devices and also to take advantage of any specialized capabilities they have. A gaming app, for example, might take advantage of the iPhone's accelerometer. Mohamed Taman @_tamanm
  • 11.
    What is mobileWebsite ? The mobile web refers to access to the world wide web, i.e. the use of browser-based Internet services, from a handheld mobile device, such as a smartphone or a feature phone, connected to a mobile network or other wireless network. Mohamed Taman @_tamanm
  • 12.
    What is mobileapplication architecture? Mobile Application Architecture is set of techniques and patterns to build fully structured mobile applications based on industry and vendor specific standards and procedures those works on wireless mobile devices like smartphones and tablets. Mohamed Taman @_tamanm
  • 13.
    Mobile Architecture Objectives •Define a mobile application. • Understand components found in a mobile application. • Learn the key scenarios where mobile applications would be used. • Learn the design considerations for mobile applications. • Identify specific scenarios for mobile applications, such as deployment, power usage, and synchronization. • Learn the key patterns and technology considerations for designing mobile applications. Mohamed Taman @_tamanm
  • 14.
  • 15.
    General Design Considerations •Decide if you will build a rich client, a thin Web client, or a Hybrid app. • Determine the device types you will support. • Consider occasionally connected and limited-bandwidth scenarios when appropriate. • Design a UI appropriate for mobile devices, taking into account platform constraints. • Design a layered architecture appropriate for mobile devices that improves reuse and maintainability. • Consider device resource constraints such as battery life, memory size, and processor speed. Mohamed Taman @_tamanm
  • 16.
    Specific Design Issues •Authentication and Authorization • Caching • Communication • Configuration Management • Data Access • Device Specifics • Exception Management Mohamed Taman @_tamanm • Logging • Porting Applications • Power Management • Synchronization • Testing • User Interface • Validation
  • 17.
  • 18.
  • 19.
    Pros and Cons MohamedTaman @_tamanm
  • 20.
    How Hybrid appsworks? Mohamed Taman @_tamanm
  • 21.
    Resources and references •https://prezi.com/dsuuipwgdzfc/developing-mobile-apps-hybrid-android-with- netbeans-8/ • https://www.slideshare.net/hassandar18/architecture-of-mobile-software- applications • https://en.wikipedia.org/wiki/Object-oriented_programming • https://www.codeproject.com/Articles/1064240/Introduction-to-Software- Architecture • https://msdn.microsoft.com/en-us/library/ee658098.aspx • https://msdn.microsoft.com/en-us/library/ee658108.aspx Mohamed Taman @_tamanm
  • 22.

Editor's Notes

  • #16 Decide if you will build a rich client, a thin Web client, or rich Internet application (RIA aka Hybrid). If your application requires local processing and must work in an occasionally connected scenario, consider designing a rich client. A rich client application will be more complex to install and maintain. If your application can depend on server processing and will always be fully connected, consider designing a thin client. If your application requires a rich UI, only limited access to local resources, and must be portable to other platforms, design an RIA client. Determine the device types you will support. When choosing which device types to support, consider screen size and resolution, CPU performance characteristics, memory and storage space, and development tool environment availability. In addition, factor in user requirements and organizational constraints. You may require specific hardware such as a global positioning system (GPS) or a camera, which may impact not only your application type, but also your device choice. Consider occasionally connected and limited-bandwidth scenarios when appropriate. If your mobile device is a stand-alone device, you will not need to account for connection issues. When network connectivity is required, mobile applications should handle cases when a network connection is intermittent or not available. It is vital in this case to design your caching, state management, and data access mechanisms with intermittent network connectivity in mind; batch communications for delivery when connectivity is available. Choose hardware and software protocols based on speed, power consumption, and granularity, and not just on ease of programming. Design a UI appropriate for mobile devices, taking into account platform constraints. Mobile devices require a simpler architecture, simpler UI, and other specific design decisions in order to work within the constraints imposed by the device hardware. Keep these constraints in mind and design specifically for the device instead of trying to reuse the architecture or UI from a desktop or Web application. The main constraints are memory, battery life, ability to adapt to difference screen sizes and orientations, security, and network bandwidth. Design a layered architecture appropriate for mobile devices that improves reuse and maintainability. Depending on the application type, multiple layers may be located on the device itself. Use the concept of layers to maximize separation of concerns, and to improve reuse and maintainability for your mobile application. However, aim to achieve the smallest footprint on the device by simplifying your design compared to a desktop or Web application. Consider device resource constraints such as battery life, memory size, and processor speed. Every design decision should take into account the limited CPU, memory, storage capacity, and battery life of mobile devices. Battery life is usually the most limiting factor in mobile devices. Backlighting, reading and writing to memory, wireless connections, specialized hardware, and processor speed all have an impact on the overall power usage. When the amount of memory available is low, the Windows Mobile operating system may ask your application to shut down or sacrifice cached data, slowing program execution. Optimize your application to minimize its power and memory footprint while considering performance during this process.