Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Approach to Rapid Software Design for Mobile Applications (FRUCT 23rd Conference, Bologna, Italy)

Slava Chernikoff
November 16, 2018

Approach to Rapid Software Design for Mobile Applications (FRUCT 23rd Conference, Bologna, Italy)

Presentation from FRUCT 23rd Conference (University of Bologna, Italy). During the presentation Binwell's "Rapid Software Design" approach was introduce. Suggested approach helps to reduce the complexity and uncertainty during the development of mobile applications: from small (less than 10 screens) to large (100+ screens).

In a simple step-by-step way it's possible to produce a lightweight documentation related to code and clear for all project team members (product owner, project manager, analyst, designers, architects, developers and QA engineers).

The core ideas behind the Rapid Software Design:
1. Mobile applications are primary a User Interface and software design algorithm should reflect it.
2. Name, group, color and number screens before coding. Use these names in you app's code.
3. Use lightweight Navigation Map to understand the user interface structure.
4. Use a Table of Screens to place the specs for every screen.
5. Create a project "skeleton" based on the Screen Groups and Navigation Map.

Using of Rapid Software Design helps to use an ubiquitous language and application structure for all team members. And it helps to reduce the uncertainty of code structure and prevent explosive technical debt grow for large and long running mobile projects.

Rapid Software Design Guide: https://books.binwell.com/software-design-of-mobile-applications/
Demo of using Software Design: https://github.com/Binwell/Order-King-Mobile-Core

Slava Chernikoff

November 16, 2018
Tweet

More Decks by Slava Chernikoff

Other Decks in Science

Transcript

  1. Approach to Rapid Software Design of Mobile Applications Slava Chernikoff

    Voronezh State Technical University, Russia Binwell, Russia
  2. 1 Introduction Since 2005 in Mobile industry: European, Russian and

    USA companies. Head and co-founder of Binwell Ltd. Played all possible roles in software development: from product owner to manual QA tester Xamarin, Qt, Mobile HTML5, Native iOS Microsoft MVP, Xamarin Certified Developer, Qt Certified Specialist, Qt Ambassador, Nokia Champion
  3. 2 Software Engineering Problem #1 Everyone use its own language,

    terms, models, mental algorithms Developers are working power and should translate everything to the application code. Every developer do that job in its own way Developers should understand languages of other roles Features (Business language)
  4. 3 Software Engineering Problem #2 Every developer use its own

    mental model without whole vision and with high level of uncertainty It leads to “fake complexity”, poor code structure and fast growing technical debt
  5. 4 Software Engineering Problem #3 No documentation for code. New

    developers make code structure even worse Traditional documentation is hard to maintain and it doesn’t provide the whole vision and the code structure It leads to explosive technical debt grow for large and long running projects. It means high maintenance and evolving costs
  6. 5 Searching for the solution To solve these problems many

    approaches were tried: - Domain Driven Design: not good for mobile (and UI centric) applications - Clean Architecture: don’t structure the code on screen level, not good for mobile - RIB Architecture, Reactive Extension: overengineered and produce a lot of useless code - Babok analysis way, Test Driven Design, Behavior Driven Design, UX Flow and User Journey Maps, Code Metrics, Dependencies Diagram, etc All of them are hard to learn and explain for newbies. Most of them are not applicable for mobile applications. They can’t be used and understood by ALL team members. Translation is necessary
  7. 6 Rapid Software Design of Mobile Apps New step before

    actual development. It can be combined with traditional Waterfall and Agile development methodologies In Agile it can replace original “Design” phase Rapid Software Design is an algorithm and a model to produce Documentation for Code and vice versa. Such documentation is clear for all team roles
  8. 7 Rapid Software Design Major Step #1 Group, Name and

    Number all screens. Use these names in code: /UI/Pages/Account ProfilePage.xaml /BL/ViewModels/Account ProfileViewModel.cs
  9. 8 Rapid Software Design Major Step #2 Make a navigation

    map. Show starting points. Use colors for every screen group Dynamic screens have states. Negative states (stop user) marked “-”
  10. 9 Rapid Software Design Major Step #3 Write specs for

    every screen to a table: - States - Fields for Validation - Behavior - Styles - AutomationId (used for automatic UI-tests)
  11. 10 Rapid Software Design Result Solving major problems: - Ubiquitous

    language for all team members - Unify code mental models - Produce lightweight documentation for code Side effects: “monkey” algorithm, slow technical debt grow Initial project skeleton
  12. 11 Testimonials 3+ years of constant improving and using of

    Rapid Software Design at Binwell Ltd. Many mobile projects for largest Russian businesses in teams of 2-7 software engineers 40+ school and university students were able to go through all steps, understand the approach and produce fine structured projects code 20k+ views of articles and videos about Rapid Software Design with high rates. Great feedback from Russian Xamarin developers community Step-by-step demo of making a skeleton: https://github.com/Binwell/Order-King-Mobile-Core
  13. 12 Future works Use automatic generation of initial project code

    based on the documentation. Currently with Xamarin.Forms and Binwell’s open sourced base classes Use automatic generation of documentation from code on every commit or directly from Visual Studio. Produce PlantUML (to export PNG images), AsciiDoc and Markdown files to make documentation accessible directly from GitHub, Bitbucket, etc
  14. Approach to Rapid Software Design of Mobile Applications Slava Chernikoff,

    [email protected], +7 (915) 589-93-62 medium.com/@slava.chernikoff Thank you for your attention!