Component-based software engineering, by contrast, makes no such assumptions, and instead states that developers should construct software by gluing together prefabricated components - much like in the fields of electronics or mechanics . Some peers [ who? ] will even talk of modularizing systems as software components as a new programming paradigm . Example for possible paradigm: many experts [ who? ] feel adaptability to evolving needs is more important than reuse, since 80% of software engineering deals with maintaining or releasing new versions. So it is desirable to build complex system by assembling highly cohesive loosely coupled large components, where cost of redesigning each of such adoptable components (or replacing by a better component) must be minimized.