Better Architecture Management Made Easy

Slides:



Advertisements
Similar presentations
Chapter 13 Review Questions
Advertisements

Unit 6 Assignment 2 Chris Boardley.
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Design Concepts and Principles
CBSD – Component Based Software Development - Introduction -
THE OBJECT-ORIENTED DESIGN WORKFLOW Interfaces & Subsystems.
1 Building with Assurance CSSE 490 Computer Security Mark Ardis, Rose-Hulman Institute May 10, 2004.
Unified Modeling (Part I) Overview of UML & Modeling
Design and Planning Presenter: Mike Team Members: Casey Kaushik Danny.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
1 CS115 Class 7: Architecture Due today –Requirements –Read Architecture paper pages 1-15 Next Tuesday –Read Practical UML.
1 Integration and Extension Hohmann Chapter 8.
Software Engineering Module 1 -Components Teaching unit 3 – Advanced development Ernesto Damiani Free University of Bozen - Bolzano Lesson 2 – Components.
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
Logical Architecture and UML Package Diagrams
Approaches to ---Testing Software Some of us “hope” that our software works as opposed to “ensuring” that our software works? Why? Just foolish Lazy Believe.
Agile Design.
Web Application Architecture: multi-tier (2-tier, 3-tier) & mvc
Continuation From Chapter From Chapter 1
Logical Architecture and UML Package Diagrams 徐迎晓 复旦大学软件学院.
CMSC 345 Fall 2000 Unit Testing. The testing process.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
11:57© , hello2morrow1 Software Sustainability Alexander v. Zitzewitz hello2morrow, Inc.
1 SYS366 Lecture 1: Introduction to Systems. 2 What is Software Development? Software Development implies developing some software – but it does not involve.
Architecture GRASP Realization of use cases in interaction diagrams Design class diagram Design ( how )
Requirements To Design--Iteratively Chapter 12 Applying UML and Patterns Craig Larman.
Design Design and Software Architecture. The design phase The analysis phase describes what the system should be doing The design phase describes how.
CS 325: Software Engineering February 12, 2015 Applying Responsibility-Assignment Patterns Design Patterns Situation-Specific Patterns Responsibility-Assignment.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
The Systems Development Life Cycle
L8 - March 28, 2006copyright Thomas Pole , all rights reserved 1 Lecture 8: Software Asset Management and Text Ch. 5: Software Factories, (Review)
SWE © Solomon Seifu ELABORATION. SWE © Solomon Seifu Lesson 12-5 Software Engineering Design Goals.
4/1/05F-1 © 2001 T. Horton CS 494 Object-Oriented Analysis & Design Packages and Components in Java and UML.
GRASP: Designing Objects with Responsibilities
Service Oriented Architecture (SOA) Dennis Schwarz November 21, 2008.
Service Oriented Architecture CCT355H5 Professor Michael Jones Suezan Makkar.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
Elements of OO Abstraction Encapsulation Modularity Hierarchy: Inheritance & Aggregation 4 major/essential elements3 minor/helpful elements Typing Concurrency.
02:01© hello2morrow1 Love your Architecture Alexander v. Zitzewitz blog.hello2morrow.com.
UML Package Diagrams. Package Diagrams UML Package Diagrams are often used to show the contents of components, which are often packages in the Java sense.
CSE 303 – Software Design and Architecture
1 SYS366 Week 1 - Lecture 1 Introduction to Systems.
Introduction. System Design Hardware/Software Platform Selection Software Architectures Database Design Human-Computer Interaction (HCI) Interface Object.
09:18© , hello2morrow1 Golden Rules to Improve Your Architecture Alexander v. Zitzewitz hello2morrow Inc.
Database Systems: Design, Implementation, and Management Tenth Edition
by C.A. Conley and L. Sproull
Unit - 3 OBJECT ORIENTED DESIGN PROCESS AND AXIOMS
Windchill Customization
Database Development (8 May 2017).
Software Architecture & Difference from Design
Lecture 9- Design Concepts and Principles
Copyright © by Curt Hill
Software Quality Engineering
Chapter 13 Logical Architecture.
Logical architecture refinement
Patterns.
Lecture 9- Design Concepts and Principles
Object oriented analysis and design
Two Patterns in Adaptive, Distributed Real-Time, Embedded Middleware
Chapter 13 Logical Architecture.
Design Tips.
Unit 6 Assignment 2 Chris Boardley.
Software Design Lecture : 8
Chapter 19: Interfaces and Components
Software Testing “If you can’t test it, you can’t design it”
Interfaces and Components
CMPE/SE 131 Software Engineering March 7 Class Meeting
Chapter 13 Logical Architecture.
Logical Architecture & UML Package Diagrams
Presentation transcript:

Better Architecture Management Made Easy Alexander v. Zitzewitz hello2morrow Inc. 04:16 © 2005-2008, hello2morrow

Complexity Grows out of Control Easily 04:16 © 2005-2009, hello2morrow

Erosion of Architecture – Symptoms (Robert C. Martin) Rigidity – The system is hard to change because every change forces many other changes. Fragility – Changes cause the system to break in conceptually unrelated places. Immobility – It's hard to disentangle the system into reusable components. Viscosity – Doing things right is harder than doing things wrong. Opacity – It is hard to read and understand. It does not express its intent well. 04:16 © 2005-2008, hello2morrow

Erosion of Architecture – Reasons System knowledge and skills are not evenly distributed Complexity grows faster than system size Unwanted dependencies are created without being noticed Coupling and complexity are growing quickly. When you realize it, it is often too late Management considers software as a black box Time pressure is always a good excuse to sacrifice structure The Law of Entropy? 04:16 © 2005-2008, hello2morrow

Cost of Structural Erosion 04:16 © 2005-2008, hello2morrow

The Cure – Six Sigma for Software Define Measure Analyze Improve Control 22.04.2019 © 2005-2008, hello2morrow

Definition of a Logical Architecture Natural subsystems Your System Step 3: Defines the rules of engagement Step 2: Cut vertically into vertical slices by functional aspects Contracts Customer User Common User Interface Business Logic Data Access Step 1: Cut horizontally into Layers 04:16 © 2005-2008, hello2morrow

Cyclic dependencies are evil "Guideline: No Cycles between Packages. If a group of packages have cyclic dependency then they may need to be treated as one larger package in terms of a release unit. This is undesirable because releasing larger packages (or package aggregates) increases the likelihood of affecting something." [AUP] "The dependencies between packages must not form cycles." [ASD] "Cyclic physical dependencies among components inhibit understanding, testing and reuse. Every directed a-cyclic graph can be assigned unique level numbers; a graph with cycles cannot. A physical dependency graph that can be assigned unique level numbers is said to be levelizable. In most real-world situations, large designs must be levelizable if they are to be tested effectively. Independent testing reduces part of the risk associated with software integration " [LSD]

Example : Cyclic Dependency Presentation Model Main AlarmClock AlarmHandler AlarmToConsole AlarmToFile

Breaking the Cycle Main AlarmClock AlarmHandler IAlarmHandler Presentation <<bottom>> Model Main AlarmClock <<abstract>> AlarmHandler <<interface>> IAlarmHandler AlarmToConsole AlarmToFile

Six Golden Rules for a Successful Project Rule 1: Define a cycle free logical architecture down to the level of subsystems and a strict and consistent package naming convention Rule 2: Do not allow cyclic dependencies between different packages Rule 3: Keep the relative ACD low (< 7% for 500 compilation units, NCCD < 6) Rule 4: Limit the size of Java files (700 LOC is a reasonable value) Rule 5: Limit the cyclomatic complexity of methods (e.g. 15) Rule 6: Limit the size of a Java package (e.g. less than 50 types) 04:16 © 2005-2008, hello2morrow

Your questions… Download free architecture rules white paper from: www.hello2morrow.com My email address: a.zitzewitz@hello2morrow.com 04:16 © 2005-2008, hello2morrow