
Home

About Us

Products

Process Models

SE Resources

Commentary

Contact us

|
|
|
| Breaking News!
A new blog ... visit OnCenter, Roger Pressman's running commentary on the world at large
A new edition ... the 6th edition of Software Engineering is available now
A first novel ... Roger Pressman's first novel is a technothriller -- The Aymara Bridge
A new training curriculum! RSP&A has partnered with QAI to develop a comprehensive Internet-based software engineering curriculum.
A redesigned Web site ... we've done a major redesign and added many new features
|
|
|
|
|
|
|
|
|
|
|
Reference Library
Design Engineering
|
|
This page provides access to a variety of downloadable papers that address design engineering issues. The following topics are considered:
Agile Design
Object-Oriented Design (OOD) - Unified Modeling Language (UML)
Patterns
Principles
Agility Design Principles
Enabling Business Agility through IT Infrastructure [PDF]
Hewlett-Packard Company
This article discusses four fundamental agility design principles identified by Hewlett-Packard. They include: simplification, standardization, modularity, and integration. The article also discusses how to apply agility design principles for best results.
Building Agility for Developing Agile Design Information Systems [PDF]
Yoram Reich, Suresh Konda, Eswaran Subrahmaniant, Douglas Cunningham, Allen Dutoit, Robert Patrick, Mark Thomas, Arthur W. Westerberg and the n-dim group
This paper begins with an analysis of the requirements of information systems. This paper then discusses the approach of n-dim, an information infrastructure that responds quickly to information needs of new and evolving organizations. Some of the infrastructure features are described and several examples of simple applications that illustrate them are presented.
Design-led and Design-less: One Experiment and Two Approaches [PDF]
Francisco Macias, Mike Holcombe and Marian Gheorghe
This report presents an experiment comparing two lightweight methodologies. The objective of the experiment was to assess extreme programming seen as a design-less process and an agile methodology based on design. The experiment ran in a real environment. Twenty teams produced 20 systems, from scratch to the final product, in a period of one semester.
Formalizing Agile Software Development Methods [PDF]
Bedir Tekinerdogan
Agile Software Development has been advocated as an appropriate lightweight programming paradigm for high-speed and volatile software development. This paper explicitly expresses the artifacts, the related heuristic rules and the lightweight process of agile software development approaches using method engineering techniques. The result of this formalization process supports the objective analysis of agile software development approaches and its comparison with more rigid software development methods.
Hitting the Target: Adding Interaction Design to Agile Software Development [PDF]
Jeff Patton
In practice XP was found to deliver high quality software quickly, but the resulting product still failed to delight the customer. This paper describes using interaction design in an agile development process to resolve this issue. Using interaction design as a day-to-day practice throughout an iterative development process helps the team at Tomax Technologies deliver high quality software, while feeling confident the resulting software will more likely meet end-user expectations.
Back to the top
Analyzing and Measuring Reusability in Object-Oriented Designs [PDF] *FEE*
Margaretha W. Price and Steven A. Demurjian, Sr.
This paper presents a technique to analyze and measure the reusability of object-oriented designs. The essential components of this approach is to reuse specific characterizations of classes and hierarchies, and a set of metrics which objectively measures the dependencies among design components based on those reuse-specific characterizations.
Architecture as Object Models of Software [PDF]
Ey un Eli Jacobsen
Typically, we think of modeling some business domain when we see the word modeling in the context of software - some business domain is not understood and therefore we build models of it to express our understanding of the business domain. In this paper the software domain is the domain that is not understood and therefore models are built of it to express the understanding of the software domain. This paper presents a model universe that illustrates this view on modeling in general, and uses the model universe and the domains to discuss models of software.
Designing Real-Time Applications with the COMET/UML Method [PDF]
Hassan Gomaa
Most object-oriented analysis and design methods only address the design of sequential systems or omit the important design issues that need to be addressed when designing real-time and distributed applications. It is essential to blend object-oriented concepts with the concepts of concurrent processing in order to successfully design these applications. This paper describes some of the key aspects of the COMET method for designing real-time and distributed applications, which integrates object-oriented and concurrent processing concepts and uses the UML notation.
Modeling Components and Frameworks with UML [PDF] *FEE*
Cris Kobryn
This article examines how the Unified Modeling Language (UML) as the object modeling language standard, supports leading enterprise component architecture standards - EJB and COM+/MTS.
Object-Oriented Design Quality [DOC]
Rudolf K. Keller, Reinhard Schauer and Alistair Cockburn
This report summarizes the activities from the OOPSLA'97 workshop on Object-Oriented Design Quality. Two key questions were addressed: What makes a good OO design? And, how do we achieve a good OO design?
Object - Orientation in Middle Age [PDF]
The Object Agency, Inc
This slide presentation addresses: where we have been, where we are, where we are going, and what have we learned about object-orientation.
Lecture 16: Object Oriented Modeling Methods [PDF]
Steve Easterbrook
This slide presentation outlines the following: the basics of object oriented analysis (notations used and the modeling process), variants (Coad-Yourdon, Shlaer-Mellor, Fusion, and UML), and the advantages and disadvantages of OO analysis.
Object - Oriented Software Engineering
Practical Software Development using UML and Java
Chapter 9: Architecting and Designing Software [PDF]
Timothy C. Lethbridge and Robert Laganière
This slide presentation supports the book Object-Oriented Software Engineering: Practical Software Development using UML and Java, by Timothy C. Lethbridge and Robert Laganière. Topics include: the process of design, principles leading to good design, techniques for making food design decisions, software architecture, architectural patterns, writing a good design document, design of a feature of the SimpleChat system and difficulties and risks in design
Principles of Object-Oriented Software Development [PPT]
Author Unknown
This PowerPoint presentation addresses the following topics: themes and variations, paradigms of programming, the object-oriented software life-cycle, and trends and technologies.
Chapter 9 Program and Transaction Design [PDF]
L.A. Maciaszek
This slide presentation's topics include: designing the program (architectural, detailed and program) with class cohesion and coupling, program navigation, designing the transaction and round-trip engineering (combining forward and reverse engineering).
RUP Design Workflow [PDF]
Michael Fourman
This slide presentation on RUP design workflow contains the following topics: design model, class design, realizing use-cases, subsystem design, interface, deployment model, architecture description, 4+1 view of architecture, workers, workflow details, architectural design, use case design, class design, and subsystem design.
Structures and Interactions
-Characterizing Object-Oriented Software Architecture [PDF]
Palle Nowack
This thesis was for a project whose overall goal was to carry out research, development and technology transfer in the area of object-oriented software construction. The project had three research focus areas: architecture of object- oriented systems, tool support for cooperative object - oriented development, and the introduction of object-orientation into companies. The goal of the research conducted within the architecture research area was to improve the means for reuse of design and code. This was done by working with architectural elements such as application frameworks, design rules and design patterns, component-based architectures, distributed objects, open implementations, documentation, etc.
Subject-Oriented Design: Towards Improved Alignment of Requirements, Design and Code [PDF]
Siobhán Clarke, William Harrison, Harold Ossher and Peri Tarr
Design models are often large and monolithic, and the structure of the designs is generally quite different from that of requirements. As a result, developers tend to discard the design, especially as the system evolves, since it is too difficult to keep its relationship to requirements and code accurate, especially when both are changing. This paper presents a different approach to designing systems, based on flexible decomposition and composition that closely aligns designs with both requirements specifications and with code. This paper illustrates how this approach permits the benefits of designs to be maintained throughout a system's lifetime.
Validation of Dynamic Behavior in UML Using Colored Petri Nets [PDF]
Robert G. Pettit and Hassan Gomaa
This paper describes an approach for modeling the behavioral characteristics of concurrent object-oriented designs using the Petri net formalism. Specifically, this paper describes an approach for integrating colored Petri nets with concurrent object architecture designs created with the COMET method and specified in the Unified Modeling Language (UML). This work is part of an on-going effort to automate the behavioral analysis of concurrent and real-time object-oriented software designs.
Back to the top
An Experiment on the Usefulness of Design Patterns: Detailed Description and Evaluation [PDF]
Lutz Prechelt
Advocates of software design patterns claim that using design patterns improves communication between software people. The controlled experiment that is described in this report tests the hypotheses that software maintainers of well-structured, well-documented software containing design patterns can make changes (1) faster and (2) with less errors if the use of patterns is explicitly documented in the software.
A Quantitative Study of the Application of Design Patterns in Java [PDF]
Michael Hahsler
This paper analyzes the development process of over 1000 open source software projects using version control information. This information is explored to gain an insight into the differences of software development with and without design patterns. By analyzing these differences evidence is provided that design patterns are used for communication and that there is a significant difference between developers who use design patterns and who do not.
Automatic Code Generation from Design Patterns [PDF]
Frank Budlinsky, Marilyn Finnie, Patsy Yu and John Vlissides
Design patterns raise the abstraction level at which people design and communicate design of object-oriented software. But design patterns still leave the mechanics of their implementation to the programmer. This paper describes the architecture and implementation of a tool that automates the implementation of design patterns. The user of the tool supplies application-specific information for a given pattern, from which the tool generates all the pattern-prescribed code automatically.
Design Patterns Application in UML [PDF]
Gerson Sunyé, Alain Le Guennec and Jean-Marc Jézéquel
The representation of a design pattern and its application and the binding between these levels is understood in different ways. This article clarifies some misunderstandings of the parameterized collaborations in UML literature. Also this article discusses how a tool integrating the UML proposed mechanism to model recurrent design structures, could help with semi-automatic application of design patterns.
Design Principles and Design Patterns [PDF]
Robert C. Martin
This chapter is about the architecture of models and their interconnections. Topics include: architecture and dependencies, principles of object oriented class design, principles of package architecture, patterns of object oriented architecture.
Elemental Design Patterns: A Formal Semantics for Composition of OO Software Architecture [PDF] *FEE*
Jason McC. Smith and David Stotts
Design patterns are an important concept in the field of software engineering, providing a language and application independent method for expressing and conveying lessons learned by experienced designers. There is a large gap, however, between the aesthetic and elegance of the patterns as intended and the reality of working with an ultimately mathematically expressible system such as code. This paper describes a step towards meaningful formal analysis of code within the language of patterns, and discusses potential uses.
Features and Design Patterns - A Comparison [PDF]
Florian Arnold and Gerd Podehl
Today, the worlds and terminologies of mechanical engineering and software engineering coexist, but they do not always work together seamlessly. Thus, the subject of this paper is a comparison of the vocabularies of the two fields, namely feature technology from the area of mechanical engineering and software design patterns from the software engineering domain. After this, an analysis is carried out to identify analogies and differences. The main intention of this paper is to inform both worlds - mechanical and software engineering - about the other side's terminology and to start a discussion about potential mutual benefits and possibilities to bridge the gap between these two worlds.
Generative Design Patterns [PDF]
S. MacDonald, D. Szafron, J. Schaeffer, J. Anvik, S. Bromling and K. Tan
A design pattern is a descriptive device that fosters software design re-use. There are several reasons why design patterns are not used as generative constructs that support code re-use. This paper describes a new approach to generative design patterns that solves three difficult problems. This approach is illustrated using tools called CO2P2S and Meta-CO2P2S, but the approach is tool-independent.
Interaction Design Patterns: Twelve Theses [PDF]
Jan O. Borchers
This position paper was written for the CHI2000 Patterns Workshop, The Hague, 2-3 April, 2000. It is a revised and extended version of a paper for a patterns workshop of the British HCI Group in March 2000. It offers twelve statements outlining the author's position about patterns in human-computer interaction (HCI).
Introduction to Patterns and Frameworks [PDF]
Douglas C. Schmidt
This slide presentation outlines: motivation for patterns and frameworks, what a pattern is, what a framework is, pattern categories, and pattern examples.
Patterns and Software: Essential Concepts and Terminology [PDF]
Brad Appleton
This paper presents a short summary of patterns. Other topics include: generative patterns, anti-patterns, kinds of patterns, components of patterns, quality of patterns, patterns and frameworks, pattern languages, pattern catalogs and systems, writing patterns, and pattern futures.
Patterns in a Nutshell
The "Bare Essentials" of Software Patterns [PDF]
Brad Appleton
This slide presentation presents an overview of patterns, kinds of software patterns, pattern elements, why use patterns, and what patterns are not.
Precise Modeling of Design Patterns [PDF]
Alain Le Guennec, Gerson Sunyé and Jean-Marc Jézéquel
The UML is ill-equipped for precisely representing design patterns. It is true that some graphical annotations related to parameterized collaborations can be drawn on a UML model, but even the most classical GoF patterns, such as Observer, Composite or Visitor cannot be modeled precisely this way. This paper proposes a minimal set of modifications to the UML 1.3 meta-model to make it possible to model design patterns and represent their occurrences in UML, opening the way for some automatic processing of pattern applications within CASE tools.
Software Patterns [DOC]
Luke Hohmann
This article is about software patterns as a new trend in software development. Topics include: what a pattern is, identifying and using patterns, and patterns aren't a silver bullet.
Static and Dynamic Structure in Design Patterns [PDF]
Eric Eide, Alastair Reid, John Regehr and Jay Lepreau
This slide presentation is from the paper Static and Dynamic Structure in Design Patterns [PDF] which appeared in Proceedings of the 24th International Conference on Software Engineering (ICSE 2002). Topics include: the OSKit components, design patterns, motivation, key ideas, contributions, expressing patterns with units, analysis, benefits, and costs.
Back to the top
A Language to Describe Software Texture in Abstract Design Models and Implementation [PDF]
Joern Bettin
A model-driven software development approach has been used in a project to build a complex commercial application within the New Zealand electricity industry. As part of the project a compact visual notation for the mapping between a highly abstract UML design model and implementation has been developed. The overall approach makes use of modeling and metamodeling techniques, formal specifications of component architecture standards, a commercial UML modeling tool, and a template-based Java code generator.
Bringing Extreme Programming to the Classroom [PDF]
Owen Astrachan, Robert C. Duvall and Eugene Wallingford
This paper discusses several features of XP the authors have used in developing curricula and courses at Duke University and the University of Northern Iowa. Also discussed are practices of XP that they teach as part of the design and implementation process they want students to practice as they develop programming expertise and experience.
Design Workflow [PPT]
Scott Hawker
This PowerPoint presentation outlines the following: design model, design classes, design subsystems, interface, deployment model, architecture description, workers, architectural design, use case design, and class design.
Does Software Design Complexity Affect Maintenance Effort? [PDF]
Andreas Epping and Christopher M. Lott
The design complexity of a software system may be characterized within a refinement level (e.g., data flow among modules), or between refinement levels (e.g., traceability between the specification and the design). This paper analyzes an existing set of data from NASA's Software Engineering Laboratory to test whether changing software modules with high design complexity requires more personnel effort than changing modules with low design complexity.
Principles Verses Patterns [PDF] *FEE*
Carlo Pescio
This article is about design principles and design patterns and why design is still difficult to achieve. Systematic design and a transformation approach are discussed.
Reliability through Strong Mobility [PDF]
Xiaojin Wang, Jason Hallstrom and Gerald Buarngartner
This paper argues that weak mobility is unreliable because it leads to an unnatural, non-modular programming style that is difficult to reason about and hard to debug. This paper presents an extension of Java with strong mobility and show how it can be translated to weak mobility by a preprocessor. The language is designed to give programmers the same flexibility in resolving synchronization issues as with weak mobility.
Software Design Principles and Guidelines [PDF]
David L. Levine and Christopher D. Gill
This slide presentation covers the following topics: design principles (important design concepts, useful design principles, evaluation criteria), development methodologies (traditional approaches, extreme programming), and design guidelines (motivation, common design mistakes, design rules).
UN/CEFACT Modeling Methodology (UMM)
Chapter 5 - Design [PDF]
Collaborative Domain
This chapter on design covers the following topics: workflow (purpose, design methodology, design workflow use case, UMM framework: design workflow), artifacts, and an example.
User Interface Engine API
Version 2.0 [PDF]
Blackberry
This is a guide for the User Interface Engine (UI Engine) API for the BlackBerry Handheld. This guide includes general information about the UI Engine API and a complete list of all the functions. Contents include: UI Engine overview, application software design principles, and API functions.
What Led to "Notes on Structured Programming" [PDF]
Edsger W. Dijkstra
This note describes experiences which influenced the author when writing EWD249 Notes on Structured Programming.
Back to the top |
|
|
|
|
|
|
|
|
|
|
|
|