And Software Design Principles Questions And
Answers
What is software analysis? ANS 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 is software design? ANS Process of determining implementation and deployment details of the
project requirements. Key decision is determining software architecture.
What are the 3 contributing components of software architecture design? ANS Domain requirements and
risk analysis, hardware architecture design, code design.
What is Object Oriented Decomposition and what are the different types? ANS 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 data oriented decomposition? ANS Data intensive applications designed based on data storages,
processing, and visualization requirements.
What is event oriented decomposition? ANS Event driven systems using sensors etc. have different
ecosystems that respond to external events.
What is functional decomposition? ANS Identify system as a collection of functions and divide those into
smaller subsystems in a procedural approach.
What is feature oriented decomposition? ANS Divide system into features and divide those features into
different architecture styles.
What are the 4 major software architecture viewpoints? ANS 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 is software architecture conceptual view? ANS 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 module view? ANS 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 software architecture execution view? ANS 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 code view? ANS 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 are software architecture styles/patterns? ANS A collection of known solutions that work well in a
class of problems with a certain set of requirements.
What are common examples of software architecture styles/patterns? ANS layered, client-server, pipe-
filter, broker, peer to peer, event bus, model-view-controller, blackboard, call and return
What is client server architecture pattern? ANS 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? ANS 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.