Model upholstery with buttons?
The following workflow is recomended:

Method 1:


Create unit mesh;
Array modifers;
Bevel modifier (type: Vertex Group);
Apply modifiers, inset ngons, then poke;
Proportional edit (type: Random)
refinement.






For Step 1:



For Step 5:



Example file for Method 1

Tip: Things can be much faster by using Select Similar operator (ShiftG) while processing.



Method 2:


Create unit mesh;
Array modifiers;
Translate the four corners and one center vert with Proportional Editing Falloff.
Refinement.




For Step 3:



Example file for Method 2

Note: Comparing with Method 1, the topology is cleaner with less wrinkles, which may be less realstic, but could probably be expected.