Software engineering means the ability to manufacture software products automatically, without writing any code manually. This concept is still relatively theoretical and unattainable in software industry, although it could be implemented practically by generating codes automatically out of Modeling Diagrams, using special software products called CASE Tools, like StarUML/WhiteStarUML, Modelio, and others.
This trend represents the bedrock for transforming the process of software producing and developmnt from a human, creative and ad-hoc process into systematic, industrial, and engineering process. Just like transforming in tangible physical industries from handicraft to process to manufactural automatic process. The only main difference between these two cases is the role of real software engineering to avoide human error that represents in fact a real watchful obsession in software idustry comparing to it —i.e. human error— in other industries.
Software-Component Reusability helps in enhancing the automated software process, due to its role in reducing the need to write more codes. The sucess of Reusability actually depends exceedingly on the extent of how much developer knows about the components and resouces enclosed and offered by the platform he/she intend to target.
In contrast, the obsession of interoperability, which means the ability of a softaware product to work in different platforms, stands often as a discouraging factor asgainst Reusability adoption and moving forward toward the best invesment on a specific-platform’s components.
Thus, Interoperability stands actually as a prevention against the automated software process, not to mention its role as a prevention too against software usability in the end.
This sction highlights some of these components and resources, in attempt to develop and optimize them and adopt them to be better reusable components.