Explore chapters and articles related to this topic
Project execution
Published in Varun Gupta, Anh Nguyen-Duc, Real-World Software Projects for Computer Science and Engineering Students, 2021
Architectural patterns. An architectural pattern is a general, reusable solution to a commonly occurring problem in software architecture within a given context (Taylor et al. 2009). Such patterns provide a way of describing good design structures, such that they can be reused in a range of different implementations and can help the team to avoid bad design decisions. Some common patterns include: Client-server pattern: consists of a server and multiple clients. The server component will provide services to multiple client components.Pipe-filter pattern produces and processes a stream of data. Each processing step is enclosed within a filter component. Data to be processed is passed through pipes.Broker pattern: is used to structure distributed systems with decoupled components. These components can interact with each other by remote service invocations. A broker component is responsible for the coordination of communication among components.Model-view-controller (MVC) pattern: divides an interactive application into three parts as (1) model – contains the core functionality and data, (2) view – displays the information to the user (more than one view may be defined), and (3) controller – handles the input from the user
Knowledge Architecture and Design
Published in Denise Bedford, Knowledge Architectures, 2020
How does knowledge architecture relate to applications and technology architecture? These layers are often referred to by other terms in the trade literature, peer-reviewed, and trade publications. For example: computer architectures map to the technology layer;network architectures map to the technology layer;system architectures may map to both the applications layer and the technology layer;software architectures map to the applications layer. Software architecture refers to the fundamental structures of a software system, the discipline of creating such structures, and the documentation of these structures. These structures are needed to reason about the software system. The architecture of a software system is a metaphor, analogous to the architecture of a building. Software architecture is about making fundamental structural choices that are costly to change once implemented. Software architecture choices, also called architectural decisions, include specific structural options from possibilities in the design of the software. For example, the systems that controlled the space shuttle launch vehicle had the requirement of being very fast and very reliable. Therefore, an appropriate real-time computing language would need to be chosen. Additionally, to satisfy the need for reliability, the choice could be made to have multiple redundant and independently produced copies of the program, and to run these copies on independent hardware while cross-checking results.
Software Development Methods and Tools
Published in Paul H. King, Richard C. Fries, Arthur T. Johnson, Design of Biomedical Devices and Systems, 2018
Paul H. King, Richard C. Fries, Arthur T. Johnson
Software architecture is the high-level part of software design, the frame that holds the more detailed parts of the design. Typically, the architecture is described in a single document referred to as the architecture specification. The architecture must be a prerequisite to the detailed design, because the quality of the architecture determines the conceptual integrity of the system. This in turn determines the ultimate quality of the system.
The HyTeG finite-element software framework for scalable multigrid solvers
Published in International Journal of Parallel, Emergent and Distributed Systems, 2019
Nils Kohl, Dominik Thönnes, Daniel Drzisga, Dominik Bartuschat, Ulrich Rüde
In this article, the design and implementation of a new finite-element software framework HyTeG (Hybrid Tetrahedral Grids) is presented. With HyTeG, we aim to develop a flexible, extensible, and maintainable framework for massively parallel finite-element computations. To meet the requirements of a scalable and modular software structure, a carefully designed software architecture is essential. Our work builds on experience with designing complex and scalable software systems in scientific computing, such as Hierarchical Hybrid Grids (HHG) [1–3] and waLBerla (http://walberla.net) [4–7]. Low-level hardware-aware implementation techniques are realised in a modular software architecture for extreme-scale efficiency on current and future supercomputing platforms. In the scope of this article, the software concepts are presented for two-dimensional triangular finite elements. All features, however, are implemented to be reusable also for three-dimensional simulations.