SE549 Lecture 1
Terms
undefined, object
copy deck
- Separation of concern
- is the process of breaking a computer program into distinct features that overlap in functionality as little as possible
- Software entity is a construct of interlocking concepts
- Data sets Relationships among data items Algorithms Invocations of functions
- Inherent properties of building software
- Complexity Conformity Changeability Invisibility
- Principles of Software Engineering
- Separation of concerns Modularity Abstraction Refinement Anticipation of change Automation Compositionality
- Abstracting some design means
- removing its non-essential details while preserving the essentials
- Refinement is
- is a contrivance or device intended to improve or perfect something
- Step-wise refinement is
- the ability to create complex programs by progressively introducing implementation details into simpler programs
- The Context of Software Architecture
- Requirements Architecture Design Implementation
- Requirements are concerned with
- the determination of the information, processing, and characteristics of that information and processing needed by the user of the system
- Architecture is concerned with
- the selection of architectural elements, their interactions, and the constraints on those elements and their interactions necessary to provide a framework in which to satisfy the requirements and serve as a basis for the design
- Design is concerned with the
- modularization and detailed interfaces of the design elements, their algorithms and procedures, and the data types needed to support the architecture and to satisfy the requirements
- Implementation is concerned with s
- the representation of the algorithms and data types that satisfy the design, architecture, and requirement
- Software Architecture
- the structure of structures of the system, which comprises software components, the externally visible properties of those components, and the relationships among them
- Importance of Software Architecture
- Serves as an enabler for communication between all stakeholders participating or interested in the development of a computing system Highlights design decisions that have a profound impact on all software engineering work and the ultimate success of the system as an operational entity Constitutes a relatively small, intellectually graspable model of how the system is structured and how its components work together
- Software Architecture =
- { Elements, Form, Rationale }
- Classes of architectural elements
- Processing elements Data elements Connecting elements
- Architectural Form
- Consists of weighted properties and relationships The necessity of selecting among alternatives
- Rationale
- Captures the motivation for the choice of architectural style, the choice of elements, and the form
- Architectural style encapsulates
- important decisions about the architectural elements and emphasizes important constraints on the elements and their relationships
- An architectural style is a
- coordinated set of architectural constraints that restricts the 57 roles/features of architectural elements and the allowed relationships among those elements within any architecture that conforms to that style.
- Architectural Problems
- Architectural erosion Architectural drift
- Architectural erosion
- Violations of the architecture Increasing brittleness of the system
- Architectural drift
- Insensitivity about architecture Results in lack of coherence and clarity of form Leads to architectural erosion
- A model is an
- artifact constructed to represent something
- Models
- Used to communicate core ideas Often based on mathematical objects (numbers, sets, etc) Abstraction is of vital importance simplicity is the key are used to ensure that solutions are sound
- Davis’ Law
- The value of a model depends on the view taken, but none is best for all purposes