cspc 464 fall 2014 son nguyen. attendance/roster introduction ◦ instructor ◦ students ...
Post on 19-Jan-2016
218 Views
Preview:
TRANSCRIPT
Introduction to Software
ArchitectureCSPC 464 Fall 2014
Son Nguyen
Attendance/Roster Introduction
◦ Instructor◦ Students
Syllabus Q & A
Welcome
The Text Book
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
Inspiration
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
7
The Plan
See the syllabus – Lecture topics
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!!
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?
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
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
Core Concepts
12
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
Architecture, regardless of the domain, is about structure and vision.
Architecture (cont.)
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
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
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
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
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
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
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
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.
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
top related