L08: Software Architecture Flashcards
What are the typical software artefacts?
- (Business Plan)
- Requirements specification
- Software architecture specification
- Software design documents
- Software
- Tests
- … (possibly backlogs in agile processes)
- Artefacts specific to development process
What are the features of a web request-response cycle for a web application?
Front-end
- Client accesses web browser
- Web browser sends request to web server
Back-end
- Web server receives requests
- Business logic that handles request
- Logic may access data from storage
- Handled request is sent back to web server, then web browser, then client
What are the features of a client-server architecture?
Layered architecture
Client
- Browser
Server
- Presentation: how to present response
- Business logic: does the work for the request
- Data access: controls how the system talks to other things
- Cross-cutting: handles security or logging
Also
- Data sources
- 3rd party integration
- Services
What are some types of architecture within CS?
- Network (OSI model)
- OS
- Computer
- Enterprise
- System
- Technology/Infrastructure
- Application
- Software
- Information
What is the scope of an architecture?
The scope of an architecture depends on scale of context
- Domain
- Organisation
- Application
Each architecture will include different aspects of a system:
- Software, hardware, processes, policies, standards
- Specified from different perspectives
What is enterprise architecture?
- Architecture across a (potentially large) enterprise
- Long term strategies driven by business vision and desired outcomes
- Organisation-wide policies and standards: apply to multiple systems
“A coherent whole of principles, methods and models that are used in the design and realisation of an enterprise’s organisational structure, business processes, information systems, and infrastructure”
[Lankhorst, 2017]
What is infrastructure architecture?
- How are things put together, and how do they behave together
- Structure and behaviour of the technology infrastructure of an enterprise or system
- Includes hardware configurations, infrastructure applications that run on hardware, protocols and networks that connect applications and hardware components (development and deployment)
- Concerns: resilience, performance, etc.
What is software architecture?
Every software system has an architecture
- Planned or not
- Documented or not
- Fit for purpose or not
If planned and designed properly, it can help guide development and maintenance
- A software system is not monolithic- we want it to work as a single entity, however it is made up of different components with different functionality that need to work together to achieve the overall goal.
- We must also consider the environment they work in, and the guiding principles are.
- We need to understand what services each component provides to other components, and what services each component requires from other components
“The fundamental organisation of a system embodied in its components, their relationships to each other and to the environment and the principles guiding its design and evolution.”
[IEEE 1471 - 2000]
“Structure or structures of the system, which comprise software elements, the externally visible properties of these elements, and the relationships among them.”
[Bass, Clements & Kazman]
What is application architecture?
Architecture as applied to an application
An application is a social construction, it could mean different things
- A body of code that’s seen by developers as a singe unit
- A group of functionality that business customers see as a single unit
- An initiative that those with the money see as a single budget
Therefore, the size of an application may vary
What is system architecture?
- Holistic architecture of a specific system
- Includes software architecture as well as hardware and communication concerns
What is information architecture?
- Logical and physical data models
- Concerns: data storage, management and maintenance
Logical: what kind of information do we need, transactions for this data
Physical: how is this data stored, management and maintenance
What are some responsibilities of architecture in software development?
Architecture helps us with the following:
- Understanding context
- Making decisions
- Modelling
- Validating
- Delivery
What are some uses of architecture? (organisational)
- Communicating high-level decisions to stakeholders
- Provide context for the system (textual or visual)
- Planning work allocation and interactions between teams
- Estimating costs (budget and timeline)
What are some uses of architecture? (technical)
- Focus on meeting significant functional and non-functional requirements
- Analysing system properties
- Acting as a blueprint for development and maintenance
- Improving large scale reuse
- Facilitating integration with other systems
What is software architecture design?
Software architecture is designed taking into account functional and non-functional requirements of the system.
- Typically a stage between requirements engineering and software design (iterative or plan-driven)
- Software architecture is the basis for detailed design
- Sometimes boundary between architecture and detailed design is blurred
- Focus on quality attributes (security, reliability, performance, etc.)
What is the scale of architecture?
Architecture in the small
- architecture of individual programs
Architecture in the large
- Architecture of complex enterprise systems
- Can include other systems, programs and components