Introduction to the

Hello, I am black tea. I’ve been asked in the past, which area of iOS has the most technical depth? My answer is “stability”. The stability of the App is the most important technical requirement. Only when the App is stable and available can users continue to operate it. Otherwise, no matter how good the experience and functions are, the value will not be reflected. The index to measure stability is the Crash rate. Generally speaking, a Crash rate of 0.1% is a good level, and if it can be maintained at 0.01%, it is very excellent.

System complexity

Maintaining App stability is a complex systemic problem, and there are several typical complexities below.

Large code stock

Large projects often maintain hundreds of thousands of lines of code, and hundreds of thousands of lines of tripartite library code, much of it unread and buried in a lot of mines.

Code changes

For a booming product, there is a large amount of newly added Code in each version, so it is difficult to have enough time for Code Review, and the Crash of new versions keeps emerging.

The system upgrade is large

Apple has a history of doing things aggressively. IOS will be upgraded in September every year. The internal logic of the system library will be greatly changed. Many calls that used to be ok, especially the use of private API, may suddenly explode.

System library bugs

IOS system library actually also buried a lot of thunder, system library if you encounter the thunder may doubt life, unless you master the dragon skills, read system source code, skilled ARM assembly debugging.

High language complexity

At a minimum, OC and Swfit are used for iOS projects. Many middleware and system libraries are implemented in C and C++. Dart and JS are also used for the Flutter or Weex framework.

Cross – end technology

Now that cross-end business frameworks are prevalent, RN, H5, apet, and Flutter may exist in a project at the same time, causing more than 3 times the memory stress of Native.

There are many more that cannot be described…

Complexity modeling

I have developed a complexity model that describes complexity in three dimensions

Software system dimensions

A line of simple business code, through cross-language transformation, middleware call, system library call, semantic parsing, compiler processing, finally become CPU recognized instructions. Each layer has its own exception definition, and like a parkour game, your code must bypass all the exception traps before it can safely reach its destination.

To get around all of them, you need to understand the technical knowledge at each level, what exceptions are defined, and how to avoid raising them.

Dimension of R&D environment

Software development is a delicate division of labor. The product is responsible for figuring out business value, business development is responsible for writing business logic right, testing is responsible for quality control, and stability experts are responsible for troubleshooting problems.

With so much business code coming online each iteration, we wanted the system to be stable, not on our own. As head of stability, you need to build automated test processes, safe manufacturing practices, and develop developers who can produce high-quality code.

Operating environment dimensions

The production environment is particularly complex, and there will be many problems that cannot be replicated in the laboratory. Users are all over the world, network environments vary greatly, and service data is huge. Different users will bring huge differences in data input.

Only by deeply mastering the characteristics of the user environment, can we carry out more adequate coverage testing in the laboratory and adapt the code logic to different environment characteristics.

Stability construction method

review

Stability construction is the lifeline of App. As a complex and systematic problem, it requires specific and systematic professional knowledge. I will introduce the knowledge and construction methods of various dimensions in the future.

Welcome to communicate and join our team

Team and recruitment introduction