“Role” of Software Architecture 3 “fundamental” understandings about architecture: (not sure how “fundamental”-Tsui) 1.Every software application has an.

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

Prescriptive Process models
The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
Lecture # 2 : Process Models
Object-Oriented Software Development CS 3331 Fall 2009.
Multimedia Specification Design and Production 2013 / Semester 1 / week 7 Lecturer: Dr. Nikos Gazepidis
CS487 Software Engineering Omar Aldawud
The software process A software process is a set of activities and associated results which lead to the production of a software product. This may involve.
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Sixth Hour Lecture 10:30 – 11:20 am, September 9 Framework for a Software Management Process – Artifacts of the Process (Part II, Chapter 6 of Royce’ book)
Software Architecture for DSD DSD Team. Overview What is software architecture and why is it so important? The role of architecture in determining system.
Rational Unified Process
SE curriculum in CC2001 made by IEEE and ACM: Overview and Ideas for Our Work Katerina Zdravkova Institute of Informatics
CS 501: Software Engineering
Model Driven Architecture (MDA) Partha Kuchana. Agenda What is MDA Modeling Approaches MDA in a NutShell MDA Models SDLC MDA Models (an Example) MDA -
1/31 CS 426 Senior Projects Chapter 1: What is UML? Chapter 2: What is UP? [Arlow and Neustadt, 2005] January 22, 2009.
© Copyright Eliyahu Brutman Programming Techniques Course.
Iterative development and The Unified process
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
Software Architecture. Agenda " Why architect? " What is architecture? " What does an architect do? " What principles guide the process of architecting?
Domain-Specific Software Engineering Alex Adamec.
Architecture, Implementation, and Testing Architecture and Implementation Prescriptive architecture vs. descriptive architecture Prescriptive architecture:
Chapter 6 View Alignment Techniques and Method Customization (Part I) Object-Oriented Technology From Diagram to Code with Visual Paradigm for UML Curtis.
Enterprise Architecture
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
Software Engineering Muhammad Fahad Khan
S/W Project Management
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
Chapter 2 The process Process, Methods, and Tools
An Introduction to Software Architecture
Architecture-Based Runtime Software Evolution Peyman Oreizy, Nenad Medvidovic & Richard N. Taylor.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
1 ISA&D7‏/8‏/ ISA&D7‏/8‏/2013 Systems Development Life Cycle Phases and Activities in the SDLC Variations of the SDLC models.
Team Skill 6: Building the Right System From Use Cases to Implementation (25)
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Software Design: An Introduction by David Budgen Presented by Shane Marcus EEL 6883 – Spring 2007 Presented by Shane Marcus EEL 6883 – Spring 2007.
 CS 5380 Software Engineering Chapter 2 – Software Processes Chapter 2 Software Processes1.
Software Engineering Management Lecture 1 The Software Process.
Odyssey A Reuse Environment based on Domain Models Prepared By: Mahmud Gabareen Eliad Cohen.
SOFTWARE DESIGN.
SOFTWARE SYSTEMS DEVELOPMENT 4: System Design. Simplified view on software product development process 2 Product Planning System Design Project Planning.
SWE © Solomon Seifu ELABORATION. SWE © Solomon Seifu Lesson 10 Use Case Design.
University of Southern California Center for Systems and Software Engineering Model-Based Software Engineering Supannika Koolmanojwong Spring 2013.
소프트웨어공학 강좌 1 Chap 7. Software Prototyping - Rapid software development to validate requirements -
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Review of Software Process Models Review Class 1 Software Process Models CEN 4021 Class 2 – 01/12.
1 Software Development Software Engineering is the study of the techniques and theory that support the development of high-quality software The focus is.
Systems Analysis and Design in a Changing World, Fourth Edition
CEN5011, Fall CEN5011 Software Engineering Dr. Yi Deng ECS359, (305)
CIS 112 Exam Review. Exam Content 100 questions valued at 1 point each 100 questions valued at 1 point each 100 points total 100 points total 10 each.
UML as a Specification Language for Embedded Systems. By, Mir Ahmed Ali, Asst. Professor, ECM department, SNIST. By, Prof. Narsiah sir, Director of School.
1 CS 501 Spring 2004 CS 501: Software Engineering Lecture 2 Software Processes.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
Object-Oriented Modeling: Static Models. Object-Oriented Modeling Model the system as interacting objects Model the system as interacting objects Match.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Software Prototyping Rapid software development to validate requirements.
Requirements Engineering
Winter 2011SEG Chapter 11 Chapter 1 (Part 1) Review from previous courses Subject 1: The Software Development Process.
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
Basic Concepts and Definitions
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
Software Engineering Salihu Ibrahim Dasuki (PhD) CSC102 INTRODUCTION TO COMPUTER SCIENCE.
“Role” of Software Architecture
Unit - 3 OBJECT ORIENTED DESIGN PROCESS AND AXIOMS
Chapter 2 – Software Processes
Presentation transcript:

“Role” of Software Architecture 3 “fundamental” understandings about architecture: (not sure how “fundamental”-Tsui) 1.Every software application has an architecture 2.A software application may have more than one architect/architecture (could the design decisions conflict?) 3.Software architecture is not contained in a phase (not performed in a single phase) within a software engineering development cycle (3 cont.) however Architecture is a characterization of the essence and the essentials of the software system (principal design decisions made about the system) (key abstractions made about the system)

Software Architecture 1.When are these principal design decisions made? –Traditionally --- after requirements & during design phase –(text-book authors) Through-out the development activities and not limited to only the “design” phase (yes, but ----?) 2.Who makes these decisions? –Mainly Architects/Designers, but may include multiple stakeholders ( including customers? ) 3.How are these decisions made? –Using various techniques & past experiences the major part of this course

Software Development Activities & Architecture Requirements Design Implement Build /Test Maintenance Rel A r c h I t e c t u r e Architecture is created, established, and maintained through all the activities

Architecture during Requirements ? A strong traditionl view --- “understand the requirements thoroughly before embarking on the solution.” However (newer view), during requirements analysis, the solution (especially previous solutions to “similar” problems) is often considered (e.g. mentally modeled or even physically prototyped). -The architecture of the solution should “start” at the requirements analysis stage. In “architecting,” one often looks to past experiences (deeper insights)---- but beware that not all past solutions are applicable. Also beware that brand “new” architecture often causes several “false” starts. Need to know what is reusable (e.g.) use a ladder to go to the roof of a house, use a fire-truck ladder to get to the top of a 6 story building, but one needs something totally different to get to the top of a skyscraper!! balance these

Requirements: “Merge” 2 Application Products with “similar” Architecture Styles -- (need to consider- design, code & test?) F1FnF2 User Interface Design.. “Reprocess” Mechanism Help/Error Messages Import/Export data sharing mechanism FaFpFb User Interface Design.. Help/Error Messages Import/Export Company ACompany B “Horizontal” Common Function Design “Vertical” App Component Design Security Mechanism How would cohesion and coupling affect the “merger” ?

2 Main Activities in Requirements Phase Requirements Elicitation is an interactive activity with the users/customers. –Functional requirements are usually well articulated by the user/customers because they understand that well. These main functionalities are often aggregated into “main components” of the software architecture. (similar to the “vertical” components) –Non-functional requirements (integrity, security, performance, usability, etc.) usually need some prodding from the solution providers. It is in this area, that the question of architecture really starts. (similar to the “horizontal” components) Requirements Analysis of the gathered requirements includes the earnest discussion of the underlying solution architecture and design. (still --- bone of contention among software engineers) –Prototyping for requirements and for architecture are also performed –Project cost & schedule estimations are initiated based on the requirements analysis and the assumed architecture.

Architecture during Design Software architecture and design, as an activity, appears “sequentially” after the requirements are complete and understood and before design and implementation starts in a software engineering process diagram. Truth is that software architecture: a) sometimes starts during requirements analysis b) is given main emphasis during design phase c) continues into implementation d) considered during test case analysis and testing e) considered during support maintenance and next release Note: Compared to functional requirements, “non-functional” requirements require considerable design and architectural work from scratch

4 “Most” Common Design Decisions Traditional Design Phase includes: 1.Identification of main components (almost directly from “abstracting” the requirements) 2.Describing these main components 3.Constructing a “system structure/configuration” Identifying the relationship among components Identifying the dynamic “flow” of control/data 4.Considering the constraints that need to be placed on the system structure/configuration and possibly modifying the components & structure/configuration

Design Techniques There are many different techniques employed during design ---- to be expounded through out this course. Mention just 2 here: –OO Design key concept is “class/object” ---- (1) an abstraction of a main component (with its functionalities and states)and (2) the interaction of these classes. It has advantages: mechanisms for re-use (inheritance, polymorphism, etc.) It has disadvantages (does not model some important concepts): no concurrency, no security and trust guidance, limited notion of connector, interface, cache, etc. (addresses only one abstraction – object ) –Domain Specific Architectural Design key concept -- capturing the best solution and approaches used successfully in the past within the same application domain It has advantages: re-use, especially useful for product family where the next release or other components are all within the same application domain. It has disadvantages: there is very little guidance with new industry and/or new application domains where there is no past experience

Architecture during Implementation During implementation, parts of architecture and design may be altered, and new “low level design” changes may affect the architecture The key point is to ensure that the implementation and any modifications to the design remains consistent (& “faithful”) with the envisioned Architecture: (r1) (completeness) All the main structural elements (components and relations) in the architecture exist in the source code and (r2) (traceability) All the source code corresponds to the various components of the architecture Architecture Implementation r1 r2

Implementation Techniques & Architecture Different implementation techniques provide different degrees of “faithful” transformation from design to code. –Code generation directly from a design/architecture tool (“best” or most “faithful” but tools limited to special domains --- or state of the art in 2013/2014 is JML based on formal language) –Implementation framework (provides some major design/architectural elements in code and the rest requires hand- coding) –Middleware tools that support implementation (mostly limited to communications and networking code – e.g cross language remote object call) –Reuse of existing code (need to ensure they fit the design/architecture) –Manual hand coding from scratch (“worst” - requires the most work and has high risk of being “non-faithful”)

Architecture during “Testing” Testing here includes more than just executing code and testing (test case design is very important). We are not only interested in ensuring that the functional requirements are all satisfied, but also the non-functional requirements (many of which are “designed” into the product ) are also satisfied: –Performance properties –Security properties –Reliability properties –Maintainability properties –Complexity properties – etc.

Testing Techniques and Architecture There are 2 major testing techniques: –Inspection & review (mostly of non-executables) –Running test cases (executable code) Using these techniques we want to ensure: –architectural consistency and correctness & architectural satisfaction of requirements --- especially non-functional requirements architecture (its connectors & platforms) is supported by the actual code –Architectural model derived from the source code matches the original architecture. (this is almost never done – unless there is maintenance problem)

Architecture during Maintenance and Evolution During Maintenance the motivation is to fix the problem as quickly as possible in the easiest fashion. –Very little or no attention is paid to the original design or architectural consistency ---- eventually eroding the overall system to non-maintainable. During “evolution” of the software in a product family, the architecture and design should be, but often not, consulted first to maintain architectural integrity and consistency. (See the earlier product merger chart) –*** The design document should be modified first and then the code. Product evolution should follow an orderly process with consistent architecture.***

Conceptual View of Architectural-Centric Process Architectural Core t0t0 tntn time Testing/Build Implementation Design Requirements

Relation between Processes and Architecture Domain Specific Software Architecture-based development: If the process is to re-use many of the existing artifacts and the product is an extension of an existing product family, then the Core Architecture will start with a “large” core as the base. Agile Development : Requirements are sometimes given verbally/separately and design is not always recorded; in this case, the Core Architecture is very small for each for each of the iteration. “Somehow” the small pieces of Core Architecture needs to be merged into one base Core Architecture.