Бағдарламалық қамтамасыз етудегі қиылысқан аспектілер – негізгі функциямен байланыссыз, бірақ көп модульдерге әсер ететін мүмкіндіктер. AOP, аспекттік бағдарламалау, бөлектеуге көмектеседі.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Кіріспе
Бағдарламаның аспектысі – бағдарламаның көптеген басқа бөліктерімен байланысты, бірақ бағдарламаның негізгі функциясымен тікелей қатысы жоқ ерекшелік. Аспект бағдарламаның негізгі мәселелерін кесіп өтеді, соның салдарынан байланыссыз функцияларды біріктіруге тырысатын мәселелерді бөлу принципін бұзады. Мысалы, журналға жазу коды көптеген модульдерді кесіп өтуі мүмкін, алайда журналға жазу аспектысі ол кесіп өтетін модульдің функционалдық мәселесінен бөлек болуы керек. Логтау және деректерді сақтау сияқты аспектілерді бизнес-логикадан оқшаулау – аспектке бағдарланған бағдарламалау (AOP) парадигмасының негізгі қағидасы. Аспекттік бағдарлау бағдарламалаумен ғана шектелмейді, өйткені ол қажеттіліктерді анықтау, ерекшелеу, талдау және модульдеу арқылы мәселелерді анықтау, талдау, іздеу және модульдеу үшін де пайдалы. Аспекттер функционалдық және функционалдық емес мінез-құлықты қамти отырып, кез келген басқа мәселелерді кесіп өтуге мүмкіндік береді, тек функционалдық емес мәселелерді функционалдық талаптарға бейімдеумен ғана шектелмейді. Аспектке бағдарланған бағдарламалық жасақтаманы дамытудың бір көзқарасы бойынша, бағдарламаның кез келген маңызды ерекшелігі, негізгі мәселе (бизнес-логика) немесе кесіп өтетін мәселе (қосымша мүмкіндіктер) – бұл аспект, және оларды біріктіру арқылы (құрастыру процесі деп те аталады) жеке аспектілерден тұтас өнім жасалады. Бұл тәсіл таза аспекттік бағдарламалау деп аталады, бірақ гибридтік тәсілдер жиірек қолданылады. Функционалдық мәселелер функционалдық емес немесе функционалдық мәселелерді кесіп өтуі мүмкін (мысалы, қосымша мүмкіндіктерге қажеттілік мобильділікке зиян келтіруі мүмкін). АОП-тағы таза тәсілге ұқсас, бейнелеу және құрастыруға бірыңғай тәсіл көп өлшемді бейнелеу деп аталады.
An aspect of a program is a feature linked to many other parts of the program, but is not related to the program's primary function. An aspect crosscuts the program's core concerns, therefore violating its separation of concerns that tries to encapsulate unrelated functions. For example, logging code can crosscut many modules, yet the aspect of logging should be separate from the functional concerns of the module it cross cuts. Isolating such aspects as logging and persistence from business logic is at the core of the aspect oriented programming (AOP) paradigm. Aspect orientation is not limited to programming since it is useful to identify, analyse, trace and modularise concerns through requirements elicitation, specification, and design. Aspects can be multi dimensional by allowing both functional and non functional behaviour to crosscut any other concerns, instead of just mapping non functional concerns to functional requirements. One view of aspect oriented software development is that every major feature of the program, core concern (business logic), or cross cutting concern (additional features), is an aspect, and by weaving them together (a process also called composition), one finally produces a whole out of the separate aspects. This approach is known as pure aspect programming, but hybrid approaches are more common. It is possible for functional concerns to crosscut non functional or functional concerns (e. g., the need for more features harms mobility). A uniform approach to representation and composition, similar to the pure approach in AOP, is termed multidimensional representation.