Pedro Chicherchio Professional Site



Pegasus original idea came up against some specific characteristics found in some IBM development environments:
 . the analyst did not always know programming;

Today, the analyst has regular training courses, or at least, technical analysis courses that, in one way or another, supply the tools used in this task, but do not go deeper into the environment in which they will be employed;

 . the analyst did not know the analysis;

In some IBM environments, especially in large institutions, analysts are trained with the routine of work and are usually “promoted” from some other function to the ranks of programming;

 . the programmer did not always understand what the analyst specified;

In some IBM environments it is common to have extremely competent programmers, “glazed” in code, but without the necessary language to communicate with the analysis;

 . one programmer does may not solve the same problem in the same way as another;

Creativity is an innate potential in human beings.

In short: it was not always known what to specify to solve a problem and it was not always known what was being specified, due to the large misunderstanding concepts and logical schemes. In principle, the solution to a communication language problem would be joint training, or at the very least, informing both teams what to talk about and what to understand - ethernal problem of transmitter and receiver with truncated languages. It happens that, in practice, we would always include a cost and a deadline to tell both teams in which language to communicate, and sometimes may not be possible to keep the two together without creating any kind of “hierarchy” problem _ there are honorable exceptions _ with the objective of maintaining or raising quality within the intended scope.

The most common view about systems that I found in large environments was the “procedure”: practically all high-level programming analysts think in terms of procedures and jobs, which means that the analysis is linear and, thanks to the amount of system utilities, it is not always a logical or intelligent linearity: at most they are a jumble of steps, redundant or irrational, sometimes.

By definition, a system is a specific view of the whole. In this sense, norms originating from support, for example, sometimes hinder development, reducing the very notion of a system: it is not uncommon to find meaningless impositions in the name of presumed, but not effective, security. (the project involves risks, but the security risk is overcome with the appropriate qualification of those who will create or use a system). Most of the time there is fabulous equipment, an operating system that is known to be functional, flexible and with many resources, badly used because of almost always ridiculous rules originated by disputes between departments, when they should come from the management of the departments. But this is another story ( and a personal specific vision ).

Physically surrounded, without the vision of what a system is, working with repetition of formulas, not always in an intelligent way, the analysis in large systems needed some help. At first, the objective was to correct the problems:

. Analysis without programming;
. Correction of “procedures” before their effective execution;
. Make it possible to verify the approach to the problem, in order to verify compliance with that specific scope.

These three objectives are achieved with:

. A code generator;
. A simulator of routine activities
. Verification of the phases of these activities

This was the initial proposal of Pegasus - today in a version named System Design: just a sequencer of activities, simulable, with a code generation at the end, designed to solve specific problems in the definition of programs. Code is the final object - without taking away the creativity of programmers, who can, in any way, interfere or evolve the proposed codes. The fundamental thing was the logical sequence to reach the solution, and this was supplied by designing a state machine, with the capacity for simulation. Roughly speaking, we would also be introducing UML in large environments, through activity diagrams, even if customized as sequences of operations.

At this point the problem found was the choice of an intermediate language that was understandable to the analyst, to focus the definition of the problem in a clear way. The possible choices would be: a graphics language, a flowchart, or an object-oriented language that approached structured Portuguese/English or pseudo-code. A graphic-only language would bring problems of understanding and prevent the introduction of specific elements of a solution. A flowchart would go back a few "centuries" in the analysis, in addition to which the flow of operations was already part of the system. A language close to the pseudo-code, widely disseminated and accessible was the choice: using object-pascal for the intermediate code, few operations would be difficult for the analyst to understand, that is, the clarity of the definition would be transferred directly to the code, most of the time. Since object-pascal is intermediate code, suitable translators for other languages ​​would be needed.

The next idea was a consequence of the analysis activity itself: if the more specific problem had been solved, why not replicate the solution to higher levels, in the solution, and determine a system _ as it is known in the some IBM environment _ consisting of programs ? Even in this case, as we all know, the sequence and activity diagrams are sufficient and that is what we have included in Pegasus.

We then had a tool that could be used to analyze a problem, from its highest level, down to the details, which was simulable. This idea, however, although sufficient to determine a solution already determined, was not sufficient to determine its viability in terms of costs and deadlines. We guaranteed the quality and scope of the “system” solution, but there were two variables to satisfy formally - informally they were being satisfied by eliminating the “negotiation” between analyst and programmer. The theory says that the only way to decide with certainty on a certain topic is simulation. And the most common technique for the simulation is the use of discrete events. And this was our next step: to create an upper layer, at the level of processes, in which we could have deadlines and costs, provable through the proper simulation.

So far, everything seemed to be under control, on the theory side. The implementation of the theory, however, required some additional activity in the Windows environment, such as the creation of interactive panels with the user, capable of both design and simulation - a technology that few technicians have, often sold at a premium. Once the technology was obtained, however - technical detail - we had the upper layer of systems and programs: the business, detailed in processes that expanded into sequences of activities and generated code at the end. With this, we had the transition between the business and the system, often a painful phase in  implementations.

But, detail, how to determine, for example, the values ​​and deadlines in some process, when they did not originate, for example, from the personnel department _ a monthly salary _ or from the dispatch sector _ the time to pack some goods? The obvious solution would be to employ a metric system and we did it from Function Point Analysys. We can play with the metric because, once we have a code as a result of a process - we are going to simplify the operation of the software - we can scale its value, which allows us to retroact with the higher level, and adjust the values ​​of the processes.

Technically, Pegasus is a productivity tool, but not a tool aimed at consulting services, because it either eliminates labor costs, or reduces them for the end user in some way. On the other hand, from the systems point of view, the analyst has the possibility to reach the customer with his laptop, put the tool in execution, as he surveys the system and outlines it in diagrams of activities, according to your understanding, and conclude your interview with the client by simulating the survey made, checking their logical flaws or omissions. From the business point of view, the analyst would act in the same way, raising the processes, costs, etc., also with the possibility of immediately checking with the client, disparities, bottlenecks, etc.

Thanks for the visit.

Follow are some pictures from Pegasus working ( the real application name was changing
with the time, to facilitate their maintainance ):

Parametrization Class definition outside uml database definition outside MER ODBC integration



Click to get your own widget