We give an enumeration of possible problem frames, based on domain characteristics, and comment on the usefulness of the obtained frames. In particular, we investigate problem domains and their characteristics in detail. This leads to fine-grained criteria for describing problem domains. As a result, we identify a new type of problem domain and come up with integrity conditions for developing useful problem frames. Taking a complete enumeration of possible problem frames (with at most three problem domains, of which only one is constrained) as a basis, we find 8 new problem frames, 7 of which we consider as useful in practical software development. 1 Audience and Motivation Imagine you are a requirements engineer and your task is to model customer wishes, which is a crucial activity in the beginning of the software development process. Maybe, you make use of modeling techniques such as provided by the Unified Modeling Language (UML) [For06] and represent requirements by means of a use case diagram, such as given for “The customer can order a book by completing the online form.” in Fig. 1. order blank fill out online bookstore customer Figure 1: A use case for completing an online order • What if you have already solved such a kind of problem in the past? • Would it be possible to reuse your former solution for the given problem? • What if you were aided in identifying recurring problems and hence benefit from corresponding, existing solutions? • Wouldn’t it be nice to reuse your problem-solving experience that you gained in preceding projects or even some particular development artifacts? That is where patterns usually come into play. This paper addresses researchers working with patterns for describing software development problems, who are interested in the basic concepts of problem frames [Jac01]. But we also want to encourage interested members of the pattern community to continue reading, because we belief that understanding the nature of a problem is the key to its solution. 2 The Problem Frames Approach It is a widely accepted opinion that pattern-orientation is a promising approach to software development. Patterns are a means to reuse software development knowledge on different levels of abstraction. They classify sets of software development problems or solutions that share the same behavioral or structural concepts. Today, patterns are defined for different activities in the software engineering life cycle. Problem Frames [Jac01] are patterns that classify software development problems and can be referred to as “problem patterns”. Architectural styles are patterns that characterize software architectures [SG96, BMR96]. They are also called “architectural patterns”. Design Patterns are used for finer-grained software design and have been introduced on the level of detailed object-oriented design [GHJV95], while frameworks [FJ99] are considered as less abstract, more specialized. Finally, idioms are low-level patterns related to specific programming languages [BMR96], and are sometimes called “code patterns”. Using patterns, we can hope to construct software in a systematic way, making use of a body of accumulated knowledge, instead of starting from scratch each time. CT!{fill out, submit} OR!{completed} CT!{fill out, submit} Customer OR!{OrderData} OB!{recordData} Online bookstore Order
Covering quality aspects such as usability through the software development life cycle is challenging. These "-ilities" are generally difficult to grasp and usually lack an appropriate quantifiability, which would ease their systematic consideration. We propose a pattern-based development method supporting the identification of usability requirements and their proper specification. By taking usability principles from Human-Computer Interaction (HCI) design patterns and incorporate them into patterns for software analysis (problem frames), we obtain a new kind of patterns applicable for requirements engineering: HCIFrames. They are used for exploring usability needs of a given problem situation.
We propose a pattern-based software development method comprising analysis (using problem frames) and design (using architectural and design patterns), from which especially evolving systems benefit. Evolution operators guide a pattern-based transformation procedure, including re-engineering tasks for adjusting a given software architecture to meet new system demands. Through application of these operators, relations between analysis and design documents are explored systematically for accomplishing desired software modifications. This allows for reusing development documents to a large extent, even when the application environment and the requirements change.
We propose a pattern-based software development method comprising analysis (using problem frames) and design (using architectural and design patterns), of which especially evolving systems benefit. Evolution operators guide a pattern-based transformation procedure, including re-engineering tasks for adjusting a given software architecture to meet new system demands. Through application of these operators, relations between analysis and design documents are explored systematically for accomplishing desired software modifications. This allows for reusing development documents to a large extent, even when the application environment and the requirements change.
Using patterns to preserve common problem-solving knowledge is a very popular approach. Each computer science community applies its own techniques to document engineering principles for the handling of recurring software development questions using patterns. Thus various pattern collections were evolved for dealing with specific problems of the respective community. As a result comparable patterns or redundant pattern descriptions exist in different collections leading unintentionally to a "reinvention of the wheel" time and again. Taking the development of a chat application as an example, we present an approach for integrating patterns from different software engineering disciplines. We transform problem patterns ( problem frames ) into solution patterns ( design patterns ) by using a case-based reasoning methodology to achieve a pattern-based software development process which systematically leads from natural language requirements to semi-formal near code level descriptions. We particularly consider non-functional software properties by combining design patterns of human-computer interaction (HCI) with software engineering (SE) patterns in order to support the systematic development of user-friendly software applications.
In this paper, we present a pattern-based software development method that preserves usability and security quality characteristics using a role-driven mapping of requirements analysis documents to architectural design artifacts. The quality characteristics usability and security are captured using specialized problem frames, which are patterns that serve to structure, characterize, and analyze a given software development problem. Each problem frame is equipped with a set of appropriate architectural styles and design patterns reflecting usability and security aspects. Instances of these architectural patterns constitute solutions of the initially given software development problem. We illustrate our approach by the example of a chat system.
Dieser Beitrag entstand im Rahmen eines Fortgeschrittenenpraktikums, das die Untersuchung und Nutzung kreativer Aspekte in der Informatik zum Thema hat. Es ist eingelagert in eine laufende Doktorarbeit zur Konzeption und prototypischen Entwicklung eines Entscheidungsunterstützungssystems für die Patentanmeldung und-prüfung mit besonderem bezug zur Informatik (Willms, 1999) (Willms, Möbus, 2000). Patente werden für innovative Entwicklungen erteilt, die aus der Kreativität des Entwicklers hervorgehen. Es soll untersucht werden, mit welchen Methoden eine Patentanmeldung, die nicht erfinderisch genug ist, um ein Patent zu erhalten, kreativ verändert werden kann. In diesem Beitrag wird Fragen nachgegangen, was Kreativität ist, welche Rolle die Kreativität für das Patentwesen spielt und ob man bestehende Prinzipen des kreativen Problemlösens aus der Theorie des erfinderischen Problemlosem TRIZ auch in der Informatik wiederfindet bzw. diese anwenden kann, um neue Entwicklungen voranzutreiben. Ein Hauptziel dieses Beitrags liegt somit darin, die in TRIZ definierten innovativen Prinzipien anhand von Beispielen aus dem Informatikumfeld vorzustellen.
Denis Hatebur合作论文数Institut für technische Systeme GmbH, Germany1