Software architecture and design Flashcards

1
Q

Architecture definintion

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What is first important step of architecure requirements

A

collecting
requirements. There are two main categories for capturing requirements: functional and
nonfunctional.

constraints or limitations.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

what are functional reuirements

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

what are nonfunctional requirements

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

examples of nonfunctional

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

comparison between function and nonfucntional

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Architectural Patterns
Sometimes, the topic of architectural patterns is a phi

A

An architectural pattern is a general, reusable solution to a commonly occurring problem
in software architecture within a given context.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Microservices pattern

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Service-oriented architecture (SOA

A

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:

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Event-driven:

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Model-view-controller (MVC)

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

SDLC soofwtare develpoement lifecycle

A

Planning
defining
designing
building
testing
deployment

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Software development models

A

■ Waterfall*
■ Iterative
■ Agile*
■ Spiral
■ V Model

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

define waterfall dev model

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

waterfall modell

A
17
Q

agile

A

Agile Software Development
Agile has been gaining ground as a model, not just for software development only, but also
as a project management tool or methodology for a variety of architectures or business problems. It addresses many of the waterfall shortcomings and introduces a high degree of flexibility and speed to the development process. Agile represents a number of methodologies
like Scrum, Extreme Programming, or Lean. As seen in Figure 1-5, Agile has the concept of
“sprints,” which represents short development lifecycles (typically one to four weeks) where
small manageable chunks of the software are delivered.

18
Q

waterfall pros and cons

A

Waterfall ■ Provides simple, easy-tounderstand deliverables and
stakeholders
■ Rigid
■ Suitable where strict control is
needed
■ Good for small or shorter-term
projects

■ Possibly higher cost than other
models, especially if changes are
needed in later stages
■ Not change request friendly
■ Not the best option for large or
longer-term projects

19
Q

agile

A

Emphasizes frequent and direct
communication
■ Friendly to change requests or
design improvements
■ Normally yields high-quality
iterative development and
frequent fixes
■ Good for larger projects where
work is distributed over smaller
teams

■ Documentation is not
emphasized
■ It’s easy to lose the big picture if
individual teams are controlled
with clear milestones or
outcomes

20
Q

lean

A

■ Provides for rapid development
and eliminates waste
■ Team empowerment
■ Continuous learning
■ Continuous development
with functioning systems or
subsystems early in the lifecycle
■ Easy to lose focus and the fullsystem impact
■ Documentation is not
emphasized or produced during
early development phases

21
Q

Architecture and Code Reviews types

A

Peer review
■ Customer review (internal stakeholders)
■ External or independent review

22
Q

checked and verified during code review

A

■ Adhering to the architecture
■ Following predefined code patterns
From the Library of Anton Olafsson
22 Cisco Certified DevNet Professional DEVCOR 350-901 Official Cert Guide
■ Ensuring nonfunctional requirements are represented:
■ Scalability
■ Efficiency
■ High availability
■ Testability
■ Modifiability/maintainability
■ Security
■ Usability
■ And more
■ Using predefined technologies, systems, and subsystems
■ Following coding best practices
■ Formatting
■ Naming conventions
■ Documentation

23
Q

sfotware testing types

A

Integration testing
Unit testing
system testing
acceptance testing

24
Q

Integration testing

A

This type tests for integration or interaction among the components of the overall system. Components interact through interfaces, and that’s what
you’re validating here.

25
Q

unit testing

A

We like to call this testing at the atomic level (the smallest testable unit),
meaning that you conduct this type of testing at the function or class level within a
subsystem. Unit testing is conducted mostly by the developers who have full knowledge of the unit under test. It’s often advantageous to automate unit testing.

26
Q

system testing

A

: Here, you verify that the full system functionality is as intended or
specified in the requirements. It is not uncommon to call this type of testing functional testing

27
Q

acceptance testing

A

Depending on your organization, this category of testing may
be customized to whatever functional or nonfunctional requirement you want to test.
It is possible to have multiple teams conducting different types of testing under one
umbrella testing effort called acceptance testing. For example, performance testing,
stress testing, or usability testing may be considered types of acceptance testing, or
they could stand on their own as individual types of testing.

28
Q

test pipeline

A
29
Q
A