1/19
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai | Chat |
|---|
No analytics yet
Send a link to your students to track their progress
Why is software architecture important?
It affects the performance, usability, security, reliability, and maintainability of a software.
What is the IEEE definition of software architecture?
Architecture is the fundamental organization of a software system embodied in its components, their relationships to each other, and to the environment and the principles guiding its design and evolution.
What are the differences between a centralized and a distributed security architecture?
In a centralized security architecture, all assets are stored in one place with layers of security protection around them. In a distributed architecture, assets are stored in different places so that a single successful attack does not gain access to all assets.
List the most important architectural issues for product development.
Non-functional product characteristics, product lifetime, software reuse, number of users, and software compatibility.
What architectural choice is likely to increase system maintainability?
Constructing a system from a number of fine-grain interacting components where each component has a single responsibility.
Explain what is meant by system availability.
The percentage of time when a system is up and running and available to deliver its services.
What are the three fundamental questions you should consider during the architectural design process?
How should a system be organized as a set of architectural components? How should components be distributed and communicate? What technologies should be used to build the system?
List 4 types of software component relationships.
"Part-of", "uses", "is-located-with", and "shares-data-with".
Suggest three ways of controlling architectural complexity.
Components should focus on implementing a single concern, functionality should not be duplicated at different places in a system, and component interfaces should be stable.
Why is it sometimes impossible to localize component interactions within a single layer?
Some concerns are cross-cutting and cannot be localized within a layer.
What are cross-cutting architectural concerns?
Concerns, such as security and performance, that cannot be localized to a single layer in the system architecture.
What types of integration are possible when multiple services are included in a software product?
Full integration where services can communicate with other services through their API, partial integration where services share components and databases but do not interact directly, and independent where there are no shared services or databases.
Why do you need to consider the technologies used in a layered architecture when decomposing a system into components?
The choice of technologies used in a layer affects the components in the layer above.
Briefly describe the notion of a client-server architecture.
A user interacts using a client (computer or mobile device) which hosts the user interface; system functionality is implemented on a remote server. Communication now is usually based on the HTTP protocol.
What is the function of the fundamental components of the MVC pattern?
Model, which manages the data that is to be displayed; View, which manages the representation of the data as presented to the user; Controller, which manages changes made to the model and communicates with the View to ensure the representations are updated.
What is JSON, and how does it differ from XML?
JSON is a language for describing data. It differs from XML in that it is based on a structured organization without the need for explicit tags for every data item.
What is a service-oriented architecture?
An architecture where the fundamental software components are stateless, independent software services.
List 5 technology choices that you have to make when designing a software architecture.
Database, platform, server, open source, and development tools.
What factors have to be considered when implementing a mobile product?
Intermittent connectivity, processor power, power management, and on-screen keyboard.
What are the advantages and disadvantages of using open-source software?
Advantages: lower cost, tested software, and faster time to market; Disadvantages: lack of control over software evolution, lack of competitive edge, and possibly restrictive license conditions.