Software architecture and design Flashcards
Architecture definintion
The software architecture of a system is the set of structures needed to reason about the
system, which comprise software elements, relations among them, and properties of both.
What is first important step of architecure requirements
collecting
requirements. There are two main categories for capturing requirements: functional and
nonfunctional.
constraints or limitations.
what are functional reuirements
specify “what” the software in question should do
They
describe the functionalities of a system, such as
■ Business process
■ Data manipulation
■ User interaction
■ Media processing
■ Calculation or computation of data
■ Administrative functions
■ Audits, reports, and tracking
■ Historical data handling, retention, storage, and retrieval
■ Compliance or certifications (if any)
■ Or any other action that the system can or should perform
what are nonfunctional requirements
he nonfunctional
requirements tell you how a system should perform those actions or functions.
describe how fast the system should be or how scalable it must be. Nonfunctional requirements are mainly concerned with
■ Performance
■ Scalability
■ High availability
■ Modularity
■ Interoperability
■ Serviceability
■ Testability
■ Security
■ And many more
examples of nonfunctional
A few examples of nonfunctional requirements are
■ The system should be able to handle 10,000 new sessions concurrently.
■ The system should be available at least 99.999 percent of the time.
■ The web GUI should take less than two seconds to load.
■ Users are required to register before they can use the system.
■ Passwords must not show anywhere in the logs or the GUI.
■ The GUI system can be translated into all other languages
comparison between function and nonfucntional
Table 1-2 Simple Comparison Between
Functional and Nonfunctional Requirements
Functional Nonfunctional
Use case or business process specific
System quality attribute specific
Mandatory Not mandatory
/affected by trade-offs
Functionality specific
Performance or quality specific
User requirements
User experience
Test for functionality
Test for performance, security, etc.
Describe as can or shal
l Describe as must or should
Architectural Patterns
Sometimes, the topic of architectural patterns is a phi
An architectural pattern is a general, reusable solution to a commonly occurring problem
in software architecture within a given context.
Microservices pattern
It’s an architectural approach for breaking an application (a monolithic application) into smaller, independent, and possibly distributed components. Through
deterministic interfaces, they interact together to deliver the intended functionality of a
monolithic system but with higher flexibility, performance, and scalability.
Service-oriented architecture (SOA
Distributed applications or components that provide and
consume services. The service provider and service consumer don’t have to use the same languages or be hosted on the same platforms. They are developed and deployed independently.
Every component has interfaces that define the services it provides or the services it requests.
In addition to the provider and consumer, there are few important components of this pattern:
Event-driven:
This model is very common for customer engagement applications where an
event (a change in state) is generated, captured, and processed in real time (or near-real time).
It is like SOA in the sense that there is an event producer and an event consumer (which
listens for the event). When the event is generated, the event producer detects the event and
sends it in the form of a message. The producer sends the message not knowing or caring
about the consumer and what the consumer may or may not do with it. The event-driven
architecture has two different models:
■ Publisher/subscriber (pub/sub) model: When an event is detected, it is published and
sent to subscribers for further analysis (or correlation).
■ Event streaming: Multiple events or continuous streams of events are detected and
logged to a database where consumers or subscribers can read from the database in a
customized fashion (e.g., a timestamp or a duration of time).
Event-driven architecture patterns saw a rise with the Internet of Things (IoT) sensors,
devices, and applications, especially as streams of data (and events) are analyzed for pattern
detection or predictive analysis of events in areas like health care or manufacturing.
Model-view-controller (MVC)
This model relies on three components of an application:
model, view, and controller:
■ Model: This component contains core data and all functionality.
■ View: This component provides a customizable view of the outcome seen by the user.
Multiple views can be developed and based on the user interaction (e.g., web page or
text message).
■ Controller: This component receives user input from the view and sends it to the
model for processing (or storage).
MVC provides a great deal of simplicity and flexibility because each of the three components can be developed independently by a different group of developers
SDLC soofwtare develpoement lifecycle
Planning
defining
designing
building
testing
deployment
Software development models
■ Waterfall*
■ Iterative
■ Agile*
■ Spiral
■ V Model
define waterfall dev model
The waterfall model is considered the simplest and most straightforward model. As the
name indicates, this mode is sequential. As shown in Figure 1-4, each stage depends on the
one before it. A stage must finish and get the proper signoffs/approvals before the next one
can start.