Re: [AM] Requirements Encapsulation
Peter Lynch <[email protected]> Tue, 30 Mar 2004 12:03:24 +1000
| Newsgroups | gmane.comp.programming.modeling.agile |
|---|---|
| Message-ID | <[email protected]> |
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Are you looking for savings on products you use everyday?=20 Visit Quality Health today and see the coupons, free=20 samples and special offers our members enjoy each and=20 everyday. http://click.topica.com/= caab5n1bUrKDAbWnbtka/ Ivo Interactive =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D "The basic idea of information-hiding is to identify things that have a high probability of change, and encapsulate those things to make the implementing code easier to change later. If requirements (or data structures, or hardware) never changed, then there would be no need to encapsulate them." I reckon this is at the essence of agile. Encapsulation has many advantages, but I have found that the view which produces the easiest to maintain systems is semantic clarity. If the code "says" what it is doing, it is easier to understand. And easie= r to maintain. ----- Original Message -----=20 From: "Rick Lutowski" <[email protected]> Cc: <[email protected]> Sent: Tuesday, March 30, 2004 4:42 AM Subject: Re: [AM] Requirements Encapsulation =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Are you looking for savings on products you use everyday? Visit Quality Health today and see the coupons, free samples and special offers our members enjoy each and everyday. http://click.topica.com/caab5n1bUrKDAb7u5T4a/ Ivo Interactive =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Steven Gordon wrote: > > Is it possible to identify a "unique stimulus set", let alone "the functionality tree", > without knowing all of your customer's software requirements? The basic idea of information-hiding is to identify things that have a high probability of change, and encapsulate those things to make the implementing code easier to change later. If requirements (or data structures, or hardware) never changed, then there would be no need to encapsulate them. So what is the probability of change for requirements? I have a paper that indicates 60-80% of all changes during the maintenance phase of the software life cycle are requirements changes. If this is true, then requirements are THE most volatile of all software information. Requirements therefore should have the highest priority for encapsulation, and should result in the highest financial payback to the customer of any application of the information-hiding approach. So the answer to your question is an unqualified 'yes.' Freedom fully expects the functionality tree will be incomplete or otherwise need to change in the future. This in no way hampers its development, or the development of the software. Quite the opposite. Freedom specifies techniques for writing code which should make future changes to the code easier when the functionality tree changes. Note that encapsulation doesn't make it easier to change the requirements spec, but rather the code that implements it. Encapsulation is a code-centric concept. But it relies on proper specification as a prerequisite. This why we have OO design --=20 it wasn't possible to encapsulate design decisions like data structures using the old functional design approaches. Design specification had to change. Likewise, requirements encapsulation requires new approaches to requirements specification. It is quite ironic that these new requirements spec approaches are NOT equivalent to OOA. OOA is just as inappropriate for requirements encapsulation as functional requirements! That may sounds oxymoronic, but it's true. Freedom's approach to requirements specification has nothing to do with either OOA (object requirements) or Use Cases (functional requirements). If anything, it is closer to Use Cases (depending on how one defines "Use Cases"; I have encountered at least two different views of what they are.) In reality, tho, it is not like either. A requirements spec that permits encapsulation is neither functional nor OO, it is external interface-centric. > What happens when a new requirement or requirement change comes along later that > effectively straddles 2 or more stimulus sets that were previously unique= ? A requirement will never straddle two stimulus sets. Changes that affect multiple stimulus sets are considered multiple requirements changes, not a single requirements change. Requirements have sufficiently high granularity under Freedom to make this a non-issue. It is also worth pointing out that requirements are NOT recorded using natural language prose (i.e., sentences) in Freedom. Parnas once wrote "PROSE IS THE SIGN OF AN ERROR" (his caps) in a requirements spec. Freedom follows this guidance and totally avoids prose for requirements capture. This also helps avoid "straddling" and similar sticky issues that can easily result from using prose. > I have found that approaches that depend on knowing all the requirements at the beginning of a > project are delusional in most domains, and are generally resistant to change. As mentioned above, Freedom in no way demands or expects all requirements to be defined up front. The whole approach is predicated on the assumption that requirements WILL change throughout the entire life of the software, including during development. This includes all ways that they might change: add, modify, delete. Freedom handles all these requirements change possibilities equally cleanly. > What happens when a "unique stimulus set of the functionality tree" leads= to a "functionality module" that is so large that further decomposition and= encapsulation is highly desirable? The granularity of requirements is sufficiently fine that overly large requirements encapsulation classes never result when the functionality tree and its constituent stimulus sets are specified properly. Various well-established rules of thumb come into play in this regard. One of the better known and most important is the Rule of 7+-2. Thus, the problem you postulate is not a problem in practice. If it did become a problem due to poor functionality tree specification, the users would probably be the first to drag your tail to the carpet about it. So the users act as another sanity check against this happening. Good questions. They show an appreciation of important issues, and a healthy constructive skepticism for Freedom's ability to address them. It's a pleasure answering such questions. I hope you found the answers informative. Thanks very much, Steven. --=20 Rick Lutowski Principal, JReality [email protected] http://www.jreality.com =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Menthol Smokers Only! Click on the link below and register to receive up to $50 in savings from one of America's leading menthol brands. http://click.topica.com/caab4S3bUrKDAb7u5T4f/ Lorillard =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D For more information about AM, visit the Agile Modeling Home Page at www.agilemodeling.com =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D **** Bounces like rubber! Shatters like ceramic! **** Discover Crazy Aaron's Thinking Putty in grown up=20 handfuls. It's the creativity unleashing, mood enhancing=20 desk toy! http://click.topica.com/= caab4CEbUrKDAbWnbtkf/ Crazy Aaron Enterprises =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D For more information about AM, visit the Agile Modeling Home Page at www.ag= ilemodeling.com --^---------------------------------------------------------------- This email was sent to: = [email protected] EASY UNSUBSCRIBE click here: http://topica.com/u/?bUrKDA.= bWnbtk.= Z2NtYS1h Or send an email to: [email protected] For Topica's complete suite of email marketing solutions visit: http://www.topica.com/?p=3DTEXFOOTER --^----------------------------------------------------------------