Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • faproietti/ar2018
  • chierici/ar2018
  • SDDS/ar2018
  • cnaf/annual-report/ar2018
4 results
Show changes
Showing
with 4650 additions and 0 deletions
% Encoding: UTF-8
@article{ex1,
author = "A. Cisneros",
journal = "Astrophys. Space Sci.",
volume = 10,
pages = 87,
year = 1971
}
@article{ex2,
author = "S. Carlip and R. Vera",
journal = "Phys. Rev. D",
section = "D",
volume = 58,
pages = 011345,
year = 1998
}
@article{ex3,
author = "K. Davies and G. Brown",
journal = "J. High Energy Phys.",
pages = "JHEP12(1997)002",
year = 1997
}
@article{ex4,
author = "D. Neilson and M. Choptuik",
journal = "Class. Quantum Grav.",
volume = 17,
pages = 761,
year = 2000,
eprint = "gr-qc/9812053"
}
@unpublished{ex5,
author = "M. Harrison",
title = "Dipheomorphism-invariant manifolds",
year = 1999,
eprint = "hep-th/9909196"
}
@inbook{ex6,
author = "L. I. Dorman",
title = "Variations of Galactic Cosmic Rays",
publisher = "Moscow State University Press",
address = "Moscow",
year = 1975,
pages = 103
}
@inbook{ex7,
author = "R. Caplar and P. Kulisic",
title = "Proc. Int. Conf. on Nuclear Physics (Munich)",
publisher = "North-Holland/American Elsevier",
address = "Amsterdam",
year = 1973,
volume = 1,
pages = 517
}
@incollection{ex8,
author = "M. Morse",
title = "Supersonic beam sources",
booktitle = "Atomic Molecular and Optical Physics",
editor = "F. B. Dunning and R. Hulet",
series = "Experimental Methods in the Physical Sciences",
volume = 29,
publisher = "Academic",
address = "San Diego",
year = 1996
}
@article{bardeen1957:bcs,
author = "J. Bardeen and L. N. Cooper and J. R. Schrieffer",
journal = "Phys. Rev.",
volume = 108,
number = 5,
pages = 1175,
year = 1957
}
@article{caprio2005:coherent,
author = "M. A. Caprio",
journal = "J. Phys. A",
section = "A",
volume = 38,
number = 28,
pages = 6385,
year = 2005
}
@article{zamfir2005:132te-beta-enam04,
author = "N. V. Zamfir and others",
journal = "Eur. Phys. J. A",
section = "A",
volume = 25,
number = "s01",
issue = "s01",
year = 2005,
pages = 389
}
@book{rose1957:am,
author = "M. E. Rose",
title = "Elementary Theory of Angular Momentum",
publisher = "Wiley",
address = "New York",
year = 1957,
}
@book{dirac1958:qm,
author = "P. A. M. Dirac",
title = "The Principles of Quantum Mechanics",
series = "The International Series of Monographs on Physics",
number = 27,
edition = 4,
publisher = "Clarendon Press",
address = "Oxford",
year = 1967
}
@book{siegbahn1965:v1,
editor = "K. Siegbahn",
title = "Alpha-, Beta-, and Gamma-Ray Spectroscopy",
booktitle = "Alpha-, Beta-, and Gamma-Ray Spectroscopy",
publisher = "North-Holland",
address = "Amsterdam",
year = 1965,
volume = 1
}
@incollection{bell1965:coin-lifetime,
author = "R. E. Bell",
title = "Coincidence Techniques and the Measurement of Short Mean Lives",
editor = "K. Siegbahn",
booktitle = "Alpha-, Beta-, and Gamma-Ray Spectroscopy",
publisher = "North-Holland",
address = "Amsterdam",
year = 1965,
volume = 2,
pages = 905
}
@phdthesis{caprio2003:diss,
author = "M. A. Caprio",
school = "Yale University",
year = 2003,
eprint = "nucl-ex/0502004",
archive = "arXiv"
}
@misc{doePC,
author = "J. Doe",
year = 2006,
note = "private communication"
}
@Article{wenaus,
author = {T. Wenaus},
title = {The {HEP} {S}oftware and {C}omputing {K}nowledge {B}ase},
journal = {J. Phys.: Conf. Ser.},
year = {2017},
volume = {898},
number = {102018},
pages = {1-6},
doi = {10.1088/1742-6596/898/10/102018},
}
@Article{Briand1995,
author = {L. C. Briand and V. R. Basili and C. J. Hetmanski},
title = {Developing Interpretable Models with Optimized Set Reduction for Identifying High-Risk Software Components},
journal = {IEEE Trans. Softw. Eng.},
year = {1995},
volume = {19},
number = {11},
pages = {1028--1044},
month = nov,
__markedentry = {[marco:6]},
}
@Article{Emam2001,
author = {K. El Emam and S. Benlarbi and N. Goel and S. N. Rai},
title = {Comparing case-based reasoning classifiers for predicting high risk software components},
journal = {The Journal of Systems and Software},
year = {2001},
volume = {55},
number = {3},
pages = {301--320},
__markedentry = {[marco:6]},
}
@Article{Ganesan2000,
author = {K. Ganesan and T. M. Khoshgoftaar and E. B. Allen},
title = {Case-Based Software Quality Prediction},
journal = {INT J SOFTW ENG KNOW},
year = {2000},
volume = {10},
number = {2},
pages = {139--152},
__markedentry = {[marco:6]},
}
@Article{Khoshgoftaar1995,
author = {T. M. Khoshgoftaar and A. S. Pandya and D. L. Lanning},
title = {Application of neural networks for predicting program faults},
journal = {Annals of Software Engineering},
year = {1995},
volume = {1},
number = {1},
pages = {141--154},
__markedentry = {[marco:6]},
}
@Article{Lanubile1997,
author = {F. Lanubile and G. Visaggio},
title = {Evaluating predictive quality models derived from software measures: lessons learned},
journal = {J. Syst. Softw.},
year = {1997},
volume = {38},
number = {225--234},
__markedentry = {[marco:6]},
}
@Article{Porter1990,
author = {A. A. Porter and R. W. Selby},
title = {Empirically guided software development using metric-based classification trees},
journal = {IEEE Softw.},
year = {1990},
volume = {7},
number = {2},
pages = {46--54},
__markedentry = {[marco:6]},
}
@Article{Dwivedi2016,
author = {V. K. Dwivedi and M K. Singh},
title = {Software Defect Prediction Using Data Mining Classification Approach},
journal = {Int. J. Tech. Res. Appl.},
year = {2016},
volume = {4},
number = {6},
pages = {31--35},
__markedentry = {[marco:6]},
}
@Article{Almeida1999,
author = {M. A. De Almeida and H. Lounis and W. Melo},
title = {An investigation on the use of machine learned models for estimating software correctability},
journal = {Int. J. Softw. Eng. Knowl. Eng.},
year = {1999},
__markedentry = {[marco:6]},
}
@Article{Suresh2014,
author = {Y. Suresh and L. Kumar and S. Ku Rath},
title = {{Statistical and Machine Learning Methods for Software Fault Prediction Using CK Metric Suite: A Comparative Study}},
journal = {ISRN Software Engineering},
year = {2014},
volume = {2014},
number = {251083},
pages = {15},
__markedentry = {[marco:6]},
url = {http://dx.doi.org/10.1155/2014/251083},
}
@Article{Arisholm2010,
author = {E. Arisholm and L. C. Briand and E. B. Johannessen},
title = {A systematic and comprehensive investigation of methods to build and evaluate fault prediction models},
journal = {J. Syst. Softw.},
year = {2010},
volume = {83},
number = {1},
pages = {2--17},
__markedentry = {[marco:6]},
}
@Article{Gondra2008,
author = {I. Gondra},
title = {Applying machine learning to software fault-proneness prediction},
journal = {Journal of Systems and Software},
year = {2008},
volume = {81},
number = {1},
pages = {186--195},
__markedentry = {[marco:6]},
}
@Article{Malhotra2015,
author = {R. Malhotra},
title = {A systematic review of machine learning techniques for software fault prediction},
journal = {Appl. Soft. Comput.},
year = {2015},
volume = {27},
pages = {504--518},
__markedentry = {[marco:6]},
}
@Article{Whiteson2009,
author = {S. Whiteson and D. Whiteson},
title = {Machine learning for event selection in high energy physics},
journal = {Engineering Applications of Artificial Intelligence},
year = {2009},
volume = {22},
number = {8},
pages = {1203-1217},
month = dec,
__markedentry = {[marco:6]},
}
@Article{Denby1988,
author = {B. H. Denby},
title = {Neural networks and cellular automata in experimental high energy physics},
journal = {Comput. Phys. Commun.},
year = {1988},
volume = {49},
number = {3},
pages = {429--448},
month = jun,
__markedentry = {[marco:6]},
}
@Article{Peterson1994,
author = {C. Peterson and T. Rognvaldsson and L. Lonnbladb},
title = {JETNET 3.0—A versatile artificial neural network package},
journal = {Comput. Phys. Commun.},
year = {1994},
volume = {81},
number = {1--2},
pages = {185--220},
month = jun,
__markedentry = {[marco:6]},
}
@Article{Baldi2016,
author = {P. Baldi and K. Cranmer and T. Faucett and P. Sadowski and D. Whiteson},
title = {Parameterized neural networks for high-energy physics},
journal = {Eur. Phys. J. C.},
year = {2016},
volume = {76},
number = {235},
__markedentry = {[marco:6]},
doi = {https://doi.org/10.1140/epjc/s10052-016-4099-4},
}
@Article{Kolanoski1995,
author = {H. Kolanoski},
title = {Application of artificial neural networks in particle physics},
journal = {Nucl. Instrum. Methods Phys. Res. A},
year = {1995},
volume = {367},
number = {1--3},
pages = {14--20},
month = dec,
__markedentry = {[marco:6]},
}
@Article{Collaboration2014,
author = {The ALTAS Collaboration},
title = {A neural network clustering algorithm for the ATLAS silicon pixel detector},
journal = {J. Instrum.},
year = {2014},
volume = {9},
month = sep,
__markedentry = {[marco:6]},
}
@Article{Denby1990,
author = {B. H. Denby and M. Campbell and F. Bedeschi and N. Chriss and C. Bowers and F. Nesti},
title = {Neural Betworks for Triggering},
journal = {IEEE Trans. Nucl. Sci.},
year = {1990},
volume = {37},
number = {2},
pages = {248--254},
month = apr,
__markedentry = {[marco:6]},
}
@Article{McCabe1976,
author = {T. McCabe},
title = {A Complexity Measure},
journal = {IEEE Trans. Softw. Eng.},
year = {1976},
volume = {Se-2},
number = {4},
pages = {308--320},
month = dec,
__markedentry = {[marco:6]},
}
@Book{Halstead1977,
title = {Elements of Software Science (Operating and programming systems series)},
publisher = {Elsevier Science Inc.},
year = {1977},
author = {M. H. Halstead},
address = {New York, NY, USA},
__markedentry = {[marco:6]},
}
@Article{Chidamber1994,
author = {S. R. Chidamber and C. F. Kemerer},
title = {Metrics suite for Object Oriented Design},
journal = {IEEE Trans. Softw. Eng.},
year = {1994},
volume = {20},
number = {6},
pages = {476--493},
month = jun,
__markedentry = {[marco:6]},
}
@Article{Azar2009,
author = {D. Azar and H. Harmanani and R. Korkmaz},
title = {A hubrid heuristic approach to optimize rule-based software quality estimation models},
journal = {Inf. Softw. Technol.},
year = {2009},
volume = {51},
number = {1},
pages = {1365--1376},
month = jun,
__markedentry = {[marco:6]},
}
@Article{Xie2009,
author = {T. Xie and S. Thummalapenta and D. Lo and C. Liu},
title = {Data mining for software engineering},
journal = {IEEE Computer},
year = {2009},
volume = {42},
number = {1},
pages = {55--62},
__markedentry = {[marco:6]},
}
@Book{Hofmann2013,
title = {RapidMiner: Data Mining Use Cases and Business Analytics Applications},
publisher = {CRC Press},
year = {2013},
author = {M. Hofmann and R. Klinkenberg},
address = {Boca Raton},
__markedentry = {[marco:6]},
}
@Book{Zhao2012,
title = {R and Data Mining},
publisher = {Avademic Press},
year = {2012},
author = {Y. Zhao},
address = {San Diego},
__markedentry = {[marco:6]},
}
@Article{Hall2009,
author = {M. Hall and E. Frank and G. Holmes and B. Pfahringer and P. Reutemann and I. H. Witten},
title = {The WEKA data mining software: an update},
journal = {SIGKDD Explorations},
year = {2009},
volume = {11},
number = {1},
pages = {10--18},
__markedentry = {[marco:6]},
}
@Article{Pedregosa2011,
author = {F. Pedregosa and G. Varoquaux and A. Gramfort and V. Michel and B. Thirion and O. Grisel et al.},
title = {Scikit-learn: Machine Learning in Python},
journal = {J. Mach. Learn. Res.},
year = {2011},
volume = {12},
number = {1},
pages = {2825--2830},
__markedentry = {[marco:6]},
}
@Book{Fenton2014,
title = {Software {M}etrics: {A} {R}igorous and {P}ractical {A}pproach, Third Edition},
publisher = {CRC Press},
year = {2014},
author = {N. Fenton and J. Bieman},
edition = {third},
month = nov,
__markedentry = {[marco:6]},
}
@Article{McCabe1989,
author = {T. J. McCabe and C.W. Butler},
title = {Design Complexity Measurement and Testing},
journal = {Artificial Intelligence and Language Processing},
year = {1989},
volume = {32},
number = {12},
pages = {1415-1425},
month = dec,
__markedentry = {[marco:6]},
}
@InProceedings{Conde2017,
author = {P. P. Conde and I. S. Carrillo},
title = {Comparison of {C}lassifiers {B}ased on {N}eural {N}etworks and {S}upport {V}ector {M}achines},
booktitle = {5th {I}nternational {C}onference in {S}oftware {E}ngineering {R}esearch and {I}nnovation (CONISOFT)},
year = {2017},
month = apr,
publisher = {IEEE},
__markedentry = {[marco:6]},
doi = {10.1109/CONISOFT.2017.00020},
}
@Article{Burges1998,
author = {C. J. C. Burges},
title = {A {T}utorial on {S}upport {V}ector {M}achines for {P}attern {R}ecognition},
journal = {Data Min. Knowl. Discov.},
year = {1998},
volume = {2},
number = {2},
pages = {121-167},
month = jun,
__markedentry = {[marco:6]},
}
@Book{Haykin1999,
title = {Neural {N}etworks: {A} {C}omprehensive {F}oundation},
year = {1999},
author = {S. Haykin},
editor = {Prentice Hall International},
__markedentry = {[marco:6]},
}
@InProceedings{Vlahovic2016,
author = {N. Vlahovic},
title = {An {E}valuation {F}ramwork and a {B}rief {S}urvey of {D}ecision {T}ree {T}ools},
booktitle = {39th {I}nternational {C}onference on {I}nformation and {C}ommunication {T}echnology, {E}lettronics and {M}icroelettronics},
year = {2016},
pages = {1299-1304},
month = jun,
__markedentry = {[marco:6]},
}
@InProceedings{Liu2016,
author = {j. Liu and Z. Tian and P. Liu and J. Jiang and Z. Li},
title = {An {A}pproach of {S}ematic {W}eb {S}ervice {C}lassification {B}ased on {N}aive {B}ayes},
booktitle = {IEEE International Conference on Services Computing},
year = {2016},
pages = {356-362},
publisher = {IEEE},
__markedentry = {[marco:6]},
doi = {DOI 10.1109/SCC.2016.53},
}
@Book{Han2006,
title = {Data Mining Concepts and Techniques},
publisher = {Morgan Kauffman},
year = {2006},
author = {J. Han and M. Kamber},
__markedentry = {[marco:6]},
}
@InProceedings{Santos2014,
author = {C. N. dos Santos and M. Gatti},
title = {Deep {C}onvolutional {N}eural {N}etworks for {S}entiment {A}nalysis of {S}hort {T}exts},
booktitle = {25th International Conference on Computational Linguistics (COLING)},
year = {2014},
pages = {69-78},
month = aug,
__markedentry = {[marco:6]},
}
@InProceedings{Kim2014,
author = {Y. Kim},
title = {Convolutional {N}eural {N}etworks for {S}entence {C}lassification},
booktitle = {{C}onference on {E}mpirical {M}ethods in {N}atural {L}anguage {P}rocessing ({EMNLP})},
year = {2014},
pages = {1746-1751},
month = oct,
__markedentry = {[marco:6]},
}
@Article{Polikar2006,
author = {R. Polikar},
title = {Ensemble {B}ased {S}ystems in {D}ecision {M}aking},
journal = {{IEEE} {C}ircuits and {S}ystems {M}agazine},
year = {2006},
volume = {6},
number = {3},
pages = {21-45},
month = sep,
__markedentry = {[marco:6]},
doi = {10.1109/MCAS.2006.1688199},
}
@InProceedings{Wong2010,
author = {S. Wong and M. Aaron and J. Segall and K. Lynch and S. Mancoridis},
title = {Reverse {E}ngineering {U}tility {F}unctions using {G}enetic {P}rogramming to {D}etect {A}nomalous {B}ehavior in {S}oftware},
booktitle = {17th {W}orking {C}onference on {R}everse {E}ngineering},
year = {2010},
pages = {141-149},
publisher = {IEEE Computer Society},
__markedentry = {[marco:6]},
doi = {DOI 10.1109/WCRE.2010.23},
}
@InProceedings{Bartsch-Spoerl1999,
author = {B. Bartsch-Sp\"{o}rl and M. Lenz and A. H\"{u}bner},
title = {Case-Based Reasoning - Survey and Future Directions},
booktitle = {Lecture Notes in Artificial Intelligence},
year = {1999},
editor = {F. Puppe},
pages = {67-89},
month = mar,
publisher = {Springer},
__markedentry = {[marco:6]},
}
@Article{Ali2013,
author = {N. S. Ali and V.P. Pawar},
title = {The use of data {M}ining {T}echniques for {I}mproving {S}oftware {R}eliability},
journal = {International {J}ournal of {A}dvanced {R}esearch in {C}omputer {S}cience},
year = {2013},
volume = {4},
number = {4},
pages = {172-178},
month = mar,
__markedentry = {[marco:6]},
}
@InProceedings{Conde2013,
author = {P. P. Conde and J. de la Calleja and A. Benitez and Ma. A. Medina},
title = {Image-based classification of diabetic retinopathy using machine learning},
booktitle = {12th {I}nternational {C}onference on {I}ntelligence {S}ystem {D}esign and {A}pplications (ISDA)},
year = {2013},
pages = {826-830},
publisher = {IEEE},
__markedentry = {[marco:6]},
}
@Article{Shepperd2013,
author = {M. Shepperd and Q. Song and Z. Sun and C. Mair},
title = {Data {Q}uality: {S}ome {C}omments on the {NASA} {S}oftware {D}efect {D}atasets},
journal = {IEEE Trans. Softw. Eng.},
year = {2013},
volume = {39},
number = {9},
pages = {1208-1215},
month = sep,
__markedentry = {[marco:6]},
}
@Article{Aleem2015,
author = {S. Aleem and L. F. Capretz and F. Ahmed},
title = {{BENCHMARKING MACHINE LEARNING TECHNIQUES FOR SOFTWARE DEFECT DETECTION}},
journal = {International Journal of Software Engineering \& Applications (IJSEA)},
year = {2015},
volume = {6},
number = {3},
pages = {11-23},
month = may,
__markedentry = {[marco:6]},
}
@InProceedings{Gray2011,
author = {D. Gray and D. Bowes and N. Davey},
title = {The miuse of the {NASA} metrics data program data sets for automated software defect prediction},
booktitle = {15th {A}nnual {C}onference on {E}valuation \& {A}ssessment in {S}oftware {E}ngineering ({EASE})},
year = {2011},
publisher = {IET},
__markedentry = {[marco:6]},
doi = {10.1049/ic.2011.0012},
}
@Article{kaur,
author = {A. Kaur and I. Kaur},
title = {An empirical evaluation of classification algorithms for fault prediction in open source projects},
journal = {Journal of {K}ing {S}aud {U}niversity - {C}omputer and {I}nformation {S}ciences},
year = {2016},
volume = {30},
pages = {2-17},
month = apr,
}
@Article{taylor,
author = {Q. Taylor and C. Giraud-Carrier},
title = {Applications of data mining in software engineering},
journal = {International Journal of Data Analysis Techniques and Strategies},
year = {2010},
volume = {2},
number = {3},
pages = {243-257},
month = jul,
doi = {10.1504/IJDATS.2010.034058},
}
@Article{bengio,
author = {Y. Bengio},
title = {Learning {D}eep {A}rchitecture for {AI}},
journal = {Foundations and Trends® in Machine Learning},
year = {2009},
volume = {2},
number = {1},
pages = {1-127},
doi = {http://dx.doi.org/10.1561/2200000006},
}
@Article{lecun,
author = {Y. LeCun and Y. Bengio and G. Hinton},
title = {Deep {L}earning},
journal = {{N}ature},
year = {2015},
volume = {521},
pages = {436–444},
month = may,
}
@InProceedings{deshmukh,
author = {J. Deshmukh and K. M. Annervaz and S. Podder},
title = {Towards {A}ccurate {D}uplicate {B}ug {R}etrieval {U}sing {D}eep {L}earning {T}echniques},
booktitle = {{IEEE} {I}nternational {C}onference on {S}oftware {M}aintenance and {E}volution ({ICSME})},
year = {2017},
pages = {115-124},
publisher = {IEEE},
doi = {10.1109/ICSME.2017.69},
}
@Article{zhang,
author = {Z. Zhang and X. Jing and T. Wang},
title = {Laber propagation based semi-supervised learning for software defect prediction},
journal = {Autom. Softw. Eng.},
year = {2017},
volume = {24},
number = {1},
pages = {47-69},
month = mar,
}
@Article{song,
author = {Q. Song and Z. Jia and M. Shepperd and S. Ying and J. Liu},
title = {A {G}eneral {S}oftware {D}efect-{P}roneness {P}rediction {F}ramework},
journal = {IEEE Trans. Softw. Eng.},
year = {2011},
volume = {37},
number = {3},
pages = {356 - 370},
month = may,
}
@Article{zhou,
author = {Y. Zhou and H. Leung},
title = {Empirical {A}nalysis of {O}bject-{O}riented {D}esign {M}etrics for {P}redicting {H}igh and {L}ow {S}everity {F}aults},
journal = {IEEE TRANSACTIONS ON SOFTWARE ENGINEERING},
year = {2006},
volume = {32},
number = {10},
pages = {771-789},
month = oct,
}
@InProceedings{mccallum,
author = {A. McCallum and K. Nigam},
title = {A comparison of {E}vent {M}odels for {N}aives {B}ayes {T}ext {C}lassification},
booktitle = {Learning for Text Categorization: Papers from the 1998 {AAAI} Workshop},
year = {1998},
pages = {41--48},
url = {http://www.kamalnigam.com/papers/multinomial-aaaiws98.pdf},
}
@Book{vapnik,
title = {The {N}ature of {S}tatistical {L}earning {T}heory},
year = {2000},
author = {V.N. Vapnik},
editor = {Springer},
edition = {Second},
isbn = {978-0387987804},
}
@Book{campbell,
title = {Learning with {S}upport {V}ector {M}achine},
publisher = {Morgan \& Claypool Publishers},
year = {2011},
author = {C. Campbell and Y. Ying},
isbn = {1608456161 9781608456161},
}
@InBook{dietterich,
pages = {405--408},
title = {"Ensemble Learning" {T}he {H}andbook of {B}rain {T}heory and {N}eural {N}etworks},
year = {2002},
author = {T. G. Dietterich},
editor = {TLFeBOOK},
volume = {2},
edition = {Second},
isbn = {0-262-01197-2},
}
@InProceedings{he,
author = {Q. He and B. Shen and Y. Chen},
title = {Software {D}efect {P}rediction {U}sing {S}emi-{S}upervised {L}earning with {C}hange {B}urst {I}nformation},
booktitle = {IEEE 40th Annual Computer Software and Applications Conference ({COMPSAC})},
year = {2016},
pages = {113--122},
month = aug,
publisher = {IEEE},
doi = {10.1109/COMPSAC.2016.193},
}
@TechReport{breiman,
author = {L. Breiman},
title = {Bagging {P}redictors},
institution = {Department of Statistics, University of California, Berkley, California 94720},
year = {1994},
month = sep,
url = {https://www.stat.berkeley.edu/~breiman/bagging.pdf},
}
@Article{breiman2,
author = {L. Breiman},
title = {Random {F}orests},
journal = {Machine Learning},
year = {2001},
volume = {45},
number = {1},
pages = {5--32},
month = oct,
doi = {10.1007/978-0-387-30164-8_695},
}
@Article{freund,
author = {Y. Freund and R. E. Schapire},
title = {A {D}ecision-{T}heoretic {G}eneralization of {O}n-{L}ine {L}earning and an {A}pplication to {B}oosting},
journal = {J. Comput. Syst. Sci.},
year = {1997},
volume = {55},
pages = {119--139},
}
@InProceedings{raina,
author = {R.Raina and A. Battle and H. Lee and B. Packer and A. Y. Ng},
title = {Self-taught learning: transfer learning from unlabeled data},
booktitle = {Proceedings of the 24th international conference on Machine Learning},
year = {2007},
pages = {759--766},
doi = {10.1145/1273496.1273592},
}
@InProceedings{collobert,
author = {R. Collobert and J. Weston},
title = {A {U}nified {A}rchitecture for {N}atural {L}anguage {P}rocessing: {D}eep {N}eural {N}etworks with {M}ultitask {L}earning},
booktitle = {Proceedings of the 25th International Conference on Machine Learning},
year = {2008},
}
@TechReport{shen,
author = {V. Y. Shen and S. D. Conte},
title = {{S}oftware {S}cience {R}ivisited: {A} {C}ritical {A}nalysis of the {T}heory and Its {E}mpirical {S}upport},
institution = {Department of Computer Science - Purdue University},
year = {1981},
}
@Book{,
title = {Elements of {S}oftware {S}cience ({O}perating and programming systems series)},
publisher = {Elsevier Science},
year = {1977},
author = {M. H. Halstead},
}
@InProceedings{li,
author = {W. Li and S. Henry},
title = {Maintenance {M}etrics for the {O}bject {O}riented {P}aradigm},
booktitle = {First International Software Metrics Symposium},
year = {1993},
publisher = {IEEE},
doi = {10.1109/METRIC.1993.263801},
}
@Article{catal,
author = {C. Catal and B. Diri},
title = {A systematic review of software fault prediction studies},
journal = {Expert Systems with Applications},
year = {2009},
volume = {36},
pages = {7346--7354},
doi = {10.1016/j.eswa.2008.10.027},
}
@Article{xu,
author = {J. Xu and D. Ho and L. F. Capretz},
title = {An {E}mpirical {S}tudy on the {P}rocedure to {D}erive {S}oftware {Q}uality {E}stimation {M}odels},
journal = {International Journal of Computer Science \& Information Technology ({IJCSIT})},
year = {2010},
volume = {2},
number = {4},
pages = {1--16},
month = aug,
}
@Article{kumaresh,
author = {S. Kumaresh and R. Baskaran},
title = {Defect {A}nalysis and {P}revention for {S}oftware {P}rocess {Q}uality {I}mprovement},
journal = {International Journal of Computer Applications},
year = {2010},
volume = {8},
number = {7},
pages = {42--47},
month = oct,
}
@Article{ahmad,
author = {K. Ahmad and N. Varshney},
title = {On {M}inimizing {S}oftware {D}efects during {N}ew {P}roduct {D}evelopment {U}sing {E}nhanced {P}reventive {A}pproach},
journal = {International Journal of Soft Computing and Engineering (IJSCE)},
year = {2012},
volume = {2},
number = {5},
pages = {9--12},
}
@Article{andersson,
author = {C. Andersson},
title = {A replicated empirical study of a selection method for software reliability growth models},
journal = {Empirical Software Engineering},
year = {2007},
volume = {12},
number = {2},
pages = {161--182},
}
@Article{fenton,
author = {N. E. Fenton and N. Ohlsson},
title = {Quantitative analysis of faults and failures in a complex software system},
journal = {IEEE Trans. Softw. Eng.},
year = {2000},
volume = {26},
number = {8},
pages = {797--814},
doi = {10.1109/32.879815},
}
@InProceedings{dam,
author = {H. K. Dam and T. Tran and A. Ghose},
title = {Explainable {S}oftware {A}nalytics},
booktitle = {40th International Conference on Software Engineering: New Ideas and Emerging Results (ICSE-NIER)},
year = {2018},
pages = {53--56},
address = {New York, NY, USA},
publisher = {ACM},
doi = {10.1145/3183399.3183424},
}
@Misc{weka,
title = {Weka 3: {D}ata {M}ining {S}oftware in {J}ava},
url = {https://www.cs.waikato.ac.nz/ml/weka/},
}
@Misc{scikit,
title = {scikit-learn, {M}achine {L}earning in {P}ython},
url = {http://scikit-learn.org/stable/},
}
@Misc{r,
title = {The {R} {P}roject for {S}tatistical {C}omputing},
url = {https://www.r-project.org/},
}
@Misc{AR,
title = {Machine {L}earning \& {D}ata {M}ining {A}lgorithms},
url = {http://tunedit.org/repo/PROMISE/DefectPrediction},
}
@Misc{nasadataset,
title = {NASA {D}efect {D}ataset},
url = {https://github.com/klainfo/NASADefectDataset},
}
@Misc{eclipsedataset,
title = {Bug prediction dataset, {E}valuate your bug prediction approach on our benchmark},
url = {http://bug.inf.usi.ch},
}
@Misc{androiddataset,
url = {http://www.inf.u-szeged.hu/$\sim$ferenc/papers/GitHubBugDataSet},
}
@InProceedings{joulin,
author = {A. Joulin and T. Mikonov},
title = {Inferring algorithmic patterns with stack-augmented recurrent nets},
booktitle = {Proceedings of 28th International Conference on Neural Information Processing Systems},
year = {(2015)},
volume = {1},
pages = {190-198},
publisher = {MIT Press Cambridge, MA, USA},
comment = {arXiv:1503.01007},
}
@Article{tong,
author = {H. Tong and B. Liu and S. Wang},
title = {Software defect prediction using stacked denoising autoencoders and two-stage ensemble learning},
journal = {Information and Software Technology},
year = {2018},
volume = {96},
}
@InProceedings{canaparo,
author = {M. Canaparo and E. Ronchieri},
title = {{Data Mining Techniques for Software Quality Prediction in Open Source Software: An Initial Assessment}},
booktitle = {under publication Proc. of EPJ Conf.},
year = {2018},
journal = {under pubblication},
}
@InProceedings{ronchieri,
author = {E. Ronchieri and M. Canaparo and A. Costantini and D. C. Duma},
title = {{Data mining techniques for software quality prediction: a comparative study}},
booktitle = {under publication Proceedings of IEEE NSS/MIC},
year = {2018},
}
@Article{salomoni,
author = {E. Ronchieri and M. Canaparo and D. Salomoni},
title = {{Machine Learning Techniques for Software Analysis of Unlabelled Program Modules}},
journal = {under publication PROCEEDINGS OF SCIENCE},
year = {2019},
}
@Comment{jabref-meta: databaseType:bibtex;}
\documentclass[a4paper]{jpconf}
\usepackage{graphicx}
\usepackage{booktabs}
\bibliographystyle{iopart-num}
\begin{document}
\title{Comparing Data Mining Techniques for Software Defect Prediction}
\author{M. Canaparo$^1$, E. Ronchieri$^1$}
\address{$^1$ INFN-CNAF, Bologna, IT}
\ead{marco.canaparo@cnaf.infn.it, elisabetta.ronchieri@cnaf.infn.it}
\begin{abstract}
In the last decades, the role of Data Mining techniques have grown in the field of software engineering to cover various tasks, such as software defect prediction and test code generation. In this contribution, we describe the work done in 2018 to compare these techniques for software defect prediction in order to identify the ones that perform the best.
\end{abstract}
%--------------------------------------------------------------------------------
\section{Introduction}
\label{sec_intro}
Over the past years, the use of Data Mining techniques have been growing in various applications of software engineering. In this field, typical tasks \cite{Ali2013} are source code generation \cite{joulin} and software defect prediction \cite{tong}: the former is usually for the test activity, the latter is for the quality assessment. They rely on software datasets compose of a set of features for the various instances. The features include software metrics and other information, like the instances defectiveness. Through data mining algorithms, software developers may detect violation in the code. Existing literature shows promising approaches to address software engineering issues. Our contribution aims to compare these techniques for software defect prediction in order to identify the ones that perform the best.
During 2018, the main focus of our work was to define a methodology to compare data mining techniques in the context of open source and HEP software.
The following paragraphs summarize the research procedure and the preliminary results.
\section{Research Procedure}
\label{sec_rproc}
The research procedure is composed of five steps:
\begin{enumerate}
\item collection of data mining techniques in the software engineering field;
\item collection of software metrics;
\item collection of datasets;
\item identification of data mining tools and library for this study;
\item identification of performance criteria.
\end{enumerate}
\subsection{Data Mining Techniques}
For the first step, we have considered existing literature focusing on defect prediction.
\noindent\textbf{Support Vector Machine} (e.g. SMO): is a supervised techniques that searches for the optimal hyperplane to separate training data. The hyperplane found is intuitive: it is the one which is maximally distant from the two classes of labelled points located in each side \cite{vapnik, campbell}.
\noindent\textbf{Decision Tree} (e.g. J48): is a flow-chart like tree structure. It is composed of: nodes which represent a test on a attribute value; branches which show the outcome of the tests; leaves, that indicate the resulting classes \cite{Han2006}.
\noindent\textbf{Naive Bayes}: relies on the Bayesian rule of conditional probability. It assumes that all the attributes are independent and analyses each of them individually \cite{mccallum}.
\noindent\textbf{Ensemble Classifier} (e.g. Random Forest): consists of training multiple classifiers and then combining their predictions \cite{dietterich}. This technique leads to a generalized improvement of the ability of each classifier \cite{he}. According to the way the component classifiers are trained, parallel or sequential, we can distinguish two different categories of ensemble. Bagging \cite{breiman} and Random Forest \cite{breiman2} are both parallel classifiers. Bagging creates multiple version of the classifier by replicating the learning set in parallel from the original on and the final decision is made by majority voting strategy. Random Forest adopts a combination of tree predictors, each depending on the values of a random vector sampled independently and with the same distribution for all trees in the forest. Adaboost \cite{freund} is an example of a sequential classifier since each classifier of this technique is applied sequentially on the training samples misclassified by the previous one.
\noindent\textbf{Deep Learning}: is applied to feature hierarchy where features of higher levels are formed by the composition of lower level ones. Deep learning techniques leverage learning intermediate representations that can be shared across tasks and, as a consequence, they can exploit unsupervised data and data from similar tasks to improve performance on problems characterised by scarcity of labelled data \cite{bengio, raina, collobert}.
\subsection{Software Metrics}
Concerning software metrics, we have collected all the metrics used in literature over time, some of them are:
\noindent\textbf{McCabe} (e.g. Cyclomatic Complexity, Essential Complexity): is used to evaluate the complexity of a software program. It is derived from a flow graph and is mathematically computed using graph theory. Basically, it is determined by counting the number of decision statements in a program \cite{McCabe1976, McCabe1989}.
\noindent\textbf{Halstead} (e.g. Base Measures, Derived Measures): is used to measure some characteristics of a program module - such as the ``Length'', the ``Potential Volume'', ``Difficulty'', the ``Programming Time'' - by employing some basic metrics like number of unique operators, number of unique operands, total occurrences of operators, total occurrences of operands \cite{shen, Halstead1977}.
\noindent\textbf{Size} (e.g. Lines of Code, Comment Lines of Code): the Lines of Code (LOC) is used to measure a software module and the accumulated LOC of all the modules for measuring a program \cite{li}.
\noindent\textbf{Chidamber and Kemerer} (e.g. Number of Children, Depth of Inheritance): is used for object-oriented programs and is the most popular for performing software analysis and prediction. It has been adopted by many software tool vendors and computer scientists \cite{Chidamber1994, catal}. Some metrics of the suite are: Weighted Method Per Class, which measures the number of methods which is in each class; Depth of Inheritance Tree, which measures the distance of the longest path from a class to the root in the inheritance tree; Number Of Children, which measures the number of classes that are direct descendants of each class.
For the third step, we have focused on the NASA Defect Dataset \cite{Shepperd2013, zhang, song, Gray2011, zhou, Aleem2015, nasadataset, AR}, Eclipse \cite{eclipsedataset}, and Android and Elastic Search \cite{androiddataset}. Table \ref{tab:datasets} shows a summary of the most important characteristics of these datasets in terms of number of projects, metrics, modules and percentage of defective modules per projects, reporting their range whenever possible. Modules refer to instances and represent e.g. classes, files, functions and so on.
%\vspace*{-\baselineskip}
\begin{table}[h]
\begin{center}
\caption{Summary of the datasets employed}
\label{tab:datasets}
% \scriptsize
\begin{tabular}{rrrrr}
\toprule
Repository & \#Projects & \#Metrics & \#Modules & \%Defective Modules\\
\midrule
NASA Defect Datasets & 11 & [30,41] & [101, 5589] & [0.41, 48.80]\%\\
Eclipse Datasets & 5 & 17 each & [324, 1863] & [9.26, 39.81]\%\\
Android Datasets & 6 & 102 each & [74, 124] & [0, 27.02]\%\\
Elastic Search Datasets & 12 &102 each & [1860, 7263]& [0.16, 11.47]\%\\
\bottomrule
\end{tabular}
\end{center}
\end{table}
%\vspace*{-\baselineskip}
\subsection{Data Mining Tools}
In relation to the data mining tools, we have employed Weka \cite{weka}, scikit-learn \cite{scikit} and R \cite{r}. They are based on java, python and R and they are characterized by a different learning curve.
\subsection{Performance Criteria}
Finally, for the performance criteria we have taken into account what is available in literature. All the criteria are defined on the basis of the \textbf{confusion matrix} that summarizes the performance of a classification algorithm. According to confusion matrix, we have defined: True Positive (TP) all the instances predicted as defective and that are actually defective; True Negative (TN) all the instances predicted as non-defective and that are actually non-defective; False Positive (FP) all the instances predicted as defective and that are actually non-defective; False Negative (FN) all the instances predicted as non-defective and that are actually defective. In the following, criteria are reported.
\textbf{Accuracy} is the percentage of modules correctly classified as either faulty or non-faulty.
\textbf{Precision} is the percentage of modules classified as faulty that are actually faulty.
\textbf{Recall} or \textbf{Completeness} is the percentage of faulty modules that are predicted as faulty.
\textbf{Mean Absolute Error} determines how close the values of predicted and actual fault rate differ.
\textbf{F-measure} is a combined measure of recall and precision, the higher value of this indicator the better is the quality of the learning method for software prediction.
\section{Preliminary Results and Future Works}
\label{sec_pr}
Bagging and Random Forest have achieved the best average accuracy over all the datasets \cite{canaparo}. In the future, we will focus on (semi-)unsupervised machine learning techniques that enable us to include them in the software development process since the majority of software datasets lacks of instance categorizations \cite{ronchieri}. Furthermore, we will investigate in the adoption of various machine learning frameworks on different resource infrastructure, such as cloud and GPU-equipped resources \cite{salomoni}.
% ------------------------------------------------------------------------
\section*{References}
\bibliography{ar2018}
%\section{Introduction}
%These guidelines show how to prepare articles for publication in \jpcs\ using \LaTeX\ so they can be published quickly and accurately. Articles will be refereed by the \corg s but the accepted PDF will be published with no editing, proofreading or changes to layout. It is, therefore, the author's responsibility to ensure that the content and layout are correct. This document has been prepared using \cls\ so serves as a sample document. The class file and accompanying documentation are available from \verb"http://jpcs.iop.org".
%
%\section{Preparing your paper}
%\verb"jpconf" requires \LaTeXe\ and can be used with other package files such
%as those loading the AMS extension fonts
%\verb"msam" and \verb"msbm" (these fonts provide the
%blackboard bold alphabet and various extra maths symbols as well as
%symbols useful in figure captions); an extra style file \verb"iopams.sty" is
%provided to load these packages and provide extra definitions for bold Greek letters.
%\subsection{Headers, footers and page numbers}
%Authors should {\it not} add headers, footers or page numbers to the pages of their article---they will
%be added by \iopp\ as part of the production process.
%
%\subsection{{\cls\ }package options}
%The \cls\ class file has two options `a4paper' and `letterpaper':
%\begin{verbatim}
%\documentclass[a4paper]{jpconf}
%\end{verbatim}
%
%or \begin{verbatim}
%\documentclass[letterpaper]{jpconf}
%\end{verbatim}
%
%\begin{center}
%\begin{table}[h]
%\caption{\label{opt}\cls\ class file options.}
%%\footnotesize\rm
%\centering
%\begin{tabular}{@{}*{7}{l}}
%\br
%Option&Description\\
%\mr
%\verb"a4paper"&Set the paper size and margins for A4 paper.\\
%\verb"letterpaper"&Set the paper size and margins for US letter paper.\\
%\br
%\end{tabular}
%\end{table}
%\end{center}
%
%The default paper size is A4 (i.e., the default option is {\tt a4paper}) but this can be changed to Letter by
%using \verb"\documentclass[letterpaper]{jpconf}". It is essential that you do not put macros into the text which alter the page dimensions.
%
%\section{The title, authors, addresses and abstract}
%The code for setting the title page information is slightly different from
%the normal default in \LaTeX\ but please follow these instructions as carefully as possible so all articles within a conference have the same style to the title page.
%The title is set in bold unjustified type using the command
%\verb"\title{#1}", where \verb"#1" is the title of the article. The
%first letter of the title should be capitalized with the rest in lower case.
%The next information required is the list of all authors' names followed by
%the affiliations. For the authors' names type \verb"\author{#1}",
%where \verb"#1" is the
%list of all authors' names. The style for the names is initials then
%surname, with a comma after all but the last
%two names, which are separated by `and'. Initials should {\it not} have
%full stops. First names may be used if desired. The command \verb"\maketitle" is not
%required.
%
%The addresses of the authors' affiliations follow the list of authors.
%Each address should be set by using
%\verb"\address{#1}" with the address as the single parameter in braces.
%If there is more
%than one address then a superscripted number, followed by a space, should come at the start of
%each address. In this case each author should also have a superscripted number or numbers following their name to indicate which address is the appropriate one for them.
%
%Please also provide e-mail addresses for any or all of the authors using an \verb"\ead{#1}" command after the last address. \verb"\ead{#1}" provides the text Email: so \verb"#1" is just the e-mail address or a list of emails.
%
%The abstract follows the addresses and
%should give readers concise information about the content
%of the article and should not normally exceed 200
%words. {\bf All articles must include an abstract}. To indicate the start
%of the abstract type \verb"\begin{abstract}" followed by the text of the
%abstract. The abstract should normally be restricted
%to a single paragraph and is terminated by the command
%\verb"\end{abstract}"
%
%\subsection{Sample coding for the start of an article}
%\label{startsample}
%The code for the start of a title page of a typical paper might read:
%\begin{verbatim}
%\title{The anomalous magnetic moment of the
%neutrino and its relation to the solar neutrino problem}
%
%\author{P J Smith$^1$, T M Collins$^2$,
%R J Jones$^{3,}$\footnote[4]{Present address:
%Department of Physics, University of Bristol, Tyndalls Park Road,
%Bristol BS8 1TS, UK.} and Janet Williams$^3$}
%
%\address{$^1$ Mathematics Faculty, Open University,
%Milton Keynes MK7~6AA, UK}
%\address{$^2$ Department of Mathematics,
%Imperial College, Prince Consort Road, London SW7~2BZ, UK}
%\address{$^3$ Department of Computer Science,
%University College London, Gower Street, London WC1E~6BT, UK}
%
%\ead{williams@ucl.ac.uk}
%
%\begin{abstract}
%The abstract appears here.
%\end{abstract}
%\end{verbatim}
%
%\section{The text}
%The text of the article should should be produced using standard \LaTeX\ formatting. Articles may be divided into sections and subsections, but the length limit provided by the \corg\ should be adhered to.
%
%\subsection{Acknowledgments}
%Authors wishing to acknowledge assistance or encouragement from
%colleagues, special work by technical staff or financial support from
%organizations should do so in an unnumbered Acknowledgments section
%immediately following the last numbered section of the paper. The
%command \verb"\ack" sets the acknowledgments heading as an unnumbered
%section.
%
%\subsection{Appendices}
%Technical detail that it is necessary to include, but that interrupts
%the flow of the article, may be consigned to an appendix.
%Any appendices should be included at the end of the main text of the paper, after the acknowledgments section (if any) but before the reference list.
%If there are two or more appendices they will be called Appendix A, Appendix B, etc.
%Numbered equations will be in the form (A.1), (A.2), etc,
%figures will appear as figure A1, figure B1, etc and tables as table A1,
%table B1, etc.
%
%The command \verb"\appendix" is used to signify the start of the
%appendixes. Thereafter \verb"\section", \verb"\subsection", etc, will
%give headings appropriate for an appendix. To obtain a simple heading of
%`Appendix' use the code \verb"\section*{Appendix}". If it contains
%numbered equations, figures or tables the command \verb"\appendix" should
%precede it and \verb"\setcounter{section}{1}" must follow it.
%
%\section{References}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%In the online version of \jpcs\ references will be linked to their original source or to the article within a secondary service such as INSPEC or ChemPort wherever possible. To facilitate this linking extra care should be taken when preparing reference lists.
%
%Two different styles of referencing are in common use: the Harvard alphabetical system and the Vancouver numerical system. For \jpcs, the Vancouver numerical system is preferred but authors should use the Harvard alphabetical system if they wish to do so. In the numerical system references are numbered sequentially throughout the text within square brackets, like this [2], and one number can be used to designate several references.
%
%\subsection{Using \BibTeX}
%We highly recommend the {\ttfamily\textbf\selectfont iopart-num} \BibTeX\ package by Mark~A~Caprio \cite{iopartnum}, which is included with this documentation.
%
%\subsection{Reference lists}
%A complete reference should provide the reader with enough information to locate the article concerned, whether published in print or electronic form, and should, depending on the type of reference, consist of:
%
%\begin{itemize}
%\item name(s) and initials;
%\item date published;
%\item title of journal, book or other publication;
%\item titles of journal articles may also be included (optional);
%\item volume number;
%\item editors, if any;
%\item town of publication and publisher in parentheses for {\it books};
%\item the page numbers.
%\end{itemize}
%
%Up to ten authors may be given in a particular reference; where
%there are more than ten only the first should be given followed by
%`{\it et al}'. If an author is unsure of a particular journal's abbreviated title it is best to leave the title in
%full. The terms {\it loc.\ cit.\ }and {\it ibid.\ }should not be used.
%Unpublished conferences and reports should generally not be included
%in the reference list and articles in the course of publication should
%be entered only if the journal of publication is known.
%A thesis submitted for a higher degree may be included
%in the reference list if it has not been superseded by a published
%paper and is available through a library; sufficient information
%should be given for it to be traced readily.
%
%\subsection{Formatting reference lists}
%Numeric reference lists should contain the references within an unnumbered section (such as \verb"\section*{References}"). The
%reference list itself is started by the code
%\verb"\begin{thebibliography}{<num>}", where \verb"<num>" is the largest
%number in the reference list and is completed by
%\verb"\end{thebibliography}".
%Each reference starts with \verb"\bibitem{<label>}", where `label' is the label used for cross-referencing. Each \verb"\bibitem" should only contain a reference to a single article (or a single article and a preprint reference to the same article). When one number actually covers a group of two or more references to different articles, \verb"\nonum"
%should replace \verb"\bibitem{<label>}" at
%the start of each reference in the group after the first.
%
%For an alphabetic reference list use \verb"\begin{thereferences}" ... \verb"\end{thereferences}" instead of the
%`thebibliography' environment and each reference can be start with just \verb"\item" instead of \verb"\bibitem{label}"
%as cross referencing is less useful for alphabetic references.
%
%\subsection {References to printed journal articles}
%A normal reference to a journal article contains three changes of font (see table \ref{jfonts}) and is constructed as follows:
%
%\begin{itemize}
%\item the authors should be in the form surname (with only the first letter capitalized) followed by the initials with no periods after the initials. Authors should be separated by a comma except for the last two which should be separated by `and' with no comma preceding it;
%\item the article title (if given) should be in lower case letters, except for an initial capital, and should follow the date;
%\item the journal title is in italic and is abbreviated. If a journal has several parts denoted by different letters the part letter should be inserted after the journal in Roman type, e.g. {\it Phys. Rev.} A;
%\item the volume number should be in bold type;
%\item both the initial and final page numbers should be given where possible. The final page number should be in the shortest possible form and separated from the initial page number by an en rule `-- ', e.g. 1203--14, i.e. the numbers `12' are not repeated.
%\end{itemize}
%
%A typical (numerical) reference list might begin
%
%\medskip
%\begin{thebibliography}{9}
%\item Strite S and Morkoc H 1992 {\it J. Vac. Sci. Technol.} B {\bf 10} 1237
%\item Jain S C, Willander M, Narayan J and van Overstraeten R 2000
%{\it J. Appl. Phys}. {\bf 87} 965
%\item Nakamura S, Senoh M, Nagahama S, Iwase N, Yamada T, Matsushita T, Kiyoku H
%and Sugimoto Y 1996 {\it Japan. J. Appl. Phys.} {\bf 35} L74
%\item Akasaki I, Sota S, Sakai H, Tanaka T, Koike M and Amano H 1996
%{\it Electron. Lett.} {\bf 32} 1105
%\item O'Leary S K, Foutz B E, Shur M S, Bhapkar U V and Eastman L F 1998
%{\it J. Appl. Phys.} {\bf 83} 826
%\item Jenkins D W and Dow J D 1989 {\it Phys. Rev.} B {\bf 39} 3317
%\end{thebibliography}
%\smallskip
%
%\noindent which would be obtained by typing
%
%\begin{verbatim}
%\begin{\thebibliography}{9}
%\item Strite S and Morkoc H 1992 {\it J. Vac. Sci. Technol.} B {\bf 10} 1237
%\item Jain S C, Willander M, Narayan J and van Overstraeten R 2000
%{\it J. Appl. Phys}. {\bf 87} 965
%\item Nakamura S, Senoh M, Nagahama S, Iwase N, Yamada T, Matsushita T, Kiyoku H
%and Sugimoto Y 1996 {\it Japan. J. Appl. Phys.} {\bf 35} L74
%\item Akasaki I, Sota S, Sakai H, Tanaka T, Koike M and Amano H 1996
%{\it Electron. Lett.} {\bf 32} 1105
%\item O'Leary S K, Foutz B E, Shur M S, Bhapkar U V and Eastman L F 1998
%{\it J. Appl. Phys.} {\bf 83} 826
%\item Jenkins D W and Dow J D 1989 {\it Phys. Rev.} B {\bf 39} 3317
%\end{\thebibliography}
%\end{verbatim}
%
%\begin{center}
%\begin{table}[h]
%\centering
%\caption{\label{jfonts}Font styles for a reference to a journal article.}
%\begin{tabular}{@{}l*{15}{l}}
%\br
%Element&Style\\
%\mr
%Authors&Roman type\\
%Date&Roman type\\
%Article title (optional)&Roman type\\
%Journal title&Italic type\\
%Volume number&Bold type\\
%Page numbers&Roman type\\
%\br
%\end{tabular}
%\end{table}
%\end{center}
%
%\subsection{References to \jpcs\ articles}
%Each conference proceeding published in \jpcs\ will be a separate {\it volume};
%references should follow the style for conventional printed journals. For example:\vspace{6pt}
%\numrefs{1}
%\item Douglas G 2004 \textit{J. Phys.: Conf. Series} \textbf{1} 23--36
%\endnumrefs
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\subsection{References to preprints}
%For preprints there are two distinct cases:
%\renewcommand{\theenumi}{\arabic{enumi}}
%\begin{enumerate}
%\item Where the article has been published in a journal and the preprint is supplementary reference information. In this case it should be presented as:
%\medskip
%\numrefs{1}
%\item Kunze K 2003 T-duality and Penrose limits of spatially homogeneous and inhomogeneous cosmologies {\it Phys. Rev.} D {\bf 68} 063517 ({\it Preprint} gr-qc/0303038)
%\endnumrefs
%\item Where the only reference available is the preprint. In this case it should be presented as
%\medskip
%\numrefs{1}
%\item Milson R, Coley A, Pravda V and Pravdova A 2004 Alignment and algebraically special tensors {\it Preprint} gr-qc/0401010
%\endnumrefs
%\end{enumerate}
%
%\subsection{References to electronic-only journals}
%In general article numbers are given, and no page ranges, as most electronic-only journals start each article on page 1.
%
%\begin{itemize}
%\item For {\it New Journal of Physics} (article number may have from one to three digits)
%\numrefs{1}
%\item Fischer R 2004 Bayesian group analysis of plasma-enhanced chemical vapour deposition data {\it New. J. Phys.} {\bf 6} 25
%\endnumrefs
%\item For SISSA journals the volume is divided into monthly issues and these form part of the article number
%
%\numrefs{2}
%\item Horowitz G T and Maldacena J 2004 The black hole final state {\it J. High Energy Phys.} JHEP02(2004)008
%\item Bentivegna E, Bonanno A and Reuter M 2004 Confronting the IR fixed point cosmology with high-redshift observations {\it J. Cosmol. Astropart. Phys.} JCAP01(2004)001
%\endnumrefs
%\end{itemize}
%
%\subsection{References to books, conference proceedings and reports}
%References to books, proceedings and reports are similar to journal references, but have
%only two changes of font (see table~\ref{book}).
%
%\begin{table}
%\centering
%\caption{\label{book}Font styles for references to books, conference proceedings and reports.}
%\begin{tabular}{@{}l*{15}{l}}
%\br
%Element&Style\\
%\mr
%Authors&Roman type\\
%Date&Roman type\\
%Book title (optional)&Italic type\\
%Editors&Roman type\\
%Place (city, town etc) of publication&Roman type\\
%Publisher&Roman type\\
%Volume&Roman type\\
%Page numbers&Roman type\\
%\br
%\end{tabular}
%\end{table}
%
%Points to note are:
%\medskip
%\begin{itemize}
%\item Book titles are in italic and should be spelt out in full with initial capital letters for all except minor words. Words such as Proceedings, Symposium, International, Conference, Second, etc should be abbreviated to {\it Proc.}, {\it Symp.}, {\it Int.}, {\it Conf.}, {\it 2nd}, respectively, but the rest of the title should be given in full, followed by the date of the conference and the town or city where the conference was held. For Laboratory Reports the Laboratory should be spelt out wherever possible, e.g. {\it Argonne National Laboratory Report}.
%\item The volume number, for example vol 2, should be followed by the editors, if any, in a form such as `ed A J Smith and P R Jones'. Use {\it et al} if there are more than two editors. Next comes the town of publication and publisher, within brackets and separated by a colon, and finally the page numbers preceded by p if only one number is given or pp if both the initial and final numbers are given.
%\end{itemize}
%
%Examples taken from published papers:
%\medskip
%
%\numrefs{99}
%\item Kurata M 1982 {\it Numerical Analysis for Semiconductor Devices} (Lexington, MA: Heath)
%\item Selberherr S 1984 {\it Analysis and Simulation of Semiconductor Devices} (Berlin: Springer)
%\item Sze S M 1969 {\it Physics of Semiconductor Devices} (New York: Wiley-Interscience)
%\item Dorman L I 1975 {\it Variations of Galactic Cosmic Rays} (Moscow: Moscow State University Press) p 103
%\item Caplar R and Kulisic P 1973 {\it Proc. Int. Conf. on Nuclear Physics (Munich)} vol 1 (Amsterdam: North-Holland/American Elsevier) p 517
%\item Cheng G X 2001 {\it Raman and Brillouin Scattering-Principles and Applications} (Beijing: Scientific)
%\item Szytula A and Leciejewicz J 1989 {\it Handbook on the Physics and Chemistry of Rare Earths} vol 12, ed K A Gschneidner Jr and L Erwin (Amsterdam: Elsevier) p 133
%\item Kuhn T 1998 {\it Density matrix theory of coherent ultrafast dynamics Theory of Transport Properties of Semiconductor Nanostructures} (Electronic Materials vol 4) ed E Sch\"oll (London: Chapman and Hall) chapter 6 pp 173--214
%\endnumrefs
%
%\section{Tables and table captions}
%Tables should be numbered serially and referred to in the text
%by number (table 1, etc, {\bf rather than} tab. 1). Each table should be a float and be positioned within the text at the most convenient place near to where it is first mentioned in the text. It should have an
%explanatory caption which should be as concise as possible.
%
%\subsection{The basic table format}
%The standard form for a table is:
%\begin{verbatim}
%\begin{table}
%\caption{\label{label}Table caption.}
%\begin{center}
%\begin{tabular}{llll}
%\br
%Head 1&Head 2&Head 3&Head 4\\
%\mr
%1.1&1.2&1.3&1.4\\
%2.1&2.2&2.3&2.4\\
%\br
%\end{tabular}
%\end{center}
%\end{table}
%\end{verbatim}
%
%The above code produces table~\ref{ex}.
%
%\begin{table}[h]
%\caption{\label{ex}Table caption.}
%\begin{center}
%\begin{tabular}{llll}
%\br
%Head 1&Head 2&Head 3&Head 4\\
%\mr
%1.1&1.2&1.3&1.4\\
%2.1&2.2&2.3&2.4\\
%\br
%\end{tabular}
%\end{center}
%\end{table}
%
%Points to note are:
%\medskip
%\begin{enumerate}
%\item The caption comes before the table.
%\item The normal style is for tables to be centred in the same way as
%equations. This is accomplished
%by using \verb"\begin{center}" \dots\ \verb"\end{center}".
%
%\item The default alignment of columns should be aligned left.
%
%\item Tables should have only horizontal rules and no vertical ones. The rules at
%the top and bottom are thicker than internal rules and are set with
%\verb"\br" (bold rule).
%The rule separating the headings from the entries is set with
%\verb"\mr" (medium rule). These commands do not need a following double backslash.
%
%\item Numbers in columns should be aligned as appropriate, usually on the decimal point;
%to help do this a control sequence \verb"\lineup" has been defined
%which sets \verb"\0" equal to a space the size of a digit, \verb"\m"
%to be a space the width of a minus sign, and \verb"\-" to be a left
%overlapping minus sign. \verb"\-" is for use in text mode while the other
%two commands may be used in maths or text.
%(\verb"\lineup" should only be used within a table
%environment after the caption so that \verb"\-" has its normal meaning
%elsewhere.) See table~\ref{tabone} for an example of a table where
%\verb"\lineup" has been used.
%\end{enumerate}
%
%\begin{table}[h]
%\caption{\label{tabone}A simple example produced using the standard table commands
%and $\backslash${\tt lineup} to assist in aligning columns on the
%decimal point. The width of the
%table and rules is set automatically by the
%preamble.}
%
%\begin{center}
%\lineup
%\begin{tabular}{*{7}{l}}
%\br
%$\0\0A$&$B$&$C$&\m$D$&\m$E$&$F$&$\0G$\cr
%\mr
%\0\023.5&60 &0.53&$-20.2$&$-0.22$ &\01.7&\014.5\cr
%\0\039.7&\-60&0.74&$-51.9$&$-0.208$&47.2 &146\cr
%\0123.7 &\00 &0.75&$-57.2$&\m--- &--- &---\cr
%3241.56 &60 &0.60&$-48.1$&$-0.29$ &41 &\015\cr
%\br
%\end{tabular}
%\end{center}
%\end{table}
%
%\section{Figures and figure captions}
%Figures must be included in the source code of an article at the appropriate place in the text not grouped together at the end.
%
%Each figure should have a brief caption describing it and, if
%necessary, interpreting the various lines and symbols on the figure.
%As much lettering as possible should be removed from the figure itself and
%included in the caption. If a figure has parts, these should be
%labelled ($a$), ($b$), ($c$), etc.
%\Tref{blobs} gives the definitions for describing symbols and lines often
%used within figure captions (more symbols are available
%when using the optional packages loading the AMS extension fonts).
%
%\begin{table}[h]
%\caption{\label{blobs}Control sequences to describe lines and symbols in figure
%captions.}
%\begin{center}
%\begin{tabular}{lllll}
%\br
%Control sequence&Output&&Control sequence&Output\\
%\mr
%\verb"\dotted"&\dotted &&\verb"\opencircle"&\opencircle\\
%\verb"\dashed"&\dashed &&\verb"\opentriangle"&\opentriangle\\
%\verb"\broken"&\broken&&\verb"\opentriangledown"&\opentriangledown\\
%\verb"\longbroken"&\longbroken&&\verb"\fullsquare"&\fullsquare\\
%\verb"\chain"&\chain &&\verb"\opensquare"&\opensquare\\
%\verb"\dashddot"&\dashddot &&\verb"\fullcircle"&\fullcircle\\
%\verb"\full"&\full &&\verb"\opendiamond"&\opendiamond\\
%\br
%\end{tabular}
%\end{center}
%\end{table}
%
%
%Authors should try and use the space allocated to them as economically as possible. At times it may be convenient to put two figures side by side or the caption at the side of a figure. To put figures side by side, within a figure environment, put each figure and its caption into a minipage with an appropriate width (e.g. 3in or 18pc if the figures are of equal size) and then separate the figures slightly by adding some horizontal space between the two minipages (e.g. \verb"\hspace{.2in}" or \verb"\hspace{1.5pc}". To get the caption at the side of the figure add the small horizontal space after the \verb"\includegraphics" command and then put the \verb"\caption" within a minipage of the appropriate width aligned bottom, i.e. \verb"\begin{minipage}[b]{3in}" etc (see code in this file used to generate figures 1--3).
%
%Note that it may be necessary to adjust the size of the figures (using optional arguments to \verb"\includegraphics", for instance \verb"[width=3in]") to get you article to fit within your page allowance or to obtain good page breaks.
%
%\begin{figure}[h]
%\begin{minipage}{14pc}
%\includegraphics[width=14pc]{name.eps}
%\caption{\label{label}Figure caption for first of two sided figures.}
%\end{minipage}\hspace{2pc}%
%\begin{minipage}{14pc}
%\includegraphics[width=14pc]{name.eps}
%\caption{\label{label}Figure caption for second of two sided figures.}
%\end{minipage}
%\end{figure}
%
%\begin{figure}[h]
%\includegraphics[width=14pc]{name.eps}\hspace{2pc}%
%\begin{minipage}[b]{14pc}\caption{\label{label}Figure caption for a narrow figure where the caption is put at the side of the figure.}
%\end{minipage}
%\end{figure}
%
%Using the graphicx package figures can be included using code such as:
%\begin{verbatim}
%\begin{figure}
%\begin{center}
%\includegraphics{file.eps}
%\end{center}
%\caption{\label{label}Figure caption}
%\end{figure}
%\end{verbatim}
%
%\section*{References}
%\begin{thebibliography}{9}
%\bibitem{iopartnum} IOP Publishing is to grateful Mark A Caprio, Center for Theoretical Physics, Yale University, for permission to include the {\tt iopart-num} \BibTeX package (version 2.0, December 21, 2006) with this documentation. Updates and new releases of {\tt iopart-num} can be found on \verb"www.ctan.org" (CTAN).
%\end{thebibliography}
\end{document}
File added
%%
%% This is file `iopams.sty'
%% File to include AMS fonts and extra definitions for bold greek
%% characters for use with iopart.cls
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{iopams}[1997/02/13 v1.0]
\RequirePackage{amsgen}[1995/01/01]
\RequirePackage{amsfonts}[1995/01/01]
\RequirePackage{amssymb}[1995/01/01]
\RequirePackage{amsbsy}[1995/01/01]
%
\iopamstrue % \newif\ifiopams in iopart.cls & iopbk2e.cls
% % allows optional text to be in author guidelines
%
% Bold lower case Greek letters
%
\newcommand{\balpha}{\boldsymbol{\alpha}}
\newcommand{\bbeta}{\boldsymbol{\beta}}
\newcommand{\bgamma}{\boldsymbol{\gamma}}
\newcommand{\bdelta}{\boldsymbol{\delta}}
\newcommand{\bepsilon}{\boldsymbol{\epsilon}}
\newcommand{\bzeta}{\boldsymbol{\zeta}}
\newcommand{\bfeta}{\boldsymbol{\eta}}
\newcommand{\btheta}{\boldsymbol{\theta}}
\newcommand{\biota}{\boldsymbol{\iota}}
\newcommand{\bkappa}{\boldsymbol{\kappa}}
\newcommand{\blambda}{\boldsymbol{\lambda}}
\newcommand{\bmu}{\boldsymbol{\mu}}
\newcommand{\bnu}{\boldsymbol{\nu}}
\newcommand{\bxi}{\boldsymbol{\xi}}
\newcommand{\bpi}{\boldsymbol{\pi}}
\newcommand{\brho}{\boldsymbol{\rho}}
\newcommand{\bsigma}{\boldsymbol{\sigma}}
\newcommand{\btau}{\boldsymbol{\tau}}
\newcommand{\bupsilon}{\boldsymbol{\upsilon}}
\newcommand{\bphi}{\boldsymbol{\phi}}
\newcommand{\bchi}{\boldsymbol{\chi}}
\newcommand{\bpsi}{\boldsymbol{\psi}}
\newcommand{\bomega}{\boldsymbol{\omega}}
\newcommand{\bvarepsilon}{\boldsymbol{\varepsilon}}
\newcommand{\bvartheta}{\boldsymbol{\vartheta}}
\newcommand{\bvaromega}{\boldsymbol{\varomega}}
\newcommand{\bvarrho}{\boldsymbol{\varrho}}
\newcommand{\bvarzeta}{\boldsymbol{\varsigma}} %NB really sigma
\newcommand{\bvarsigma}{\boldsymbol{\varsigma}}
\newcommand{\bvarphi}{\boldsymbol{\varphi}}
%
% Bold upright capital Greek letters
%
\newcommand{\bGamma}{\boldsymbol{\Gamma}}
\newcommand{\bDelta}{\boldsymbol{\Delta}}
\newcommand{\bTheta}{\boldsymbol{\Theta}}
\newcommand{\bLambda}{\boldsymbol{\Lambda}}
\newcommand{\bXi}{\boldsymbol{\Xi}}
\newcommand{\bPi}{\boldsymbol{\Pi}}
\newcommand{\bSigma}{\boldsymbol{\Sigma}}
\newcommand{\bUpsilon}{\boldsymbol{\Upsilon}}
\newcommand{\bPhi}{\boldsymbol{\Phi}}
\newcommand{\bPsi}{\boldsymbol{\Psi}}
\newcommand{\bOmega}{\boldsymbol{\Omega}}
%
% Bold versions of miscellaneous symbols
%
\newcommand{\bpartial}{\boldsymbol{\partial}}
\newcommand{\bell}{\boldsymbol{\ell}}
\newcommand{\bimath}{\boldsymbol{\imath}}
\newcommand{\bjmath}{\boldsymbol{\jmath}}
\newcommand{\binfty}{\boldsymbol{\infty}}
\newcommand{\bnabla}{\boldsymbol{\nabla}}
\newcommand{\bdot}{\boldsymbol{\cdot}}
%
% Symbols for caption
%
\renewcommand{\opensquare}{\mbox{$\square$}}
\renewcommand{\opentriangle}{\mbox{$\vartriangle$}}
\renewcommand{\opentriangledown}{\mbox{$\triangledown$}}
\renewcommand{\opendiamond}{\mbox{$\lozenge$}}
\renewcommand{\fullsquare}{\mbox{$\blacksquare$}}
\newcommand{\fulldiamond}{\mbox{$\blacklozenge$}}
\newcommand{\fullstar}{\mbox{$\bigstar$}}
\newcommand{\fulltriangle}{\mbox{$\blacktriangle$}}
\newcommand{\fulltriangledown}{\mbox{$\blacktriangledown$}}
\endinput
%%
%% End of file `iopams.sty'.
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{jpconf}
[2007/03/07 v1.1
LaTeX class for Journal of Physics: Conference Series]
%\RequirePackage{graphicx}
\newcommand\@ptsize{1}
\newif\if@restonecol
\newif\if@letterpaper
\newif\if@titlepage
\newif\ifiopams
\@titlepagefalse
\@letterpaperfalse
\DeclareOption{a4paper}
{\setlength\paperheight {297mm}%
\setlength\paperwidth {210mm}%
\@letterpaperfalse}
\DeclareOption{letterpaper}
{\setlength\paperheight {279.4mm}%
\setlength\paperwidth {215.9mm}%
\@letterpapertrue}
\DeclareOption{landscape}
{\setlength\@tempdima {\paperheight}%
\setlength\paperheight {\paperwidth}%
\setlength\paperwidth {\@tempdima}}
\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
\renewcommand\@ptsize{1}
%\ExecuteOptions{A4paper, twoside}
\ExecuteOptions{A4paper}
\ProcessOptions
\DeclareMathAlphabet{\bi}{OML}{cmm}{b}{it}
\DeclareMathAlphabet{\bcal}{OMS}{cmsy}{b}{n}
\input{jpconf1\@ptsize.clo}
\setlength\lineskip{1\p@}
\setlength\normallineskip{1\p@}
\renewcommand\baselinestretch{}
\setlength\parskip{0\p@ \@plus \p@}
\@lowpenalty 51
\@medpenalty 151
\@highpenalty 301
\setlength\parindent{5mm}
\setcounter{topnumber}{8}
\renewcommand\topfraction{1}
\setcounter{bottomnumber}{3}
\renewcommand\bottomfraction{.99}
\setcounter{totalnumber}{8}
\renewcommand\textfraction{0.01}
\renewcommand\floatpagefraction{.8}
\setcounter{dbltopnumber}{6}
\renewcommand\dbltopfraction{1}
\renewcommand\dblfloatpagefraction{.8}
\renewcommand{\title}{\@ifnextchar[{\@stitle}{\@ftitle}}
\pretolerance=5000
\tolerance=8000
% Headings for all pages apart from first
%
\def\ps@headings{%
\let\@oddfoot\@empty
\let\@evenfoot\@empty
\let\@oddhead\@empty
\let\@evenhead\@empty
%\def\@evenhead{\thepage\hfil\itshape\rightmark}%
%\def\@oddhead{{\itshape\leftmark}\hfil\thepage}%
%\def\@evenhead{{\itshape Journal of Physics: Conference Series}\hfill}%
%\def\@oddhead{\hfill {\itshape Journal of Physics: Conference Series}}%%
\let\@mkboth\markboth
\let\sectionmark\@gobble
\let\subsectionmark\@gobble}
%
% Headings for first page
%
\def\ps@myheadings{\let\@oddfoot\@empty\let\@evenfoot\@empty
\let\@oddhead\@empty\let\@evenhead\@empty
\let\@mkboth\@gobbletwo
\let\sectionmark\@gobble
\let\subsectionmark\@gobble}
%
\def\@stitle[#1]#2{\markboth{#1}{#1}%
%\pagestyle{empty}%
\thispagestyle{myheadings}
\vspace*{25mm}{\exhyphenpenalty=10000\hyphenpenalty=10000
%\Large
\fontsize{18bp}{24bp}\selectfont\bf\raggedright\noindent#2\par}}
\def\@ftitle#1{\markboth{#1}{#1}%
\thispagestyle{myheadings}
%\pagestyle{empty}%
\vspace*{25mm}{\exhyphenpenalty=10000\hyphenpenalty=10000
%\Large\raggedright\noindent\bf#1\par}
\fontsize{18bp}{24bp}\selectfont\bf\noindent\raggedright#1\par}}
%AUTHOR
\renewcommand{\author}{\@ifnextchar[{\@sauthor}{\@fauthor}}
\def\@sauthor[#1]#2{\markright{#1} % for production only
\vspace*{1.5pc}%
\begin{indented}%
\item[]\normalsize\bf\raggedright#2
\end{indented}%
\smallskip}
\def\@fauthor#1{%\markright{#1} for production only
\vspace*{1.5pc}%
\begin{indented}%
\item[]\normalsize\bf\raggedright#1
\end{indented}%
\smallskip}
%E-MAIL
\def\eads#1{\vspace*{5pt}\address{E-mail: #1}}
\def\ead#1{\vspace*{5pt}\address{E-mail: \mailto{#1}}}
\def\mailto#1{{\tt #1}}
%ADDRESS
\newcommand{\address}[1]{\begin{indented}
\item[]\rm\raggedright #1
\end{indented}}
\newlength{\indentedwidth}
\newdimen\mathindent
\mathindent = 6pc
\indentedwidth=\mathindent
% FOOTNOTES
%\renewcommand\footnoterule{%
% \kern-3\p@
% \hrule\@width.4\columnwidth
% \kern2.6\p@}
%\newcommand\@makefntext[1]{%
% \parindent 1em%
% \noindent
% \hb@xt@1.8em{\hss\@makefnmark}#1}
% Footnotes: symbols selected in same order as address indicators
% unless optional argument of [<num>] use to specify required symbol,
% 1=\dag, 2=\ddag, etc
% Usage: \footnote{Text of footnote}
% \footnote[3]{Text of footnote}
%
\def\footnoterule{}%
\setcounter{footnote}{0}
\long\def\@makefntext#1{\parindent 1em\noindent
\makebox[1em][l]{\footnotesize\rm$\m@th{\fnsymbol{footnote}}$}%
\footnotesize\rm #1}
\def\@makefnmark{\normalfnmark}
\def\normalfnmark{\hbox{${\fnsymbol{footnote}}\m@th$}}
\def\altfnmark{\hbox{$^{\rm Note}\ {\fnsymbol{footnote}}\m@th$}}
\def\footNote#1{\let\@makefnmark\altfnmark\footnote{#1}\let\@makefnmark\normalfnmark}
\def\@thefnmark{\fnsymbol{footnote}}
\def\footnote{\protect\pfootnote}
\def\pfootnote{\@ifnextchar[{\@xfootnote}{\stepcounter{\@mpfn}%
\begingroup\let\protect\noexpand
\xdef\@thefnmark{\thempfn}\endgroup
\@footnotemark\@footnotetext}}
\def\@xfootnote[#1]{\setcounter{footnote}{#1}%
\addtocounter{footnote}{-1}\footnote}
\newcommand\ftnote{\protect\pftnote}
\newcommand\pftnote[1]{\setcounter{footnote}{#1}%
\addtocounter{footnote}{-1}\footnote}
\newcommand{\fnm}[1]{\setcounter{footnote}{#1}\footnotetext}
\def\@fnsymbol#1{\ifnum\thefootnote=99\hbox{*}\else^{\thefootnote}\fi\relax}
%
% Address marker
%
\newcommand{\ad}[1]{\noindent\hbox{$^{#1}$}\relax}
\newcommand{\adnote}[2]{\noindent\hbox{$^{#1,}$}\setcounter{footnote}{#2}%
\addtocounter{footnote}{-1}\footnote}
\def\@tnote{}
\newcounter{oldftnote}
\newcommand{\tnote}[1]{*\gdef\@tnote{%
\setcounter{oldftnote}{\c@footnote}%
\setcounter{footnote}{99}%
\footnotetext{#1}%
\setcounter{footnote}{\c@oldftnote}\addtocounter{footnote}{-1}}}
%==================
% Acknowledgments (no heading if letter)
% Usage \ack for Acknowledgments, \ackn for Acknowledgement
\def\ack{\section*{Acknowledgments}}
\def\ackn{\section*{Acknowledgment}}
%SECTION DEFINITIONS
\setcounter{secnumdepth}{3}
\newcounter {section}
\newcounter {subsection}[section]
\newcounter {subsubsection}[subsection]
\newcounter {paragraph}[subsubsection]
\newcounter {subparagraph}[paragraph]
\renewcommand \thesection {\arabic{section}}
\renewcommand\thesubsection {\thesection.\arabic{subsection}}
\renewcommand\thesubsubsection{\thesubsection .\arabic{subsubsection}}
\renewcommand\theparagraph {\thesubsubsection.\arabic{paragraph}}
\renewcommand\thesubparagraph {\theparagraph.\arabic{subparagraph}}
%\nosections
\def\nosections{\vspace{30\p@ plus12\p@ minus12\p@}
\noindent\ignorespaces}
%\renewcommand{\@startsection}[6]
%{%
%\if@noskipsec \leavevmode \fi
%\par
% \@tempskipa #4\relax
%%\@tempskipa 0pt\relax
% \@afterindenttrue
% \ifdim \@tempskipa <\z@
% \@tempskipa -\@tempskipa \@afterindentfalse
% \fi
% \if@nobreak
% \everypar{}%
% \else
% \addpenalty\@secpenalty\addvspace\@tempskipa
% \fi
% \@ifstar
% {\@ssect{#3}{#4}{#5}{#6}}%
% {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
%\renewcommand{\@sect}[8]{%
% \ifnum #2>\c@secnumdepth
% \let\@svsec\@empty
% \else
% \refstepcounter{#1}%
% \protected@edef\@svsec{\@seccntformat{#1}\relax}%
% \fi
% \@tempskipa #5\relax
% \ifdim \@tempskipa>\z@
% \begingroup
% #6{%
% \@hangfrom{\hskip #3\relax\@svsec}%
% \interlinepenalty \@M #8\@@par}%
% \endgroup
% \csname #1mark\endcsname{#7}%
% \addcontentsline{toc}{#1}{%
% \ifnum #2>\c@secnumdepth \else
% \protect\numberline{\csname the#1\endcsname}%
% \fi
% #7}%
% \else
% \def\@svsechd{%
% #6{\hskip #3\relax
% \@svsec #8}%
% \csname #1mark\endcsname{#7}%
% \addcontentsline{toc}{#1}{%
% \ifnum #2>\c@secnumdepth \else
% \protect\numberline{\csname the#1\endcsname}%
% \fi
% #7}}%
% \fi
% \@xsect{#5}}
%\renewcommand{\@xsect}[1]{%
% \@tempskipa #1\relax
% \ifdim \@tempskipa>\z@
% \par \nobreak
% \vskip \@tempskipa
% \@afterheading
% \else
% \@nobreakfalse
% \global\@noskipsectrue
% \everypar{%
% \if@noskipsec
% \global\@noskipsecfalse
% {\setbox\z@\lastbox}%
% \clubpenalty\@M
% \begingroup \@svsechd \endgroup
% \unskip
% \@tempskipa #1\relax
% \hskip -\@tempskipa
% \else
% \clubpenalty \@clubpenalty
% \everypar{}%
% \fi}%
% \fi
% \ignorespaces}
%========================================================================
\newcommand\section{\@startsection {section}{1}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1sp}%
{\reset@font\normalsize\bfseries\raggedright}}
\newcommand\subsection{\@startsection{subsection}{2}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1sp}%
{\reset@font\normalsize\itshape\raggedright}}
\newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{-1em \@plus .2em}%
{\reset@font\normalsize\itshape}}
\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
{3.25ex \@plus1ex \@minus.2ex}%
{-1em}%
{\reset@font\normalsize\itshape}}
\newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
{3.25ex \@plus1ex \@minus .2ex}%
{-1em}%
{\reset@font\normalsize\itshape}}
\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth
\let\@svsec\@empty\else
\refstepcounter{#1}\edef\@svsec{\csname the#1\endcsname. }\fi
\@tempskipa #5\relax
\ifdim \@tempskipa>\z@
\begingroup #6\relax
\noindent{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par}%
\endgroup
\csname #1mark\endcsname{#7}\addcontentsline
{toc}{#1}{\ifnum #2>\c@secnumdepth \else
\protect\numberline{\csname the#1\endcsname}\fi
#7}\else
\def\@svsechd{#6\hskip #3\relax %% \relax added 2 May 90
\@svsec #8\csname #1mark\endcsname
{#7}\addcontentsline
{toc}{#1}{\ifnum #2>\c@secnumdepth \else
\protect\numberline{\csname the#1\endcsname}\fi
#7}}\fi
\@xsect{#5}}
%
\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax
\ifdim \@tempskipa>\z@
\begingroup #4\noindent{\hskip #1}{\interlinepenalty \@M #5\par}\endgroup
\else \def\@svsechd{#4\hskip #1\relax #5}\fi
\@xsect{#3}}
% LIST DEFINITIONS
\setlength\leftmargini {2em}
\leftmargin \leftmargini
\setlength\leftmarginii {2em}
\setlength\leftmarginiii {1.8em}
\setlength\leftmarginiv {1.6em}
\setlength\leftmarginv {1em}
\setlength\leftmarginvi {1em}
\setlength\leftmargin{\leftmargini}
\setlength \labelsep {.5em}
\setlength \labelwidth{\leftmargini}
\addtolength\labelwidth{-\labelsep}
\@beginparpenalty -\@lowpenalty
\@endparpenalty -\@lowpenalty
\@itempenalty -\@lowpenalty
\renewcommand\theenumi{\roman{enumi}}
\renewcommand\theenumii{\alph{enumii}}
\renewcommand\theenumiii{\arabic{enumiii}}
\renewcommand\theenumiv{\Alph{enumiv}}
\newcommand\labelenumi{(\theenumi)}
\newcommand\labelenumii{(\theenumii)}
\newcommand\labelenumiii{\theenumiii.}
\newcommand\labelenumiv{(\theenumiv)}
\renewcommand\p@enumii{(\theenumi)}
\renewcommand\p@enumiii{(\theenumi.\theenumii)}
\renewcommand\p@enumiv{(\theenumi.\theenumii.\theenumiii)}
\newcommand\labelitemi{$\m@th\bullet$}
\newcommand\labelitemii{\normalfont\bfseries --}
\newcommand\labelitemiii{$\m@th\ast$}
\newcommand\labelitemiv{$\m@th\cdot$}
\renewcommand \theequation {\@arabic\c@equation}
%%%%%%%%%%%%% Figures
\newcounter{figure}
\renewcommand\thefigure{\@arabic\c@figure}
\def\fps@figure{tbp}
\def\ftype@figure{1}
\def\ext@figure{lof}
\def\fnum@figure{\figurename~\thefigure}
\newenvironment{figure}{\footnotesize\rm\@float{figure}}%
{\end@float\normalsize\rm}
\newenvironment{figure*}{\footnotesize\rm\@dblfloat{figure}}{\end@dblfloat}
\newcounter{table}
\renewcommand\thetable{\@arabic\c@table}
\def\fps@table{tbp}
\def\ftype@table{2}
\def\ext@table{lot}
\def\fnum@table{\tablename~\thetable}
\newenvironment{table}{\footnotesize\rm\@float{table}}%
{\end@float\normalsize\rm}
\newenvironment{table*}{\footnotesize\rm\@dblfloat{table}}%
{\end@dblfloat\normalsize\rm}
\newlength\abovecaptionskip
\newlength\belowcaptionskip
\setlength\abovecaptionskip{10\p@}
\setlength\belowcaptionskip{0\p@}
%Table Environments
%\newenvironment{tableref}[3][\textwidth]{%
%\begin{center}%
%\begin{table}%
%\captionsetup[table]{width=#1}
%\centering\caption{\label{#2}#3}}{\end{table}\end{center}}
%%%%%%%%%%%%%%%%%
%\newcounter{figure}
%\renewcommand \thefigure {\@arabic\c@figure}
%\def\fps@figure{tbp}
%\def\ftype@figure{1}
%\def\ext@figure{lof}
%\def\fnum@figure{\figurename~\thefigure}
%ENVIRONMENT: figure
%\newenvironment{figure}
% {\@float{figure}}
% {\end@float}
%ENVIRONMENT: figure*
%\newenvironment{figure*}
% {\@dblfloat{figure}}
% {\end@dblfloat}
%ENVIRONMENT: table
%\newcounter{table}
%\renewcommand\thetable{\@arabic\c@table}
%\def\fps@table{tbp}
%\def\ftype@table{2}
%\def\ext@table{lot}
%\def\fnum@table{\tablename~\thetable}
%\newenvironment{table}
% {\@float{table}}
% {\end@float}
%ENVIRONMENT: table*
%\newenvironment{table*}
% {\@dblfloat{table}}
% {\end@dblfloat}
%\newlength\abovecaptionskip
%\newlength\belowcaptionskip
%\setlength\abovecaptionskip{10\p@}
%\setlength\belowcaptionskip{0\p@}
% CAPTIONS
% Added redefinition of \@caption so captions are not written to
% aux file therefore less need to \protect fragile commands
%
\long\def\@caption#1[#2]#3{\par\begingroup
\@parboxrestore
\normalsize
\@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
\endgroup}
\long\def\@makecaption#1#2{%
\vskip\abovecaptionskip
\sbox\@tempboxa{{\bf #1.} #2}%
\ifdim \wd\@tempboxa >\hsize
{\bf #1.} #2\par
\else
\global \@minipagefalse
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\vskip\belowcaptionskip}
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
%\newcommand\@pnumwidth{1.55em}
%\newcommand\@tocrmarg{2.55em}
%\newcommand\@dotsep{4.5}
%\setcounter{tocdepth}{3}
%\newcommand\tableofcontents{%
% \section*{\contentsname
% \@mkboth{%
% \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
% \@starttoc{toc}%
% }
%\newcommand*\l@part[2]{%
% \ifnum \c@tocdepth >-2\relax
% \addpenalty\@secpenalty
% \addvspace{2.25em \@plus\p@}%
% \begingroup
% \parindent \z@ \rightskip \@pnumwidth
% \parfillskip -\@pnumwidth
% {\leavevmode
% \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par
% \nobreak
% \if@compatibility
% \global\@nobreaktrue
% \everypar{\global\@nobreakfalse\everypar{}}%
% \fi
% \endgroup
% \fi}
%\newcommand*\l@section[2]{%
% \ifnum \c@tocdepth >\z@
% \addpenalty\@secpenalty
% \addvspace{1.0em \@plus\p@}%
% \setlength\@tempdima{1.5em}%
% \begingroup
% \parindent \z@ \rightskip \@pnumwidth
% \parfillskip -\@pnumwidth
% \leavevmode \bfseries
% \advance\leftskip\@tempdima
% \hskip -\leftskip
% #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
% \endgroup
% \fi}
%\newcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
%\newcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
%\newcommand*\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
%\newcommand*\l@subparagraph{\@dottedtocline{5}{10em}{5em}}
%\newcommand\listoffigures{%
% \section*{\listfigurename
% \@mkboth{\MakeUppercase\listfigurename}%
% {\MakeUppercase\listfigurename}}%
% \@starttoc{lof}%
% }
%\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
%\newcommand\listoftables{%
% \section*{\listtablename
% \@mkboth{%
% \MakeUppercase\listtablename}{\MakeUppercase\listtablename}}%
% \@starttoc{lot}%
% }
%\let\l@table\l@figure
%======================================
%ENVIRONMENTS
%======================================
%ENVIRONMENT: indented
\newenvironment{indented}{\begin{indented}}{\end{indented}}
\newenvironment{varindent}[1]{\begin{varindent}{#1}}{\end{varindent}}
%
\def\indented{\list{}{\itemsep=0\p@\labelsep=0\p@\itemindent=0\p@
\labelwidth=0\p@\leftmargin=\mathindent\topsep=0\p@\partopsep=0\p@
\parsep=0\p@\listparindent=15\p@}\footnotesize\rm}
\let\endindented=\endlist
\def\varindent#1{\setlength{\varind}{#1}%
\list{}{\itemsep=0\p@\labelsep=0\p@\itemindent=0\p@
\labelwidth=0\p@\leftmargin=\varind\topsep=0\p@\partopsep=0\p@
\parsep=0\p@\listparindent=15\p@}\footnotesize\rm}
\let\endvarindent=\endlist
%ENVIRONMENT: abstract
\newenvironment{abstract}{%
\vspace{16pt plus3pt minus3pt}
\begin{indented}
\item[]{\bfseries \abstractname.}\quad\rm\ignorespaces}
{\end{indented}\vspace{10mm}}
%ENVIRONMENT: description
\newenvironment{description}
{\list{}{\labelwidth\z@ \itemindent-\leftmargin
\let\makelabel\descriptionlabel}}
{\endlist}
\newcommand\descriptionlabel[1]{\hspace\labelsep
\normalfont\bfseries #1}
%ENVIRONMENT: quotation
\newenvironment{quotation}
{\list{}{\listparindent 1.5em%
\itemindent \listparindent
\rightmargin \leftmargin
\parsep \z@ \@plus\p@}%
\item[]}
{\endlist}
%ENVIRONMENT: quote
\newenvironment{quote}
{\list{}{\rightmargin\leftmargin}%
\item[]}
{\endlist}
%ENVIRONMENT: verse
\newenvironment{verse}
{\let\\=\@centercr
\list{}{\itemsep \z@
\itemindent -1.5em%
\listparindent\itemindent
\rightmargin \leftmargin
\advance\leftmargin 1.5em}%
\item[]}
{\endlist}
%ENVIRONMENT: bibliography
\newdimen\bibindent
\setlength\bibindent{1.5em}
\def\thebibliography#1{\list
{\hfil[\arabic{enumi}]}{\topsep=0\p@\parsep=0\p@
\partopsep=0\p@\itemsep=0\p@
\labelsep=5\p@\itemindent=-10\p@
\settowidth\labelwidth{\footnotesize[#1]}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\advance\leftmargin -\itemindent
\usecounter{enumi}}\footnotesize
\def\newblock{\ }
\sloppy\clubpenalty4000\widowpenalty4000
\sfcode`\.=1000\relax}
\let\endthebibliography=\endlist
\def\numrefs#1{\begin{thebibliography}{#1}}
\def\endnumrefs{\end{thebibliography}}
\let\endbib=\endnumrefs
%%%%%%%%%%%%%%%%%%
%\newenvironment{thebibliography}[1]
% {\section*{References}
% \list{\@biblabel{\@arabic\c@enumiv}}%
% {\settowidth\labelwidth{\@biblabel{#1}}%
% \leftmargin\labelwidth
% \advance\leftmargin\labelsep
% \@openbib@code
% \usecounter{enumiv}%
% \let\p@enumiv\@empty
% \renewcommand\theenumiv{\@arabic\c@enumiv}}%
% \sloppy
% \clubpenalty4000
% \@clubpenalty \clubpenalty
% \widowpenalty4000%
% \sfcode`\.\@m}
% {\def\@noitemerr
% {\@latex@warning{Empty `thebibliography' environment}}%
% \endlist}
%\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
%\let\@openbib@code\@empty
%ENVIRONMENT: theindex
\newenvironment{theindex}
{\if@twocolumn
\@restonecolfalse
\else
\@restonecoltrue
\fi
\columnseprule \z@
\columnsep 35\p@
\twocolumn[\section*{\indexname}]%
\@mkboth{\MakeUppercase\indexname}%
{\MakeUppercase\indexname}%
\thispagestyle{plain}\parindent\z@
\parskip\z@ \@plus .3\p@\relax
\let\item\@idxitem}
{\if@restonecol\onecolumn\else\clearpage\fi}
\newcommand\@idxitem{\par\hangindent 40\p@}
\newcommand\subitem{\@idxitem \hspace*{20\p@}}
\newcommand\subsubitem{\@idxitem \hspace*{30\p@}}
\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
%=====================
\def\appendix{\@ifnextchar*{\@appendixstar}{\@appendix}}
\def\@appendix{\eqnobysec\@appendixstar}
\def\@appendixstar{\@@par
\ifnumbysec % Added 30/4/94 to get Table A1,
\@addtoreset{table}{section} % Table B1 etc if numbering by
\@addtoreset{figure}{section}\fi % section
\setcounter{section}{0}
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\setcounter{equation}{0}
\setcounter{figure}{0}
\setcounter{table}{0}
\def\thesection{Appendix \Alph{section}}
\def\theequation{\ifnumbysec
\Alph{section}.\arabic{equation}\else
\Alph{section}\arabic{equation}\fi} % Comment A\arabic{equation} maybe
\def\thetable{\ifnumbysec % better? 15/4/95
\Alph{section}\arabic{table}\else
A\arabic{table}\fi}
\def\thefigure{\ifnumbysec
\Alph{section}\arabic{figure}\else
A\arabic{figure}\fi}}
\def\noappendix{\setcounter{figure}{0}
\setcounter{table}{0}
\def\thetable{\arabic{table}}
\def\thefigure{\arabic{figure}}}
\setlength\arraycolsep{5\p@}
\setlength\tabcolsep{6\p@}
\setlength\arrayrulewidth{.4\p@}
\setlength\doublerulesep{2\p@}
\setlength\tabbingsep{\labelsep}
\skip\@mpfootins = \skip\footins
\setlength\fboxsep{3\p@}
\setlength\fboxrule{.4\p@}
\renewcommand\theequation{\arabic{equation}}
% NAME OF STRUCTURES
\newcommand\contentsname{Contents}
\newcommand\listfigurename{List of Figures}
\newcommand\listtablename{List of Tables}
\newcommand\refname{References}
\newcommand\indexname{Index}
\newcommand\figurename{Figure}
\newcommand\tablename{Table}
\newcommand\partname{Part}
\newcommand\appendixname{Appendix}
\newcommand\abstractname{Abstract}
%Miscellaneous commands
\newcommand{\BibTeX}{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em
T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}
\newcommand{\jpcsit}{{\bfseries\itshape\selectfont Journal of Physics: Conference Series}}
\newcommand{\jpcs}{{\itshape\selectfont Journal of Physics: Conference Series}}
\newcommand{\iopp}{IOP Publishing}
\newcommand{\cls}{{\upshape\selectfont\texttt{jpconf.cls}}}
\newcommand{\corg}{conference organizer}
\newcommand\today{\number\day\space\ifcase\month\or
January\or February\or March\or April\or May\or June\or
July\or August\or September\or October\or November\or December\fi
\space\number\year}
\setlength\columnsep{10\p@}
\setlength\columnseprule{0\p@}
\newcommand{\Tables}{\clearpage\section*{Tables and table captions}
\def\fps@table{hp}\noappendix}
\newcommand{\Figures}{\clearpage\section*{Figure captions}
\def\fps@figure{hp}\noappendix}
%
\newcommand{\Figure}[1]{\begin{figure}
\caption{#1}
\end{figure}}
%
\newcommand{\Table}[1]{\begin{table}
\caption{#1}
\begin{indented}
\lineup
\item[]\begin{tabular}{@{}l*{15}{l}}}
\def\endTable{\end{tabular}\end{indented}\end{table}}
\let\endtab=\endTable
%
\newcommand{\fulltable}[1]{\begin{table}
\caption{#1}
\lineup
\begin{tabular*}{\textwidth}{@{}l*{15}{@{\extracolsep{0pt plus 12pt}}l}}}
\def\endfulltable{\end{tabular*}\end{table}}
%BIBLIOGRAPHY and References
%\newcommand{\Bibliography}[1]{\section*{References}\par\numrefs{#1}}
%\newcommand{\References}{\section*{References}\par\refs}
%\def\thebibliography#1{\list
% {\hfil[\arabic{enumi}]}{\topsep=0\p@\parsep=0\p@
% \partopsep=0\p@\itemsep=0\p@
% \labelsep=5\p@\itemindent=-10\p@
% \settowidth\labelwidth{\footnotesize[#1]}%
% \leftmargin\labelwidth
% \advance\leftmargin\labelsep
% \advance\leftmargin -\itemindent
% \usecounter{enumi}}\footnotesize
% \def\newblock{\ }
% \sloppy\clubpenalty4000\widowpenalty4000
% \sfcode`\.=1000\relax}
%\let\endthebibliography=\endlist
%\def\numrefs#1{\begin{thebibliography}{#1}}
%\def\endnumrefs{\end{thebibliography}}
%\let\endbib=\endnumrefs
\def\thereferences{\list{}{\topsep=0\p@\parsep=0\p@
\partopsep=0\p@\itemsep=0\p@\labelsep=0\p@\itemindent=-18\p@
\labelwidth=0\p@\leftmargin=18\p@
}\footnotesize\rm
\def\newblock{\ }
\sloppy\clubpenalty4000\widowpenalty4000
\sfcode`\.=1000\relax}%
\let\endthereferences=\endlist
% MISC EQUATRION STUFF
%\def\[{\relax\ifmmode\@badmath\else
% \begin{trivlist}
% \@beginparpenalty\predisplaypenalty
% \@endparpenalty\postdisplaypenalty
% \item[]\leavevmode
% \hbox to\linewidth\bgroup$ \displaystyle
% \hskip\mathindent\bgroup\fi}
%\def\]{\relax\ifmmode \egroup $\hfil \egroup \end{trivlist}\else \@badmath \fi}
%\def\equation{\@beginparpenalty\predisplaypenalty
% \@endparpenalty\postdisplaypenalty
%\refstepcounter{equation}\trivlist \item[]\leavevmode
% \hbox to\linewidth\bgroup $ \displaystyle
%\hskip\mathindent}
%\def\endequation{$\hfil \displaywidth\linewidth\@eqnnum\egroup \endtrivlist}
%\@namedef{equation*}{\[}
%\@namedef{endequation*}{\]}
%\def\eqnarray{\stepcounter{equation}\let\@currentlabel=\theequation
%\global\@eqnswtrue
%\global\@eqcnt\z@\tabskip\mathindent\let\\=\@eqncr
%\abovedisplayskip\topsep\ifvmode\advance\abovedisplayskip\partopsep\fi
%\belowdisplayskip\abovedisplayskip
%\belowdisplayshortskip\abovedisplayskip
%\abovedisplayshortskip\abovedisplayskip
%$$\halign to
%\linewidth\bgroup\@eqnsel$\displaystyle\tabskip\z@
% {##{}}$&\global\@eqcnt\@ne $\displaystyle{{}##{}}$\hfil
% &\global\@eqcnt\tw@ $\displaystyle{{}##}$\hfil
% \tabskip\@centering&\llap{##}\tabskip\z@\cr}
%\def\endeqnarray{\@@eqncr\egroup
% \global\advance\c@equation\m@ne$$\global\@ignoretrue }
%\mathindent = 6pc
%%
%\def\eqalign#1{\null\vcenter{\def\\{\cr}\openup\jot\m@th
% \ialign{\strut$\displaystyle{##}$\hfil&$\displaystyle{{}##}$\hfil
% \crcr#1\crcr}}\,}
%%
%\def\eqalignno#1{\displ@y \tabskip\z@skip
% \halign to\displaywidth{\hspace{5pc}$\@lign\displaystyle{##}$%
% \tabskip\z@skip
% &$\@lign\displaystyle{{}##}$\hfill\tabskip\@centering
% &\llap{$\@lign\hbox{\rm##}$}\tabskip\z@skip\crcr
% #1\crcr}}
%%
\newif\ifnumbysec
\def\theequation{\ifnumbysec
\arabic{section}.\arabic{equation}\else
\arabic{equation}\fi}
\def\eqnobysec{\numbysectrue\@addtoreset{equation}{section}}
\newcounter{eqnval}
\def\numparts{\addtocounter{equation}{1}%
\setcounter{eqnval}{\value{equation}}%
\setcounter{equation}{0}%
\def\theequation{\ifnumbysec
\arabic{section}.\arabic{eqnval}{\it\alph{equation}}%
\else\arabic{eqnval}{\it\alph{equation}}\fi}}
\def\endnumparts{\def\theequation{\ifnumbysec
\arabic{section}.\arabic{equation}\else
\arabic{equation}\fi}%
\setcounter{equation}{\value{eqnval}}}
%
\def\cases#1{%
\left\{\,\vcenter{\def\\{\cr}\normalbaselines\openup1\jot\m@th%
\ialign{\strut$\displaystyle{##}\hfil$&\tqs
\rm##\hfil\crcr#1\crcr}}\right.}%
\def\eqalign#1{\null\vcenter{\def\\{\cr}\openup\jot\m@th
\ialign{\strut$\displaystyle{##}$\hfil&$\displaystyle{{}##}$\hfil
\crcr#1\crcr}}\,}
% OTHER USEFUL BITS
\newcommand{\e}{\mathrm{e}}
\newcommand{\rme}{\mathrm{e}}
\newcommand{\rmi}{\mathrm{i}}
\newcommand{\rmd}{\mathrm{d}}
\renewcommand{\qquad}{\hspace*{25pt}}
\newcommand{\tdot}[1]{\stackrel{\dots}{#1}} % Added 1/9/94
\newcommand{\tqs}{\hspace*{25pt}}
\newcommand{\fl}{\hspace*{-\mathindent}}
\newcommand{\Tr}{\mathop{\mathrm{Tr}}\nolimits}
\newcommand{\tr}{\mathop{\mathrm{tr}}\nolimits}
\newcommand{\Or}{\mathord{\mathrm{O}}} %changed from \mathop 20/1/95
\newcommand{\lshad}{[\![}
\newcommand{\rshad}{]\!]}
\newcommand{\case}[2]{{\textstyle\frac{#1}{#2}}}
\def\pt(#1){({\it #1\/})}
\newcommand{\dsty}{\displaystyle}
\newcommand{\tsty}{\textstyle}
\newcommand{\ssty}{\scriptstyle}
\newcommand{\sssty}{\scriptscriptstyle}
\def\lo#1{\llap{${}#1{}$}}
\def\eql{\llap{${}={}$}}
\def\lsim{\llap{${}\sim{}$}}
\def\lsimeq{\llap{${}\simeq{}$}}
\def\lequiv{\llap{${}\equiv{}$}}
%
\newcommand{\eref}[1]{(\ref{#1})}
%\newcommand{\eqref}[1]{Equation (\ref{#1})}
%\newcommand{\Eqref}[1]{Equation (\ref{#1})}
\newcommand{\sref}[1]{section~\ref{#1}}
\newcommand{\fref}[1]{figure~\ref{#1}}
\newcommand{\tref}[1]{table~\ref{#1}}
\newcommand{\Sref}[1]{Section~\ref{#1}}
\newcommand{\Fref}[1]{Figure~\ref{#1}}
\newcommand{\Tref}[1]{Table~\ref{#1}}
\newcommand{\opencircle}{\mbox{\Large$\circ\,$}} % moved Large outside maths
\newcommand{\opensquare}{\mbox{$\rlap{$\sqcap$}\sqcup$}}
\newcommand{\opentriangle}{\mbox{$\triangle$}}
\newcommand{\opentriangledown}{\mbox{$\bigtriangledown$}}
\newcommand{\opendiamond}{\mbox{$\diamondsuit$}}
\newcommand{\fullcircle}{\mbox{{\Large$\bullet\,$}}} % moved Large outside maths
\newcommand{\fullsquare}{\,\vrule height5pt depth0pt width5pt}
\newcommand{\dotted}{\protect\mbox{${\mathinner{\cdotp\cdotp\cdotp\cdotp\cdotp\cdotp}}$}}
\newcommand{\dashed}{\protect\mbox{-\; -\; -\; -}}
\newcommand{\broken}{\protect\mbox{-- -- --}}
\newcommand{\longbroken}{\protect\mbox{--- --- ---}}
\newcommand{\chain}{\protect\mbox{--- $\cdot$ ---}}
\newcommand{\dashddot}{\protect\mbox{--- $\cdot$ $\cdot$ ---}}
\newcommand{\full}{\protect\mbox{------}}
\def\;{\protect\psemicolon}
\def\psemicolon{\relax\ifmmode\mskip\thickmuskip\else\kern .3333em\fi}
\def\lineup{\def\0{\hbox{\phantom{0}}}%
\def\m{\hbox{$\phantom{-}$}}%
\def\-{\llap{$-$}}}
%
%%%%%%%%%%%%%%%%%%%%%
% Tables rules %
%%%%%%%%%%%%%%%%%%%%%
\newcommand{\boldarrayrulewidth}{1\p@}
% Width of bold rule in tabular environment.
\def\bhline{\noalign{\ifnum0=`}\fi\hrule \@height
\boldarrayrulewidth \futurelet \@tempa\@xhline}
\def\@xhline{\ifx\@tempa\hline\vskip \doublerulesep\fi
\ifnum0=`{\fi}}
%
% Rules for tables with extra space around
%
\newcommand{\br}{\ms\bhline\ms}
\newcommand{\mr}{\ms\hline\ms}
%
\newcommand{\centre}[2]{\multispan{#1}{\hfill #2\hfill}}
\newcommand{\crule}[1]{\multispan{#1}{\hspace*{\tabcolsep}\hrulefill
\hspace*{\tabcolsep}}}
\newcommand{\fcrule}[1]{\ifnum\thetabtype=1\multispan{#1}{\hrulefill
\hspace*{\tabcolsep}}\else\multispan{#1}{\hrulefill}\fi}
%
% Extra spaces for tables and displayed equations
%
\newcommand{\ms}{\noalign{\vspace{3\p@ plus2\p@ minus1\p@}}}
\newcommand{\bs}{\noalign{\vspace{6\p@ plus2\p@ minus2\p@}}}
\newcommand{\ns}{\noalign{\vspace{-3\p@ plus-1\p@ minus-1\p@}}}
\newcommand{\es}{\noalign{\vspace{6\p@ plus2\p@ minus2\p@}}\displaystyle}%
%
\newcommand{\etal}{{\it et al\/}\ }
\newcommand{\dash}{------}
\newcommand{\nonum}{\par\item[]} %\par added 1/9/93
\newcommand{\mat}[1]{\underline{\underline{#1}}}
%
% abbreviations for IOPP journals
%
\newcommand{\CQG}{{\it Class. Quantum Grav.} }
\newcommand{\CTM}{{\it Combust. Theory Modelling\/} }
\newcommand{\DSE}{{\it Distrib. Syst. Engng\/} }
\newcommand{\EJP}{{\it Eur. J. Phys.} }
\newcommand{\HPP}{{\it High Perform. Polym.} } % added 4/5/93
\newcommand{\IP}{{\it Inverse Problems\/} }
\newcommand{\JHM}{{\it J. Hard Mater.} } % added 4/5/93
\newcommand{\JO}{{\it J. Opt.} }
\newcommand{\JOA}{{\it J. Opt. A: Pure Appl. Opt.} }
\newcommand{\JOB}{{\it J. Opt. B: Quantum Semiclass. Opt.} }
\newcommand{\JPA}{{\it J. Phys. A: Math. Gen.} }
\newcommand{\JPB}{{\it J. Phys. B: At. Mol. Phys.} } %1968-87
\newcommand{\jpb}{{\it J. Phys. B: At. Mol. Opt. Phys.} } %1988 and onwards
\newcommand{\JPC}{{\it J. Phys. C: Solid State Phys.} } %1968--1988
\newcommand{\JPCM}{{\it J. Phys.: Condens. Matter\/} } %1989 and onwards
\newcommand{\JPD}{{\it J. Phys. D: Appl. Phys.} }
\newcommand{\JPE}{{\it J. Phys. E: Sci. Instrum.} }
\newcommand{\JPF}{{\it J. Phys. F: Met. Phys.} }
\newcommand{\JPG}{{\it J. Phys. G: Nucl. Phys.} } %1975--1988
\newcommand{\jpg}{{\it J. Phys. G: Nucl. Part. Phys.} } %1989 and onwards
\newcommand{\MSMSE}{{\it Modelling Simulation Mater. Sci. Eng.} }
\newcommand{\MST}{{\it Meas. Sci. Technol.} } %1990 and onwards
\newcommand{\NET}{{\it Network: Comput. Neural Syst.} }
\newcommand{\NJP}{{\it New J. Phys.} }
\newcommand{\NL}{{\it Nonlinearity\/} }
\newcommand{\NT}{{\it Nanotechnology} }
\newcommand{\PAO}{{\it Pure Appl. Optics\/} }
\newcommand{\PM}{{\it Physiol. Meas.} } % added 4/5/93
\newcommand{\PMB}{{\it Phys. Med. Biol.} }
\newcommand{\PPCF}{{\it Plasma Phys. Control. Fusion\/} } % added 4/5/93
\newcommand{\PSST}{{\it Plasma Sources Sci. Technol.} }
\newcommand{\PUS}{{\it Public Understand. Sci.} }
\newcommand{\QO}{{\it Quantum Opt.} }
\newcommand{\QSO}{{\em Quantum Semiclass. Opt.} }
\newcommand{\RPP}{{\it Rep. Prog. Phys.} }
\newcommand{\SLC}{{\it Sov. Lightwave Commun.} } % added 4/5/93
\newcommand{\SST}{{\it Semicond. Sci. Technol.} }
\newcommand{\SUST}{{\it Supercond. Sci. Technol.} }
\newcommand{\WRM}{{\it Waves Random Media\/} }
\newcommand{\JMM}{{\it J. Micromech. Microeng.\/} }
%
% Other commonly quoted journals
%
\newcommand{\AC}{{\it Acta Crystallogr.} }
\newcommand{\AM}{{\it Acta Metall.} }
\newcommand{\AP}{{\it Ann. Phys., Lpz.} }
\newcommand{\APNY}{{\it Ann. Phys., NY\/} }
\newcommand{\APP}{{\it Ann. Phys., Paris\/} }
\newcommand{\CJP}{{\it Can. J. Phys.} }
\newcommand{\JAP}{{\it J. Appl. Phys.} }
\newcommand{\JCP}{{\it J. Chem. Phys.} }
\newcommand{\JJAP}{{\it Japan. J. Appl. Phys.} }
\newcommand{\JP}{{\it J. Physique\/} }
\newcommand{\JPhCh}{{\it J. Phys. Chem.} }
\newcommand{\JMMM}{{\it J. Magn. Magn. Mater.} }
\newcommand{\JMP}{{\it J. Math. Phys.} }
\newcommand{\JOSA}{{\it J. Opt. Soc. Am.} }
\newcommand{\JPSJ}{{\it J. Phys. Soc. Japan\/} }
\newcommand{\JQSRT}{{\it J. Quant. Spectrosc. Radiat. Transfer\/} }
\newcommand{\NC}{{\it Nuovo Cimento\/} }
\newcommand{\NIM}{{\it Nucl. Instrum. Methods\/} }
\newcommand{\NP}{{\it Nucl. Phys.} }
\newcommand{\PL}{{\it Phys. Lett.} }
\newcommand{\PR}{{\it Phys. Rev.} }
\newcommand{\PRL}{{\it Phys. Rev. Lett.} }
\newcommand{\PRS}{{\it Proc. R. Soc.} }
\newcommand{\PS}{{\it Phys. Scr.} }
\newcommand{\PSS}{{\it Phys. Status Solidi\/} }
\newcommand{\PTRS}{{\it Phil. Trans. R. Soc.} }
\newcommand{\RMP}{{\it Rev. Mod. Phys.} }
\newcommand{\RSI}{{\it Rev. Sci. Instrum.} }
\newcommand{\SSC}{{\it Solid State Commun.} }
\newcommand{\ZP}{{\it Z. Phys.} }
%===================
\pagestyle{headings}
\pagenumbering{arabic}
\raggedbottom
\onecolumn
\endinput
%%
%% End of file `jconf.cls'.
%%
%% This is file `jpconf11.clo'
%%
%% This file is distributed in the hope that it will be useful,
%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%% Digits \0\1\2\3\4\5\6\7\8\9
%% Exclamation \! Double quote \" Hash (number) \#
%% Dollar \$ Percent \% Ampersand \&
%% Acute accent \' Left paren \( Right paren \)
%% Asterisk \* Plus \+ Comma \,
%% Minus \- Point \. Solidus \/
%% Colon \: Semicolon \; Less than \<
%% Equals \= Greater than \> Question mark \?
%% Commercial at \@ Left bracket \[ Backslash \\
%% Right bracket \] Circumflex \^ Underscore \_
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
\ProvidesFile{jpconf11.clo}[2005/05/04 v1.0 LaTeX2e file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xipt{13}%
\abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
\belowdisplayskip \abovedisplayskip
\let\@listi\@listI}
\normalsize
\newcommand\small{%
\@setfontsize\small\@xpt{12}%
\abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
\def\@listi{\leftmargin\leftmargini
\topsep 9\p@ \@plus3\p@ \@minus5\p@
\parsep 4.5\p@ \@plus2\p@ \@minus\p@
\itemsep \parsep}%
\belowdisplayskip \abovedisplayskip}
\newcommand\footnotesize{%
% \@setfontsize\footnotesize\@xpt\@xiipt
\@setfontsize\footnotesize\@ixpt{11}%
\abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
\def\@listi{\leftmargin\leftmargini
\topsep 6\p@ \@plus2\p@ \@minus2\p@
\parsep 3\p@ \@plus2\p@ \@minus\p@
\itemsep \parsep}%
\belowdisplayskip \abovedisplayskip
}
\newcommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
\newcommand\tiny{\@setfontsize\tiny\@vipt\@viipt}
\newcommand\large{\@setfontsize\large\@xivpt{18}}
\newcommand\Large{\@setfontsize\Large\@xviipt{22}}
\newcommand\LARGE{\@setfontsize\LARGE\@xxpt{25}}
\newcommand\huge{\@setfontsize\huge\@xxvpt{30}}
\let\Huge=\huge
\if@twocolumn
\setlength\parindent{14\p@}
\else
\setlength\parindent{18\p@}
\fi
\if@letterpaper%
%\input{letmarg.tex}%
\setlength{\hoffset}{0mm}
\setlength{\marginparsep}{0mm}
\setlength{\marginparwidth}{0mm}
\setlength{\textwidth}{160mm}
\setlength{\oddsidemargin}{-0.4mm}
\setlength{\evensidemargin}{-0.4mm}
\setlength{\voffset}{0mm}
\setlength{\headheight}{8mm}
\setlength{\headsep}{5mm}
\setlength{\footskip}{0mm}
\setlength{\textheight}{230mm}
\setlength{\topmargin}{1.6mm}
\else
%\input{a4marg.tex}%
\setlength{\hoffset}{0mm}
\setlength{\marginparsep}{0mm}
\setlength{\marginparwidth}{0mm}
\setlength{\textwidth}{160mm}
\setlength{\oddsidemargin}{-0.4mm}
\setlength{\evensidemargin}{-0.4mm}
\setlength{\voffset}{0mm}
\setlength{\headheight}{8mm}
\setlength{\headsep}{5mm}
\setlength{\footskip}{0mm}
\setlength{\textheight}{230mm}
\setlength{\topmargin}{1.6mm}
\fi
\setlength\maxdepth{.5\topskip}
\setlength\@maxdepth\maxdepth
\setlength\footnotesep{8.4\p@}
\setlength{\skip\footins} {10.8\p@ \@plus 4\p@ \@minus 2\p@}
\setlength\floatsep {14\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\textfloatsep {24\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\intextsep {16\p@ \@plus 4\p@ \@minus 4\p@}
\setlength\dblfloatsep {16\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\dbltextfloatsep{24\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\@fptop{0\p@}
\setlength\@fpsep{10\p@ \@plus 1fil}
\setlength\@fpbot{0\p@}
\setlength\@dblfptop{0\p@}
\setlength\@dblfpsep{10\p@ \@plus 1fil}
\setlength\@dblfpbot{0\p@}
\setlength\partopsep{3\p@ \@plus 2\p@ \@minus 2\p@}
\def\@listI{\leftmargin\leftmargini
\parsep=\z@
\topsep=6\p@ \@plus3\p@ \@minus3\p@
\itemsep=3\p@ \@plus2\p@ \@minus1\p@}
\let\@listi\@listI
\@listi
\def\@listii {\leftmargin\leftmarginii
\labelwidth\leftmarginii
\advance\labelwidth-\labelsep
\topsep=3\p@ \@plus2\p@ \@minus\p@
\parsep=\z@
\itemsep=\parsep}
\def\@listiii{\leftmargin\leftmarginiii
\labelwidth\leftmarginiii
\advance\labelwidth-\labelsep
\topsep=\z@
\parsep=\z@
\partopsep=\z@
\itemsep=\z@}
\def\@listiv {\leftmargin\leftmarginiv
\labelwidth\leftmarginiv
\advance\labelwidth-\labelsep}
\def\@listv{\leftmargin\leftmarginv
\labelwidth\leftmarginv
\advance\labelwidth-\labelsep}
\def\@listvi {\leftmargin\leftmarginvi
\labelwidth\leftmarginvi
\advance\labelwidth-\labelsep}
\endinput
%%
%% End of file `iopart12.clo'.
contributions/ds_cloud_c/catc_monitoring.png

31.7 KiB

\documentclass[a4paper]{jpconf}
\usepackage{graphicx}
\begin{document}
\title{Cloud@CNAF Management and Evolution}
\author{C. Duma$^1$, A. Costantini$^1$, D. Michelotto$^1$ and D. Salomoni$^1$}
\address{$^1$INFN Division CNAF, Bologna, Italy}
\ead{ds@cnaf.infn.it}
\begin{abstract}
Cloud@CNAF is the cloud infrastructure hosted at CNAF, based on open source solutions aiming
to serve different use cases present here. The infrastructure is the result of
the collaboration of a transversal group of people from all CNAF
functional units: networking, storage, farming, national services, distributed systems.
If 2016 was for the Cloud@CNAF IaaS (Infrastructure as a Service) based on OpenStack,
a period of consolidation and improvement, 2017 was an year of consolidation and
operation ended with an extreme event - the flooding of the DataCenter, when an
aqueduct pipe located in the street nearby CNAF went broke. This event caused
down of the entire DataCenter, including the Cloud@CNAF infrastructure.This paper
presents the activities carried out throughout 2018 to ensure the functioning
of the center cloud infrastructure, that saw the its migration from CNAF to INFN-Ferrara,
starting to the re-design of the entire to cope with the limited availability of
space and weigth imposed by the new location, to the physical migration of the
racks and remote management and operation of infrastructure in order to continue
to provide high-quality services for our users and communities.
\end{abstract}
\section{Introduction}
The main goal of Cloud@CNAF \cite{catc} project is to provide a production quality
Cloud Infrastructure for CNAF internal activities as well as national and
international projects hosted at CNAF:
\begin{itemize}
\item Internal activities
\begin{itemize}
\item Provisioning VM for CNAF departments and staff members
\item Tutorial and courses
\end{itemize}
\item National and international projects
\begin{itemize}
\item Providing VMs for experiments hosted at CNAF, like CMS, ATLAS, EEE and FAZIA
\item testbeds for testing the services developed by projects like the INDIGO-DataCloud, eXtreme-DataCLoud and DEEP-HybridDataCloud
\end{itemize}
\end{itemize}
The infrastructure made available is based on OpenStack \cite{openstack}, version Mitaka, with all the
services deployed using a High-Availability (HA) setup or in a
clustered manner (for ex. for the DBs used). During 2016 the infrastructure has been
enhanced, by adding new resources, compute and network, and its operation has been improved and guaranteed by
adding the monitoring part, improving the support, automating the maintenance activities.
Thanks to this enhancement, Cloud@CNAF was able to offer high reliable services to the users and communities who rely on such infrastructure.
At the end of 2017, on November 9th early at morning, an aqueduct pipe located in the street nearby CNAF, broke as documented in Ref. \cite{flood}.
As a result, a river of water and mud flowed towards the Tier1 data center. The level of the water did not exceeded the
threshold of safety of the waterproof doors but, due to the porosity of the external walls and the floor, it could find a way
into the data center. Both electric lines failed at about 7.10AM CET. Access to the data center was possible only
in the afternoon, after all the water had been pumped out.
As a result, the entire Tier1 data center went down, included the Cloud@CNAF infrastructure.
\section{The resource migration}
Some weeks after the flooding, has been decided to move the Cloud@CNAF core services in a different location
in order to recover the services provided for communities and experiments.
Thanks to a strong relationship, both University of Parma/INFN-Parma and INFN-Ferrara proposed to host our
core machinery and related services.
Due to the geographical proximity and the presence of Point of Presence (PoP) GARR, the
Cloud@CNAF core machinery was moved to the INFN-Ferrara location.
Unfortunately, we were not able to move all the Cloud@CNAF resources due to a limited power and weight availability in the new location.
For the above mentioned reason, the re-design of the new infrastructure has been considered.
As a first step, the services and the related machinery to move to the new - temporary - location have been selected in order to
fit the maximum power consumption and weight estimated for each of the two rooms devoted to host Cloud@CNAF services (see Table \ref{table:1} for details).
\begin{table} [ht]
\centering
\begin{tabular}{ l|c|c|c||c||c| }
\cline{2-6}
& \multicolumn{3}{c||}{Room1} & Room2 & Tot \\
\cline{2-5}
& Rack1 & Rack2 & Tot & Rack3 & \\
\hline
Power consumption (kW) & 8,88 & 4,91 & 13,79 (15) & 5,8 (7)& 19,59\\
Weight (Kg) & 201 & 151 & 352 (400Kg/mq) & 92 (400Kg/mq) & 444 \\
Occupancy (U) & 9 & 12 & 21 & 10 & 31 \\
\hline
\end{tabular}
\caption{Power consumption weight and occupancy for each Rack. In brackets, the maximum value admitted for the Room.}
\label{table:1}
\end{table}
\section{Re-design the new infrastructure}
Due to the limitations described in Table\ref{table:1} only three racks have been used to host Cloud@CNAF core service.
Among this three racks, the first hosts the storage resources, the second hosts the Openstack controller, the network
services and the GPFS cluster. The third hosts Ovirt and Openstack compute nodes, together with
some other ancillary services (see Table \ref{table:2} for details).
Rack1 and Rack2 have been connected by 2x40Gbps through our Brocade VDX switches and Rack1 and Rack3 have been connected
by 2x10Gbps through PowerConnect switches.
\begin{table} [ht]
\centering
\begin{tabular}{ c|l|l|l| }
\cline{2-4}
& \multicolumn{1}{|c|}{Rack1} & \multicolumn{1}{|c|}{Rack2} & \multicolumn{1}{|c|}{Rack3}\\
\hline
& VDX & VDX & PowerConnect x2 \\
Resources & EqualLogic & Cloud controllers & Ovirt nodes\\
and & Powervault & Cloud networks & Compute nodes\\
Services & & Gridstore & DBs nodes\\
& & Other services & Cloud UI\\
\hline
\end{tabular}
\caption{List of resources and services hosted per Rack}
\label{table:2}
\end{table}
Moreover, Rack1 is connected to PoP GARR with 1x1Gbps fiber connection to guarantee external connectivity.
A complete overview of the new infrastructure and related resource location is shown in Figure \ref{new_c_at_c}.
As depicted from the Figure \ref{new_c_at_c} and taking into account the limitations described in Table \ref{table:1}) the power consumption
has been limited up to 13,79kW in respect to Room1 (limit 15kW) and up to 5.8kW (limit 7kW) in respect to Room2.
The whole migration process (from the design to the reconfiguration of the new infrastructure) took just a business week
and after that the Cloud@CNAF infrastructure and related services where up and running, able to serve again different projects and communities.
Thanks to the experience and documentation gathered, in June 2018 - after the Tier1 returned in its production status,
Cloud@CNAF has been migrated back in less than three business days.
\section{Cloud@CNAF evolution}
Starting from the activity carried out in 2016 related to the improvements done at the infrastructure level \cite{catc}, in
2018 (after the return of the core infrastructure services due to the flooding)
the increase of the computing resources, in terms of quality and quantity, continued in order to enhance both the
services and the performance offered to users.
Thanks to such activity, during the last year the Cloud@CNAF saw a growth on the number of users and use cases
implemented in the infrastructure, in particular the number of projects increased up to 87 using approximately
1035 virtual CPUS, 1.766TB of RAM, with a total of 267 virtual machines (see Figure \ref{catc_monitor} for more details).
Among others, some of the projects that used the cloud infrastructure are:
\begin{itemize}
\item HARMONY - Proof-of-concept under the TTLab coordination, is a project aimed at finding resourceful medicines offensive against neoplasms in hematology,
\item EEE - Extreme Energy Events - Science inside Schools (EEE), is a special research activity about the origin of cosmic rays carried out with the essential contribution of students and teachers of high schools,
\item CHNET-DHLab - Cultural heritage network of INFN for the development of virtual laboratories services,
\item USER Support - for the development of experiments dashboard and the hosting of the production instance of the dashboard, displayed on the monitor present on the CNAF hallway,
\item EOSC-hub DODAS - Temaic service for Elastic Extension of Computing Centre batch resources on external clouds,
\item Services devoted to EU projects like DEEP-HDC \cite{deep}, XDC \cite{xdc} and EOSC-pilot \cite{pilot}.
\end{itemize}
\section{Conclusions and future work}
Due to a damage in the aqueduct pipe located in the street nearby CNAF, a river of water and mud flowed towards the Tier1 data center causing the
shutdown of the entire data center. For such reason, the services and related resources hosted by Cloud@CNAF went down.
To cope with this problem, the decision to temporary migrate the core resources and services of Clud@CNAF to INFN-Ferrara has been taken and adopted.
In order to do this, a complete re-design of the entire infrastructure was needed to tackle the limitations in terms of power consumption and
weight imposed by the new location.
The joint effort and expertise of all the CNAF people and the INFN-Ferrara colleagues made possible to re-design, migrate and make operational
the Cloud@CNAF infrastructure and related hosted services in less than a business week.
Thanks to the experience and the documentation gathered, in June 2018 - after the Tier1 returned in its production status, Cloud@CNAF
has been migrated back in less than three business days.
Even with the above described problems, the Cloud@CNAF infrastructure has been maintained and evolved, giving the possibility
to the users to carry on their activities and obtain their desidered results.
For the next year new and challenging activities are planned, in particular the migration to the OpenStack Rocky version and the deployment of a new architecture distributed between
differnet functional units, Data Center and SDDS.
\begin{figure}[h]
\centering
\includegraphics[width=15cm,clip]{infn-fe23.png}
\caption{The new architecture of the Cloud@CNAF developed to cope the limitations at INFN-Ferrara.}
\label{new_c_at_c}
\end{figure}
\begin{figure}[h]
\centering
\includegraphics[width=12cm,clip]{catc_monitoring.png}
\caption{Cloud@CNAF monitoring and status}
\label{catc_monitor}
\end{figure}
\section{References}
\begin{thebibliography}{}
\bibitem{catc}
Cloud@CNAF - maintenance and operation, C. Duma, R. Bucchi, A. Costantini, D. Michelotto, M. Panella, D. Salomoni and G. Zizzi, CNAF Annual Report 2016, https://www.cnaf.infn.it/Annual-Report/annual-report-2016.pdf
\bibitem{openstack}
Web site: https://www.openstack.org/
\bibitem{flood}
The flood, L. dell’Agnello, CNAF Annual Report 2017, https://www.cnaf.infn.it/wp-content/uploads/2018/09/cnaf-annual-report-2017.pdf
\bibitem{deep}
Web site: https://deep-hybrid-datacloud.eu/
\bibitem{xdc}
Web site: www.extreme-datacloud.eu
\bibitem{pilot}
Web site: https://eoscpilot.eu
\end{thebibliography}
\end{document}
contributions/ds_cloud_c/infn-fe23.png

82.5 KiB

File added
%%
%% This is file `iopams.sty'
%% File to include AMS fonts and extra definitions for bold greek
%% characters for use with iopart.cls
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{iopams}[1997/02/13 v1.0]
\RequirePackage{amsgen}[1995/01/01]
\RequirePackage{amsfonts}[1995/01/01]
\RequirePackage{amssymb}[1995/01/01]
\RequirePackage{amsbsy}[1995/01/01]
%
\iopamstrue % \newif\ifiopams in iopart.cls & iopbk2e.cls
% % allows optional text to be in author guidelines
%
% Bold lower case Greek letters
%
\newcommand{\balpha}{\boldsymbol{\alpha}}
\newcommand{\bbeta}{\boldsymbol{\beta}}
\newcommand{\bgamma}{\boldsymbol{\gamma}}
\newcommand{\bdelta}{\boldsymbol{\delta}}
\newcommand{\bepsilon}{\boldsymbol{\epsilon}}
\newcommand{\bzeta}{\boldsymbol{\zeta}}
\newcommand{\bfeta}{\boldsymbol{\eta}}
\newcommand{\btheta}{\boldsymbol{\theta}}
\newcommand{\biota}{\boldsymbol{\iota}}
\newcommand{\bkappa}{\boldsymbol{\kappa}}
\newcommand{\blambda}{\boldsymbol{\lambda}}
\newcommand{\bmu}{\boldsymbol{\mu}}
\newcommand{\bnu}{\boldsymbol{\nu}}
\newcommand{\bxi}{\boldsymbol{\xi}}
\newcommand{\bpi}{\boldsymbol{\pi}}
\newcommand{\brho}{\boldsymbol{\rho}}
\newcommand{\bsigma}{\boldsymbol{\sigma}}
\newcommand{\btau}{\boldsymbol{\tau}}
\newcommand{\bupsilon}{\boldsymbol{\upsilon}}
\newcommand{\bphi}{\boldsymbol{\phi}}
\newcommand{\bchi}{\boldsymbol{\chi}}
\newcommand{\bpsi}{\boldsymbol{\psi}}
\newcommand{\bomega}{\boldsymbol{\omega}}
\newcommand{\bvarepsilon}{\boldsymbol{\varepsilon}}
\newcommand{\bvartheta}{\boldsymbol{\vartheta}}
\newcommand{\bvaromega}{\boldsymbol{\varomega}}
\newcommand{\bvarrho}{\boldsymbol{\varrho}}
\newcommand{\bvarzeta}{\boldsymbol{\varsigma}} %NB really sigma
\newcommand{\bvarsigma}{\boldsymbol{\varsigma}}
\newcommand{\bvarphi}{\boldsymbol{\varphi}}
%
% Bold upright capital Greek letters
%
\newcommand{\bGamma}{\boldsymbol{\Gamma}}
\newcommand{\bDelta}{\boldsymbol{\Delta}}
\newcommand{\bTheta}{\boldsymbol{\Theta}}
\newcommand{\bLambda}{\boldsymbol{\Lambda}}
\newcommand{\bXi}{\boldsymbol{\Xi}}
\newcommand{\bPi}{\boldsymbol{\Pi}}
\newcommand{\bSigma}{\boldsymbol{\Sigma}}
\newcommand{\bUpsilon}{\boldsymbol{\Upsilon}}
\newcommand{\bPhi}{\boldsymbol{\Phi}}
\newcommand{\bPsi}{\boldsymbol{\Psi}}
\newcommand{\bOmega}{\boldsymbol{\Omega}}
%
% Bold versions of miscellaneous symbols
%
\newcommand{\bpartial}{\boldsymbol{\partial}}
\newcommand{\bell}{\boldsymbol{\ell}}
\newcommand{\bimath}{\boldsymbol{\imath}}
\newcommand{\bjmath}{\boldsymbol{\jmath}}
\newcommand{\binfty}{\boldsymbol{\infty}}
\newcommand{\bnabla}{\boldsymbol{\nabla}}
\newcommand{\bdot}{\boldsymbol{\cdot}}
%
% Symbols for caption
%
\renewcommand{\opensquare}{\mbox{$\square$}}
\renewcommand{\opentriangle}{\mbox{$\vartriangle$}}
\renewcommand{\opentriangledown}{\mbox{$\triangledown$}}
\renewcommand{\opendiamond}{\mbox{$\lozenge$}}
\renewcommand{\fullsquare}{\mbox{$\blacksquare$}}
\newcommand{\fulldiamond}{\mbox{$\blacklozenge$}}
\newcommand{\fullstar}{\mbox{$\bigstar$}}
\newcommand{\fulltriangle}{\mbox{$\blacktriangle$}}
\newcommand{\fulltriangledown}{\mbox{$\blacktriangledown$}}
\endinput
%%
%% End of file `iopams.sty'.
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{jpconf}
[2007/03/07 v1.1
LaTeX class for Journal of Physics: Conference Series]
%\RequirePackage{graphicx}
\newcommand\@ptsize{1}
\newif\if@restonecol
\newif\if@letterpaper
\newif\if@titlepage
\newif\ifiopams
\@titlepagefalse
\@letterpaperfalse
\DeclareOption{a4paper}
{\setlength\paperheight {297mm}%
\setlength\paperwidth {210mm}%
\@letterpaperfalse}
\DeclareOption{letterpaper}
{\setlength\paperheight {279.4mm}%
\setlength\paperwidth {215.9mm}%
\@letterpapertrue}
\DeclareOption{landscape}
{\setlength\@tempdima {\paperheight}%
\setlength\paperheight {\paperwidth}%
\setlength\paperwidth {\@tempdima}}
\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
\renewcommand\@ptsize{1}
%\ExecuteOptions{A4paper, twoside}
\ExecuteOptions{A4paper}
\ProcessOptions
\DeclareMathAlphabet{\bi}{OML}{cmm}{b}{it}
\DeclareMathAlphabet{\bcal}{OMS}{cmsy}{b}{n}
\input{jpconf1\@ptsize.clo}
\setlength\lineskip{1\p@}
\setlength\normallineskip{1\p@}
\renewcommand\baselinestretch{}
\setlength\parskip{0\p@ \@plus \p@}
\@lowpenalty 51
\@medpenalty 151
\@highpenalty 301
\setlength\parindent{5mm}
\setcounter{topnumber}{8}
\renewcommand\topfraction{1}
\setcounter{bottomnumber}{3}
\renewcommand\bottomfraction{.99}
\setcounter{totalnumber}{8}
\renewcommand\textfraction{0.01}
\renewcommand\floatpagefraction{.8}
\setcounter{dbltopnumber}{6}
\renewcommand\dbltopfraction{1}
\renewcommand\dblfloatpagefraction{.8}
\renewcommand{\title}{\@ifnextchar[{\@stitle}{\@ftitle}}
\pretolerance=5000
\tolerance=8000
% Headings for all pages apart from first
%
\def\ps@headings{%
\let\@oddfoot\@empty
\let\@evenfoot\@empty
\let\@oddhead\@empty
\let\@evenhead\@empty
%\def\@evenhead{\thepage\hfil\itshape\rightmark}%
%\def\@oddhead{{\itshape\leftmark}\hfil\thepage}%
%\def\@evenhead{{\itshape Journal of Physics: Conference Series}\hfill}%
%\def\@oddhead{\hfill {\itshape Journal of Physics: Conference Series}}%%
\let\@mkboth\markboth
\let\sectionmark\@gobble
\let\subsectionmark\@gobble}
%
% Headings for first page
%
\def\ps@myheadings{\let\@oddfoot\@empty\let\@evenfoot\@empty
\let\@oddhead\@empty\let\@evenhead\@empty
\let\@mkboth\@gobbletwo
\let\sectionmark\@gobble
\let\subsectionmark\@gobble}
%
\def\@stitle[#1]#2{\markboth{#1}{#1}%
%\pagestyle{empty}%
\thispagestyle{myheadings}
\vspace*{25mm}{\exhyphenpenalty=10000\hyphenpenalty=10000
%\Large
\fontsize{18bp}{24bp}\selectfont\bf\raggedright\noindent#2\par}}
\def\@ftitle#1{\markboth{#1}{#1}%
\thispagestyle{myheadings}
%\pagestyle{empty}%
\vspace*{25mm}{\exhyphenpenalty=10000\hyphenpenalty=10000
%\Large\raggedright\noindent\bf#1\par}
\fontsize{18bp}{24bp}\selectfont\bf\noindent\raggedright#1\par}}
%AUTHOR
\renewcommand{\author}{\@ifnextchar[{\@sauthor}{\@fauthor}}
\def\@sauthor[#1]#2{\markright{#1} % for production only
\vspace*{1.5pc}%
\begin{indented}%
\item[]\normalsize\bf\raggedright#2
\end{indented}%
\smallskip}
\def\@fauthor#1{%\markright{#1} for production only
\vspace*{1.5pc}%
\begin{indented}%
\item[]\normalsize\bf\raggedright#1
\end{indented}%
\smallskip}
%E-MAIL
\def\eads#1{\vspace*{5pt}\address{E-mail: #1}}
\def\ead#1{\vspace*{5pt}\address{E-mail: \mailto{#1}}}
\def\mailto#1{{\tt #1}}
%ADDRESS
\newcommand{\address}[1]{\begin{indented}
\item[]\rm\raggedright #1
\end{indented}}
\newlength{\indentedwidth}
\newdimen\mathindent
\mathindent = 6pc
\indentedwidth=\mathindent
% FOOTNOTES
%\renewcommand\footnoterule{%
% \kern-3\p@
% \hrule\@width.4\columnwidth
% \kern2.6\p@}
%\newcommand\@makefntext[1]{%
% \parindent 1em%
% \noindent
% \hb@xt@1.8em{\hss\@makefnmark}#1}
% Footnotes: symbols selected in same order as address indicators
% unless optional argument of [<num>] use to specify required symbol,
% 1=\dag, 2=\ddag, etc
% Usage: \footnote{Text of footnote}
% \footnote[3]{Text of footnote}
%
\def\footnoterule{}%
\setcounter{footnote}{0}
\long\def\@makefntext#1{\parindent 1em\noindent
\makebox[1em][l]{\footnotesize\rm$\m@th{\fnsymbol{footnote}}$}%
\footnotesize\rm #1}
\def\@makefnmark{\normalfnmark}
\def\normalfnmark{\hbox{${\fnsymbol{footnote}}\m@th$}}
\def\altfnmark{\hbox{$^{\rm Note}\ {\fnsymbol{footnote}}\m@th$}}
\def\footNote#1{\let\@makefnmark\altfnmark\footnote{#1}\let\@makefnmark\normalfnmark}
\def\@thefnmark{\fnsymbol{footnote}}
\def\footnote{\protect\pfootnote}
\def\pfootnote{\@ifnextchar[{\@xfootnote}{\stepcounter{\@mpfn}%
\begingroup\let\protect\noexpand
\xdef\@thefnmark{\thempfn}\endgroup
\@footnotemark\@footnotetext}}
\def\@xfootnote[#1]{\setcounter{footnote}{#1}%
\addtocounter{footnote}{-1}\footnote}
\newcommand\ftnote{\protect\pftnote}
\newcommand\pftnote[1]{\setcounter{footnote}{#1}%
\addtocounter{footnote}{-1}\footnote}
\newcommand{\fnm}[1]{\setcounter{footnote}{#1}\footnotetext}
\def\@fnsymbol#1{\ifnum\thefootnote=99\hbox{*}\else^{\thefootnote}\fi\relax}
%
% Address marker
%
\newcommand{\ad}[1]{\noindent\hbox{$^{#1}$}\relax}
\newcommand{\adnote}[2]{\noindent\hbox{$^{#1,}$}\setcounter{footnote}{#2}%
\addtocounter{footnote}{-1}\footnote}
\def\@tnote{}
\newcounter{oldftnote}
\newcommand{\tnote}[1]{*\gdef\@tnote{%
\setcounter{oldftnote}{\c@footnote}%
\setcounter{footnote}{99}%
\footnotetext{#1}%
\setcounter{footnote}{\c@oldftnote}\addtocounter{footnote}{-1}}}
%==================
% Acknowledgments (no heading if letter)
% Usage \ack for Acknowledgments, \ackn for Acknowledgement
\def\ack{\section*{Acknowledgments}}
\def\ackn{\section*{Acknowledgment}}
%SECTION DEFINITIONS
\setcounter{secnumdepth}{3}
\newcounter {section}
\newcounter {subsection}[section]
\newcounter {subsubsection}[subsection]
\newcounter {paragraph}[subsubsection]
\newcounter {subparagraph}[paragraph]
\renewcommand \thesection {\arabic{section}}
\renewcommand\thesubsection {\thesection.\arabic{subsection}}
\renewcommand\thesubsubsection{\thesubsection .\arabic{subsubsection}}
\renewcommand\theparagraph {\thesubsubsection.\arabic{paragraph}}
\renewcommand\thesubparagraph {\theparagraph.\arabic{subparagraph}}
%\nosections
\def\nosections{\vspace{30\p@ plus12\p@ minus12\p@}
\noindent\ignorespaces}
%\renewcommand{\@startsection}[6]
%{%
%\if@noskipsec \leavevmode \fi
%\par
% \@tempskipa #4\relax
%%\@tempskipa 0pt\relax
% \@afterindenttrue
% \ifdim \@tempskipa <\z@
% \@tempskipa -\@tempskipa \@afterindentfalse
% \fi
% \if@nobreak
% \everypar{}%
% \else
% \addpenalty\@secpenalty\addvspace\@tempskipa
% \fi
% \@ifstar
% {\@ssect{#3}{#4}{#5}{#6}}%
% {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
%\renewcommand{\@sect}[8]{%
% \ifnum #2>\c@secnumdepth
% \let\@svsec\@empty
% \else
% \refstepcounter{#1}%
% \protected@edef\@svsec{\@seccntformat{#1}\relax}%
% \fi
% \@tempskipa #5\relax
% \ifdim \@tempskipa>\z@
% \begingroup
% #6{%
% \@hangfrom{\hskip #3\relax\@svsec}%
% \interlinepenalty \@M #8\@@par}%
% \endgroup
% \csname #1mark\endcsname{#7}%
% \addcontentsline{toc}{#1}{%
% \ifnum #2>\c@secnumdepth \else
% \protect\numberline{\csname the#1\endcsname}%
% \fi
% #7}%
% \else
% \def\@svsechd{%
% #6{\hskip #3\relax
% \@svsec #8}%
% \csname #1mark\endcsname{#7}%
% \addcontentsline{toc}{#1}{%
% \ifnum #2>\c@secnumdepth \else
% \protect\numberline{\csname the#1\endcsname}%
% \fi
% #7}}%
% \fi
% \@xsect{#5}}
%\renewcommand{\@xsect}[1]{%
% \@tempskipa #1\relax
% \ifdim \@tempskipa>\z@
% \par \nobreak
% \vskip \@tempskipa
% \@afterheading
% \else
% \@nobreakfalse
% \global\@noskipsectrue
% \everypar{%
% \if@noskipsec
% \global\@noskipsecfalse
% {\setbox\z@\lastbox}%
% \clubpenalty\@M
% \begingroup \@svsechd \endgroup
% \unskip
% \@tempskipa #1\relax
% \hskip -\@tempskipa
% \else
% \clubpenalty \@clubpenalty
% \everypar{}%
% \fi}%
% \fi
% \ignorespaces}
%========================================================================
\newcommand\section{\@startsection {section}{1}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1sp}%
{\reset@font\normalsize\bfseries\raggedright}}
\newcommand\subsection{\@startsection{subsection}{2}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1sp}%
{\reset@font\normalsize\itshape\raggedright}}
\newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{-1em \@plus .2em}%
{\reset@font\normalsize\itshape}}
\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
{3.25ex \@plus1ex \@minus.2ex}%
{-1em}%
{\reset@font\normalsize\itshape}}
\newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
{3.25ex \@plus1ex \@minus .2ex}%
{-1em}%
{\reset@font\normalsize\itshape}}
\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth
\let\@svsec\@empty\else
\refstepcounter{#1}\edef\@svsec{\csname the#1\endcsname. }\fi
\@tempskipa #5\relax
\ifdim \@tempskipa>\z@
\begingroup #6\relax
\noindent{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par}%
\endgroup
\csname #1mark\endcsname{#7}\addcontentsline
{toc}{#1}{\ifnum #2>\c@secnumdepth \else
\protect\numberline{\csname the#1\endcsname}\fi
#7}\else
\def\@svsechd{#6\hskip #3\relax %% \relax added 2 May 90
\@svsec #8\csname #1mark\endcsname
{#7}\addcontentsline
{toc}{#1}{\ifnum #2>\c@secnumdepth \else
\protect\numberline{\csname the#1\endcsname}\fi
#7}}\fi
\@xsect{#5}}
%
\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax
\ifdim \@tempskipa>\z@
\begingroup #4\noindent{\hskip #1}{\interlinepenalty \@M #5\par}\endgroup
\else \def\@svsechd{#4\hskip #1\relax #5}\fi
\@xsect{#3}}
% LIST DEFINITIONS
\setlength\leftmargini {2em}
\leftmargin \leftmargini
\setlength\leftmarginii {2em}
\setlength\leftmarginiii {1.8em}
\setlength\leftmarginiv {1.6em}
\setlength\leftmarginv {1em}
\setlength\leftmarginvi {1em}
\setlength\leftmargin{\leftmargini}
\setlength \labelsep {.5em}
\setlength \labelwidth{\leftmargini}
\addtolength\labelwidth{-\labelsep}
\@beginparpenalty -\@lowpenalty
\@endparpenalty -\@lowpenalty
\@itempenalty -\@lowpenalty
\renewcommand\theenumi{\roman{enumi}}
\renewcommand\theenumii{\alph{enumii}}
\renewcommand\theenumiii{\arabic{enumiii}}
\renewcommand\theenumiv{\Alph{enumiv}}
\newcommand\labelenumi{(\theenumi)}
\newcommand\labelenumii{(\theenumii)}
\newcommand\labelenumiii{\theenumiii.}
\newcommand\labelenumiv{(\theenumiv)}
\renewcommand\p@enumii{(\theenumi)}
\renewcommand\p@enumiii{(\theenumi.\theenumii)}
\renewcommand\p@enumiv{(\theenumi.\theenumii.\theenumiii)}
\newcommand\labelitemi{$\m@th\bullet$}
\newcommand\labelitemii{\normalfont\bfseries --}
\newcommand\labelitemiii{$\m@th\ast$}
\newcommand\labelitemiv{$\m@th\cdot$}
\renewcommand \theequation {\@arabic\c@equation}
%%%%%%%%%%%%% Figures
\newcounter{figure}
\renewcommand\thefigure{\@arabic\c@figure}
\def\fps@figure{tbp}
\def\ftype@figure{1}
\def\ext@figure{lof}
\def\fnum@figure{\figurename~\thefigure}
\newenvironment{figure}{\footnotesize\rm\@float{figure}}%
{\end@float\normalsize\rm}
\newenvironment{figure*}{\footnotesize\rm\@dblfloat{figure}}{\end@dblfloat}
\newcounter{table}
\renewcommand\thetable{\@arabic\c@table}
\def\fps@table{tbp}
\def\ftype@table{2}
\def\ext@table{lot}
\def\fnum@table{\tablename~\thetable}
\newenvironment{table}{\footnotesize\rm\@float{table}}%
{\end@float\normalsize\rm}
\newenvironment{table*}{\footnotesize\rm\@dblfloat{table}}%
{\end@dblfloat\normalsize\rm}
\newlength\abovecaptionskip
\newlength\belowcaptionskip
\setlength\abovecaptionskip{10\p@}
\setlength\belowcaptionskip{0\p@}
%Table Environments
%\newenvironment{tableref}[3][\textwidth]{%
%\begin{center}%
%\begin{table}%
%\captionsetup[table]{width=#1}
%\centering\caption{\label{#2}#3}}{\end{table}\end{center}}
%%%%%%%%%%%%%%%%%
%\newcounter{figure}
%\renewcommand \thefigure {\@arabic\c@figure}
%\def\fps@figure{tbp}
%\def\ftype@figure{1}
%\def\ext@figure{lof}
%\def\fnum@figure{\figurename~\thefigure}
%ENVIRONMENT: figure
%\newenvironment{figure}
% {\@float{figure}}
% {\end@float}
%ENVIRONMENT: figure*
%\newenvironment{figure*}
% {\@dblfloat{figure}}
% {\end@dblfloat}
%ENVIRONMENT: table
%\newcounter{table}
%\renewcommand\thetable{\@arabic\c@table}
%\def\fps@table{tbp}
%\def\ftype@table{2}
%\def\ext@table{lot}
%\def\fnum@table{\tablename~\thetable}
%\newenvironment{table}
% {\@float{table}}
% {\end@float}
%ENVIRONMENT: table*
%\newenvironment{table*}
% {\@dblfloat{table}}
% {\end@dblfloat}
%\newlength\abovecaptionskip
%\newlength\belowcaptionskip
%\setlength\abovecaptionskip{10\p@}
%\setlength\belowcaptionskip{0\p@}
% CAPTIONS
% Added redefinition of \@caption so captions are not written to
% aux file therefore less need to \protect fragile commands
%
\long\def\@caption#1[#2]#3{\par\begingroup
\@parboxrestore
\normalsize
\@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
\endgroup}
\long\def\@makecaption#1#2{%
\vskip\abovecaptionskip
\sbox\@tempboxa{{\bf #1.} #2}%
\ifdim \wd\@tempboxa >\hsize
{\bf #1.} #2\par
\else
\global \@minipagefalse
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\vskip\belowcaptionskip}
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
%\newcommand\@pnumwidth{1.55em}
%\newcommand\@tocrmarg{2.55em}
%\newcommand\@dotsep{4.5}
%\setcounter{tocdepth}{3}
%\newcommand\tableofcontents{%
% \section*{\contentsname
% \@mkboth{%
% \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
% \@starttoc{toc}%
% }
%\newcommand*\l@part[2]{%
% \ifnum \c@tocdepth >-2\relax
% \addpenalty\@secpenalty
% \addvspace{2.25em \@plus\p@}%
% \begingroup
% \parindent \z@ \rightskip \@pnumwidth
% \parfillskip -\@pnumwidth
% {\leavevmode
% \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par
% \nobreak
% \if@compatibility
% \global\@nobreaktrue
% \everypar{\global\@nobreakfalse\everypar{}}%
% \fi
% \endgroup
% \fi}
%\newcommand*\l@section[2]{%
% \ifnum \c@tocdepth >\z@
% \addpenalty\@secpenalty
% \addvspace{1.0em \@plus\p@}%
% \setlength\@tempdima{1.5em}%
% \begingroup
% \parindent \z@ \rightskip \@pnumwidth
% \parfillskip -\@pnumwidth
% \leavevmode \bfseries
% \advance\leftskip\@tempdima
% \hskip -\leftskip
% #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
% \endgroup
% \fi}
%\newcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
%\newcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
%\newcommand*\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
%\newcommand*\l@subparagraph{\@dottedtocline{5}{10em}{5em}}
%\newcommand\listoffigures{%
% \section*{\listfigurename
% \@mkboth{\MakeUppercase\listfigurename}%
% {\MakeUppercase\listfigurename}}%
% \@starttoc{lof}%
% }
%\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
%\newcommand\listoftables{%
% \section*{\listtablename
% \@mkboth{%
% \MakeUppercase\listtablename}{\MakeUppercase\listtablename}}%
% \@starttoc{lot}%
% }
%\let\l@table\l@figure
%======================================
%ENVIRONMENTS
%======================================
%ENVIRONMENT: indented
\newenvironment{indented}{\begin{indented}}{\end{indented}}
\newenvironment{varindent}[1]{\begin{varindent}{#1}}{\end{varindent}}
%
\def\indented{\list{}{\itemsep=0\p@\labelsep=0\p@\itemindent=0\p@
\labelwidth=0\p@\leftmargin=\mathindent\topsep=0\p@\partopsep=0\p@
\parsep=0\p@\listparindent=15\p@}\footnotesize\rm}
\let\endindented=\endlist
\def\varindent#1{\setlength{\varind}{#1}%
\list{}{\itemsep=0\p@\labelsep=0\p@\itemindent=0\p@
\labelwidth=0\p@\leftmargin=\varind\topsep=0\p@\partopsep=0\p@
\parsep=0\p@\listparindent=15\p@}\footnotesize\rm}
\let\endvarindent=\endlist
%ENVIRONMENT: abstract
\newenvironment{abstract}{%
\vspace{16pt plus3pt minus3pt}
\begin{indented}
\item[]{\bfseries \abstractname.}\quad\rm\ignorespaces}
{\end{indented}\vspace{10mm}}
%ENVIRONMENT: description
\newenvironment{description}
{\list{}{\labelwidth\z@ \itemindent-\leftmargin
\let\makelabel\descriptionlabel}}
{\endlist}
\newcommand\descriptionlabel[1]{\hspace\labelsep
\normalfont\bfseries #1}
%ENVIRONMENT: quotation
\newenvironment{quotation}
{\list{}{\listparindent 1.5em%
\itemindent \listparindent
\rightmargin \leftmargin
\parsep \z@ \@plus\p@}%
\item[]}
{\endlist}
%ENVIRONMENT: quote
\newenvironment{quote}
{\list{}{\rightmargin\leftmargin}%
\item[]}
{\endlist}
%ENVIRONMENT: verse
\newenvironment{verse}
{\let\\=\@centercr
\list{}{\itemsep \z@
\itemindent -1.5em%
\listparindent\itemindent
\rightmargin \leftmargin
\advance\leftmargin 1.5em}%
\item[]}
{\endlist}
%ENVIRONMENT: bibliography
\newdimen\bibindent
\setlength\bibindent{1.5em}
\def\thebibliography#1{\list
{\hfil[\arabic{enumi}]}{\topsep=0\p@\parsep=0\p@
\partopsep=0\p@\itemsep=0\p@
\labelsep=5\p@\itemindent=-10\p@
\settowidth\labelwidth{\footnotesize[#1]}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\advance\leftmargin -\itemindent
\usecounter{enumi}}\footnotesize
\def\newblock{\ }
\sloppy\clubpenalty4000\widowpenalty4000
\sfcode`\.=1000\relax}
\let\endthebibliography=\endlist
\def\numrefs#1{\begin{thebibliography}{#1}}
\def\endnumrefs{\end{thebibliography}}
\let\endbib=\endnumrefs
%%%%%%%%%%%%%%%%%%
%\newenvironment{thebibliography}[1]
% {\section*{References}
% \list{\@biblabel{\@arabic\c@enumiv}}%
% {\settowidth\labelwidth{\@biblabel{#1}}%
% \leftmargin\labelwidth
% \advance\leftmargin\labelsep
% \@openbib@code
% \usecounter{enumiv}%
% \let\p@enumiv\@empty
% \renewcommand\theenumiv{\@arabic\c@enumiv}}%
% \sloppy
% \clubpenalty4000
% \@clubpenalty \clubpenalty
% \widowpenalty4000%
% \sfcode`\.\@m}
% {\def\@noitemerr
% {\@latex@warning{Empty `thebibliography' environment}}%
% \endlist}
%\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
%\let\@openbib@code\@empty
%ENVIRONMENT: theindex
\newenvironment{theindex}
{\if@twocolumn
\@restonecolfalse
\else
\@restonecoltrue
\fi
\columnseprule \z@
\columnsep 35\p@
\twocolumn[\section*{\indexname}]%
\@mkboth{\MakeUppercase\indexname}%
{\MakeUppercase\indexname}%
\thispagestyle{plain}\parindent\z@
\parskip\z@ \@plus .3\p@\relax
\let\item\@idxitem}
{\if@restonecol\onecolumn\else\clearpage\fi}
\newcommand\@idxitem{\par\hangindent 40\p@}
\newcommand\subitem{\@idxitem \hspace*{20\p@}}
\newcommand\subsubitem{\@idxitem \hspace*{30\p@}}
\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
%=====================
\def\appendix{\@ifnextchar*{\@appendixstar}{\@appendix}}
\def\@appendix{\eqnobysec\@appendixstar}
\def\@appendixstar{\@@par
\ifnumbysec % Added 30/4/94 to get Table A1,
\@addtoreset{table}{section} % Table B1 etc if numbering by
\@addtoreset{figure}{section}\fi % section
\setcounter{section}{0}
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\setcounter{equation}{0}
\setcounter{figure}{0}
\setcounter{table}{0}
\def\thesection{Appendix \Alph{section}}
\def\theequation{\ifnumbysec
\Alph{section}.\arabic{equation}\else
\Alph{section}\arabic{equation}\fi} % Comment A\arabic{equation} maybe
\def\thetable{\ifnumbysec % better? 15/4/95
\Alph{section}\arabic{table}\else
A\arabic{table}\fi}
\def\thefigure{\ifnumbysec
\Alph{section}\arabic{figure}\else
A\arabic{figure}\fi}}
\def\noappendix{\setcounter{figure}{0}
\setcounter{table}{0}
\def\thetable{\arabic{table}}
\def\thefigure{\arabic{figure}}}
\setlength\arraycolsep{5\p@}
\setlength\tabcolsep{6\p@}
\setlength\arrayrulewidth{.4\p@}
\setlength\doublerulesep{2\p@}
\setlength\tabbingsep{\labelsep}
\skip\@mpfootins = \skip\footins
\setlength\fboxsep{3\p@}
\setlength\fboxrule{.4\p@}
\renewcommand\theequation{\arabic{equation}}
% NAME OF STRUCTURES
\newcommand\contentsname{Contents}
\newcommand\listfigurename{List of Figures}
\newcommand\listtablename{List of Tables}
\newcommand\refname{References}
\newcommand\indexname{Index}
\newcommand\figurename{Figure}
\newcommand\tablename{Table}
\newcommand\partname{Part}
\newcommand\appendixname{Appendix}
\newcommand\abstractname{Abstract}
%Miscellaneous commands
\newcommand{\BibTeX}{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em
T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}
\newcommand{\jpcsit}{{\bfseries\itshape\selectfont Journal of Physics: Conference Series}}
\newcommand{\jpcs}{{\itshape\selectfont Journal of Physics: Conference Series}}
\newcommand{\iopp}{IOP Publishing}
\newcommand{\cls}{{\upshape\selectfont\texttt{jpconf.cls}}}
\newcommand{\corg}{conference organizer}
\newcommand\today{\number\day\space\ifcase\month\or
January\or February\or March\or April\or May\or June\or
July\or August\or September\or October\or November\or December\fi
\space\number\year}
\setlength\columnsep{10\p@}
\setlength\columnseprule{0\p@}
\newcommand{\Tables}{\clearpage\section*{Tables and table captions}
\def\fps@table{hp}\noappendix}
\newcommand{\Figures}{\clearpage\section*{Figure captions}
\def\fps@figure{hp}\noappendix}
%
\newcommand{\Figure}[1]{\begin{figure}
\caption{#1}
\end{figure}}
%
\newcommand{\Table}[1]{\begin{table}
\caption{#1}
\begin{indented}
\lineup
\item[]\begin{tabular}{@{}l*{15}{l}}}
\def\endTable{\end{tabular}\end{indented}\end{table}}
\let\endtab=\endTable
%
\newcommand{\fulltable}[1]{\begin{table}
\caption{#1}
\lineup
\begin{tabular*}{\textwidth}{@{}l*{15}{@{\extracolsep{0pt plus 12pt}}l}}}
\def\endfulltable{\end{tabular*}\end{table}}
%BIBLIOGRAPHY and References
%\newcommand{\Bibliography}[1]{\section*{References}\par\numrefs{#1}}
%\newcommand{\References}{\section*{References}\par\refs}
%\def\thebibliography#1{\list
% {\hfil[\arabic{enumi}]}{\topsep=0\p@\parsep=0\p@
% \partopsep=0\p@\itemsep=0\p@
% \labelsep=5\p@\itemindent=-10\p@
% \settowidth\labelwidth{\footnotesize[#1]}%
% \leftmargin\labelwidth
% \advance\leftmargin\labelsep
% \advance\leftmargin -\itemindent
% \usecounter{enumi}}\footnotesize
% \def\newblock{\ }
% \sloppy\clubpenalty4000\widowpenalty4000
% \sfcode`\.=1000\relax}
%\let\endthebibliography=\endlist
%\def\numrefs#1{\begin{thebibliography}{#1}}
%\def\endnumrefs{\end{thebibliography}}
%\let\endbib=\endnumrefs
\def\thereferences{\list{}{\topsep=0\p@\parsep=0\p@
\partopsep=0\p@\itemsep=0\p@\labelsep=0\p@\itemindent=-18\p@
\labelwidth=0\p@\leftmargin=18\p@
}\footnotesize\rm
\def\newblock{\ }
\sloppy\clubpenalty4000\widowpenalty4000
\sfcode`\.=1000\relax}%
\let\endthereferences=\endlist
% MISC EQUATRION STUFF
%\def\[{\relax\ifmmode\@badmath\else
% \begin{trivlist}
% \@beginparpenalty\predisplaypenalty
% \@endparpenalty\postdisplaypenalty
% \item[]\leavevmode
% \hbox to\linewidth\bgroup$ \displaystyle
% \hskip\mathindent\bgroup\fi}
%\def\]{\relax\ifmmode \egroup $\hfil \egroup \end{trivlist}\else \@badmath \fi}
%\def\equation{\@beginparpenalty\predisplaypenalty
% \@endparpenalty\postdisplaypenalty
%\refstepcounter{equation}\trivlist \item[]\leavevmode
% \hbox to\linewidth\bgroup $ \displaystyle
%\hskip\mathindent}
%\def\endequation{$\hfil \displaywidth\linewidth\@eqnnum\egroup \endtrivlist}
%\@namedef{equation*}{\[}
%\@namedef{endequation*}{\]}
%\def\eqnarray{\stepcounter{equation}\let\@currentlabel=\theequation
%\global\@eqnswtrue
%\global\@eqcnt\z@\tabskip\mathindent\let\\=\@eqncr
%\abovedisplayskip\topsep\ifvmode\advance\abovedisplayskip\partopsep\fi
%\belowdisplayskip\abovedisplayskip
%\belowdisplayshortskip\abovedisplayskip
%\abovedisplayshortskip\abovedisplayskip
%$$\halign to
%\linewidth\bgroup\@eqnsel$\displaystyle\tabskip\z@
% {##{}}$&\global\@eqcnt\@ne $\displaystyle{{}##{}}$\hfil
% &\global\@eqcnt\tw@ $\displaystyle{{}##}$\hfil
% \tabskip\@centering&\llap{##}\tabskip\z@\cr}
%\def\endeqnarray{\@@eqncr\egroup
% \global\advance\c@equation\m@ne$$\global\@ignoretrue }
%\mathindent = 6pc
%%
%\def\eqalign#1{\null\vcenter{\def\\{\cr}\openup\jot\m@th
% \ialign{\strut$\displaystyle{##}$\hfil&$\displaystyle{{}##}$\hfil
% \crcr#1\crcr}}\,}
%%
%\def\eqalignno#1{\displ@y \tabskip\z@skip
% \halign to\displaywidth{\hspace{5pc}$\@lign\displaystyle{##}$%
% \tabskip\z@skip
% &$\@lign\displaystyle{{}##}$\hfill\tabskip\@centering
% &\llap{$\@lign\hbox{\rm##}$}\tabskip\z@skip\crcr
% #1\crcr}}
%%
\newif\ifnumbysec
\def\theequation{\ifnumbysec
\arabic{section}.\arabic{equation}\else
\arabic{equation}\fi}
\def\eqnobysec{\numbysectrue\@addtoreset{equation}{section}}
\newcounter{eqnval}
\def\numparts{\addtocounter{equation}{1}%
\setcounter{eqnval}{\value{equation}}%
\setcounter{equation}{0}%
\def\theequation{\ifnumbysec
\arabic{section}.\arabic{eqnval}{\it\alph{equation}}%
\else\arabic{eqnval}{\it\alph{equation}}\fi}}
\def\endnumparts{\def\theequation{\ifnumbysec
\arabic{section}.\arabic{equation}\else
\arabic{equation}\fi}%
\setcounter{equation}{\value{eqnval}}}
%
\def\cases#1{%
\left\{\,\vcenter{\def\\{\cr}\normalbaselines\openup1\jot\m@th%
\ialign{\strut$\displaystyle{##}\hfil$&\tqs
\rm##\hfil\crcr#1\crcr}}\right.}%
\def\eqalign#1{\null\vcenter{\def\\{\cr}\openup\jot\m@th
\ialign{\strut$\displaystyle{##}$\hfil&$\displaystyle{{}##}$\hfil
\crcr#1\crcr}}\,}
% OTHER USEFUL BITS
\newcommand{\e}{\mathrm{e}}
\newcommand{\rme}{\mathrm{e}}
\newcommand{\rmi}{\mathrm{i}}
\newcommand{\rmd}{\mathrm{d}}
\renewcommand{\qquad}{\hspace*{25pt}}
\newcommand{\tdot}[1]{\stackrel{\dots}{#1}} % Added 1/9/94
\newcommand{\tqs}{\hspace*{25pt}}
\newcommand{\fl}{\hspace*{-\mathindent}}
\newcommand{\Tr}{\mathop{\mathrm{Tr}}\nolimits}
\newcommand{\tr}{\mathop{\mathrm{tr}}\nolimits}
\newcommand{\Or}{\mathord{\mathrm{O}}} %changed from \mathop 20/1/95
\newcommand{\lshad}{[\![}
\newcommand{\rshad}{]\!]}
\newcommand{\case}[2]{{\textstyle\frac{#1}{#2}}}
\def\pt(#1){({\it #1\/})}
\newcommand{\dsty}{\displaystyle}
\newcommand{\tsty}{\textstyle}
\newcommand{\ssty}{\scriptstyle}
\newcommand{\sssty}{\scriptscriptstyle}
\def\lo#1{\llap{${}#1{}$}}
\def\eql{\llap{${}={}$}}
\def\lsim{\llap{${}\sim{}$}}
\def\lsimeq{\llap{${}\simeq{}$}}
\def\lequiv{\llap{${}\equiv{}$}}
%
\newcommand{\eref}[1]{(\ref{#1})}
%\newcommand{\eqref}[1]{Equation (\ref{#1})}
%\newcommand{\Eqref}[1]{Equation (\ref{#1})}
\newcommand{\sref}[1]{section~\ref{#1}}
\newcommand{\fref}[1]{figure~\ref{#1}}
\newcommand{\tref}[1]{table~\ref{#1}}
\newcommand{\Sref}[1]{Section~\ref{#1}}
\newcommand{\Fref}[1]{Figure~\ref{#1}}
\newcommand{\Tref}[1]{Table~\ref{#1}}
\newcommand{\opencircle}{\mbox{\Large$\circ\,$}} % moved Large outside maths
\newcommand{\opensquare}{\mbox{$\rlap{$\sqcap$}\sqcup$}}
\newcommand{\opentriangle}{\mbox{$\triangle$}}
\newcommand{\opentriangledown}{\mbox{$\bigtriangledown$}}
\newcommand{\opendiamond}{\mbox{$\diamondsuit$}}
\newcommand{\fullcircle}{\mbox{{\Large$\bullet\,$}}} % moved Large outside maths
\newcommand{\fullsquare}{\,\vrule height5pt depth0pt width5pt}
\newcommand{\dotted}{\protect\mbox{${\mathinner{\cdotp\cdotp\cdotp\cdotp\cdotp\cdotp}}$}}
\newcommand{\dashed}{\protect\mbox{-\; -\; -\; -}}
\newcommand{\broken}{\protect\mbox{-- -- --}}
\newcommand{\longbroken}{\protect\mbox{--- --- ---}}
\newcommand{\chain}{\protect\mbox{--- $\cdot$ ---}}
\newcommand{\dashddot}{\protect\mbox{--- $\cdot$ $\cdot$ ---}}
\newcommand{\full}{\protect\mbox{------}}
\def\;{\protect\psemicolon}
\def\psemicolon{\relax\ifmmode\mskip\thickmuskip\else\kern .3333em\fi}
\def\lineup{\def\0{\hbox{\phantom{0}}}%
\def\m{\hbox{$\phantom{-}$}}%
\def\-{\llap{$-$}}}
%
%%%%%%%%%%%%%%%%%%%%%
% Tables rules %
%%%%%%%%%%%%%%%%%%%%%
\newcommand{\boldarrayrulewidth}{1\p@}
% Width of bold rule in tabular environment.
\def\bhline{\noalign{\ifnum0=`}\fi\hrule \@height
\boldarrayrulewidth \futurelet \@tempa\@xhline}
\def\@xhline{\ifx\@tempa\hline\vskip \doublerulesep\fi
\ifnum0=`{\fi}}
%
% Rules for tables with extra space around
%
\newcommand{\br}{\ms\bhline\ms}
\newcommand{\mr}{\ms\hline\ms}
%
\newcommand{\centre}[2]{\multispan{#1}{\hfill #2\hfill}}
\newcommand{\crule}[1]{\multispan{#1}{\hspace*{\tabcolsep}\hrulefill
\hspace*{\tabcolsep}}}
\newcommand{\fcrule}[1]{\ifnum\thetabtype=1\multispan{#1}{\hrulefill
\hspace*{\tabcolsep}}\else\multispan{#1}{\hrulefill}\fi}
%
% Extra spaces for tables and displayed equations
%
\newcommand{\ms}{\noalign{\vspace{3\p@ plus2\p@ minus1\p@}}}
\newcommand{\bs}{\noalign{\vspace{6\p@ plus2\p@ minus2\p@}}}
\newcommand{\ns}{\noalign{\vspace{-3\p@ plus-1\p@ minus-1\p@}}}
\newcommand{\es}{\noalign{\vspace{6\p@ plus2\p@ minus2\p@}}\displaystyle}%
%
\newcommand{\etal}{{\it et al\/}\ }
\newcommand{\dash}{------}
\newcommand{\nonum}{\par\item[]} %\par added 1/9/93
\newcommand{\mat}[1]{\underline{\underline{#1}}}
%
% abbreviations for IOPP journals
%
\newcommand{\CQG}{{\it Class. Quantum Grav.} }
\newcommand{\CTM}{{\it Combust. Theory Modelling\/} }
\newcommand{\DSE}{{\it Distrib. Syst. Engng\/} }
\newcommand{\EJP}{{\it Eur. J. Phys.} }
\newcommand{\HPP}{{\it High Perform. Polym.} } % added 4/5/93
\newcommand{\IP}{{\it Inverse Problems\/} }
\newcommand{\JHM}{{\it J. Hard Mater.} } % added 4/5/93
\newcommand{\JO}{{\it J. Opt.} }
\newcommand{\JOA}{{\it J. Opt. A: Pure Appl. Opt.} }
\newcommand{\JOB}{{\it J. Opt. B: Quantum Semiclass. Opt.} }
\newcommand{\JPA}{{\it J. Phys. A: Math. Gen.} }
\newcommand{\JPB}{{\it J. Phys. B: At. Mol. Phys.} } %1968-87
\newcommand{\jpb}{{\it J. Phys. B: At. Mol. Opt. Phys.} } %1988 and onwards
\newcommand{\JPC}{{\it J. Phys. C: Solid State Phys.} } %1968--1988
\newcommand{\JPCM}{{\it J. Phys.: Condens. Matter\/} } %1989 and onwards
\newcommand{\JPD}{{\it J. Phys. D: Appl. Phys.} }
\newcommand{\JPE}{{\it J. Phys. E: Sci. Instrum.} }
\newcommand{\JPF}{{\it J. Phys. F: Met. Phys.} }
\newcommand{\JPG}{{\it J. Phys. G: Nucl. Phys.} } %1975--1988
\newcommand{\jpg}{{\it J. Phys. G: Nucl. Part. Phys.} } %1989 and onwards
\newcommand{\MSMSE}{{\it Modelling Simulation Mater. Sci. Eng.} }
\newcommand{\MST}{{\it Meas. Sci. Technol.} } %1990 and onwards
\newcommand{\NET}{{\it Network: Comput. Neural Syst.} }
\newcommand{\NJP}{{\it New J. Phys.} }
\newcommand{\NL}{{\it Nonlinearity\/} }
\newcommand{\NT}{{\it Nanotechnology} }
\newcommand{\PAO}{{\it Pure Appl. Optics\/} }
\newcommand{\PM}{{\it Physiol. Meas.} } % added 4/5/93
\newcommand{\PMB}{{\it Phys. Med. Biol.} }
\newcommand{\PPCF}{{\it Plasma Phys. Control. Fusion\/} } % added 4/5/93
\newcommand{\PSST}{{\it Plasma Sources Sci. Technol.} }
\newcommand{\PUS}{{\it Public Understand. Sci.} }
\newcommand{\QO}{{\it Quantum Opt.} }
\newcommand{\QSO}{{\em Quantum Semiclass. Opt.} }
\newcommand{\RPP}{{\it Rep. Prog. Phys.} }
\newcommand{\SLC}{{\it Sov. Lightwave Commun.} } % added 4/5/93
\newcommand{\SST}{{\it Semicond. Sci. Technol.} }
\newcommand{\SUST}{{\it Supercond. Sci. Technol.} }
\newcommand{\WRM}{{\it Waves Random Media\/} }
\newcommand{\JMM}{{\it J. Micromech. Microeng.\/} }
%
% Other commonly quoted journals
%
\newcommand{\AC}{{\it Acta Crystallogr.} }
\newcommand{\AM}{{\it Acta Metall.} }
\newcommand{\AP}{{\it Ann. Phys., Lpz.} }
\newcommand{\APNY}{{\it Ann. Phys., NY\/} }
\newcommand{\APP}{{\it Ann. Phys., Paris\/} }
\newcommand{\CJP}{{\it Can. J. Phys.} }
\newcommand{\JAP}{{\it J. Appl. Phys.} }
\newcommand{\JCP}{{\it J. Chem. Phys.} }
\newcommand{\JJAP}{{\it Japan. J. Appl. Phys.} }
\newcommand{\JP}{{\it J. Physique\/} }
\newcommand{\JPhCh}{{\it J. Phys. Chem.} }
\newcommand{\JMMM}{{\it J. Magn. Magn. Mater.} }
\newcommand{\JMP}{{\it J. Math. Phys.} }
\newcommand{\JOSA}{{\it J. Opt. Soc. Am.} }
\newcommand{\JPSJ}{{\it J. Phys. Soc. Japan\/} }
\newcommand{\JQSRT}{{\it J. Quant. Spectrosc. Radiat. Transfer\/} }
\newcommand{\NC}{{\it Nuovo Cimento\/} }
\newcommand{\NIM}{{\it Nucl. Instrum. Methods\/} }
\newcommand{\NP}{{\it Nucl. Phys.} }
\newcommand{\PL}{{\it Phys. Lett.} }
\newcommand{\PR}{{\it Phys. Rev.} }
\newcommand{\PRL}{{\it Phys. Rev. Lett.} }
\newcommand{\PRS}{{\it Proc. R. Soc.} }
\newcommand{\PS}{{\it Phys. Scr.} }
\newcommand{\PSS}{{\it Phys. Status Solidi\/} }
\newcommand{\PTRS}{{\it Phil. Trans. R. Soc.} }
\newcommand{\RMP}{{\it Rev. Mod. Phys.} }
\newcommand{\RSI}{{\it Rev. Sci. Instrum.} }
\newcommand{\SSC}{{\it Solid State Commun.} }
\newcommand{\ZP}{{\it Z. Phys.} }
%===================
\pagestyle{headings}
\pagenumbering{arabic}
\raggedbottom
\onecolumn
\endinput
%%
%% End of file `jconf.cls'.
%%
%% This is file `jpconf11.clo'
%%
%% This file is distributed in the hope that it will be useful,
%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%% Digits \0\1\2\3\4\5\6\7\8\9
%% Exclamation \! Double quote \" Hash (number) \#
%% Dollar \$ Percent \% Ampersand \&
%% Acute accent \' Left paren \( Right paren \)
%% Asterisk \* Plus \+ Comma \,
%% Minus \- Point \. Solidus \/
%% Colon \: Semicolon \; Less than \<
%% Equals \= Greater than \> Question mark \?
%% Commercial at \@ Left bracket \[ Backslash \\
%% Right bracket \] Circumflex \^ Underscore \_
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
\ProvidesFile{jpconf11.clo}[2005/05/04 v1.0 LaTeX2e file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xipt{13}%
\abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
\belowdisplayskip \abovedisplayskip
\let\@listi\@listI}
\normalsize
\newcommand\small{%
\@setfontsize\small\@xpt{12}%
\abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
\def\@listi{\leftmargin\leftmargini
\topsep 9\p@ \@plus3\p@ \@minus5\p@
\parsep 4.5\p@ \@plus2\p@ \@minus\p@
\itemsep \parsep}%
\belowdisplayskip \abovedisplayskip}
\newcommand\footnotesize{%
% \@setfontsize\footnotesize\@xpt\@xiipt
\@setfontsize\footnotesize\@ixpt{11}%
\abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
\def\@listi{\leftmargin\leftmargini
\topsep 6\p@ \@plus2\p@ \@minus2\p@
\parsep 3\p@ \@plus2\p@ \@minus\p@
\itemsep \parsep}%
\belowdisplayskip \abovedisplayskip
}
\newcommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
\newcommand\tiny{\@setfontsize\tiny\@vipt\@viipt}
\newcommand\large{\@setfontsize\large\@xivpt{18}}
\newcommand\Large{\@setfontsize\Large\@xviipt{22}}
\newcommand\LARGE{\@setfontsize\LARGE\@xxpt{25}}
\newcommand\huge{\@setfontsize\huge\@xxvpt{30}}
\let\Huge=\huge
\if@twocolumn
\setlength\parindent{14\p@}
\else
\setlength\parindent{18\p@}
\fi
\if@letterpaper%
%\input{letmarg.tex}%
\setlength{\hoffset}{0mm}
\setlength{\marginparsep}{0mm}
\setlength{\marginparwidth}{0mm}
\setlength{\textwidth}{160mm}
\setlength{\oddsidemargin}{-0.4mm}
\setlength{\evensidemargin}{-0.4mm}
\setlength{\voffset}{0mm}
\setlength{\headheight}{8mm}
\setlength{\headsep}{5mm}
\setlength{\footskip}{0mm}
\setlength{\textheight}{230mm}
\setlength{\topmargin}{1.6mm}
\else
%\input{a4marg.tex}%
\setlength{\hoffset}{0mm}
\setlength{\marginparsep}{0mm}
\setlength{\marginparwidth}{0mm}
\setlength{\textwidth}{160mm}
\setlength{\oddsidemargin}{-0.4mm}
\setlength{\evensidemargin}{-0.4mm}
\setlength{\voffset}{0mm}
\setlength{\headheight}{8mm}
\setlength{\headsep}{5mm}
\setlength{\footskip}{0mm}
\setlength{\textheight}{230mm}
\setlength{\topmargin}{1.6mm}
\fi
\setlength\maxdepth{.5\topskip}
\setlength\@maxdepth\maxdepth
\setlength\footnotesep{8.4\p@}
\setlength{\skip\footins} {10.8\p@ \@plus 4\p@ \@minus 2\p@}
\setlength\floatsep {14\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\textfloatsep {24\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\intextsep {16\p@ \@plus 4\p@ \@minus 4\p@}
\setlength\dblfloatsep {16\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\dbltextfloatsep{24\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\@fptop{0\p@}
\setlength\@fpsep{10\p@ \@plus 1fil}
\setlength\@fpbot{0\p@}
\setlength\@dblfptop{0\p@}
\setlength\@dblfpsep{10\p@ \@plus 1fil}
\setlength\@dblfpbot{0\p@}
\setlength\partopsep{3\p@ \@plus 2\p@ \@minus 2\p@}
\def\@listI{\leftmargin\leftmargini
\parsep=\z@
\topsep=6\p@ \@plus3\p@ \@minus3\p@
\itemsep=3\p@ \@plus2\p@ \@minus1\p@}
\let\@listi\@listI
\@listi
\def\@listii {\leftmargin\leftmarginii
\labelwidth\leftmarginii
\advance\labelwidth-\labelsep
\topsep=3\p@ \@plus2\p@ \@minus\p@
\parsep=\z@
\itemsep=\parsep}
\def\@listiii{\leftmargin\leftmarginiii
\labelwidth\leftmarginiii
\advance\labelwidth-\labelsep
\topsep=\z@
\parsep=\z@
\partopsep=\z@
\itemsep=\z@}
\def\@listiv {\leftmargin\leftmarginiv
\labelwidth\leftmarginiv
\advance\labelwidth-\labelsep}
\def\@listv{\leftmargin\leftmarginv
\labelwidth\leftmarginv
\advance\labelwidth-\labelsep}
\def\@listvi {\leftmargin\leftmarginvi
\labelwidth\leftmarginvi
\advance\labelwidth-\labelsep}
\endinput
%%
%% End of file `iopart12.clo'.
contributions/ds_devops_pe/CI-tools.png

33.2 KiB

\documentclass[a4paper]{jpconf}
\usepackage{graphicx}
\begin{document}
\title{Common software lifecycle management in external projects}
\author{C. Duma$^1$, A. Costantini$^1$, D. Michelotto$^1$,
P. Orviz$^2$, D. Salomoni$^1$}
\address{$^1$ INFN-CNAF, Bologna, IT}
\address{$^2$ IFCA, Consejo Superior de Investigaciones Cientificas-CSIC, Santander, SP}
\ead{ds@cnaf.infn.it}
\begin{abstract}
This paper describes the common procedure defined and adopted in the field of Software Lifecycle Management and
Continuous Integration and Delivery to manage the new releases, as a first step to ensure
the quality of the provided solutions, services and components, while strengthening the collaboration between
developers and operations teams among different external projects.
In particular, the paper analyses the common software lifecycle management procedure developed during the
INDIO-DataCloud project and recently improved and adopted in two EC funded
projects: eXtreme DataCloud and DEEP Hybrid DataCloud.
\end{abstract}
\section{Introduction}
The eXtreme-DataCloud (XDC) \cite{xdc} and DEEP-HybridDataCloud (DEEP-HDC) \cite{deep} projects are aimed at addressing requirements from a wide range of User Communities belonging to several disciplines and test the developed software solutions against the real life use cases.
The software solutions carried out by the both projects are released as Open Source and are based on already existing components (TRL8+) that the projects will enrich with new functionalities and plugins.
The use of standards and protocols widely available on the state-of-the-art distributed computing ecosystems may be not enough to guarantee that the released components can be easily plugged into the European e-Infrastructures and in general on cloud based computing environments and the definition and implementation of the entire Software
Lifecycle Management process becames mandatory in such projects.
As the software components envisaged by both projects have a history of development
in previous successful European projects (such as the INDIGO-DataCloud \cite{indigo} project) implementing different types of modern software development techniques,
the natural choice was to complement the previous, individual, Continuous Development and Integration services
with a Continuous Testing, Deployment and Monitoring as part of a DevOps approach:
\begin{itemize}
\item Continuous Testing - the activity of continuously testing the developed software in order to identify issues in
the early phases of the development. For Continuous testing, automation tools will be used. These tools enable
the QA’s for testing multiple code-bases and in parallel, to ensure that there are no flaws in the functionality. In
this activity the use of Docker containers for simulating testing environments on the fly, is also a preferred choice.
Once the code is tested, it is continuously integrated with the existing code.
\item Continuous Deployment - the activity of continuously updating production environment once new code is made
available. Here we ensure that the code is correctly deployed on all the servers. If there is any addition of functionality
or a new feature is introduced, then one should be ready to add resources according to needs. Therefore, it is also
the responsibility of the SysAdmin to scale up the servers. Since the new code is deployed on a continuous basis,
automation tools play an important role for executing tasks quickly and frequently. Puppet, Chef, SaltStack and
Ansible are some popular tools that could be used at this step. This activity represents the Configuration
Management - the process of standardising the resources configurations and enforcing their state across
infrastructures in an automated manner. The extensive use of containerisation techniques will provide an
entire runtime environment: application/service, all its dependencies, libraries and binaries, and configuration
files needed to run it, bundled in one package - container. T3.1 will also manage the scalability testing, being
able to manage the configurations and do the deployments of any number of nodes automatically.
\item Continuous Monitoring - very crucial activity in the DevOps model of managing software lifecycle, which is
aimed at improving the quality of the software by monitoring its performance. This practice involves the participation
of the Operations team who will monitor the users’ activity to discover bugs or improper behavior of the system.
This can also be achieved by making use of dedicated monitoring tools, which will continuously monitor the application
performance and highlight issues. Some popular tools useful in this step are Nagios \cite{nagios}, NewRelic \cite{newrelic}
and Sensu \cite{sensu}. These tools
help to monitor the health of the system proactively and improve productivity and increase the reliability of the
systems, reducing IT support costs. Any major issues found could be reported to the Development team to be
fixed in the continuous development phase.
\end{itemize}
These DevOps activities are carried out on loop continuously until the desired product quality is achieved.
Automation will play a central role in all the activities in order to achieve a complete release automation, moving the
software from the developers through build and quality assurance checks, to deployment into integration testbeds
and finally to production sites part of the Pilot Infrastructures.
In the following sections, an overview of the recentli defined best practices that have been adopted in both XDC and DEEP-XDC projects for the Software Lifecycle Management and Continuous Integration and Delivery are presented and described.
\section{Software Quality Assurance and Control}
Software Quality Assurance (SQA) covers the set of software engineering processes
that foster the quality and reliability in the software produced. The activities involved in this task are mainly focused on:
\begin{itemize}
\item Defining and maintaining a common SQA procedure to guide the software development efforts throughout its life cycle.
\item Formulating a representative set of metrics for the software quality control to follow up on the behavior of the
software produced, aiming to detect and fix early deviations in the software produced.
\item Enabling a continuous integration process, eventually complemented by a continuous delivery scenario, promoting
the automation adoption for the testing, building, deployment and release activities.
\end{itemize}
In order to define the SQA process, the specific context of the software developed in the project has to be taken into account.
The following particularities characterize the corresponding development teams:
\begin{itemize}
\item Heterogeneous developer profiles: different backgrounds and different degrees of expertise.
\item Geographically distributed.
\item Different home institutes which implies different cultures, different development technologies, process and methods.
\item High turnover due to the limited duration of the projects where the grid software has been developed so far.
\item More focus on development activities, with limited resources, if any, available for quality assurance activities.
\end{itemize}
The Quality Assurance process has to take all above described factors into account to define the Software Quality Assurance Plan (SQAP).
A set of ``QA Policies'' have also to be defined to guide the development teams towards uniform practices and processes.
These QA Policies define the main activities of the software lifecycle, such as releasing, tracking, packaging and documenting
the software carried out by the project. This is done in collaboration with development teams, making sure they are flexible
enough to co-exist as much as possible with current development methods. The SQA activities have to be monitored and controlled
to track their evolution and put in place corrective countermeasures in case of deviations.
Moreover, a quality model have to be defined
to help in evaluating the software products and process quality. It helps to set quality goals for software products and processes.
The Quality Model has to follow the ISO/IEC 25010:2011 “Systems and software engineering - Systems and software
Quality Requirements and Evaluation (SQuaRE) - System and software quality models” \cite{R18} to identify a set of characteristics (criteria)
that need to be present in software products and processes to be able to meet the quality requirements.
Those SQA criteria \cite{R22} have the goal to
\begin{itemize}
\item Enhance the visibility, accessibility and distribution of the produced source code through the alignment with to the Open Source Definition \cite{R23}.
\item Promote code style standards to deliver good quality source code emphasizing its readability and reusability.
\item Improve the quality and reliability of software by covering different testing methods at development and pre-production stages.
\item Propose a change-based driven scenario where all new updates in the source code are continuously evaluated by the automated execution of the relevant tests.
\item Adopt an agile approach to effectively produce timely and audience-specific documentation.
\item Lower the barriers of software adoption by delivering quality documentation and the utilization of automated deployment solutions.
\item Encourage secure coding practices and security static analysis at the development phase while providing recommendations on external security assessment.
\end{itemize}
\section{Software Maintenance and Support}
Regarding the software maintenance and support area of the software lifecycle management,
the main objectives that should be and described in the Maintenance plan are:
\begin{itemize}
\item To increase the quality levels of the software by contributing to the implementation and automation
of the Quality Assurance (QA) and Control procedures defined by the project.
\item To boost the software delivery process, relying on automation.
\item To emphasize the communication and feedback with/from end users, in order to guarantee adequate
requirements gathering and support.
\item To guarantee the stability of services already deployed in production and the increase of their readiness
levels, where needed.
\end{itemize}
Moreover the common practices deal with the definition of those processes and procedures related to the software maintenance and
support and their continuous execution:
\begin{itemize}
\item Software Maintenance - regarding software preparation \& transition from the developers to production
repositories and final users.
\item Problem Management - providing the analysis \& documentation of problems.
\item Change Management - control code, configuration changes, retirement calendars.
\item Coordination the provisioning of adequate support to released software.
\item Responsible for the release management and coordination and the maintenance of the artifacts
repositories, defining policies and release cycles.
\end{itemize}
The plan regarding the software maintenance and support management have to follow the guidelines of the
ISO/IEC 14764:2006 standard \cite{R30}, and includes a set of organizational and administrative roles to handle
maintenance implementation, change management and validation, software release, migration and retirement, support
and helpdesk activities.
Component releases are classified in major, minor, revision and emergency, based on the impact of the changes on the
component interface and behavior. Requests for Change (RfC) are managed adopting a priority-driven approach,
so that the risk of compromising the stability of the software deployed in a production environment is minimized.
The User Support activity deals, instead, with the coordination of the support to the users that make use of the software components (developed within the project activities) and included in the main project software distributions.
\section{Services for continuous integration and SQA}
To support the Software Quality Assurance, the
Continuous Integration and the software release and maintenance activities, a set of tools and services are needed.
Usually, those tools and services are provided by using publicly available cloud services due to the following reasons:
\begin{itemize}
\item Higher public visibility and in line with project objectives for open source software,
\item Provides a path to further development, support and exploitation beyond the end of the project,
\item Smaller effort needed inside the project to operate and manage those services.
\end{itemize}
The list of services needed is given in Table 1 with a small description for each service and the related Web link.
\begin{figure}[h!]
\centering
Table 1: Tools and services to support DevOps.
\includegraphics[width=10cm,clip]{CI-tools.png}
%\caption{The list of services.}
\label{citools}
\end{figure}
\section{Key Performance Indicators}
Defining appropriate KPIs for maintenance, release and support activities, and monitor them during the project lifetime
may help in highlight the project achievements and put in place the appropriate corrective actions in case of deviations.
In principle, the KPIs should address the following impact areas and reflect the related goal:
\begin{itemize}
\item Prepare data and computing e-Infrastructures to absorb the needs of communities that push the envelope in terms of data and intensive computing
\begin{itemize}
\item Goal: Extending the quality \& quantity of services provided by e-infrastructures
\end{itemize}
\item Promote new research possibilities in Europe
\begin{itemize}
\item Goal: Increasing the capacity for innovation and production of new knowledge
\end{itemize}
\end{itemize}
\section{Conclusions}
The paper describes the common procedures to be applied in the field of software lifecycle management, aimed at managing
the new releases and ensure the quality of the provided solutions, services and components provided by the project.
In particular, the paper described the best practices to adopt in order to i) foster the quality and reliability of the software produced,
ii) to define the processes and procedures regarding the software maintenance and support, iii) identify the services needed
to support the Software Quality Assurance, the Continuous Integration and the software release and maintenance
and iv) define appropriate KPIs to monitor the project achievements.
The experience gathered throughout this activity with regards to
The adoption of different DevOps practices is becaming mandatory for software development projects,
the experience gathered throughout this activity can be also applicable to the development and distribution of software products coming, for example, from the user communities and other software product activities.
\section*{Acknowledgments}
DEEP-HybridDataCloud has been funded by the European Commission H2020 research and innovation program under grant agreement RIA 777435.
eXtreme DataCloud has been funded by the European Commission H2020 research and innovation program under grant agreement RIA 777367.
\section{References}
\begin{thebibliography}{}
\bibitem{xdc}
Web site: www.extreme-datacloud.eu
\bibitem{deep}
Web site: www.deep-hybrid-datacloud.eu
\bibitem{indigo}
Web site: www.indigo-datacloud.eu
\bibitem{nagios}
Web site: https://www.nagios.org
\bibitem{newrelic}
Web site: https://newrelic.com
\bibitem{sensu}
Web site: https://sensu.io
\bibitem{R18}
ISO/IEC 25010:2011, ``Systems and software engineering - Systems and software Quality Requirements and Evaluation (SQuaRE) - System and software quality models'': https://www.iso.org/standard/35733.html
\bibitem{R22}
A set of Common Software Quality Assurance Baseline Criteria for Research Projects, http://digital.csic.es/bitstream/10261/160086/4/CommonSQA-v2.pdf
\bibitem{R23}
The Open Source Definition, https://opensource.org/osd
\bibitem{R30}
ISO/IEC 14764:2006 standard, https://www.iso.org/standard/39064.html
\end{thebibliography}
\end{document}
contributions/ds_eoschub/dodas_ar.png

254 KiB

\documentclass[a4paper]{jpconf}
\usepackage{graphicx}
\usepackage{array}
\begin{document}
\title{EOSC-hub: contributions to project achievements}
\author{C. Duma$^1$, A. Costantini$^1$, D. Michelotto$^1$,
A. Ceccanti$^1$, E. Vianello $^1$, L. Morganti$^1$,
A. Fallabella$^1$, L. Dell'Agnello$^1$, D. Salomoni$^1$}
\address{$^1$ INFN-CNAF, Bologna, IT}
\ead{ds@cnaf.infn.it}
\begin{abstract}
EOSC-hub is the H2020 EINFRA12 project submitted by a consortium of
74 partners under the coordination of EGI, EUDAT and INDIGO-DataCloud.
It brings together multiple service providers to create {\bf the Hub}: a single
contact point for European researchers and innovators to discover, access, use
and reuse a broad spectrum of resources for advanced data-driven research.
After a short description of the projects objectives and of its work-packages,
we present the various aspects of the CNAF contributions to the achievement of
this objectives.
\end{abstract}
\section{Introduction}
The EOSC-hub project creates the integration and management system of the future European
Open Science Cloud (EOSC) that delivers a catalogue of services, software and data from the EGI Federation,
EUDAT CDI, INDIGO-DataCloud and major research e-infrastructures. This integration and
management system (the Hub) builds on mature processes, policies and tools from the
leading European federated e-Infrastructures to cover the whole life-cycle of services,
from planning to delivery. The Hub aggregates services from local, regional and national
e-Infrastructures in Europe, Africa, Asia, Canada and South America.
The Hub acts as a single contact point for researchers and innovators to discover, access,
use and reuse a broad spectrum of resources for advanced data-driven research. Through
the virtual access mechanism, more scientific communities and users have access to services
supporting their scientific discovery and collaboration across disciplinary and geographical boundaries.
The project mission is to contribue to address the EOSC challenges/objectives implementing a number of actions:
\begin{itemize}
\item Increase the ability to {\bf exploit research data across scientific disciplines} and between the public and private sector, by:
\begin{itemize}
\item {\bf Publish, discover, access} services and resources for all scientific disciplines, defined and adopt {\bf a service
portfolio management process} activities and governance
\item {\bf Open} to national, regional, pan-European providers, and supports different exploitation models (e.g. free at point of use, commercial)
\item Build a Joint Digital Innovation Hub https://eosc-hub.eu/digital-innovation-hub
\end{itemize}
\item Support {\bf open science}, by:
\begin{itemize}
\item Offering services to share and discover research artefacts (datasets, software, notebooks) and research artefacts sources
\item Establish an EOSC-hub and OpenAIRE collaboration
\end{itemize}
\end{itemize}
a well as to contribute to the European Open Science Agenda:
\begin{itemize}
\item Develop research infrastructures for Open Science, by:
\begin{itemize}
\item making major data infrastructures available for dissemination and exploitation in Open Science. Data resources include: Copernicus, ESA/Landsat, ERS and Envisat/Meris datasets for earth observation; the CLARIN metadata infrastructure for Art and Humanities, the Compact Muon Solenoid (CMS) experiment data and its distributed processing infrastructure, EISCAT experimental data, the ELIXIR core data resources, et al.
\item providing well defined and non-discriminatory access modes for all researchers across all disciplines, following the G8 principles.
\item applying long-term, persistent care for a given resource by improving the stewardship from the funding agencies and the resource owners, through active maintenance of open science resources, such as certification of data repositories, and maintenance of training and education programmes to increase the amount and quality of knowledge held by the community on required topics such as data preservation, curation and sharing.
\end{itemize}
\item Enable data-intensive research in secured virtual environments for Open Science, by:
\begin{itemize}
\item enabling big data solutions in secured virtual environments to generate smart solutions for analysing complex data from different sources
\item defining and adopting a corpus of harmonised access and reuse policies for research infrastructures and e-Infrastructures, based on one market offering clear points of access and support
\end{itemize}
\item Mainstream Open Access to research results, by:
\begin{itemize}
\item offering services for research data discoverability, an application store where cloud virtual appliances can be freely registered and shared as research objects linked to publications, to be executed on a distributed cloud environment for repeatability of science
\end{itemize}
\end{itemize}
\section{Project implementation and CNAF contributions}
\label{sec:first}
Following a service lifecycle approach, the EOSC-hub work packages are defined to support a service-oriented approach that covers the various stages of service management: from planning (left); integration, management and delivery (middle); and adoption (right) in Figure \ref{eoschub_wps}.
The {\bf Service Planning} WPs are devoted to collect requirements from new user communities and research collaborations, define and implement strategy and policies ({\bf WP2}), engage with stakeholders ({\bf WP3}), define appropriate business models and strategies and identify procurement frameworks ({\bf WP12}).
The {\bf Service Integration} WPs are devoted to service integration ({\bf WP5},{\bf WP6} and{\bf WP7}), maintenance and control ({\bf WP4}). {\bf WP10} is providing the technical coordination and consistency to these activities.
The {\bf Service Adoption} WPs include activities directed at pre-selected (via an open call during proposal preparation) to early adopters from research communities ({\bf WP8}) and the business world ({\bf WP9}). {\bf WP12} handles business model innovation and service procurement and purchase in order to provide access to all user categories targeted by the project. WP11 will manage a training programme to stimulate knowledge network and facilitate adoption. {\bf WP1} supports the overall project management and coordination, complemented by Technology Coordination, executed in {\bf WP10}.
\begin{figure}[h]
\centering
\includegraphics[width=15cm,clip]{eoschub_wps_2.png}
\caption{EOSC-hub project work-packages and their relationship}
\label{eoschub_wps}
\end{figure}
\subsection {CNAF contributions}
The main work-packages that see the involvement of the CNAF teams are:
\subsubsection {WP2 - Strategy and Business Development}
The work-package is dealing with the overall policy, business and service strategy of the project, and CNAF team is:
\begin{itemize}
\item contributing to the definition and management of the project strategy
\item managing the service roadmap, service portfolio and service catalogue, in collaboration with the Technology Committee
\item formulating policies to facilitate the sharing and safe processing of both open and restricted data from across European research infrastructures and promoting current models of good practice on the management of restricted data from around the EOSC-hub consortium.
\end{itemize}
\subsubsection {WP6 - Common Services: Integration and Maintenance}
This work package is maintaining and integrating the common services based on an evolving service catalogue, starting from an initial set of mature common services and technologies from the EGI, EUDAT and INDIGO service catalogues. It aims, among other, to maintain the high quality of the baseline and advanced common services from the evolving service catalogue according to a maintenance plan, ensure that these services are developing according to the requirements of users, thematic services and competence centres, and provide support and contribute to the documentation.
CNAF team is involved in particular in the task T6.1 ``Discovery and Access'', for the support of the INDIGO IAM service integration on request, e.g., with thematic services and testing according to the work plans defined by relevant competence centres. INDIGO IAM will act as attribute authority and IdP for the EOSC-hub federated AAI.
\subsubsection {WP7 - Thematic Services: Integration, maintenance and Exploitation}
The Thematic Services envisaged by the EOSC-hub project provide community-specific capabilities including research core data, data products, scientific software, and pipelines from 18 international research collaborations and infrastructures: CLARIN, CMS, DARIAH, ELIXIR, EISCAT, EIDA, ENES, EPOS, GEOSS, ICOS, ITER, IFREMER and SeaDataNet, LifeWatch, LNEC, LOFAR, ICOS, WeNMR, and earth observation data from Copernicus, ESA and Envisat missions. The work-package, through its different tasks, aims to vertically integrate thematic services with common components, to foster their deployment and operation, to enable users access to the respective services and to integrate monitoring and accounting systems in these thematic services.
In particular, the CNAF team is involved in the {\bf T7.2 - DODAS TS (Dynamic On Demand Analysis Service)}\cite{dodas} that provides the end-user with an automated system that simplifies the process of provisioning, creating, managing and accessing a pool of heterogeneous (possibly opportunistic) computing resources, as described in Figure \ref{dodas}. The work in this task regards the support to a wider range of infrastructure providers improving the following features through the integration with EOSC-hub: Data Management, Data Caching, PaaS level cross-site cluster deployment, Web User interface, Authentication and Authorisation and Accounting.
DODAS is an open-source Platform-as-a-Service tool which allows to deploy software applications over heterogeneous and hybrid clouds. It instantiates on-demand container-based clusters through Apache Mesos \cite{mesos} and it offers a high level of abstraction to users, allowing to exploit any cloud infrastructure with almost zero effort, since it requires a very limited knowledge of the underlying technical details.
During 2018 a lot of effort has been spent on supporting communities. Several initiatives in this respect required support form DODAS team:
\begin{itemize}
\item AMS did scale tests during a couple of weeks, using:
\begin{itemize}
\item 1.5K cores. about 200k jobs run producing about 20TB of output data.
\item Input Data read from EOS at CERN and produced data moved to CNAF through a third party copy mechanism
\item integrated Cache in AMS data analysis workflow (with DODAS)
\item collected feedback for improvements such as: AuthN/Z based on GSI (certificates from JWT), improve remote access (e.g. introducing CCB), improve CVMFS server management.
\item Overall very successful testing and usage.
\end{itemize}
\item CERN CMS-OpenData :
\begin{itemize}
\item from a design to a first test. End to End validation. Provided support for design integration and implementation.
\item Results will be presented at CMS Offline and Computing week
\item Document report provided by a CERN summer student
\end{itemize}
\item work regarding BigData platform for Machine Learning as a Service
\begin{itemize}
\item initially focussed on the inference and data reduction part. Integrating respectively the TFaaS of CMS and the Spark (which was already available)
\item followed by activities on Training part. Model training is trying to get all the available results/services/APIs from DEEP-HybridDataCloud project\cite{deep}
\end{itemize}
\item Finalised Onedata\cite{onedata} scale and validation tests. A long running exercise was done with latest onedata release rc11 in order to provide a comprehensive summary of performances evaluations.
\item Concluded the Google cloud integration, exploiting a third parity grant
\begin{itemize}
\item integration was done successfully
\item basic validation concluded with positive results.
\item validation has been carried on with all use cases supported by DODAS (AMS and CMS)
\item both workflow based on cache usage (xcache) and without have been validated.
\end{itemize}
\end{itemize}
\begin{figure}[h]
\centering
\includegraphics[width=15cm,clip]{dodas_ar.png}
\caption{High level schema of the DODAS architecture}
\label{dodas}
\end{figure}
\subsubsection {WP10 - Technical Coordination}
The work-package main objectives are to define the technical roadmap, with external and internal input from user and service providers requirements, existing and planned services, technologies, standards, frameworks; to contribute to external standardisation bodies and relevant initiatives; to define the criteria for inclusion of new services into the catalogue and assessing conformance and to identify solutions to community requirements and lead their integration into the service portfolio.
Main CNAF team contributions to this work-package are in:
\begin{itemize}
\item Task T10.1 - Technical roadmap, that is dealing with definition, maintenance and enforcement of the technical roadmap, defining and maintaining the overall service architecture of the services of the EOSC Hub portfolio, by being part of different technological groups driving the activities of respective technological areas like:
\begin{itemize}
\item AAI - that oversees the technical development in the AAI area, in particular supporting one of the Community AAI service - the INDIGO-IAM
\item Software Quality Area - working on the definition of: best practices for services deployment and interoperability checks, software release, support and management
\end{itemize}
\item Task T10.2 - Service Catalogue Technical Evolution, that is defining the project's Rules of Engagement (RoE), including guidelines, policies and procedures to assess the conformance of services to the RoE and to the FAIR principles. This task is also monitoring the evolution of reference standards (and contribute where relevant) and track the evolution of the main software technologies in the Open Source communities. CNAF is participating in the RDAs' Software Source Code Identification Working Group that is bringing together a broad panel of stakeholders directly involved in software identification, working to define concrete recommendations for the academic community to ensure that the solutions that will be adopted by the academic players are compatible with each other and especially with the software development practice of tens of millions of developers worldwide.
\item Task T10.3 - Community Requirement Analysis and Technical, analysing the requirements collected by the other work packages and provide support to all the user communities engaged before or during the project, including also Thematic Services, Competence Centres and Joint Digital Innovation Hubs, in particular during their starting phase. CNAF team is in particular involved in the technical support team of the DODAS Thematic Service.
\end{itemize}
\subsubsection {WP13 - Access Provisioning}
This WP manages the Virtual Access to services of the EOSC-hub catalogue in the following four categories: Common Services, Thematic Services, Collaborative Services and Federation Services. In the context of this WP, CNAF is participating providing the Virtual Access installation for the DODAS Thematic Service. Some of the metrics showing the 2018 contributions are presented in Table \ref{tab:1}.
\begin{table}[ht]
\resizebox{\textwidth}{!}{\begin{tabular}{|l|c|l|l|l|}
\hline
\textbf{Metric Name} & \multicolumn{1}{l|}{\textbf{Baseline}} & \textbf{Description} & \textbf{Period 1 (M3-8)} & \textbf{Period 2 (M9-17)} \\ \hline
\begin{tabular}[c]{@{}l@{}}Usage: CPU time and storage \\ consumed by DODAS \\ at CNAF\end{tabular} & 0 & \begin{tabular}[c]{@{}l@{}}CNAF resources made \\ available for the TS.\\ Data will be collected both from \\ the DODAS monitoring system \\ and accounting at two sites. \\ (These are new resources, \\ installed and configured for\\ the EOSC-hub project)\end{tabular} & \begin{tabular}[c]{@{}l@{}}``CPU Hours'': 308068.78, \\ ``Disk GB-Hours'': 5986141.3 \\ Value taken from the underling \\ Openstack Provider.\end{tabular} & \begin{tabular}[c]{@{}l@{}}``CPU Hours'': 541744.2, \\ ``Disk GB-Hours'': 9798183.68\end{tabular} \\ \hline
\begin{tabular}[c]{@{}l@{}}Usage: Total Number \\ of Cluster deployments\end{tabular} & 0 & \begin{tabular}[c]{@{}l@{}}Number of cluster \\ deployments made through\\ the DODAS Core Services. \\ Metric will be based on the \\ deployments registered on \\ the DODAS PaaS Orchestrator \\ and Infrastructure Manager\end{tabular} & \begin{tabular}[c]{@{}l@{}}622 distinct cluster deployments. \\ Value taken from IM Database\end{tabular} & \begin{tabular}[c]{@{}l@{}}1084 distinct cluster \\ deployments\end{tabular} \\ \hline
\begin{tabular}[c]{@{}l@{}}Visits: number of visit/request \\ to the DODAS core services\end{tabular} & 0 & \begin{tabular}[c]{@{}l@{}}Number of people registered \\ in the DODAS-IAM service\end{tabular} & \begin{tabular}[c]{@{}l@{}}31 ``Number of people registered\\ in the DODAS-IAM service.''\end{tabular} & 56 \\ \hline
\end{tabular}}
\caption{Metrics regarding CNAF contribution as the main DODAS Virtual Access infrastructure}
\label{tab:1}
\end{table}
\section{Conclusions}
After the activities of the first project year that mainly see the organisation of the various technological groups, the collection of the requirements regarding the services developed and\/or supported by INFN, the deployment and operation of the DODAS Thematic Service, the following year will continue with the work on the definition and consolidation of the EOSC Hub Technical Roadmap, the Technical Architecture and standards roadmap, enhance the DODAS user community and integrate it into the EOSC-hub production environment. Also many training activities are foreseen both for the services nuder the development of the CNAF team, as well as for the DODAS TS.
\section*{Acknowledgments}
EOSC-hub has been funded by the European Commission H2020 research and innovation
program under grant agreement RIA 777536.
\section{References}
\begin{thebibliography}{}
\bibitem{dodas}
DODAS: https://dodas-ts.github.io/dodas-doc/
\bibitem{mesos}
Web site: https://open.mesosphere.com/
\bibitem{deep}
Web site: https://deep-hybrid-datacloud.eu/
\bibitem{onedata}
Web site: https://onedata.org/
\bibitem{rda}
Web site: https://www.rd-alliance.org/groups/software-source-code-identification-wg
\end{thebibliography}
\end{document}
contributions/ds_eoschub/eoschub_wps_2.png

125 KiB

contributions/ds_eoscpilot/aai_2_anrepo2018.png

91.2 KiB

contributions/ds_eoscpilot/aai_anrepo2018.png

92.8 KiB