COSC 340: Software Engineering Design and Architecture
Michael Jantz (adapted from slides by Ravi Sethi, University of Arizona)
COSC 340: Software Engineering 1
COSC 340: Software Engineering Design and Architecture Michael - - PowerPoint PPT Presentation
COSC 340: Software Engineering Design and Architecture Michael Jantz (adapted from slides by Ravi Sethi, University of Arizona) COSC 340: Software Engineering 1 Concepts from Building Architecture Draw on centuries old traditions of
COSC 340: Software Engineering 1
COSC 340: Software Engineering 2
COSC 340: Software Engineering 3
COSC 340: Software Engineering 4
COSC 340: Software Engineering 5
COSC 340: Software Engineering 6
COSC 340: Software Engineering 7
COSC 340: Software Engineering 8
COSC 340: Software Engineering 9
COSC 340: Software Engineering 10
COSC 340: Software Engineering 11
COSC 340: Software Engineering 12
COSC 340: Software Engineering 13
COSC 340: Software Engineering 14
COSC 340: Software Engineering 15
COSC 340: Software Engineering 16
COSC 340: Software Engineering 17
COSC 340: Software Engineering 18
COSC 340: Software Engineering 19
COSC 340: Software Engineering 20
COSC 340: Software Engineering 21
COSC 340: Software Engineering 22
COSC 340: Software Engineering 23
24
25
Cohesion Group elements based on Functional One secret (e.g. parsing) Sequential Process steps (a la pipes in Unix) Informational Data that is manipulated Temporal Order in which events occur Coincidental Elements have little to do with each other
COSC 340: Software Engineering 26
COSC 340: Software Engineering 27
COSC 340: Software Engineering 28
COSC 340: Software Engineering 29
COSC 340: Software Engineering 30
31
COSC 340: Software Engineering 32
COSC 340: Software Engineering 33
COSC 340: Software Engineering 34
COSC 340: Software Engineering 35
‒ Hide design decisions (secrets) ‒ They can be viewed as black boxes with abstract interfaces
‒ Organizes information hiding modules into a tree structure ‒ Described in the module guide
‒ Abstract data types: use data without knowing its representation ‒ GUI creation environments: construct user interfaces without knowing how to display ‒ Protocols: send and receive data – but hide channel details ‒ Methods: invoke methods without knowing their implementation
COSC 340: Software Engineering 36
COSC 340: Software Engineering 37
COSC 340: Software Engineering 38
COSC 340: Software Engineering 39
COSC 340: Software Engineering 40
COSC 340: Software Engineering 41
COSC 340: Software Engineering 42
COSC 340: Software Engineering 43
COSC 340: Software Engineering 44
COSC 340: Software Engineering 45
COSC 340: Software Engineering 46
COSC 340: Software Engineering 47
48
49
COSC 340: Software Engineering 50
COSC 340: Software Engineering 51
‒ Generates an intermediate representation consisting mostly of expression trees and stylized code for subroutine entry/exit ‒ 13% machine dependent lines; e.g., for subroutine entry/exit
‒ The back end source is surprisingly machine independent (70+%) ‒ Even in the machine dependent routines, only a third to a half vary across machines.
‒ Within months the compiler was running on a multitude of machines ‒ A Fortran 77 compiler was created by reusing back ends ‒ In the machine independent portions, a bug could be fixed in all versions almost mechanically
COSC 340: Software Engineering 52
COSC 340: Software Engineering 53
54
‒ 20,000 identical between machines
‒ 350 differed, PDP-11 to Interdata
‒ Interrupts, I/O, error handling
‒ Most of the bugs appeared here
COSC 340: Software Engineering 55
COSC 340: Software Engineering 56
COSC 340: Software Engineering 57
COSC 340: Software Engineering 58
59
60
COSC 340: Software Engineering 61
62
COSC 340: Software Engineering 63
64
COSC 340: Software Engineering 65
COSC 340: Software Engineering 66
How to track current sessions, participants, the modes they are using How to present sessions: spotlight or box Who to add, who to drop
COSC 340: Software Engineering 67
Method Invocations
COSC 340: Software Engineering 68
69
COSC 340: Software Engineering 70
COSC 340: Software Engineering 71
COSC 340: Software Engineering 72
COSC 340: Software Engineering 73
COSC 340: Software Engineering 74
‒ Abstract away details of the lower layers
‒ Do not expose implementation details at layer boundaries
‒ Separation between functionality in each layer is clear
‒ Well-defined responsibility boundaries for each layer
‒ Lower layers have no dependency on upper layers and are reusable
‒ Communication between layers is always through well-defined interfaces
COSC 340: Software Engineering 75
COSC 340: Software Engineering 76
77
Transport layer for delivery
It passes packets through the Internet Layer
routing algorithm to select the next hop
78
COSC 340: Software Engineering 79
COSC 340: Software Engineering 80
81
COSC 340: Software Engineering 82
COSC 340: Software Engineering 83
COSC 340: Software Engineering 84
COSC 340: Software Engineering 85
COSC 340: Software Engineering 86
COSC 340: Software Engineering 87
COSC 340: Software Engineering 88
COSC 340: Software Engineering 89
COSC 340: Software Engineering 90
COSC 340: Software Engineering 91
‒ Standard models exist and are routinely (re)used ‒ Short suspension bridges ‒ Client-server
‒ Standard models can be adapted to fit the need (Patterns) ‒ Tandem bicycle ‒ In-memory database
‒ Take a deep breath! ‒ First skyscraper ‒ First PC
COSC 340: Software Engineering 92
* satisficing: to act in such a way as to satisfy the minimum requirements for achieving a particular result
COSC 340: Software Engineering 93
COSC 340: Software Engineering 94
COSC 340: Software Engineering 95