quiz 4
Multi-version
- Each version has some shared files, and some files specific to that version - Versions may replace each other over time - a prior version may need to be examined or modified
what is the current trend?
from monolithic to microservices architecture
Omg is...
object management group
software design
requirements -> architecture and design -> code
Software Design Goals/Activities
- Making system-wide decisions - Architecture, languages, libraries, platforms Making lower-level decisions in an iterative manner: 0. Studying the problem 1. identifying solutions 2. Creating abstractions 3. Evaluating
what do we care about during software design there are 4!
- structure - behaviour - interaction - non-functional properties we focus on the how!
some examples of evolution provided on the slides
- the change the youtube front page made, the changes Netflix had to make as it had to accommodate a greater number of users - adding new overdrafting rule, adding new filter, ie only recording names that start with a - l - adding another trader - adding more users -
what other uml diagrams can we have? There are 6
- user interface mockups - pseudo code - entity relationship diagrams - architecture diagrams - storyboards - sketches
Multiplicity values and their indicators:
- 0..1 one or one - 1 one only - 0... zero or more - nothing: zero or more - 1..*: one or more - 3 only - 0...5 zero to five - 5..15 five to fifteen
Abstraction
- Abstractions are formed by removing irrelevant information and retaining/highlighting relevant information - Every design notation supports a certain kind of abstraction - Software engineering is all about constructing and elaborating abstractions/models
Inheritance in uml class diagrams
- Refers to the ability of one class to inherit the functionality and the variables of another class - To model inheritance on a class diagram, a solid line is drawn from the child class (the class inheriting the behavior) with a closed, unfilled arrowhead (or triangle) pointing to the super class
approaches to software design
- Software architecture - Functional decomposition - Relational database design - Object-oriented design and UML - User interface design
UML
- Unified Modeling Language - Industry standard for software design/modeling - Different types of UML diagrams are used to represent different aspects (structure, behavior, interactions) of a system 0. Class diagrams 1. Activity diagrams 2. Sequence diagrams 3. Use case diagrams•...
UML Class Diagrams
- Used in decomposing a system into modules known as classes - Typically used to - model domain concepts - create a detailed, object oriented design of the code
what are microservices architecutre?
A microservices architecture consists of a collection of small, autonomous services. Each service is self-contained and should implement a single business capability.
what are monolithic architecture systems?
A monolithic application has single code base with multiple modules. Modules are divided as either for business features or technical features. It has single build system which build entire application. It also has single executable or deployable binary.
purpose of designs
Designs to think Designs to talk Designs to prescribe Designs are developed iteratively
new definition of software engineering
Software engineering is the process of building a set of related models that represent the system-to-be.
how to create classes?
The set of nouns in the description of the problem (e.g., student, staff, bill, event, profile, message, account...)• The set of verbs in the description of the problem (e.g., login, logout, create event, freeze account, search, sort...) •Go through some more detailed use cases to further flesh out the flow and objects necessary •UI mockups• A little bit of programming? •Refer to, add to, and revise design as necessary
An architectural style is
a named collection of architectural design decisions that result in beneficial qualities in each resulting system
Version Control Software
a.k.a. "Revision control," "Source control" - Manages changes over time by multiple people
what can we say Software architectural styles
- mixing styles is often necessary
Evolution
- All successful software evolves! - Essential part of software development - Must be accommodated/planned as much as possible - Architecture is a key tool in accommodating evolution in summary: All successful software evolves•We must plan for this•Architecture helps us do so
Object-oriented design and UML
- An "object" contains both data and methods - A "class" is a blueprint for making objects
Association
- Certain objects are related to each other - Biconditional association - Linkage between two classes - Both classes are aware of each other and their relationships - Line between the two
Multi-person
- What if people "step on each other's toes?" I think what he meant is, what if people step in each others shoes? - What if people need to access each other's files?
what part of the class uml diagram is optional
- all things except the name -
what are the five ages of software systems?
0. monolithic 1. distributed monoliths 2. internet-connected 3. internet is system 4. intelligent connected - in each age, the software architects met new challenges by changing and expanding on how they do software architecture work
Design notations
By relieving the brain of all unnecessary work, a good notation sets it free to concentrate on more advanced problems, and in effect increases the mental power of the race."
software developement languages
Different languages are used at different stages: - english at reqs - uml/diagrams - java