23
Introduction to Software Architecture CSPC 464 Fall 2014 Son Nguyen

CSPC 464 Fall 2014 Son Nguyen. Attendance/Roster Introduction ◦ Instructor ◦ Students Syllabus Q & A

Embed Size (px)

Citation preview

Page 1: CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A

Introduction to Software

ArchitectureCSPC 464 Fall 2014

Son Nguyen

Page 2: CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A

Attendance/Roster Introduction

◦ Instructor◦ Students

Syllabus Q & A

Welcome

Page 3: CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A

The Text Book

Page 4: CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A

References

1. Software Architecture for Developers, Simon Brown

2. An Introduction to Software Architecture, David Garlan and Mary Shaw

3. Software Architecture, A. Bijlsma, B.J. Heerendr., E.E> Roubtovair, S. Stuurman

4

Page 5: CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A

Inspiration

Page 6: CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A

Class Goals To guide you through the tasks and associates

best practices that are applied in architecting a software system

To provide tools and techniques that can be applied immediately to today’s challenges

To create a “toolbox” that can be used for tomorrow’s challenges

To stimulate thinking about the future of software engineering

To ensure that we are all better engineers by semester’s end

To have some fun too!

6

Page 7: CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A

7

The Plan

See the syllabus – Lecture topics

Page 8: CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A

8

The Project

Each student will participate in a group project Groups will create a software architecture for a

fictitious but realistic software product The project will help

◦ Put course material into context and practice◦ Provide framework for questions◦ Demonstrate your mastery of materials

Project is non-trivial!◦ ASK QUESTIONS!!

Page 9: CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A

9

It’s a Good Plan, but…

Why you are here? What are special areas of interest or concern? Real-world problems with which you’d like to

help? Where do you begin? When can you participate in architecting? How can I make this class more meaningful for

you?

Page 10: CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A

Motivation “Our civilization runs on software” (Bjarne

S.) Software touch many aspects of our

everyday lives – found in something simple and in very complex systems

Software needs to ◦ Provide the required capacity◦ Be of sufficient quality◦ Be available when needed◦ Get delivered at acceptable price

These characteristics are directly influenced by the architecture of the software

10

Page 11: CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A

What is Architecture? The word “architecture” means many different

things to many different people and there are many different definitions floating around:◦ Systems, subsystems, interactions and interfaces◦ Design with the bigger picture in mind◦ The blueprint◦ The skeleton/backbone of the product◦ What is yours?

As a noun, architecture is about the complex or carefully designed structure of something

As a verb, architecture is about understanding what you need to build, creating a vision for building it and making the appropriate design

decisions. 11

Page 12: CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A

Core Concepts

12

Page 13: CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A

Type of Architecture There are many different types of

architecture and architects within the IT industry alone:◦ Data, hardware, enterprise, system, security, ◦ Software, information, application, etc.

What do they all in common?◦ Structure◦ Vision

Regardless of whether you’re building a software system, a network or a database; a successful solution requires:◦ to understand the problem ◦ create a vision that can be communicated to everybody

involved with the construction of the end-product. 13

Page 14: CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A

Architecture, regardless of the domain, is about structure and vision.

Architecture (cont.)

Page 15: CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A

What is Software Architecture It’s about the architecture of a piece of

software, right? Well, yes, but it’s about more than just software.

It’s anything and everything related to the significant elements of a software system; from the structure and foundations of the code through to the successful deployment of that code into a live environment.

A combination of ◦ Application architecture

aspects of software design and the organization of the code usually only concerned with a single technology stack (e.g.,

Java, Microsoft .NET, etc.)

15

Page 16: CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A

Software Architecture (cont.) The building blocks include things like programming languages

and constructs, libraries, frameworks, APIs, etc. It’s described in terms of classes, components, modules,

functions, design patterns, etc.

◦ and System architecture: one step up in scale from application architecture composed of multiple applications across a number of different

tiers and technologies (e.g, a software system comprised of a .NET Silverlight client accessing web services on a Java EE middle-tier, which itself consumes data from an Oracle database. Each of these will have their own application architecture)

The building blocks are a mix of software and hardware, including things like programming languages and software frameworks through to servers and infrastructure

16

Page 17: CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A

Why do we need Software Architecture?

Applications are becoming larger, more integrated, and are implemented using a wide variety of technologies.

The various technologies and disciplines need to be orchestrated to ensure product quality.

Quality attributes like reliability or usability cannot be analyzed at the code level, but they can be analyzed at the software architectural level

17

Page 18: CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A

18

Software Architect Individual responsible for the creation and

rework of a software architecture throughout the product’s lifecycle

Software architect does not work alone!◦ Leads an architecture team◦ Works with requirements engineers and functional

designers to ensure the orderly transition of processes, artifacts, and information

Page 19: CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A

19

Software Architect (continued) Must have

◦ Technology knowledge◦ Understandings of Software Development Process◦ Design knowledge and programming skills◦ Ability to make decisions

Under pressure When not popular

◦ Ability to mediate and negotiate between and with “stakeholder” groups

◦ Aware of organizational politics

Page 20: CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A

20

Software Architecting The activities of defining, documenting,

maintaining, improving, and certifying proper implementation of an architecture. (IEEE 1471.2000)

The art and science of defining and reworking software architectures

Is an ongoing, not a one-time activity◦ Architecting begins with requirements engineering◦ Architecture is reworked as necessary throughout the

product’s lifecycle◦ Architect participates in the test discipline, ensuring

that the architecture is both testable and tested

Page 21: CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A

21

Need for Software Architecting Need to have a common understanding of

how the product is to be built◦ As with any complex problem, there is more than

one possible solution◦ Need to ensure that we are all working on the

same solution Need to have a consistent definition of the

product architecture◦ Single version of Truth◦ Prevent confusion and avoidable rework

Page 22: CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A

22

Need for Software Architecting (continued) Customers expect a high-quality for their

money. End-product:◦ does what we said it would do◦ Behaves/performs the way our customer

expected◦ Is usable for the purpose for which the customer

bought it

We cannot stay in business (very long) delivering products that are make our customers unsatisfied.

Page 23: CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A

23

Coming Attractions Next time, we will take a look at

architecture and the process of architecting Homework assignments this week – read

chapter 1 & 2