Search NASASearch

SEARCH · Search NASA

Results for “Design Patterns”

Search indexed NASA NTRS and DOE OSTI research on propulsion, heat transfer, battery materials and energy systems. Follow report and document links to the original sources.

Quote a phrase for an exact phrase match. Source license links do not imply unrestricted reuse.

At least 19 records

Application of Design Patterns in Refactoring Software Design

Refactoring software design is a method of changing software design while explicitly preserving its unique design functionalities. Presented approach is to utilize design patterns as the basis for refactoring software design. Comparison of a design solution will be made through C++ programming language examples to exploit this approach. Developing reusable component will be discussed, the paper presents that the construction of such components can diminish the added burden of both refactoring and the use of design patterns.

Baggs. Rjpda

Apply Design Patterns to Refactor Software Design

Refactoring software design is a method of changing software design while explicitly preserving its unique design functionalities. Presented approach is to utilize design patterns as the basis for refactoring software design. Comparison of a design solution will be made through C++ programming language examples to exploit this approach. Developing reusable component will be discussed, the paper presents that the construction of such components can diminish the added burden of both refactoring and the use of design patterns.

Baggs, Rhoda

An NAFP Project: Use of Object Oriented Methodologies and Design Patterns to Refactor Software Design

In the early problem-solution era of software programming, functional decompositions were mainly used to design and implement software solutions. In functional decompositions, functions and data are introduced as two separate entities during the design phase, and are followed as such in the implementation phase. Functional decompositions make use of refactoring through optimizing the algorithms, grouping similar functionalities into common reusable functions, and using abstract representations of data where possible; all these are done during the implementation phase. This paper advocates the usage of object-oriented methodologies and design patterns as the centerpieces of refactoring software solutions. Refactoring software is a method of changing software design while explicitly preserving its external functionalities. The combined usage of object-oriented methodologies and design patterns to refactor should also benefit the overall software life cycle cost with improved software.

Shaykhian, Gholam Ali

Pattern Identification - A Foundation for Research in the Emphasis of Design Patterns in Systems Engineering and Knowledge Capture

Pattern Language describes the morphology and functionality of a system in the absence of design particulars. Harnessing this capability will provide the Systems Engineering discipline a means of managing the development of increasingly complex systems with increasingly distributed design teams while capturing and retaining knowledge for future generations. Pattern Language is a syntax for describing, and structurally relating, design patterns. Design patterns contextually describe the application of domain knowledge in the engineered solution to the force balance problem. The parallels between pattern recognition and application, as a fundamental stage of human learning, and pattern observation within a complex system, suggests pattern language may be a valuable tool in the capture and dissemination of knowledge. Pattern application has enjoyed considerable study over the last several decades, however much of this work has focused on the replication of design particulars. This work returns to the roots of Pattern Language and explores the utility of patterns as an architectural description and guide, and knowledge capture method, for complex system development beginning with the identification of a time proven design pattern.

Russell, Samuel P.

Expressing Functionality Using Design Patterns, A Real-World Example

Digital Engineering is a transformative strategy that leverages an integrated model-based approach to improve communication, decision making, design understanding, and acquisition efficiency of system development. As modern systems are derived from pre-existing systems, harvesting tacit knowledge from existing systems in a useful, model-based way will reduce the experiential learning and cognition required for new system development, contributing to a Digital Engineering transformation. This study enables such a technique by demonstrating the use of architectural theory in expressing tacit knowledge from existing systems and presenting that knowledge according to the model-based view offered by the Functional Architecture of Systems methodology. By validating the functional information expressed by the design pattern, this work solidifies design patterns as a critical component of a technical architecture and proposes a functional architecture viewpoint for describing mined knowledge in a usable, model-based, way suitable for archival in a modern knowledge management system.

Systems Engineering

Automated Verification of Design Patterns with LePUS3

Specification and [visual] modelling languages are expected to combine strong abstraction mechanisms with rigour, scalability, and parsimony. LePUS3 is a visual, object-oriented design description language axiomatized in a decidable subset of the first-order predicate logic. We demonstrate how LePUS3 is used to formally specify a structural design pattern and prove ( verify ) whether any JavaTM 1.4 program satisfies that specification. We also show how LePUS3 specifications (charts) are composed and how they are verified fully automatically in the Two-Tier Programming Toolkit.

Nicholson, Jonathan

Design for Verification: Using Design Patterns to Build Reliable Systems

Components so far have been mainly used in commercial software development to reduce time to market. While some effort has been spent on formal aspects of components, most of this was done in the context of programming language or operating system framework integration. As a consequence, increased reliability of composed systems is mainly regarded as a side effect of a more rigid testing of pre-fabricated components. In contrast to this, Design for Verification (D4V) puts the focus on component specific property guarantees, which are used to design systems with high reliability requirements. D4V components are domain specific design pattern instances with well-defined property guarantees and usage rules, which are suitable for automatic verification. The guaranteed properties are explicitly used to select components according to key system requirements. The D4V hypothesis is that the same general architecture and design principles leading to good modularity, extensibility and complexity/functionality ratio can be adapted to overcome some of the limitations of conventional reliability assurance measures, such as too large a state space or too many execution paths.

Mehlitz, Peter C.

Fast Track to the Cloud: Design Patterns for 12-Factor Earth Sciences Applications

As expanding service offerings and decreasing prices make the cloud increasingly attractive to Earth Science applications, there are nontrivial practical considerations which can hinder its meaningful use. In this talk, we will discuss architectural recommendations and lessons learned while working on EOSDIS' cloud efforts, particularly the NASA-compliant General Application Platform (NGAP) and its associated applications. Prominent in our findings is the importance of 12-factor design patterns and the powerful "wins" they enable in the cloud. We will share our strategies for "fast-tracking" applications to the cloud --whether they be legacy, planned for the future, or somewhere in between.

cloud

Identifying and Documenting Expert Knowledge, A Practical Study of Design Patterns

Globalization, powered by digitization, is increasing technology growth and knowledge transfer rates to levels not seen in the previous 3500 years, obscuring absolute truth and accelerating rates of innovation and production. Competing,or remaining competitive, in this global marketplace requires a learning organization adopt a method of capture, retention, and reuse for demonstrated tacit knowledge to accelerate the development of increasingly complex systems of high quality at a reasonable cost. The architectural theory of Patterns and Pattern Language is a validated methodology for mining tacit domain knowledge from a proven system. This work applies architectural theory to a multi-year development experiment and captures exposed knowledgeas a design patternin a model based systems engineering tool, demonstrating applicability ofdigital engineering initiativesin thedescription and reuse of expert design knowledge.By creating and archiving model based expressions of expert knowledge,a learning organization canimprovepractical decision making and avoid uninformed concept phase decision making

systems engineering

The Emphasis of Design Patterns in Expressing Expert Knowledge From A Technical Solution – A Framework for Continued Research

Digital Engineering is a transformative strategy that leverages an integrated model-based approach to improve communication, decision making, design understanding, and acquisition efficiency of system development. As modern systems are derived from pre-existing systems, harvesting expert knowledge from proven systems in a useful, model-based way will reduce the experiential learning and cognition required for new system development, contributing to a Digital Engineering transformation. Motivated by performance gains observed during a multi-year, sequential development activity, this survey reviews knowledge, architecture, and pattern literature to establish a framework for research of architectural methods for expert knowledge identification and description using Model Based System Engineering. The multi-year sequential development activity is offered as the experimental system of interest for this research. This work aims to enable a digital engineering strategy that improves concept phase decision making, accelerates knowledge acquisition from lessons learned repositories, and eases the burden of generational knowledge loss.

Lithium Ion

A patterns catalog for RTSJ software designs

In this survey paper, we bring together current progress to date in identifying design patterns for use with the real-time specification for Java in a format consistent with contemporary patterns descriptions.

Java design patterns real-time Java

Beyond Point Design: General Pattern to Specific Implementations

Elsewhere we have discussed a number of problems typical of highly automated systems and proposed tenets for addressing these problems based on Human-Autonomy Teaming (HAT)[1]. We have examined these principles in the context of aviation [2,3]. Here we discuss the generality of these tenets by examining how they might be applied to photography and automotive navigation. While these domains are very different, we find application of our HAT tenets provides a number of opportunities for improving interaction between human operators and automation. We then illustrate how the generalities found across aviation, photography and navigation can be captured in a design pattern.

Lachter, Joel Benjamin

Reusable, Extensible High-Level Data-Distribution Concept

A framework for high-level specification of data distributions in data-parallel application programs has been conceived. [As used here, distributions signifies means to express locality (more specifically, locations of specified pieces of data) in a computing system composed of many processor and memory components connected by a network.] Inasmuch as distributions exert a great effect on the performances of application programs, it is important that a distribution strategy be flexible, so that distributions can be adapted to the requirements of those programs. At the same time, for the sake of productivity in programming and execution, it is desirable that users be shielded from such error-prone, tedious details as those of communication and synchronization. As desired, the present framework enables a user to refine a distribution type and adjust it to optimize the performance of an application program and conceals, from the user, the low-level details of communication and synchronization. The framework provides for a reusable, extensible, data-distribution design, denoted the design pattern, that is independent of a concrete implementation. The design pattern abstracts over coding patterns that have been found to be commonly encountered in both manually and automatically generated distributed parallel programs. The following description of the present framework is necessarily oversimplified to fit within the space available for this article. Distributions are among the elements of a conceptual data-distribution machinery, some of the other elements being denoted domains, index sets, and data collections (see figure). Associated with each domain is one index set and one distribution. A distribution class interface (where "class" is used in the object-oriented-programming sense) includes operations that enable specification of the mapping of an index to a unit of locality. Thus, "Map(Index)" specifies a unit, while "LocalLayout(Index)" specifies the local address within that unit. The distribution class can be extended to enable specification of commonly used distributions or novel user-defined distributions. A data collection can be defined over a domain. The term "data collection" in this context signifies, more specifically, an abstraction of mappings from index sets to variables. Since the index set is distributed, the addresses of the variables are also distributed.

James, Mark

Beyond Point Design: General Pattern to Specific Implementations

We have previously laid out a general framework for Human-Autonomy Teaming (HAT) and described how we applied this framework to a specific aeronautic task. In this presentation we demonstrate the applicability of these same principles to two familiar areas, photography and driving directions, focusing on bi-directional communication. We argue that good HAT requires communication of situation variables including operator goals and preferences and threats to meeting them, options including rationale, projected outcomes and confidence, and delegation.

human factors

High friction interactive aircraft tire-runway systems

The principle of utilizing geometric interaction between runway asperities and tire pattern design is discussed, and a theoretical basis is presented for substantial enhancement of frictional effects by this process. Test data confirming this is given. First order analytical expressions are given for the increased friction coefficients and for the engagement distances required. High speed friction data on a 7.00 x 8 aircraft tire is presented confirming this. Example design geometries are shown for the tire tread groove pattern, and designs and materials are discussed for the asperity grid and its attachment system.

Clark, S. K.

Analysis and evaluation in the production process and equipment area of the low-cost solar array project

The effect of solar cell metallization pattern design on solar cell performance and the costs and performance effects of different metallization processes are discussed. Definitive design rules for the front metallization pattern for large area solar cells are presented. Chemical and physical deposition processes for metallization are described and compared. An economic evaluation of the 6 principal metallization options is presented. Instructions for preparing Format A cost data for solar cell manufacturing processes from UPPC forms for input into the SAMIC computer program are presented.

Wolf, M.

Averting Denver Airports on a Chip

As a result of recent advances in software engineering capabilities, we are now in a more stable environment. De-facto hardware and software standards are emerging. Work on software architecture and design patterns signals a consensus on the importance of early system-level design decisions, and agreements on the uses of certain paradigmatic software structures. We now routinely build systems that would have been risky or infeasible a few years ago. Unfortunately, technological developments threaten to destabilize software design again. Systems designed around novel computing and peripheral devices will spark ambitious new projects that will stress current software design and engineering capabilities. Micro-electro-mechanical systems (MEMS) and related technologies provide the physical basis for new systems with the potential to produce this kind of destabilizing effect. One important response to anticipated software engineering and design difficulties is carefully directed engineering-scientific research. Two specific problems meriting substantial research attention are: A lack of sufficient means to build software systems by generating, extending, specializing, and integrating large-scale reusable components; and a lack of adequate computational and analytic tools to extend and aid engineers in maintaining intellectual control over complex software designs.

Sullivan, Kevin J.

Control System Architectures, Technologies and Concepts for Near Term and Future Human Exploration of Space

Technologies that facilitate the design and control of complex, hybrid, and resource-constrained systems are examined. This paper focuses on design methodologies, and system architectures, not on specific control methods that may be applied to life support subsystems. Honeywell and Boeing have estimated that 60-80Y0 of the effort in developing complex control systems is software development, and only 20-40% is control system development. It has also been shown that large software projects have failure rates of as high as 50-65%. Concepts discussed include the Unified Modeling Language (UML) and design patterns with the goal of creating a self-improving, self-documenting system design process. Successful architectures for control must not only facilitate hardware to software integration, but must also reconcile continuously changing software with much less frequently changing hardware. These architectures rely on software modules or components to facilitate change. Architecting such systems for change leverages the interfaces between these modules or components.

Boulanger, Richard