- From: Lynne Rosenthal <lynne.rosenthal@nist.gov>
- Date: Tue, 20 Jul 2004 14:43:10 -0400
- To: Karl Dubost <karl@w3.org>, www-qa-wg@w3.org
- Message-Id: <5.1.0.14.2.20040720143758.00b19818@mailserver.nist.gov>
This seemed to get too long, but its always easier to cut out words.... This is the first Good Practice, which if you don't do, then you skip over the rest of the Principles and Good Practices. These subsequent Principles and GP will be sent later (I still have to write them). Comments? D1 Subdivide Subdividing the technology should be done carefully it is not always a good idea. Be smart when dividing the technology so that it is not excessive and provides a positive impact on implementation and interoperability. Too many divisions complicates conformance and can hinder interoperability by increasing the chances of conflict with other aspects of the specification (e.g., other subdivisions). Requirements may be in multiple places and/or duplicative, making them more difficult to find and increasing the probability of conflict and misinterpretation. Subdividing the technology increases the likelihood that implementations will implement different subdivisions and thus not interoperate Good Practice: Subdivide the technology to foster implementation What does this mean?. It may make sense to subdivide the technology into related groups of functionality to target specific constituencies, address specific capabilities or hardware considerations, provide for incremental implementation, facilitate usability, etc. Why care? For some specifications (e.g., huge, multi-disciplined), bundling functionality into named or anonymous packages can · provide an additional level of scoping control, · improve readability and the ability to find areas of interest, and · facilitate implementation and interoperability, since implementing the entire, monolithic specification may be impractical and undesirable Related [Tech Note] contains additional information on three methods to subdivide technologies, Profiles, Levels and Modules. Technique: Use profiles. Profiles are subsets of a technology tailored to meet specific functional requirements of application communities. The specification may define individual profiles, or may define rules for profiles, or both. An individual profile defines the requirements for classes of products that conform to that profile. Rules for profiles define validity criteria for profiles themselves. Technique: Use functional levels (aka levels) Functional levels are a hierarchy of nested subsets, ranging from minimal or core functionality to full or complete functionality. Levels are a good way to facilitate incremental development and implementation. Technique: Use modules. Modules are discrete collections of semantically-related units of functionality that do not necessarily fit in a simple hierarchical structure. Use modules when functionality can be implemented independently of one another e.g., audio vs video module. It is common to have implementers pick and choose multiple modules to implement. Examples: Profile: SVG Tiny is a profile aimed at mobile phones. Profile: XHTML Modularization (XHTML-MOD, section 3) and SMIL (SMIL 2.0) specifications define rules for profiles. Levels: There are no examples in W3C where levels are defined explicitly in a single edition of a specification. CSS and DOM are examples where levels are the result of progressive historical development and technology enrichment and are realized in a series of specifications. Profile/Level combo: SVG Mobile define 3 nested profiles - Tiny, Basic, Full - which are really 3 levels, each targeted a specific hardware communities. Modules: example? STOP: Only proceed if you did the above Good Practice. Else, skip the rest of this section.
Received on Tuesday, 20 July 2004 14:45:50 UTC