Copyrighted Material
Total Page:16
File Type:pdf, Size:1020Kb
Index Abstract data type(s), 4, 72, 86, 223, Ancestor class, 245. See also Object- 244 oriented programming abstract operations, 4, 7, 244 ANTLR, 215, 265, 267, 268 encapsulation of concrete Applet, 44, 255 representation, 4 Argument consistency checking, Abstraction layer, 51 153–154 Abstract Windowing Toolkit (AWT), ArgumentException, 137–139 255 Aspect(s), 2, 55–56 Adaptive programming, 71. See also classes (in LOOM.NET), 81 DemeterJ cross-language interoperability, ADJ group, 211, 224 84 ADO.NET, 33, 242, 251 generic, 90 Advice, 56–58 implementation language, 60 custom attributes (in LOOM.NET), in Aspect.NET, 88–90 81 action(s), 89 Agile programming, 202–203, 205–206 condition(s), 89 eXtreme Programming (XP), 202, after, 95, 100, 116 205, 228,COPYRIGHTED 236 MATERIALbefore, 91, 110, 116 relation to AOP, 205–206, 208 instead, 100, 116 Scrum, 202–203 data, 89, 100, 105 AJAX, 250, 251, 258, 259 header, 91 Algebraic specifi cation methods, 226 module(s), 89, 92, 93, 98, 105, 109, ALGOL 5, 246, 248 114 ALPHARD, 224, 244 name, 88, 111, 115 Using Aspect-Oriented Programming for Trustworthy Software Development, By Vladimir O. Safonov Copyright © 2008 John Wiley & Sons, Inc. 329 330 INDEX representing by custom attributes, staticinitialization, 69 92–94 privileged aspects, 68 (weaving) rule(s), 89, 93–94, 109, 117 thisJoinPoint, 67, 68 issues of introducing specifi cation Aspect-oriented modeling, 275 features into implementation Aspect-oriented programming (AOP), language 2, 270, 275 conceptual confusion, 60, 68, 75 adequacy for trustworthy computing, dependence on one’s own specifi c 2 tools for extended language annotations, support, 61 language neutral, 95, 96 diffi cult integration with common applying for use tools and IDE, 61 argument consistency checking, 153, locating, 57 156 mining, 7, 29–30, 61–62, 65, 89–90, business integrity, 29–30 165. See also Aspectizing design by contract, 129, 168–183 using lexical structure of the source error handling, 129, 136–142 code formal specifi cation and verifi cation, using types defi ned in the 164–165 application, 62 logging, 157–161 reusability, 54 multithreading and multicore-based specifi cation language, 60–61 applications, 145–149 Synchronization, 90–92 privacy, 25, 149–153 updating, 20 profi ling, 161–164 AspectDNG, 80–81 reliability, 27, 153–157 Aspectizing, 89–90, 94, 98, 165 security, 22, 132–136 AspectJ, x, 66–71 synchronization, 142–145 advice declarations, 67 framework, requirements to, 90 advices, kinds of generic nature, 85 after, 68–69 issues around, 68–69 “blind” weaving, 98 before, 68–69 conceptual confusion, 75 ant tasks support, 67 effi ciency, 63 aspect browser (ajbrowser), 67 losing aspect confi guration aspect defi nitions, 67 information, 75–76 alternative form using annotations, recipes of growing AOP popularity, 69 63 compiler (ajc), 66 security, 63 development tools (AJDT), 66 semantic gap between the sources documentation utility (ajdoc), 66 and the application code after integration with AspectWerkz, 69 weaving, 75 intertype declarations, 67 metalanguage, 88–90, 92, 93, 95, 96, language, 66–67, 69 98, 99, 101, 102, 104, 106, 107, load-time weaver, 67 108, 114. See also AOP named pointcut defi nitions, 67 specifi cation language pointcuts, types of perspectives, 123 call, 69 increasing application in the execution, 69 industry, 123 handler, 69 integration to knowledge initialization, 69 engineering, 124 set, 69 ubiquitous use, 124 INDEX 331 “pitfalls,” 8, 73, 75–76 framework, 61, 85, 92, 97, 99, 103, 104, recipes of trustworthy applying for 106, 107, 122, 125, 127, 128, trustworthy computing, 130, 135, 139, 167, 186, 187, 189, 130–132 204 avoid weaving conditions with Aspects tab, 111, 113, 135, 188 intersection of scopes, 131 Find joinpoints button, 111, 135 browsing and deselecting join points options, 113–114 if appropriate before weaving, selection and deselection of join 130 points before weaving, 130, 167, capturing join point context, 131 186, 188, 204, 207 making the weaving conditions as Weave aspects button, 135, 158, 188 narrow as possible, 130 join point(s), 140, 167 relation to knowledge management, 9, call, 91, 100, 102, 109, 110, 116, 117, 95, 97 120, 121, 125, 126 scope of applying, 62 context capturing, 114, 118–120 secure tools of, 63 performance assessment, 184–187, specifi cation language, 193–202. See also effi ciency complicated, as an AOP issue, 87 assessment language-agnostic, 87 perspectives, 125–127 tools aspect debugger, 126 requirements summary, 90 aspectizer, 127 for .Java, summary, 78 aspect repository, 127 for .NET, summary, 84 aspect script actions, 126 ubiquity, 85 %assign and %use join points, 126 Aspect#, 80–81 displaying changes in the source Aspect.NET, 8–9, 20, 22, 33, 36, 40–41, code, 126 46, 49–50, 57–64, 66–67, 74, 76, generic aspects, 90–92, 126 79–80, 83, 85, 88–92, 94, 96– join point fi lters using attributes to 99, 101–145, 158, 163–165, 167– mark entities, 125–126 170, 178, 183–191, 193–194, productization, 125 196–202, 204, 206–207, 210, rule sets, 126 214, 217, 220, 225, 238, 251, TargetMemberInfo feature, 104, 109, 270–271 110, 116, 119, 122, 158 aspect(s) version 1.0, 103, 114 self-documenting, 120. See also version 1.1, 103, 114 AspectDescription version 2.0, 104 Aspect class, when using customs version 2.1, 91, 102–105, 114, 117, 118, attribute directly, 120–121 119, 122, 136, 164, 190 AspectDotNet namespace, 94, 110, porting from Aspect.NET 1.0 or 1.1, 158, 171, 174 104 attributes for representing aspects weaver, 59, 105–106, 111–114, 117–118, AspectAction (version 2.1), 120–121, 122, 140, 189, 198 158 scanning phase, 105 AspectDef (version 1.0), 114 weaving phase, 105 AspectDescription (version 2.1), 110, Aspect.NET.ML, 88, 99, 104, 114–120, 114, 120–122 126, 127, 129, 134, 158 convenience features, summary, 206 keyword(s) converter (preprocessor), 120 args, 116 effi ciency assessment, 193–202. See aspect, 99, 109, 114–115 also performance assessment modules, 115 332 INDEX RetValue, 119 Cluster (in CLU), 224 rules, 115 CMM, 235, 236 SourceFileLine, 119, 120 COCOMO model, 184–186 SourceFilePath, 119 Coercion, 246–247 TargetMemberInfo, 119, 122 COM, 241 TargetObject, 119 Communications, software process This, 119 principle, 17–18 withincode, 118 Compiler WithinMethod, 119 ahead-of-time (AOT), 214, 267 WithinType, 119 development, 213–215, 218, 263–268 rule sets, 126. See also Aspect.NET error diagnostics, 265 perspectives error recovery, 265 ASP.NET, 250 just-in-time (JIT), 32, 242, 250, 264, Assembly, 21, 32–40. See also .NET 267 Assertion(s), 168, 169, 170, 217, 246, 254 trustworthy, 219, 264 Atomic synchronization operations, 146 verifying, 40, 219 Attack Component-oriented software, 241 distributed denial of service (DDoS), Compose*, 80 12, 220 Composition fi lters, 72 Attributes, 33, 35–38, 39, 41. See also implementation part, 72 .NET interface part, 72 custom, 42 input and output fi lter sets, 72 Authentication, 34, 37, 45, 46 superimposition clause, 72 Kerberos, 45 Conceptual explosion, 5, 75, 218, 225 passport, 37 Concern, 52 Windows, 37 core, 55 AuthentiCode, 24 cross-cutting, 2, 55, 226 graph, 72. See also FEAT BESM-6, Russian mainframe, 214, 260 modular, 55 BoogiePL specifi cation language, 41. separation of, 71 See also Spec# multidimensional, 71 Bowl-of-spaghetti software, 3, 221 Concurrency, 211 Boxing, 13, 44, 211, 253, 254 Contract bug in .NET Common Type System, 246. closing, 29 See also Design by contract duplicates of, 28 CORBA, 241 fi xing, 29 cpp preprocessor, use with Java, 48 Burroughs 5000/5500/6700/7700 Critical section(s), 47, 143 computers, 5, 212, 216, 238 C++, 21, 257, 268 Business integrity, 10, 12, 13, 19, 27–30 Deadlock, 47, 49, 143, 146, 148, 149 C, 247 Defi nition CaesarJ, 76, 77 current effective, for an identifi er, CafeOBJ, 211 213 Casting, 247 Demand, imperative security method, CDL/2, 51 36 Chief programmer’s team, 214, 235 DemeterJ, 71 CLU, 5, 90, 137, 211, 214, 223–224, 244, Denotational semantics, 26, 219, 226 248, 254, 257 Deprecated method, 46–47 INDEX 333 Descendant class, 245 specifi cation(s), 2, 4, 26, 218–219, Descriptor, 6 224–226, 229, 246 Design by contract, 40, 168–183, 219, verifi cation, 2, 4, 218–220 222, 284, 295 FORTRAN, 2, 137, 140, 264 contract notion, 168 Fuzz testing (fuzzing), 20 Eiffel, 168 FxCop utility, 18, 20, 21, 39–40 postcondition (ensure), 168 precondition (require), 168 Generative programming, 73 DISPAK, 260. See also Operating Generics, 52, 90, 96, 249, 251, 256–259 system(s) in Java, 256–259 DLL hell, 33. See also .NET get, 38. See also Property, 38, 44, 100, DotSpect, 80 119 DREAD, threat assessment paradigm, Global Assembly Cache (GAC), 38. See 17, 221 also .NET, 31–34 Dynaop, 76 GPRS, 215, 261, 263 grep utility, 7, 8, 62, 74 ECMA, .NET standards, 31 Eiffel, 40, 219, 224, 246 HIPO diagrams, 226 Elbrus computers, 6, 210, 260–264 Human interface proofs (HIP), 23 E-mail(s), 12–13, 23–24, 28, 216, HyperJ, 55, 70 235–238 hypermodule, 71 as a tool for software process, hyperslice, 71 235–236 hyperspace, 71 Embedded systems, 240 composition rules of, 71 Encryption, 24–25 Engineers’ education, element of SDL IBM 360, 2 implementation, 17–18 ICED-T model, 187–190 Enumerations in Java, 256 ildasm utility, 197 EL-76, 5 Implementation, as software life-cycle Encase, 80 stage, 226 EPIC architecture, 214, 215, 264, 266, coding style, 228 268 Hungarian notation, 228 ERATO (experience, retrospective, coding templates, 227–228 analysis, theory, oncoming choosing the language perspectives) teaching customer factor, 227 paradigm, 9, 208–211, 252 fi rst language factor,