Trilinos Coding and Documentation Guidelines Roscoe A. Bartlett Trilinos Software Engineering Technologies and Integration Lead Computer Science and Mathematics.

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

14-1 © Prentice Hall, 2004 Chapter 14: OOSAD Implementation and Operation (Adapted) Object-Oriented Systems Analysis and Design Joey F. George, Dinesh.
Automated Software Testing: Test Execution and Review Amritha Muralidharan (axm16u)
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
More CMM Part Two : Details.
Chapter 2 The Software Process
Alternate Software Development Methodologies
© 2005 by Prentice Hall Appendix 2 Automated Tools for Systems Development Modern Systems Analysis and Design Fourth Edition Jeffrey A. Hoffer Joey F.
Case Tools Trisha Cummings. Our Definition of CASE  CASE is the use of computer-based support in the software development process.  A CASE tool is a.
Testing Without Executing the Code Pavlina Koleva Junior QA Engineer WinCore Telerik QA Academy Telerik QA Academy.
Introduction To System Analysis and Design
Improving Process for Better Software. Who We Are An experiential learning program that provides technology solutions for our partners, and real- world.
Copyright © 2006 Software Quality Research Laboratory DANSE Software Quality Assurance Tom Swain Software Quality Research Laboratory University of Tennessee.
SwE 434. Rational Quality Manager Rational Quality Manager is a collaborative, Web-based tool that offers comprehensive test planning, test construction,
Approaches to ---Testing Software Some of us “hope” that our software works as opposed to “ensuring” that our software works? Why? Just foolish Lazy Believe.
Data Structures and Programming.  John Edgar2.
Introduction to BIM BIM Curriculum 01.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
1.Database plan 2.Information systems plan 3.Technology plan 4.Business strategy plan 5.Enterprise analysis Which of the following serves as a road map.
Formal Methods 1. Software Engineering and Formal Methods  Every software engineering methodology is based on a recommended development process  proceeding.
Debugging, Build and Version Control Rudra Dutta CSC Spring 2007, Section 001.
Language Evaluation Criteria
S/W Project Management
IT Project Management Cheng Li, Ph.D. August 2003.
Testing. Definition From the dictionary- the means by which the presence, quality, or genuineness of anything is determined; a means of trial. For software.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
Test Organization and Management
Page 1 Trilinos Software Engineering Technologies and Integration Capability Area Overview Roscoe A. Bartlett Trilinos Software Engineering Technologies.
Page 1 Trilinos Software Engineering Technologies and Integration Capability Area Overview Roscoe A. Bartlett Department.
Architecture Business Cycle
14-1 © Prentice Hall, 2004 Chapter 14: OOSAD Implementation and Operation Object-Oriented Systems Analysis and Design Joey F. George, Dinesh Batra, Joseph.
Page 1 Trilinos Software Engineering Technologies and Integration Capability Area Overview Roscoe A. Bartlett Department.
Requirements Engineering Requirements Elicitation Process Lecture-8.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 7: Focusing on Users and Their Tasks.
14-1 © Prentice Hall, 2004 Chapter 14: OOSAD Implementation and Operation Object-Oriented Systems Analysis and Design Joey F. George, Dinesh Batra, Joseph.
CMPUT 301: Lecture 27 Help and Documentation Martin Jagersand Department of Computing Science University of Alberta.
D1.HGE.CL7.01 D1.HGA.CL6.08 Slide 1. Introduction Design, prepare and present reports  Classroom schedule  Trainer contact details  Assessments  Resources:
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
University of Palestine software engineering department Testing of Software Systems Testing throughout the software life cycle instructor: Tasneem.
Software Testing and Maintenance 1 Code Review  Introduction  How to Conduct Code Review  Practical Tips  Tool Support  Summary.
INFO1408 Database Design Concepts Week 15: Introduction to Database Management Systems.
FILES AND DATABASES. A FILE is a collection of records with similar characteristics, e.g: A Sales Ledger Stock Records A Price List Customer Records Files.
1 Construction Chapter Key Concepts Be familiar with the system construction process. Understand different types of tests and when to use Understand.
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
Generalization and externalization of the Trilinos package- based system Roscoe A. Bartlett Trilinos Software Engineering Technologies and Integration.
Reviews and Inspections. Types of Evaluations Formal Design Reviews conducted by senior personnel or outside experts uncover potential problems Inspections.
1 TenStep Project Management Process ™ PM00.9 PM00.9 Project Management Preparation for Success * Manage Quality *
Lecture 4 – XP and Agile 17/9/15. Plan-driven and agile development Plan-driven development A plan-driven approach to software engineering is based around.
CISB113 Fundamentals of Information Systems IS Development.
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
MNP1163/MANP1163 (Software Construction).  Minimizing complexity  Anticipating change  Constructing for verification  Reuse  Standards in software.
Chapter 7 Preliminary Construction The broad scope of implementation Preliminary construction in the SDLC Preliminary construction activities Preliminary.
TEAM FOUNDATION VERSION CONTROL AN OVERVIEW AND WALKTHROUGH By: Michael Mallar.
Coding Preparing The Research for Data Entry. Coding (defined) Coding is the process of converting questionnaire responses into a form that a computer.
Enterprise Architectures Course Code : CPIS-352 King Abdul Aziz University, Jeddah Saudi Arabia.
Verification vs. Validation Verification: "Are we building the product right?" The software should conform to its specification.The software should conform.
6. (supplemental) User Interface Design. User Interface Design System users often judge a system by its interface rather than its functionality A poorly.
Chapter 3 Agile software development 1 Chapter 3 – Agile Software Development.
CIS 375 Bruce R. Maxim UM-Dearborn
The Five Secrets of Project Scheduling A PMO Approach
The Development Process of Web Applications
Chapter 10 Software Quality Assurance& Test Plan Software Testing
Development of Assessment Literacy Knowledge Base
Chapter 18 MobileApp Design
Where is Your Organization on the Accessibility Maturity Scale
Systems Analysis and Design
Department of Computer Science Abdul Wali Khan University Mardan
Presentation transcript:

Trilinos Coding and Documentation Guidelines Roscoe A. Bartlett Trilinos Software Engineering Technologies and Integration Lead Computer Science and Mathematics Div Trilinos User Group Meeting, November 3, 2011

2Managed by UT-Battelle for the U.S. Department of Energy Presentation_name What is Trilinos? Trilinos is a collection of unrelated unspecified software that share a common build, test, and distribution system – Software quality, usability, etc. is purely the responsibility of individual package developers – Customers must evaluate each and every package on their own to determine quality, suitability, etc. – Customers must try to use individual packages together and negotiate with various package development teams to resolve incompatibilities Extremes Trilinos is a collection of well-designed, reliable, interoperable, composable, consistent, sustainable software components – Requires more coordination between Trilinos package developers – Requires the development of some standards and approaches to address them – Requires greater software quality practices and overhead The stated goal for Trilinos is clearly the second, but we are really only doing a great job of the first right now.

3Managed by UT-Battelle for the U.S. Department of Energy Presentation_name Why Coding Guidelines? Take advantage of experience from broader C++ community Avoid common pitfalls with naive usage of C++ (which is massively complex compared to other languages) Nature abhors a vacuum Improve common look & feel, interoperability and safety across the C++ Enable better Agile team interaction and shared ownership of code An important foundation of creating self-sustaining software Provide a foundation and common frame of reference to perform code reviews Provide part of the criteria for Trilinos maturity levels (see Trilinos Lifecycle Model 2.0) Provide confidence from the larger community that we know what we are doing – Danger: “Those Trilinos developers have good ideas about algorithms but the software is of too low of quality to used in our production application code so we will have to recode parts that we need.”

4Managed by UT-Battelle for the U.S. Department of Energy Presentation_name Foundation: “C++ Coding Standards” Distills knowledge and wisdom from the broader C++ community Short items with links to references with more justification and detail Items are noncontroversial Items are authoritative Items need saying (i.e. not enforced by most compilers) Implications for Trilinos: May Trilinos packages violate many well- accepted C++ idioms with many negative consequences.

5Managed by UT-Battelle for the U.S. Department of Energy Presentation_name Contents of “C++ Coding Standards” Organizational and Policy Issues Design Style Coding Style Functions and Operators Construction, Destruction, and Copying Namespaces and Modules Templates and Genericity Error Handling and Exceptions STL: Algorithms Type Safety However: Some items are amended in the Trilinos Coding and Documentation Guidelines Document! The listing of the table of contents done with the permission of the authors.

6Managed by UT-Battelle for the U.S. Department of Energy Presentation_name Trilinos Coding and Documentation Gudlelines Document Table of Contents Structure of Guidelines Important Look & Feel, Interoperability and Safety Guidelines

7Managed by UT-Battelle for the U.S. Department of Energy Presentation_name How to Apply Coding Guidelines? Option A: Manual – Make everyone to read “C++ Coding Standards” and “Trilinos Coding and Documentation Guidelines” document as part of Trilinos Developer Training? – Set up reading groups to go over the documents? – Bring up violations of “Strongly Recommended” guidelines in code reviews? – Analysis: Likely not going to be very effective. Option B: Automated checking – About 75% of the guidelines in “C++ Coding Standards” and “Trilinos Coding and Documentation Guidelines” document could be checked for (and enforced) using static analysis tools Dehydra Plugin for GCC 4.5+ – Make changes show up as warnings in GCC (just like regular compiler warnings) Clang C++ Static Analyzer – Remaining 25% of guidelines, checked in code reviews Implications for the Trilinos Lifecycle Mode 2.0? – Adherence to common look & feel, interoperability, and safety scored for Trilinos packages? – Level of warning-free code part of criteria for maturity level? – Level of design and code clarity and other factors criteria for maturity level?

8Managed by UT-Battelle for the U.S. Department of Energy Presentation_name Next Steps? Basic questions: – Can we achieve high quality C++ software by ignoring all of these guidelines? – Can we maintain high user confidence by ignoring basic C++ design and coding guidelines? – Can we achieve self-sustaining C++ software by ignoring these guidelines? What level of consensus do we need to make this a “Trilinos Coding and Documentation Guidelines” document? – Should Trilinos active developers expected to read “C++ Coding Standards” and “Trilinos Coding and Documentation Guidelines” and provide feedback before finishing the document? – and/or – Should we have a virtual walk-through of all of the code guidelines? Should the document be split into multiple documents? E.g., Common Look & Feel and Interoperability separate from more general guidelines? What do people think about all of this?