Automated Function Points in a Continuous Integration Environment (Agile AFP)



Similar documents
Measuring Software Functionality Using Function Point Method Based On Design Documentation

Function Point Measurement from Java Programs

Using Entity-Relationship Diagrams To Count Data Functions Ian Brown, CFPS Booz Allen Hamilton 8283 Greensboro Dr. McLean, VA USA

APPLYING FUNCTION POINTS WITHIN A SOA ENVIRONMENT

Introduction to Function Points

Using Productivity Measure and Function Points to Improve the Software Development Process

Calculation of the Functional Size and Productivity with the IFPUG method (CPM 4.3.1). The DDway experience with WebRatio

Full Function Points for Embedded and Real-Time Software. UKSMA Fall Conference

Why SNAP? What is SNAP (in a nutshell)? Does SNAP work? How to use SNAP when we already use Function Points? How can I learn more? What s next?

SIZING ANDROID MOBILE APPLICATIONS

Copyright 2014 Alvin J. Alexander All rights reserved. No part of this book may be reproduced without prior written permission from the author.

How to Determine Your Application Size Using Function Points

FUNCTION POINT ANALYSIS: Sizing The Software Deliverable. BEYOND FUNCTION POINTS So you ve got the count, Now what?

Does function point analysis change with new approaches to software development? January 2013

Chapter 7: Software Engineering

Logical Data Models for Cloud Computing Architectures

FUNCTION POINT ANAYSIS DETERMINING THE SIZE OF ERP IMPLEMENTATION PROJECTS By Paulo Gurevitz Cunha

Agile Project Management

Fundamentals of Function Point Analysis

Software Engineering. Software Engineering. Component-Based. Based on Software Engineering, 7 th Edition by Ian Sommerville

Revel8or: Model Driven Capacity Planning Tool Suite

The IFPUG Counting Practices On-Going Effort in Sizing Functional Requirements. Janet Russac

REVIEWS ON FUNCTIONAL SIZE MEASUREMENT IN MOBILE APPLICATION AND UML MODEL

TOGAF usage in outsourcing of software development

University Data Warehouse Design Issues: A Case Study

Sizing Logical Data in a Data Warehouse A Consistent and Auditable Approach

Software Cost Estimation: A Tool for Object Oriented Console Applications

Data Modeling Basics

Doing database design with MySQL

Combining SAWSDL, OWL DL and UDDI for Semantically Enhanced Web Service Discovery

Function Point Counting Practices Manual. Release 4.1.1

PMI PMBOK & ESTIMATING PMI PMBOK & ESTIMATING PMI PMBOK & ESTIMATING PMI PMBOK & ESTIMATING PMI PMBOK & ESTIMATING PMI PMBOK & ESTIMATING

Function Points Analysis Training Course

Generating Aspect Code from UML Models

What is a life cycle model?

Derived Data in Classifying an EO

Advanced Test-Driven Development

PERFORMANCE EVALUATION OF JAVA OBJECT-RELATIONAL MAPPING TOOLS HASEEB YOUSAF. (Under the Direction of John A. Miller)

Case Studies of Running the Platform. NetBeans UML Servlet JSP GlassFish EJB

Book 3 Cost Estimating in an Agile Development Environment. (early release)

Function Point Modeler Enterprise Edition A Software Lifecycle Management Tool

DATABASE MANAGEMENT SYSTEMS. Question Bank:

Developing SOA solutions using IBM SOA Foundation

ORM IN WEB PROGRAMMING. Course project report for 6WW Erik Wang

SCHEMAS AND STATE OF THE DATABASE

SIZE & ESTIMATION OF DATA WAREHOUSE SYSTEMS

Enterprise Application Development In Java with AJAX and ORM

A Comparison of Open Source Application Development Frameworks for the Enterprise

Measuring Software Product Quality

Counting Infrastructure Software

OUR COURSES 19 November All prices are per person in Swedish Krona. Solid Beans AB Kungsgatan Göteborg Sweden

MEASURING THE SIZE OF SMALL FUNCTIONAL ENHANCEMENTS TO SOFTWARE

How to Avoid Traps in Contracts for Software Factory Based on Function Metric

A Model-Based Proxy for Unified IaaS Management

Basic Trends of Modern Software Development

Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces

Using Story Points to Estimate Software Development Projects in the Commercial Phase

MDA Overview OMG. Enterprise Architect UML 2 Case Tool by Sparx Systems by Sparx Systems

Semantic Modeling of Mortgage Backed Securities: Case Study. Mike Bennett, Enterprise Data Management Council Yefim Zhuk, Sallie Mae

Industry Metrics for Outsourcing and Vendor Management

An Interface from YAWL to OpenERP

Successful Projects Begin with Well-Defined Requirements

8 Steps to Measure ADM Vendor Deliverables

E-Business Technologies for the Future

How to Estimate Software Size and Effort in Iterative Development 1 Aleš Živkovič, Marjan Heričko

Collaborative DevOps Learn the magic of Continuous Delivery. Saurabh Agarwal Product Engineering, DevOps Solutions

Measuring Change Requests to support effective project management practices.

(Refer Slide Time: 01:52)

MANDARAX + ORYX An Open-Source Rule Platform

Customer Bank Account Management System Technical Specification Document

FAST Function Points. David Seaver Director Estimation and Measurement Fidelity Investments

Contents. Introduction and System Engineering 1. Introduction 2. Software Process and Methodology 16. System Engineering 53

WHITE PAPER DATA GOVERNANCE ENTERPRISE MODEL MANAGEMENT

Lesson 8: Introduction to Databases E-R Data Modeling

A Fool with a Tool: Improving Software Cost and Schedule Estimation

1. Introduction What is Slice? Background Why Slice? Purpose of this Document Intended Audience...

Model Driven Interoperability through Semantic Annotations using SoaML and ODM

Leveraging Agile and CMMI for better Business Benefits Presented at HYDSPIN Mid-year Conference Jun-2014

A FRAMEWORK FOR AUTOMATIC FUNCTION POINT COUNTING

DevOps. Jesse Pai Robert Monical 8/14/2015

IBM Rational Rapid Developer Components & Web Services

Software Component Specification Using Design by Contract

e-gateway SOLUTION OVERVIEW Financials HCM ERP e-gateway Web Applications Mobile Devices SharePoint Portal

PARCC TECHNOLOGY ARCHITECTURE ARCHITECTURAL PRINCIPLES AND CONSTRAINTS SUMMARY

IBM WebSphere Operational Decision Management Improve business outcomes with real-time, intelligent decision automation

Improving Project Governance Using Agile and Metrics. Kevin Aguanno PMP, IPMA-B, MAPM, Cert.APM

Component Based Rapid OPC Application Development Platform

DO-178B compliance: turn an overhead expense into a competitive advantage

Meta-Model specification V2 D

Web Integration Technologies

PIE. Internal Structure

How To Test A Web Based Application Automatically

Transcription:

3 International Conference on IT Data collection, Analysis and Benchmarking Florence (Italy) - October 19, 2015 Automated Function Points in a Continuous Integration Environment (Agile AFP) The Benefits of IFPUG Function Points in Agile Processes with Automated Open-Source QA Tools Thimoty Barbieri, CFPS, OCE-JPA, OCE-JSF, PMP, PMI-ACP Contract Professor of Software Engineering at University of Pavia Owner at ITECH Engineering Michele Pasquale IT Consultant at ITECH Engineering

Goals of the presentation G1. Advocate the need to introduce Functional Sizing in Agile Metrics, to provide a stable, widely understood normalization factor G2. ORM-Object Relational Mapping, an Object-Oriented Technique which encapsulates and abstracts model concepts can be leveraged to perform transparently automatic functional sizing G3. We propose our early results in developing a modeltransparent, open-source implementation of AFP, which could be suitable for fast ADM cycles in Continuous Integration environments 2

Foreword -Why do we Need Functional Sizing in Agile? -Why do we Need Automated Sizing in Agile? 3

The Context ADM (Application Development and Management): Software Factories dealing with massive amounts of code produced by external vendors with Agile processes need to implement a QA approach with welldefined SLAs, if possible in an automated way Current common metrics (Code coverage, Tangle Index, Code Duplication, Technical Delay ) are mostly based on LOC. FPs are a better metric for sizing a software, because they provide a stable, benchmarkable and comparable baseline. (See CISQ AFP proposal) However, during rapid Continuous Integration cycles, Models and Specifications which are used for FP counting seldom follow the pace of development. Moreover, it is impractical to perform FP counting at each Integration cycle. 4

The Role of ORM Modern ORM (Object Relational Mapping) provides a counting opportunity in Agile measuring processes Leveraging current ORM standards: using Object-Oriented Technical Specifications for counting purposes allows to include Functional Size in Agile Measurements, which is not (entirely) captured by Agile approaches like Ideal Days, Velocity, Story Points. ORM uses Aspect Oriented Programming (AOP). This could be leveraged to analyse code and reverse-engineer a functional sizing measurement, without using a manually maintained logical Model, because the code is the model. ORM annotations are compatible with FPA key concepts. This is a unorthodox use of Function Points, as they are usually counted even before a line of code is written, to derive expected cost/efforts on a baseline. 5

Why do we need Functional Sizing in Agile ADM? Most used Metrics in Agile: Velocity (Story Points per Sprint) Story Points Assessed via Delphi techniques by the Team. Criteria can change depending on Team/Project. It cannot be used to compare Sprints, worse still it cannot be used to compare/benchmark Teams or Projects! Ideal Days Number of uninterrupted effort days, estimated by the Team per Story. These metrics are: Easy to understand but Highly Subjective (by the Team) Geared to change with the Team, they reflect the Team s evolving agility and confidence (e.g. Velocity improves at every subsequent Sprint) 6

Why do we need Functional Sizing in Agile ADM? In Continuous Integration Scenarios for ADM, we need easily definable, benchmarkable Quality/SLA indices often based on code size (LOC), such as: Code Coverage Percentage of Unit Tests and Integration Tests Tangle Index, Duplicate Code and Dead Code percentages Technical Debt (number of required days to fix current LOCs) LOCs as well make project comparison difficult, and they are a poor index of the true size of a project. See CISQ standard: http://it-cisq.org/standards/ 7

Why do we need Automation for Sizing? The value of modeling (E/R, UML) in Agile is best expressed in the inital phases Round-trip engineering of the model is seldom performed (the model does not follow the project) ORM becomes the de facto on-the-fly model, because it is part of the code and changes along the project. 8

Why do we need Automation for Sizing? Within a Continuous Integration Environment, it is (practically) impossible to perform model-based roundtrip engineering (every change in the core code should be reproduced back in the original model) The speed of change makes difficult to use of UML models at logical level for FP counting If a standard architectural pattern is used (Java Enterprise, Microsoft.NET Architectures), a code-based automatic approach can be used to automate not only testing, but also sizing The standard architecture is needed to avoid requiring ad-hoc annotations or tools to perform automatic sizing, the model is already expressed by current industry standards. 9

Using the FPA meta-model on ORM Leverage industry standards for Functional Sizing in Agile Contexts: an example recipe 10

Traditional Sizing based on E/R Models CPM 4.3.1 in Part 3, Chapter 2 introduces a stepwise process for establishing the set of logical files in the application being measured. This process relies on Data Modeling concepts, and on Entity- Relationship diagrams to depict the data: Entity Associative Entity Type Attributive Entity Type Entity Subtype Relationships (One-to-One, One-to-Many, Many-to-Many) Attributes Using these concepts we can: Identify how many logical files to count (Step 1) How to count RETs (and DETs) when we identify sub-groups (Step 4) 11

Relevant UML/OOP Concepts UML Class Diagram used as Domain Model (Logical Level) is considered the best candidate to help identify Logical Files Entity -> Class Relationship -> Association, Multiplicity and Cardinality Generalization -> Subgroup Subtypes Composition and Aggregation -> Entity (In)-Dependence Many proposals attempt to use of other UML diagrams to assist FPA: Use Case Diagrams: Use Case -> Elementary Process However, UML Logical Models diverge quickly from the real project situation and are unsuitable as a base for counting during development and maintenance 13

From UML Models to ORM Object Relational Mapping is a framework of metadata which map E/R concepts to Classes in an Object-Oriented Paradigm A well-known ORM standard is JPA 2.0 as specified in [5], but all ORM frameworks are very similar (.NET, RoR, Python ) Mapping metadata are expressed as Annotations (AOP) within the definition of relevant Classes @Entity @Id @OneToOne @ManyToMany @ManyToOne @ElementCollection @Cascade Maps a class to a persistent entity Maps the PK Maps a 1:1 / 1:(1) relationship Maps a N:M / (N):(M) relationship Maps a 1:N / 1:(N) relationship Maps an (Embedded) Collection Cascades Remove (Persist ) operations on dependent entities The Advantage of ORM is that the Annotations are used by programmers to code, therefore they evolve the Logical Model while they are coding. 14

Example 1: Associative Entity ORM does not use an associative entity and it is therefore clearer for counting correctly class Class Model Student - student_id: int - name: String - gradepoint: String - major: String 0..* 0..* Course - coursenumber: int - title: String - description: String - credithours: int 15

Example 2: Associative Entity with RET on one side The unidirectional association tells us that we are mainly considering the RET from one side This reflects in the ORM mapping as unidirectional class Class Model Student - student_id: int - name: String - gradepoint: String - major: String 0..* 0..* Course - coursenumber: int - title: String - description: String - credithours: int StudentCourse - exam_id: int - result: int 16

A «Summary» Table for ORM ORM annotations for Entities A,B When this condition Exists A: @OneToOne B Unidirectional - B is entity dependent (@Cascade: Remove) on A A: @ManyToMany Collection<B> Unidirectional - B is entity dependent (@Cascade: Remove) on A A: @ManyToMany Collection<B> B: @ManyToMany Collection<A> Bidirectional - B is entity independent of A Then count as LFs with RETs and DETs as follow: A: 1 LF, 2 RET, sum DETs; B: - A: 1 LF, 2 RET, sum DETs; B: - 2 LFs, 1 RET and DETs to each A: @ManyToMany Collection<B> A: @MapKeyColumn Map<Attr,B> B: @ManyToMany Collection<A> B: @ElementCollection Map<Attr,A> bidirectional Bidirectional - B is entity independent of A 2 LFs, 2 RET and DETs to each A: @ManyToMany Collection<B> A: @ElementCollection Map<Attr,B> unidirectional Unidirectional - B is entity dependent (@Cascade: Remove) on A A: 1 LF, 2 RET, sum DETs; B: - A: @OneToMany Collection<C> B: @OneToMany Collection<C> C: @ManyToOne A C: @ManyToOne B Bidirectional - C is entity independent of A and of B A: 1 LF, 1 RET, and its DETs; B: 1 LF, 1 RET, and its DETs; C: 1 LF, 1 RET, and its DETs; 17

Counting EI/EO/EQ Automatically Detecting in a transparent way Elementary Processes and therefore Counting Transactional Functions (EI / EO / EQ) is an entirely different matter This part of the tool is an ongoing research. Current early prototype uses Integration Test Code to identify Elementary Processes: - Theories (Test Fixtures Inputs) and Asserts (Test Output Validations) are used to determine DETs Another line of development is based on the JSF (Java Server Faces) framework: - Every @ViewScoped bean is an Elementary Process - Properties of a @ViewScoped bean are DETs - Injection points in the @ViewScoped bean are FTRs A Crude implementation is using CRUD: #EPs = ILF x 4 following ILF s CPX (A similar approach can be followed in.net and ROR) 18

Implementation Our experiment: an open-source pluggable AFP engine (Data Functions Part) 19

Early Results - Sample Screenshots 20

Early Results - Sample Screenshots 21

Conclusions and Future Work 22

Conclusions ORM is simple enough and effective enough as an abstraction for Logical File identification and RET evaluation We propose some (not all) identification rules mapped on ORM metadata annotations (others will follow in future works) A key for large (and automated) adoption in heterogeneous environments of AFP is a mapping approach transparent to programmers (it only requires to apply uniformely the standard technical framework of choice: Java EE,.NET, RoR, etc.) The automatic sizing approach can easily be integrated as a plug-in in mainstream open-source QA technologies such as SonarQUBE, or used as an open-source standalone analyzer 23

Future Work Refine/Debug/Test current implementation, Open-source licensing the project Engage in Partnerships to collect data to compare AFP result with true FP analysis, assess results (contact thimoty.barbieri@unipv.it) Continue research on automatic mapping for EI, EO, EQ (based on JSF-standard approach) Maintain SonarQube plug-in adding EI/EO/EQ counter 24

Bibliography [1] Albrecht A.J., «Measuring Application Development Productivity», IBM Applications Development Symposium, Monterey, CA, 1979 [2] IFPUG, «Function Points Counting Practices Manual», version 4.3.1, International Function Point User Group, 2006 [3] Cantone G., Pace D., Calavaro G., «Applying Function Point to Unified Modeling Language: Conversion Model and Pilot Study» in Proceedings of 10 Intl. Symposium of software metrics (IEEE METRICS 2004), Chicago (IL), September 11-17, 2004, pp. 209-291, IEEE CS Press, 2004 [4] Lavazza L., Agostini A. «Automated Measurement of UML Models: an open toolset approach», Journal of Object Technology, May/June 2005 [5] De Michiel, L. «JSR-000317 Java TM Persistence 2.0», http://jcp.org/aboutjava/communityprocess/final/jsr317/, 2009 [6] CISQ: Using Software Measurement in SLAs: Integrating CISQ Size and Structural Quality Measures into Contractual Relationships: http://it-cisq.org/wp- content/uploads/2015/07/using-software-measurement-in-slas-integrating-cisq-size-and- Structural-Quality-Measures-into-Contractual-Relationships.pdf 25