Chapter 19: Architecture, Implementation, and Testing

Slides:



Advertisements
Similar presentations
Computer Systems & Architecture Lesson 2 4. Achieving Qualities.
Advertisements

Configuration management
Configuration management
Lecture 13 Enterprise Systems Development ( CSC447 ) COMSATS Islamabad Muhammad Usman, Assistant Professor.
DESIGNING A PUBLIC KEY INFRASTRUCTURE
Hands-On Microsoft Windows Server 2003 Networking Chapter 6 Domain Name System.
Hands-On Microsoft Windows Server 2003 Administration Chapter 3 Administering Active Directory.
70-293: MCSE Guide to Planning a Microsoft Windows Server 2003 Network, Enhanced Chapter 7: Planning a DNS Strategy.
Course Instructor: Aisha Azeem
Maintaining and Updating Windows Server 2008
Software Architecture. Agenda " Why architect? " What is architecture? " What does an architect do? " What principles guide the process of architecting?
Architecture, Implementation, and Testing Architecture and Implementation Prescriptive architecture vs. descriptive architecture Prescriptive architecture:
Overview SAP Basis Functions. SAP Technical Overview Learning Objectives What the Basis system is How does SAP handle a transaction request Differentiating.
The Many Contexts of Software Architecture
Software Architecture in Practice (3rd Ed) Introduction
Instructor: Tasneem Darwish1 University of Palestine Faculty of Applied Engineering and Urban Planning Software Engineering Department Software Systems.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
1 Autonomic Computing An Introduction Guenter Kickinger.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
1 Chapter 9 Database Design. 2 2 In this chapter, you will learn: That successful database design must reflect the information system of which the database.
Configuration Management (CM)
Chapter 14 Part II: Architectural Adaptation BY: AARON MCKAY.
Architectural Design lecture 10. Topics covered Architectural design decisions System organisation Control styles Reference architectures.
Database Design and Management CPTG /23/2015Chapter 12 of 38 Functions of a Database Store data Store data School: student records, class schedules,
CS 501: Software Engineering Fall 1999 Lecture 12 System Architecture III Distributed Objects.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
Maintaining and Updating Windows Server 2008 Lesson 8.
 Software reliability is the probability that software will work properly in a specified environment and for a given amount of time. Using the following.
Lecturer: Eng. Mohamed Adam Isak PH.D Researcher in CS M.Sc. and B.Sc. of Information Technology Engineering, Lecturer in University of Somalia and Mogadishu.
Lecture 15 Attribute Driven Design Again Topics ATAM – team expertise and experience needed Chapter 24 Next Time: June 22, 2016 CSCE 742 Software Architecture.
Chapter 5: Availability © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License.
SOFTWARE TESTING TRAINING TOOLS SUPPORT FOR SOFTWARE TESTING Chapter 6 immaculateres 1.
Chapter 12: Other Quality Attributes
INTRO. To I.T Razan N. AlShihabi
Securing Network Servers
Chapter 7: Modifiability
Software Configuration Management
Chapter 4: Understanding Quality Attributes
Quality Attribute Modeling and Analysis
Chapter 6: Interoperability
Chapter 3: The Many Contexts of Software Architecture
Chapter 9: Security © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License.
Chapter 24: Architecture Competence
Chapter 1: Introduction
The Development Process of Web Applications
Chapter 18 Maintaining Information Systems
Chapter 17: Designing an Architecture
Lecture 17 ATAM Team Expertise
Chapter 11: Usability © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License.
Software Engineering Architectural Design Chapter 6 Dr.Doaa Sami
CHAPTER 3 Architectures for Distributed Systems
Design and Implementation
Chapter 22: Management and Governance
Chapter 25: Architecture and Product Lines
Lecture 7 – Quality Attributes
Database Fundamentals
Fault Tolerance Distributed Web-based Systems
Chapter 6 – Architectural Design
D7032E – Software Engineering
Chapter 13 Quality Management
Active replication for fault tolerance
An Introduction to Software Architecture
Chapter 7 –Implementation Issues
Chapter 2: Operating-System Structures
Lecture 7 – Quality Attributes
Lecture 5 – Quality Attributes
An Introduction to JavaScript
Chapter 5 Architectural Design.
Chapter 2: Operating-System Structures
Chapter 6 – Architectural Design
Presentation transcript:

Chapter 19: Architecture, Implementation, and Testing © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Chapter Outline Architecture and Implementation Architecture and Testing Summary © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Architecture and Implementation Four techniques to help keep the code and the architecture consistent: Embedding the design in the code Frameworks Code templates Keeping code and architecture consistent (i.e. avoiding “architecture erosion”) © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Embedding the Design in the Code Architecture acts as a blueprint for implementation. This means Implementers know what architectural structure they are implementing. E.g. layer, pub/sub, MVC, broker, … They can document the architectural structure in the code as comments. Then anyone picking up the code will know some of the constraints. Projects should have conventions about how to do this. Then tools can automatically relate the code and the architecture. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Frameworks A framework is a reusable set of classes organized around a particular theme. A programmer uses the services provided by a framework. Examples are Ruby on Rails is based on MVC is designed for web applications. It offers the ability to gather information from the web server, talk to or query the database, and render templates. AUTOSAR is designed for the computers inside of automobiles. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Code Templates A code template is collection of code within which the programmer provides application specific portions. The example below implements a failover protocol: In the event that a failure is detected in a critical-application component, a switchover occurs as follows: A secondary copy, executing in parallel in background on a different processor, is promoted to the new primary. The new primary reconstitutes with the application’s clients A new secondary is started to serve as a backup for the new primary. The newly started secondary announces itself to the new primary. If failure is detected within a secondary, a new one is started on some other processor. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Code Templates Process: Use the code template for every critical component that must have a hot standby. Place application specific code in fixed places within the template. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Advantages of Code Templates Components with similar properties behave in a similar fashion. Template only needs to be debugged once. Complicated portions can be completed by skilled personnel and handed off to less skilled personnel. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Keeping Code and Architecture Consistent The implementation will drift away from the documented architecture. Implementers may make decisions that are not consistent either with each other or with the architecture. The architecture may not have foreseen all eventualities that come up. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Preventing Architecture Erosion Use tools to enforce architectural constraints. can have architecture rules added that are enforced during a build or check in. Mark documentation as out of date when erosion occurs. Will give more credence to remaining portion. Schedule documentation/code synchronization times. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Architecture and Testing Unit test Integration test Network effects Test activities © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Unit Test Architecture defines the units that are to be tested. They are components or modules. Architecture defines the responsibilities and interactions of the units. Test harness will drive the element to be tested. The test harness can test: Responsibilities for functional correctness Performance through synthetic loads Availability through fault injection. i.e. what happens if a component on which the component being tested does not respond. Modifiability requirements can also be tested by assigning changes to test teams. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Integration Test As with unit test, integration test can test functionality, performance, availability, and security. Security can be tested by having the test harness execute various attack scenarios. Systems may degrade after being run for a long time if resources are not freed or a configuration is incorrectly specified. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Network Effects Suppose an error causes a 2% performance degradation. This is within normal variation if using one server May cause severe degradation if system is deployed to thousands of servers. Configuration errors are common during installation and can lead to network effects. i.e. routing a message through an intermediary rather than directly will introduce latency. In Chapter 10 we saw the Latency Monkey and the Chaos Monkey as testing techniques for running systems. Network effects are best found through self-aware systems, i.e. system monitors itself and makes values available externally. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Test Activities The architect should be actively involved in Test planning, since the architect knows the sensitive areas of the system. Test development. Test driven development is a technique where the next increment of the system is developed to satisfy a predetermined test. Test interpretation. The architect knows what various monitored values should be and is best equipped to interpret test results. Test harness creation. The test harness has to intimately interact with the system and this requires architecture knowledge. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Summary Implementation Testing Implementation activities can embed architecture knowledge in the code Templates can be used for critical sections that reoccur Architecture erosion can be prevented through use of tools and management processes Testing Unit and integration tests depend on architectural knowledge and a test harness. Network effects are difficult to discover when deploying a system to 1000s of servers. The architect should be involved in a wide variety of test activities. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License