Top Banner
An Introduction To Software Development Using Python Spring Semester, 2015 Class #22: Architecture & Detailed Design
17

An Introduction To Software Development - Architecture & Detailed Design

Jul 28, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: An Introduction To Software Development - Architecture & Detailed Design

An Introduction To Software Development

Using Python

Spring Semester, 2015

Class #22:Architecture & Detailed Design

Page 2: An Introduction To Software Development - Architecture & Detailed Design

It’s All About Good Design

• Once we have our user stories, we can get started on transforming them into our solution design.

• Software design deals with how the software is to be structured. What its components are and how those components are related to each other. There are two phases to software design:

– Architectural Design Phase: Highest level overview of the system. Main components are listed as well as properties external to components and relationships between components.

– Detailed Design Phase: Components are decomposed into a much finer level of detail.

Image Credit: www.clipartillustration.com

Page 3: An Introduction To Software Development - Architecture & Detailed Design

Relationship Among Requirements,

Architecture, & Detailed Design

US3

US2

US1

Module 2

Module1

Module 3

Requirements Architecture

Detailed Design

Page 4: An Introduction To Software Development - Architecture & Detailed Design

What Is Software Architecture?

• The software architecture of a system specifiesits basic structure.

• Every system has a software architecture. No matter if you make it explicit or if you document it, it has an architecture.

• There could be more than one structure. There is more than one way the system could be structured. Must document them with several views.

• Architecture deals with properties external to every module. The focus is on the interfaces between modules rather than on the details concerning the internals of each module.

Image Credit: calarchitecture.com

Page 5: An Introduction To Software Development - Architecture & Detailed Design

It’s All About The View

• A view is a representation of a system’s software elements & the relationships among them (structures).

• 4 architectural views to represent a system:– Logical view: decomposition of the software system– Process view: run time components and how they interact– Subsystem decomposition view: Represents the modules and

subsystems, joined with export and import relationships– Physical architecture view: Represents the mapping of the software to

the hardware. Which processes and tasks are mapped to which nodes.

Image Credit: www.clipartillustration.com

Page 6: An Introduction To Software Development - Architecture & Detailed Design

Example: Our Shack On A Lake

Process ViewLogical View

Subsystem decomposition view Physical architecture view

ShackReservation

PaymentRecord

PackageSelection

TravelArrangements

DVD

ReviewStay

RoomService

ChooseView

3000Users

Sign on to website

PackageSelection

TravelArrangements

PaymentRecord

ChooseView

RoomServiceDVDReview

Stay

3000Users

PaymentRecord

TravelArrangements

ReviewStay

3000Users Reservation

DatabaseFront-endweb server Back-end

reservation engine

Page 7: An Introduction To Software Development - Architecture & Detailed Design

Software Architectural Styles & Patterns

• Similar to styles in physical buildings: Gothic, art nouveau, etc.

• Pipes & Filters: Unix based. A series of processes connected by “pipes”. Output of one process serves as input to another process. Next process can start working once only some of the input is available.

• Event-Driven: A style in which system components react to externally generated events and communicate with other components through events. (e.g. GUIs & decoupled systems)

Image Credit: www.clipartpal.com

Page 8: An Introduction To Software Development - Architecture & Detailed Design

Software Architectural Styles & Patterns

• Client-Server: Design consists of clients and servers. They communicate using networking protocols. Many clients access the same server.

• Model-View-Controller (MVC): Separate the data from the display of the data. Controller translates user inputs for the view. Model stores the data and informs the view when the data has changed.

Page 9: An Introduction To Software Development - Architecture & Detailed Design

Software Architectural Styles & Patterns

• Layered: Components are grouped into layers and components only communicate with other components in the layer either directly above or directly below them.

• Database-Centric: The central database and separate programs access the database. The programs communicate only through the database, not directly among themselves. Database Management System (DBMS) provides a layer of abstraction.

Page 10: An Introduction To Software Development - Architecture & Detailed Design

Software Architectural Styles & Patterns

• Three-Tier: Variation on database-centric and client server. Adds a middle layer between clients and servers. Much of the business logic is implemented here. Clients cannot access the database directly – they have to go through the middle layer.

Page 11: An Introduction To Software Development - Architecture & Detailed Design

Detailed Design

• Once you have user stories and the architectural design of your system, they need to refined in order to create a detailed design.

• The development process used determines the level of detail to which the design is decomposed.

• If the design is carried out to the finest level of detail, writing the software is almost a one-to-one mapping of the design to your code.

Image Credit: www.fotosearch.com

Page 12: An Introduction To Software Development - Architecture & Detailed Design

Functional Decomposition

• Decompose a function or a module into smaller modules, which will be composed together to form the bigger module.

• Example: College course registration & enrollment

• Four tasks need to be done:– Modify and delete students from the database– Modify and delete courses from the database– Add, modify, and delete sections for a given course– Register and drop students from a section

Page 13: An Introduction To Software Development - Architecture & Detailed Design

Modular Decomposition For

Student Registration SystemNumbering is used to keep track

of the parents of modules.

Page 14: An Introduction To Software Development - Architecture & Detailed Design

Let’s Talk About Databases

• Relational databases are based on sets and relations and are pretty simple to both use and understand.

• Information is stored in tables (also called relations) with rows (also called tuples) and columns (also called attributes).

• Simplest case: a row corresponds to something in the real world and columns correspond to attributes of those entries (e.g. a row is a patient record with name, SS #, etc.)

"Johnson", "Fred", "N", "2763 Filibuster Drive", "Lakeland", "FL", "37643", "Q", "05/27/1935", "164-55-0726", "N"

Image Credit: cliparts.co

Page 15: An Introduction To Software Development - Architecture & Detailed Design

Relational Database Design

• Database design deals with how to represent the data required for the program and how to store it efficiently in a database.

• There are 4 phases to doing this:– Data Modeling: a graphical representation of entities and their

relationships to each other.– Logical Database Design: a set of tables and relationships– Physical Database Design: what data type to use for each attribute

and what indexes to use– Deployment and Maintenance: pick which DBMS software to use,

where relations will be stored, hardware to use

Image Credit: cliparts.co

Page 16: An Introduction To Software Development - Architecture & Detailed Design

What We Covered Today

1. Requirements, Architecture, & Detailed Design

2. Software Architectural Styles & Patterns

3. Detailed Design

Image Credit: http://www.tswdj.com/blog/2011/05/17/the-grooms-checklist/

Page 17: An Introduction To Software Development - Architecture & Detailed Design

What We’ll Be Covering Next Time

1. Software Support and Maintenance

Image Credit: http://merchantblog.thefind.com/2011/01/merchant-newsletter/resolve-to-take-advantage-of-these-5-e-commerce-trends/attachment/crystal-ball-fullsize/