Software engineering process management and control is increasingly recognized as critical to the timely engineering of quality products. Automated process support within an integrated environment provides otherwise unachievable levels of insight, coordination, control, and flexibility in governing the activities and resources that comprise the engineering process. Crucial to process flexibility and robustness is the ability of a process to both withstand and react to the impact of unexpected or uncontrollable events. Using Petri nets as a basis for process modelling, this paper proposes an extension to fuzzy Petri nets which meaningfully models the impact of and response to the chaotic events that typically disrupt any complex process. Concepts introduced include: transition release thresholds, transition recall thresholds, transition backfiring, token recalls, token maturity, and token chains.
OVERVIEWVirtually all complex software engineering efforts require coordinating, scheduling, and managing highly interactive resources. Efficient and successful software engineering efforts are often based on the preplanned institution of one or more processes which serve to govern the activities and interactions of involved personnel and resources. There are. however, aspects of software engineering process support that are not characterized by the orderliness and precision needed by most automated information systems. When a large-scale engineering operation is subjected to an excessive number of unanticipated events, this can potentially exceed the ability of an automated environment to continue exerting overall control. Chaos develops and all too readily becomes self-perpetuating. Consequently, investigation into software process models in general and into the possibilities for providing automated or environment based support to the software engineering process must include investigations into maintaining process support under highly volatile or even hostile conditions. Furthermore, in addition to the need for process models and their environments to be dynamically flexible, it is also important for such models to be capable of handling the uncertainty and unpredictability inherent in attempting to anticipate the consequences of actually instantiating a given process. Although various static approaches exist for better understanding the uncertainty in software development, dynamically changing uncertainty within the software engineering process is an area still largely unaddressed.Fuzzy logic can be leveraged to make contributions specifically in this area--an area where computers are traditionally most inept. That is, fuzzy logic does not insist on absolute certainty, nor on total confidence, nor on complete information. From this perspective, there is considerable potential for the application of fuzzy logic principles in the robust support and enforcement of software engineering processes--particularly if there are reasonable expectations that such processes are at risk of disorganizing influences from either unpre...