Abstract

It is widely accepted that conceptual models are a prerequisite for successfully planning and designing complex software systems. They are a medium to foster communication with prospective users and they (should) define a sound basis for system implementation. By providing common domain level concepts they also support the integration of applications and foster the convenient reuse of high level artifacts. However, despite these advantages, conceptual modeling comes with a number of challenges. Recent object-oriented modeling languages (like [OMG97], [FiHe97]) offer a wide range of different diagrams. While the views they allow for complement each other more or less, it is not always clear which abstraction to use for a particular modeling purpose. During the last years, a few approaches have emerged that recommend concepts and abstractions other than objects - like patterns, components or frameworks. While they all claim to contribute to software quality, it is not evident how they can be integrated with object-oriented models in a consistent and intuitive way.Describing systems on a high level of abstraction does not only serve to improve communication between various stakeholders. At the same time it serves to increase the productivity of software development - mainly through reuse of high level artifacts and the generation of code from domain level specifications. Despite the obvious benefits of this vision, it imposes a number of questions. What are appropriate concepts to specify application level artifacts that can be reused and adapted to individual needs in a convenient and save way? Does software generation recommend any special concepts for modeling languages? It also relates to the coupling of modeling languages and implementation languages (database or programming language). On the one hand it is desirable to abstract from the peculiarities of a particular implementation language in order to facilitate the change of implementation languages over time or to use more than one implementation language. On the other hand a tight coupling of modeling and implementation language fosters a seamless transformation of design models into code and improves the chances for traceability as well.From a managerial point of view, providing modeling languages and reusable artifacts is not sufficient: There is need to support the process of software development. Adaptable process models and specialized project management concepts are promising help. However, it remains difficult to specify them on an appropriate level of detail and rigor. This is also the case for the design of software to support the development process, such as specialized workflow management systems. Furthermore, it is not trivial to decide to what degree a process model can be independent from the modeling languages used within a project.While we tend to assume that object-oriented modeling is based on natural abstractions, many people do not find object-oriented concepts to be intuitive. Moreover, even for those who have understood the basic concepts, the design of object-oriented models is a huge intellectual challenge. As a result, the quality of conceptual models is often poor. For this reason, there is need for effective training. The way in which we perceive, understand and represent the world through language has been a subject of many disciplines for long.Corresponding research results, especially from cognitive psychology, can be used for the specification of modeling languages (semantics and notation) and the training of modellers -for instance metaphors/abstractions that have proved to foster an intuitive access to a domain of interest.Against this background, the panel serves to discuss - among other things - the following aspects and questions: relevance of modeling for object-oriented software development shortcomings of existing modeling languages Do we need formal modeling languages? evaluation of object-oriented models is the state of the art mature enough to define a standard modeling language? Features of a good process model for software development conceptual integration of modeling and programming what do we need to accomplish plug&play of domain level components? what are the abstractions that are most promising for the future of software engineering?

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call