Tuesday, January 20, 2015

A Note on Concern Partitioning

Team. An earlier post described a method for multidimensional concern partitioning. This pattern of the separation of concerns is compatible with most if not all software development life-cycles. Some of you might have thought that the technique was taken directly from the old Waterfall Model; however, there are not any reasons why the features, requirements, specifications, abstract and detailed designs, implementations, and test cases be fixed at the end of their stage of development. With the highly trace-able nature of this approach, it is completely possible that one might modify a specification when a discrepancy is found in a design or implementation object. Remember the Number Theory of Computing, software development is iterative and optimizing. With this hill climbing approach, we are working toward finding the "unique" number that perfectly describes our system.

Also, further elaboration on the multidimensional nature of concern partitioning is needed. Each traceable path describing a concern within a system represents a point in n-dimensional space. These traces are ( feature, requirement, specification line item, abstract design object, detailed design object, implementation object, test case ). Each ordinate in these tuples is a value on a "nominal" scale. Many different scales exist for measurement. We most frequently work with ordinal scales that represent a total ordering of values. But, scales can be nominal and unordered such as the axes with the values ( apples, oranges, grapes ) and ( celery, carrots, lettuce). Example points in such a 2-dimensional nominal space would be: (apples, lettuce), ( grapes, celery), ( oranges, carrots) , and etc. Each one of our traces using this form of concern partitioning represents a collection or list of nominal values that one can interpret as a point in an n-dimensional nominal space.

For those of you familiar with calculus and the notion of summing an aggregate of point-values to produce and area using integration, the summation of all of the nominal n-dimensional point-traces describing a software represents the complete system. This is very much like the Riemann sums in calculus which is the sum of a number of discrete subareas.

This complete system is describe-able in many forms including the summation of the concern traces and that "special" number associated with each program. We will revisit these concepts when we start creating our development documents after the initial prototype.

These are just a few notes on the separation of concerns. We will talk about chickens and eggs in the morning! Please, pardon any typos. Time constraints prevented effective hunting, pecking, and thinking. This post was reviewed and re-edited around noon and again the following day. This corrected a few mistakes. Happy Coding. La-La.

No comments:

Post a Comment