Chapter 29: Integration Jacob Harper. The Integration Approach The order of adding components to a system is crucial Benefits to careful integration –

Slides:



Advertisements
Similar presentations
CHAPTER 1 SOFTWARE DEVELOPMENT. 2 Goals of software development Aspects of software quality Development life cycle models Basic concepts of algorithm.
Advertisements

Software Architecture Prof.Dr.ir. F. Gielen
Internal Documentation Conventions. Kinds of comments javadoc (“doc”) comments describe the user interface: –What the classes, interfaces, fields and.
Coding Practices. Why do we care? Good code is more than just functionality Other people will read your code You will forget what you code does Debugging.
Integration testing Satish Mishra
Coding Practices. What are Coding Practices ? Coding practices are a set of informal rules that the software development community has learned over time.
©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Software Development Software Life Cycle UML Diagrams.
Integration and System Testing CSSE 376, Software Quality Assurance Rose-Hulman Institute of Technology March 29, 2007.
Illinois Institute of Technology
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
INTEGRATION TESTING ● After or during Unit Testing ● Putting modules together in a controlled way to incrementally build up the final system. ● Start with.
Chapter 4 Sec. 4.1, 4.2, 4.4 Procedures (User-defined)
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Issues on Software Testing for Safety-Critical Real-Time Automation Systems Shahdat Hossain Troy Mockenhaupt.
Programming – Touch Sensors Intro to Robotics. The Limit Switch When designing robotic arms there is always the chance the arm will move too far up or.
Software System Integration
BY RAJESWARI S SOFTWARE TESTING. INTRODUCTION Software testing is the process of testing the software product. Effective software testing will contribute.
Test Driven Development Derived from Dr. Fawcett’s notes Phil Pratt-Szeliga Fall 2009.
Nyhoff, ADTs, Data Structures and Problem Solving with C++, Second Edition, © 2005 Pearson Education, Inc. All rights reserved Software.
ECE 355: Software Engineering
TESTING.
Modeling and Design of Rule-Based Systems Yonglei Tao.
Prologue: The Software Process. Main Phases of Software Process 1. Requirements Analysis (answers “WHAT?”) Specifying what the application must do 2.
Software Testing.
Jun 16, 2014IAT 2651 Debugging. Dialectical Materialism  Dialectical materialism is a strand of Marxism, synthesizing Hegel's dialectics, which proposes.
Understand Application Lifecycle Management
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
INT-Evry (Masters IT– Soft Eng)IntegrationTesting.1 (OO) Integration Testing What: Integration testing is a phase of software testing in which.
06/10/ Working with Data. 206/10/2015 Learning Objectives Explain the circumstances when the following might be useful: Disabling buttons and.
Software Construction and Evolution - CSSE 375 Software Documentation 2 Shawn & Steve Left – Ideally, online documents would let you comment and highlight,
Implementation 1. Software Implementation – transforming design into code Requirements Analysis Software Design Implementation Testing Deployment Evolution.
1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 23 Reliability III.
Kruse/Ryba Ch011 Object Oriented Data Structures Programming Principles Introduction Programming Style Coding, Testing, Further Refinement Program Maintenance.
Testing. 2 Overview Testing and debugging are important activities in software development. Techniques and tools are introduced. Material borrowed here.
Tori Bowman CSSE 375, Rose-Hulman September 11, 2007.
Construction, Testing, Documentation, and Installation Chapters 15 and 16 Info 361: Systems Analysis and Design.
Self-Documenting Code Chapter 32. Kinds of Comments  Repeat of code  Explanation of code  Marker in code  Summary of code  Description of code’s.
1 Introduction to Software Testing. Reading Assignment P. Ammann and J. Offutt “Introduction to Software Testing” ◦ Chapter 1 2.
1 Ch. 1: Software Development (Read) 5 Phases of Software Life Cycle: Problem Analysis and Specification Design Implementation (Coding) Testing, Execution.
Lesson 10 - Mail Merge and Reviewing Documents Advanced Microsoft Word.
Software Development Problem Analysis and Specification Design Implementation (Coding) Testing, Execution and Debugging Maintenance.
Software Engineering 2004 Jyrki Nummenmaa 1 BACKGROUND There is no way to generally test programs exhaustively (that is, going through all execution.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Top-down approach / Stepwise Refinement & Procedures & Functions.
Chapter 7 Implementation. Implementation Approaches F Big bang –Code entire system and test in an unstructured manner F Top-down –Start by implementing.
1 Maintenance of Documentation and Documentation of Maintenance Quiz 7 Tori Bowman CSSE 375, Rose-Hulman October 1, 2006.
M1G Introduction to Programming 2 3. Creating Classes: Room and Item.
Dillon: CSE470: SYSTEM INTEGRATION 1 Build Plan l Development or integration strategies l Decide the order in which components of the system will be developed.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
Integrating the Code during the Development Alexander Vakrilov Telerik Corporation
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Chapter 1 Software Development Dr. Bernard Chen Ph.D. University of Central Arkansas Fall 2008.
Today… Modularity, or Writing Functions. Winter 2016CISC101 - Prof. McLeod1.
1 Chapter 2 SW Process Models. 2 Objectives  Understand various process models  Understand the pros and cons of each model  Evaluate the applicability.
Communicating in Code: Commenting Programming Studio Spring 2009 Note: several examples in this lecture taken from The Practice of Programming by Kernighan.
Part 1 Learning Objectives To understand that variables are a temporary named location to store data and that programmers work with different data types.
Kruse/Ryba Ch011 Object Oriented Data Structures Programming Principles Introduction Programming Style Coding, Testing, Further Refinement Program Maintenance.
Methodologies and Algorithms
Topic: Functions – Part 2
The Object-Oriented Thought Process Chapter 05
Lecture 09:Software Testing
Software System Integration
Higher-Level Testing and Integration Testing
Communicating in Code: Commenting
CS310 Software Engineering Lecturer Dr.Doaa Sami
Program Design Language (PDL)
Integration Reading: McConnell, Code Complete, Ch. 29
Software System Integration
Chapter 11: Integration- and System Testing
Software Development Chapter 1.
Presentation transcript:

Chapter 29: Integration Jacob Harper

The Integration Approach The order of adding components to a system is crucial Benefits to careful integration – Easier defect diagnosis – Fewer defects – Less scaffolding – Shorter time to a working project – Shorter overall development – Better customer relations – Improved morale – Improved code quality

Phased Integration Design, code, test and debug the each class – Unit development Combine the classes into one huge system – System integration Test and debug the whole system – System dis-integration

Problems with Phased Integration Problems arise when new classes are put together – Hard to find the culprit All problems present themselves at once All this happens late in the project – Hence, panic mode

Incremental Integration Develop a small functional part of the system – The skeleton Design, code, test, and debug a class Integrate the new class on the skeleton – Thoroughly test and debug the new addition

Benefits of Incremental Integration Errors easy to locate The system succeeds early in the project – Improved morale Improved progress monitoring You’ll improve customer relations The units are more fully tested You can build the system in a shorter development cycle – Certain jobs can be done in parallel

Top-Down Integration Start with the main function Then move through each level of the program Disadvantages – Leaves tricky system interfaces until the end of the project – Have to make stubs to fill in the missing classes Alternative: Vertical Slice

Bottom-Up Integration Build all low level classes Test them with scaffolding Replace the scaffolding with real classes Disadvantages: – Leaves integration of the whole system until last – Forces complete design of the whole system before integration Alternative: similar Vertical Slice method

Sandwich Integration Start with high level business-object classes Make the device interface Finish with everything else in the middle A realistic, practical approach

Risk-Oriented Integration “Hard part first integration” Identify level of risk with each component Code the most risky parts first

Feature-Oriented Integration Code a skeleton first Then make each feature Three advantages – Eliminates scaffolding – Visible evidence of progress – Works well with object design

T-Shaped Integration One vertical slice is selected for early development Then the overall breadth is developed Often combined with risk-oriented and feature- oriented

Daily Build and Smoke Test Build daily Check for broken builds Smoke test daily Keep the smoke test current Add revisions when it makes sense …but don’t wait too long Penalty for breaking builds Release builds in the morning

Chapter 32: Self-Documenting Code Jacob Harper

Programming Style as Documentation Use layout of code to define logical progression (indents and spaces)

Keys to Effective Comments Don’t just repeat what the code says – Explain what it does in common English

Kinds of Comments Repeat of the code – Restate in different words Explanation of the code Marker in the code – Gives notes to the programmer (ex: ***NOT DONE!) Summary of the code Description of the code’s intent Information that cannot possibly be expressed by the code itself

Commenting Efficiently Use a style that does not discourage modification – Boxes: too much spacing – Lines above and below: alright /******************************** * ********************************/ /******************************** Comments in here See, more comments Another line of comments Ok, these lines of comments are getting old *********************************/

Endline Comments Use them to annotate data declarations Avoid using for maintenance //fixed error.. To mark end of blocks } // End of main

Commenting Control Structures Before the control structure Put condition on ending bracket To show nesting // copy input field up to a comma While (…) { super awesome code here; }// while –- code input field For( int i = 0, i < 10, i++) { while( condition ) { if( something ) {... }// if } // while } // for