CSE 598 Week 3 Software Architecture Preliminaries and Software Design Principles

Lakukan tugas rumah & ujian kamu dengan baik sekarang menggunakan Quizwiz!

What is procedural cohesion?

There exists a sequence of execution within elements or these elements are part of the solution represented in the module.

What is common coupling?

Two or more modules share a global data item, there is no guarantee other modules are using the correct data.

What is a state design pattern?

Useful when the behavior of the object differs based on the state of the object. As the state of the object changes, state behavior of the object implemented is called as needed.

What is a chain of responsibility design pattern?

Way of passing requests among multiple participating objects in the system. The client is not aware of the chain of responsibility.

What is a facade design pattern?

a single object representing a complex subsystem. Particularly useful in web/distributed applications.

How is software design and software architecture different?

all architecture is design, not all design is architecture. The design layer focuses on the design of specific modules while architecture does not focus on implementation details.

What types of abstraction are used in software design?

data, interface, control, and procedural.

What are common examples of software architecture styles/patterns?

layered, client-server, pipe-filter, broker, peer to peer, event bus, model-view-controller, blackboard, call and return

What is software analysis?

Capturing project requirements (including functional and quality) to produce artifacts like use case diagrams, use case descriptions, CRCs, and class diagrams to lead to software design.

What are the types of behavioral design patterns?

Chain of responsibility, iterator, observer, state, strategy, and mediator design patterns.

What is an observer design pattern?

Change in one object will be notified to other relevant objects. Example is a java active listener button waiting for an action to trigger a response.

What is a singleton design pattern?

Class in which only a s single instance is possible. Single object may represent system configuration or a universal set of attributes and methods that all other objects should use.

What is a factory design pattern?

Client requests type of object instance needed. Client passes parameters to factory and factory makes the correct object type. Client is only aware of how to request object, not how to make it.

In the AIB case study, what is the software architecture pattern that is used and why is it helpful?

Client server. Multiple clients can access the bank simultaneously, bank employees handle administration through a web interface to the bank database, keeps client and bank functionalities separate.

What are the different types of cohesion?

Coincidental, temporal, logical, procedural, communication/informational, sequential, functional

What are the 4 major software architecture viewpoints?

Conceptual View - high level view of important design modules/elements Module view - design of different modules/subsystems Execution View - How modules are mapped to the runtime platform Code View - how module view and execution view can be accomplished through code. Others - dependencies view and work assignment view

What are the different types of coupling?

Content, common, control, stamp, and data. Stamp and data coupling are acceptable but should be used with caution. Content, common, and control should be avoided.

What are the 3 types of object oriented design patterns?

Creational, structural, behavioral

What are structural design patterns?

Focus on organizing different classes and objects to form larger structures and provide new functionality. These tend to improve cohesion an din most cases reduce coupling.

What is software architecture execution view?

Focuses on how modules are mapped to the runtime platform of the software system such as memory usage, hardware, and other integrations at run time. Explores quality considerations like performance, fault tolerance, recoverability. Impact of runtime platform with future changes. Runtime considerations like concurrency, cloud and web API usage.

What is software architecture module view?

Focuses on the design of different modules/subsystems and explores how elements are mapped into each module. Explores module decomposition and relationships between modules. Minimize dependency between components. Maximize code reuse.

What is coupling?

Functional dependence. Degree to which each module depends on other modules to complete its functionality.

What is software architecture conceptual view?

High level view of impart units and how they are related to eachother. Does not focus on hardware/software configs and platforms needed for deployment. Includes application specific domains like does software meet requirements, how does it react with 3rd party clients, how does functionality get divided into product releases, how can changes be incorporated with less impact.

What is software architecture code view?

How module view and execution view can be accomplished through code. Explores code organization in packages and package dependencies, manages versions and product upgrages, tools and platforms used in development, minimize time/effort for updates, and best coding/algorithm approaches.

What is functional decomposition?

Identify system as a collection of functions and divide those into smaller subsystems in a procedural approach.

What are behavioral design patterns?

Identifying common communication patterns between objects. Provides a body of knowledge that represents how objects interact with eachother. Maintain modularity, high cohesion, low coupling.

What is Object Oriented Decomposition and what are the different types?

Identifying systems as a collection of objects and dividing them into sub-objects that establish relationships and implementation. Includes data oriented, event oriented, functional, and feature oriented decomposition.

What is a strategy design pattern?

Implements a collection of algorithms as objects such that the application can select a suitable object at runtime.

What is a benefit of high cohesion and low coupling?

Improved modifiability and testability. Internal changes inside module do not effect external interfaces. It is single minded in its contribution to the overall functionality of the system.

What is an adaptor design pattern?

Matches interfaces between classes. Useful in interfacing with different implementations that use technologies that are not compatible. Like converting a linked list to an array.

What is a flyweight design pattern?

Object sharing among users by setting different values at different usage. Like object pools but flyweight objects are singleton and can be used simultaneously by multiple clients. Synchronizes data access and ensures integrity. A common set of elements or values is used by multiple clients but only one instance is possible.

What is data coupling?

One module passes elementary data types like int or char to the other module.

What is stamp coupling?

One module passes non-global data structures/objects to another module. Best practice is to only pass required data structures that do not get changed often.

What is software design?

Process of determining implementation and deployment details of the project requirements. Key decision is determining software architecture.

What is a prototype design pattern?

Provide an initial setup of an object that can be copied and cloned. Removes the need of object initialization process over and over again. Useful when object creation requires a lot of groundwork like memory requirements or file reading. Classic example is setting up a chessboard.

What is an abstract factory design pattern?

Provide an interface to create a group of individual factories with a common theme without specifying their concrete classes. One level above the factory pattern.

What are creational design patterns?

Provide solutions to instantiate an object in the best way possible for specific situations. Does so efficiently in terms of memory usage, modularity, testability, and communication. Examples include factory, builder, singleton, prototype, abstract, and object pool.

What is a decorator design pattern?

Provides a way to build objects from other object instances, like adding a decoration on an existing object. It acts as a replacement to inheritance if there are many objects in the inheritance heirarchy.

What is a builder design pattern?

Separates the construction of a complex object from its representation by passing in a different data type. The same construction process can be used to create different representations.

What is an iterator design pattern?

Sequentially access items in the collection without using the implementation of the collection. Provides additional functionalities for the collection

What is client server architecture pattern?

Shows how data and processing is distributed across a range of components. Servers provide specific services that clients call upon. Clients and servers and typically distributed across the network. Abstract functionality across layers w/ different communication methods.

What is layered architecture pattern?

Software architecture is divided into layers of functionality. Each layer communicates with the layer above and below, no other communication is allowed. Provides modularity in that layers can be modified with little effect on the surrounding layers. The classic example is an operating system that has a UI layer, a utility layer, an application layer, and an inner core layer that communicates with memory and hard disk.

What are software architecture styles/patterns?

A collection of known solutions that work well in a class of problems with a certain set of requirements.

What is an object pool design pattern?

A collection of object instances where clients can request them. Once an object instance is assigned to a client it will no longer be available until it is put back. Used when the cost of initializing the class is very high. Example is a web browser instance pool for web crawling.

What is a mediator design pattern?

A communication bus that controls how different objects interact with each other. Reduces the coupling among objects. Objets communicate with mediator rather than directly with each other. Communication is abstracted.

What are object oriented design patterns?

A reusable solution to commonly occurring problems in software design. improves modularity, better testability, assures software quality patterns that can be derived from known patterns, and maintainability

What are the 3 key software design considerations?

Abstraction, modularity, interfaces.

What is a software design interface?

An interface is a communication channel between the module and its environment. It defines what service the software went provides to the rest of the system, and how other modules can access those services.

What is a proxy design pattern?

An object representing another object. Proxys represent the back end implementation and act on behalf of the back end. Improves software availability and accessibility. Examples include web service proxies for remote web server access.

What is control coupling?

Data in one module is used to determine the order of execution of another module. Module A passes control parameter x to module B.

What is data oriented decomposition?

Data intensive applications designed based on data storages, processing, and visualization requirements.

What is the basic approach to improve modularity in software design?

Decompose software system into smaller modules by grouping related functionalities/data together. Unrelated concerns are encapsulated into separate modules. A well defined object is to have high cohesion and low coupling.

What are the types of structural design patterns?

Decorator, facade, adaptor, flyweight, and proxy.

What is cohesion?

Dependence within the module. Degree to which data and functionality in a module relates to eachother.

What is an interface specification and what should it entail?

Describes the visible properties of the software unit. It should communicate to other system developers everything that they need to know to use the software correctly. Includes purpose, precondition, protocols, post conditions, quality attributes.

What is content coupling?

Directly connected to the inner workings of another module. Module A directly accesses and changes module B data.

What is feature oriented decomposition?

Divide system into features and divide those features into different architecture styles.

What are the 3 contributing components of software architecture design?

Domain requirements and risk analysis, hardware architecture design, code design.

What is temporal cohesion?

Elements are grouped as the elements will be executed by the system at a particular time during execution. They do not exhibit a close relationship and or/elements do not depend on each other.

What is logical cohesion?

Elements are logically related to each other but not structurally related. They sound like they do the same thing but do not share common procedures or data structures.

What is communication/informational cohesion?

Elements in a module use the same data set for their operations. Such elements are related to each other with respect to data usage. Example is next(), previous(), find() functions for a linked list

What is functional cohesion?

Elements in the module are related to a well defined set of functions that perform a set of related operations in the system.

What is sequential cohesion?

Elements in the module are related to each other in that output from on element is an input for another.

What is a data flow model software architecture pattern?

Elements process inputs into outputs. Most applicable for work flows in production, not suitable for interactive systems.

What is coincidental cohesion?

Elements within the module are not related and put together arbitrarily with no semantic meaning. No organization within the module.

What is event oriented decomposition?

Event driven systems using sensors etc. have different ecosystems that respond to external events.


Set pelajaran terkait

World History 2: Trade Routes of the 1500's

View Set

Dental Assisting Radiology Unit 2

View Set

Astronomy Unit 7- Galaxies & Beyond

View Set

Renal & Urinary System histology

View Set

Introduction to World Religions Test 2

View Set

Chapter 17 (Special Senses) Practice questions, Chapter 17 study guide, Chapter 17 Diagram Questions, Chapter 17 Multiple Choice Questions, Chapter 17 Special Senses

View Set

Guided Reading 8-4 The Early Empire

View Set

words from Cambridge English Compact advanced

View Set

Elastic and Inelastic Collisions;Physics Test; True and False

View Set

Inquizitive: Documenting Sources: MLA Style

View Set