Software complexity is a real problem that is causing lots of monetary losses in enterprise software systems around the world. As iOS apps are getting bigger, they may start to suffer the effects of complexity (more bugs, ineffective testing...). In this talk we are going to explore how using more restrictive models than object oriented programming can help us manage this complexity, with the trade offs of producing less natural solutions, and an impact on modularity. The main topics will be:
- The importance of understanding our programs
- Kinds of complexity in iOS apps
- Effects of state in our understanding of programs, and in testing
- How Swift help us model a functional core
- Testing our functional core using property based testing
- Redux implementations in iOS