Reusability بدین معنی است که مولفه های نرم افزاری طوری طراحی شوند که قابلیت استفاده دوباره در نرم افزارهای دیگر را داشته باشند.
Usability بدین معنی است که مولفه های نرم افزاری طوری طراحی شوند که به آسانی و راحتی در فرایند تولید نرم افزار قابل استفاده باشند و کمترین پیچیدگی را داشته باشند.
از نظر پیچیدگی و سادگی در استفاده Reusability و Usability در مقابل یکدیگر قرار دارند، برای اینکه Reusability بالا برود باید هر مولفه نرم افزاری کار مشخصی را انجام دهد و تا حد ممکن مولفه های بزرگ به مولفه های کوچکتر تقسیم شوند که این باعث بیشتر شدن وابستگی بین مولفه ها و در نتیجه بالا رفتن پیچیدگی می شود.