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 (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 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 ., 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 , 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, (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, 227 Error code, 139–140, 153 proprietary languages, 227 Evidence, 34–35, 37, 46 self-documenting code, 228 Exception handling, 33, 36, 38, 39, 46, Inheritance, 218, 224, 225, 253 136–140 Instant messaging, 210, 215, 261, in Java, 254 263 Integrated solutions, 239 FAT, 261, 263 Intentional programming, 73 FEAT, 72–73 Interceptor, 77–78, 81–82 Floyd–Hoare’s program calculus, 26, Internet aware software, 240 219, 226 Internet Explorer InfoBar, 24 Formal Invariant, 40, 41, 168–170, 183 methods, 2, 4, 26, 27, 40, 47–49, 218, abstract, 224 219, 226 class, 168, 169, 183 334 INDEX

concrete, 224 Knowledge management, 251 object, 40 applicability for TWC, 129–131, 135, Iterator, 72, 224, 244 137, 140, 167, 186 –188, 192– 194 JAC, 76 Knowledge.NET, 15, 251 Jackson’s method (of ), 226 Least privilege, security design Java, 42, 55–61, 63–64, 66–72, 75–79, principle, 17, 19 83–88, 90, 97, 124 Life cycle, see also Security annotations, 69, 76, 78, 87, 253, 257, development life cycle 260 of software development, 214, 221, bytecode, 59, 66, 75, 77, 241, 253 228, 229, 232 class fi le, 46 waterfall model, 18, 202, 221 Community Process (JCP), 252, Lint, verifi cation tool, 21, 48 260 Linux, 214, 261–263 Compatibility Kit (JCK), 229 LISP, 244 compiler, javac, 48, 61 Logging, 3, 67, 69, 92, 101, 107, 116, 123, Cryptography Extension (JCE), 45 157–161 Development Kit (JDK), 253, 259, LogicAJ, 76 260 LOOM.NET, 80–81 Enterprise Edition, 42, 257–259 Micro Edition, 42, 257–259 Maintenance, as part of the software Native Interface (JNI), 43 life cycle, 231, 232, 234, 235 native method, 43 bug fi xing, 27–30, 231–232 notify method, 47 bug report(s), 232–233, 237 Public Key Infrastructure (PKI), 45 recommendations to software teams, reliability issues, 46–48 27–30 Standard Edition, 42 relation to AOP tasks, 7, 56, 62, 63, stop method, 48 70, 90, 165–168, 232 StringBuffer class, 254 Managed code, 32. See also .NET suspend method, 46 Managed execution, 32, 37–42, See also teaching, 251–260 .NET Virtual Machine (JVM), 43, 45, 46, Managed pointer, 32. See also .NET 229, 241, 259 Manufacturing, as part of the software wait method, 47 life cycle, 234, 235 JavaBeans, 241, 255, 257, 259 product documentation, 234 JavaScript, 21, 73, 264 source code control systems, 234–235. Java Security Aspect Library (JSAL), See also RCS, SCCS, 133 Teamware Javassist, 76–77 stages of shipping the product, 234 JavaTest, 231 version numbers, 234 JBoss, 76–77 mdbg— Managed Debugger, JMangler, 76, 78 83 Join point, 52, 56, 58, 60, 61, 64, 67–69, Mean time between failures (MTBF), 74, 78, 81, 85, 89, 94, 95, 97, 98, 25–26 104, 105, 106, 109, 111–114, Memory management, 215, 242, 249, 117–119, 122, 125, 126, 200, 251, 259, 262, 263 203, 204, 207 Metadata, 32, 38, 39, 42, 43. See also JUnit, 231 .NET INDEX 335

Metric, software .NET, 31–34, 39, 40–47 Halstead’s, 25 Active Oberon ().NET, 32 McCabe’s (cyclomatic complexity), as a factor for compiler development, 25 264 Microsoft as a platform for AOP, 87 Developer’s Network Academic common language infrastructure Alliance Curriculum (CLI), 31 Repository (MSDNAA CR), 9, (CLR), 104, 209, 212, 239, 262, 265, 32, 213, 241, 242, 250 266, 268 common language specifi cation Outlook, 216 (CLS), 31, 33, 213, 215, 243, SQL server, 242 247–248 Midlet, 257, 259 (CTS), 31, 33, Minimal attack surface, security design 250, 267 principle, 19, 20, 35 course, 238–249 Mixin, 78 C#, 31 Mobile devices course, 238–249 software, 240 Eiffel.NET, 32, See also Eiffel Model–view–controller (MVC) Framework, 61, 204, 242, 243 paradigm, 226, 256 basic class library (BCL), 243 , 253 JScript.NET, 32 , 3–5, 214, 218, J#.NET, 32 222, 268 Managed C++.NET, 32 Module(s), 2–5, 51–53, 55–57, 65, 70 Microsoft Intermediate Language arguments, 51 (MSIL), 32 cohesion, 217, 222 shared-source common language coupling, 217, 222 infrastructure (SSCLI), 31, exceptions, 51 250 implementation, 51 Visual Basic.NET, 32 interface, 51 .NET 3.0, 42 results, 51 NetBeans, 210, 215, 258–259 semantic net of, 52 C/C++ pack, 258 semantics, 51 Network side effect, 51 heterogeneous, 241 unit of programming knowledge (or Networking independent idea), 52 in Java, 256 Monitor, 211, 215, 262 ISO/OSI model, 214, 263 , 31, 241, 251, 268. See also Never install, option, 24 .NET NullPointerException (in Java), 254. See MS-DOS, 6, 261–262. See also also Exception handling Operating systems NullReferenceException (in .NET), Multicore hardware, 214, 264, 268 39. See also Exception Multithreaded (MT) safety, 2, 52, handling 145–149 Multithreading, 46–47, 145, 211, OBJ, algebraic specifi cation language, 214–215, 249, 251, 252, 254, 26, 211, 219, 225, 226 260, 262 object invariant in Spec#, 40 in Java, 254 object-oriented programming (OOP), 5, Mutual exclusion, 47, 142, 146, 148 55, 61, 63, 70, 73, 75, 86, 89, 96, 336 INDEX

124, 176, 209, 218, 224–225, Process, 142, 214, 243, 255, 260, 262, 263 245, 247–248, 254 lightweight, 214, 255, 260, 262 pitfalls, 5, 55, 218, 224, 225 PROLOG, 86, 87 (s) (OS), 2, 9, 11–12, Property, 38, 44. See also .NET 14, 16–17, 33, 51, 124, 188, Pseudocode, 3 208–209, 214, 216–218, 220, Public key token, 33. See also .NET 260–263, 266, 268, 271 Puzzle.NET NAspect, 80 Elbrus, 238, 260–264 Python, 32, 73, 264 Linux, 214, 261–263 Solaris, 25, 214, 217, 261–263 Race condition, 142, 143, 146, 148 THE, 50 Rapid prototyping, 3 Windows, 13–14, 18, 21, 24–25, 33–34, RCS, 235 37, 42, 103, 188, 203, 214, 217, Refactoring, 84, 103, 124 241–243, 250–251, 261–263 Reference types, 248–249. See also Optimization, 214, 215, 265, 266–268 .NET common type system Refl ection, 38–39, 42, 46, 68, 77, 119, Paging, 215, 261, 263 158, 161, 200, 249, 250, 253, 255 Parsing, 214, 264–266 in Java, 253 Pascal, , 3, 5, 6, Refl ex, 76 124, 137, 140, 213, 222, 224, Regedit, utility, 25 227, 244, 248, 256 Reliability, 11–15, 25–27 Pascal, Sun compiler, 27–29, 213 methods of design and Pharming, 13, 23 implementation, 26 Phishing, 13, 23, 24 methods of formal specifi cation and Phoenix, 83, 92, 95, 97, 103–105, 122, verifi cation, 26 125, 264, 270 methods of software testing, 26 Academic Program, 210 Repeatable process, as element of SDL AddNopTool / MAddNopCounter implementation, 18 sample, 104, 122, 161 Representation, procedural, 38 High-level intermediate RISC architecture, 214, 266 representation (Phoenix HIR), Rotor, see .NET, shared-source 97 common language Phx.Morph, 80, 83. See also Wicca infrastructure Pointcut, 56, 60, 64, 67, 68, 74, 78, 81, 85, Ruby, 32, 73, 264 86, 87, 89, 90, 97, 98, 124, 126 designator, 56 Sandbox model, 44–45 named, 56, 67–68, 126 SCCS, 234–235 Portable executable (PE) fi le, 32. See SD3C software process principles, 17–18, also .NET 221 Postcondition, 40, 41 SDL, algebraic specifi cation language, Postobject programming, 63 26–27, 211, 219–220, 225–226 PostSharp, 80–82 Seasar, 76 Laos, weaver, 81–82, 133 Seasar.NET, 80 Precondition, 26 Secure by default, software process PREfast, security tool, 21 principle, 18 PREfi x, security tool, 21 Secure by design, software process Principal, 36, 37 principle, 17 PrincipalPermission, 36, 37. See also Secure coding templates, 20 .NET. Secure in deployment, software process Privacy, 11–15, 23–25 principle, 18 INDEX 337

Secure software engineering, 217, 221, Spring.NET framework, 80 225, 228, 238 SQA engineer(s), 230, 236 Security, 3, 12, 15–23 SQE engineer(s), 230, 231, 236 annotation framework (SAF), 133 SQFD model, 190–193, 225–226, 236 central team, 19 Statement, 3 classifi cation and analysis, 16 goto, 3, 222, 230 code access, 34–35 if, 3 declarative style in .NET, 35 while, 3 development life cycle (SDL), 17–19, Stepwise refi nement, 3, 221, 226 22, 221, 226 Strictly typed language(s), 244. See also evidence-based, 34 Type fi nal review (FSR), 22 STRIDE, threat categorization scheme, for home users, 16 17, 221 for offi ce users, 17 Strong name, 33, 35, 40 for software developers, 17 , 3, 26, 214, imperative style in .NET, 36 218, 221–222 in Java, 44–46 Subject-oriented programming, 71 manager (in Java), 45 composition rules of, 71 policy, 35, 37, 45 Sustaining, See Maintenance product advisor, 19 Swing, 256 provider (in Java), 46 pluggable look-and-feel (PLAF), 256 push, 21–22 Synchronization, 2, 3, 4, 8, 214, 215, 255, quantitative assessment, 16 260, 262 role-based, 34–37 event-type, 143 stack walk in .NET, 36, 45 resource-type, 143 technologies and tools, 15 user-group model, 35 TeamWare, 234, 235 SecurityException, 36, 45 T-ERATO teaching paradigm, 215 sed, 186 Testing, as part of the software life Semaphore, 89, 143–145, 160, 211, 214, cycle, 202, 214, 221, 228–231 215, 229, 262 benchmarking, 229, 231. See also P operation, 89 Testing, performance testing V operation, 89 black box testing, 26, 228, 229 Serialization, 242, 243, 255 boundary values testing, 20, 21, 26, 230 set, 38. See also Property. code inspection, 228, 230 Signal (in CLU), 211, 224, 254 code review, 230 Simplify, theorem prover, 41. See also compatibility testing, 229. See also Spec# Java compatibility kit SIMULA-67, 73, 213, 224–225, 248 exclude lists, 231 SmallTalk, 224, 225 golden fi les, 231 SmartScreen, 23 performance testing, 229. See also SNOBOL, 244 Testing, benchmarking Solaris, 25, 214, 217, 261–263, 266 regression testing, 229 Spam, 13, 23–24, 150, 216, 237 security testing, 20–22, 229 fi lter(s), 12, 23, 216 stress testing, 229 SPARC, 213–214, 266 test base, 228, 231 SPBU.NET project, x, 208, 209, 212– test case(s), 228, 231 215, 268 test coverage, 26, 228–230 Spec#, 27, 39–41, 219, 224–226, 251 test-driven development, 205, 206, , 76, 133 228 338 INDEX

test harness, 124, 157, 231, 253. See Vienna defi nition method (VDM), 226 also: JavaTest, JUnit Visual Studio integration program white box testing, 26, 228, 229 (VSIP), 85 Threat modeling, 20 VLIW architecture, 214, 215, 264, 268 TIP (Technological Instrumental Package) technology, 7, 53, 54, Wasp for Java, 49 62, 226 Wearable computer, 240 access interface, 7, 54 Weave.NET, 61, 80, 82 concept level, 7, 54 Weaving, 2, 54 creation/deletion interface, 7, 54 “blind,” 64, 73, 74, 98, 106, 112 defi nition level, 7, 54 dynamic, 58 output interface, 7, 54 rules, 2 representation level, 7, 54 static, 58 update interface, 7, 54 at class loading time, 59 TrustSPBU.NET project, x, 208, at the intermediate code level, 59 215–220 at the object code level, 59 Trustworthiness (of software), 1, 10 at the source code level, 59 Trustworthy computing (TWC), 13–16 during just-in-time compilation, networking issues, 13 60 primary issues, 11 in Aspect.NET, 111 principles, 12 Web applications, 239, 256, 259 sharing issues, 11 Web forms, 33. See also .NET software reliability issues, 11 Web services, 34. See also .NET Trustworthy Computing Initiative by Wicca, 80, 83. See also Phx.Morph Microsoft, 1, 13–16, 215, 221 Windows CardSpace, 42. See also .NET four “pillars”, 13 3.0 Type, Windows communication foundation, non-null in Spec#, 40, 41 42. See also .NET 3.0 parametrized, 224, 245, 256, 257. See Windows forms, 33, 241–242, 250–251. also Generics See also .NET Typeless language (s), 244 Windows presentation foundation, 42. See also .NET 3.0 UML, 65, 66, 190, 207, 226, 240, 272, 275 Windows workfl ow foundation, 42. See Unboxing, 43–44, 211, 253, 254 also .NET 3.0 UNIX, 21, 33–37, 62, 186, 216, 261–263 Windows XP service pack, 24 Unmanaged code, 34. See also .NET Wrapper(s) Unsigned types, 47–48 class, 44 Usability, as the fi fth “pillar” of TWC, 15 dynamic (in JAC), 78 Value types, 248–249. See also .NET common type system XML, 34, 35, 42, 61, 73, 75, 81, 83, Variable(s) 84–85, 96, 132, 188, 213, 216, container approach, 248–249 220, 240, 243, 258 object reference approach, 248–249 confi guration fi le(s), 77–78, 80, 84–85, Versioning, 33. See also .NET 132, 188, 216, 220, 241 Vertical cut, 7, 53, processing in Java, 258–259 implementation by tangled actions, 53 Web service(s), 213, 251 implementation of extending function, 53 Z notation, 26 technology, 53 ZFS, fi le system, 25