در طي چهار دههاي که فرايند مهندسي نرمافزار تکامل يافته، يکي از اهداف مهم آن ايجاد نرمافزارها به گونهاي است که قابليت استفاده مجدد و ميزان تحملپذيري آنها در مقابل تغييرات مختلف افزايش يابد. در اين راستا رويکردهايي مانند رويکرد ساختيافته و شيگرا ارائه شدهاند؛ هر دو رويکرد تاکيد دارند که نرمافزار از بعد وظيفهمندي به اجزاي کوچکتري تقسيم شود تا با اين کار قابليت استفاده مجدد اجزاي مختلف نرمافزار افزايش يابد. اما اين رويکردها هنوز نتوانستهاند در حد اعلايي قابليت استفاده مجدد و ميزان تحمل پذيري نرمافزار در قبال تغييرات را افزايش دهند. در اين راستا، رويکرد جنبهگرا ١ که تاکيد بر نيازهاي غيروظيفهمندي ٢ در کنار وظيفه مندي نرم افزار دارد، براي تقسيم نرمافزار به اجزاي کوچکتر با تاکيد بر هر دو نياز ارائه شده است.