E N D
NOTICE! • These materials are prepared only for the students enrolled in the course Distributed Software Development (DSD) at the Department of Computer Science and Engineering, University of Mälardalen, Västerås, Sweden and at the Faculty of Electrical Engineering and Computing, University of Zagreb, Croatia (year 2003/2004). • For all other purposes, authors’ written permission is needed! • The purpose of these materials is to help students in better understanding of lectures in DSD and not their replacement!
Selected Topics in Software Engineering-Distributed Software Development
ASN2CSV project team ASN1 to CSV converter generator
About project • Telecommunication industry • Might be used in a real enviroment • Customer: Ring Datacom
Telecommunication • Switching elements produce calls information – Call Detail Records (CDR) • CDR's are collected and distributed to other systems, like billing system • Usually, CDR's are encoded in ASN1 BER
Problem • Different CDR formats (ANS1 grammars) • Convert to some common format (CSV) in order to use in different systems • Develop decoder for each encountered ANS1 grammar or...
Task • To make an automated CDR to CSV converter for any encountered ANS1 grammar
Requirements • Multiple platforms • Speed • Reliability • Well tested and debugged
ASN1 • Abstract Syntax Notation One • X.400 electronic mail, X.500 and LDAP directory services, H.323 (VoIP), BACnet and SNMP, ...
ASN1 • Data types: boolean, null, integer, real, enumerated, bit string, octet string, ... • Data constructs: choice, sequence, set, sequence of, set of
ASN1 Example • SGSN-R6-CDR • DEFINITIONS IMPLICIT TAGS ::= • BEGIN • BCDDirectoryNumber ::= OCTET STRING • CallDuration ::= INTEGER • CallEventRecord ::= CHOICE • { • sgsnPDPRecord [20] SGSNPDPRecord, • sgsnSMORecord [23] SGSNSMORecord, • sgsnSMTRecord [24] SGSNSMTRecord • }
8 7 6 5 4 3 2 1 Class P/C Number Class Bit 8 Bit 7 Universal 0 0 Application 0 1 Context-specific 1 0 Private 1 1 BER • Basic Encoding Rules 12 8-11-2008
BER Example 61 82 e5 fe-5f 29 01 02-5f 25 01 01-5f 26 05 48 a..._).. _%.._&.H 52 56 56 49-5f 24 05 53-56 4e 53 4d-5f 27 07 30 RVVI_$.S VNSM_'.0 30 30 39 30-36 36 5f 1f-0e 32 30 30-38 30 39 31 009066_. .2008091 39 32 30 34-34 35 33 5f-2d 05 2b 30-32 30 30 62 9204453_ -.+0200b 82 e5 bb 64-45 5f 22 08-29 34 00 11-30 96 30 7f ...dE_". )4..0.0. 55 0e 32 30-30 38 30 39-31 39 32 30-33 34 30 34 U.200809 19203404 5f 2d 05 2b-30 32 30 30-53 01 00 58-01 00 7f 2e _-.+0200 S..X.... 05 5f 2b 02-32 31 56 0b-33 38 36 34-31 30 30 31 ._+.21V. 38641001 33 33 33 5f-23 04 4d 53-43 36 64 45-5f 22 08 29 333_#.MS C6dE_".) 34 00 11 35-11 71 1f 55-0e 32 30 30-38 30 39 31 4..5.q.U .2008091 39 32 30 33-34 30 31 5f-2d 05 2b 30-32 30 30 53 9203401_ -.+0200S 01 00 58 01-00 7f 2e 05-5f 2b 02 32-31 56 0b 33 ..X..... _+.21V.3 38 36 34 31-30 30 31 33-33 33 5f 23-04 4d 53 43 86410013 33_#.MSC 36 64 45 5f-22 08 29 34-00 11 34 32-97 2f 55 0e 6dE_".)4 ..42./U. 8-11-2008
CSV • Comma Separated Values • value1,value2,value3 • value1,,value3 • value1,value can contain spaces,value3 • value1,”north, south”,value3 • value1,”some ””important”” data”,value3 8-11-2008 14
CSV Example 2, 38641001333, , 293400113096307, , 20080919203404, +0200, 0, , , 0, 21, , , , HRVVI, SVNSM, 0009066, 2, 38641001333, , 293400113511711, , 20080919203401, +0200, 0, , , 0, 21, , , , HRVVI, SVNSM, 0009066, 2, 38640441000, , 293400113432972, , 20080919203400, +0200, 0, , , 0, 21, , , , HRVVI, SVNSM, 0009066, 2, 38640441000, , 293400113426717, , 20080919203354, +0200, 0, , , 0, 21, , , , HRVVI, SVNSM, 0009066, 2, 38640441000, , 293400113445415, , 20080919203350, +0200, 0, , , 0, 21, , , , HRVVI, SVNSM, 0009066, 2, 38640441000, , 293400113343858, , 20080919203347, +0200, 0, , , 0, 21, , , , HRVVI, SVNSM, 0009066, 1, 38640441000, , 293400113210345, , 20080919203347, +0200, 0, , , 0, 22, , , 182, HRVVI, SVNSM, 0009066, 1, 38640441000, , 293400113445415, , 20080919203343, +0200, 0, , , 0, 22, , , 182, HRVVI, SVNSM, 0009066, 2, 38641001333, , 293400110348422, , 20080919203340, +0200, 0, , , 0, 21, , , , HRVVI, SVNSM, 0009066, 1, 38640441000, , 293400113343858, , 20080919203337, +0200, 0, , , 0, 22, , , 182, HRVVI, SVNSM, 0009066, 2, 385910401, , 293400113158588, , 20080919203336, +0200, 0, , , 0, 21, , , , HRVVI, SVNSM, 0009066, 1, 38640441000, , 293400113432972, , 20080919203335, +0200, 0, , , 0, 22, , , 182, HRVVI, SVNSM, 0009066, 2, 38640441000, , 293400113338805, , 20080919203335, +0200, 0, , , 0, 21, , , , HRVVI, SVNSM, 0009066, 2, 38640441000, , 293400113555638, , 20080919203332, +0200, 0, , , 0, 21, , , , HRVVI, SVNSM, 0009066, 2, 393492000200, , 293400113555103, , 20080919203331, +0200, 0, , , 0, 21, , , , HRVVI, SVNSM, 0009066, 8-11-2008
DSD Project Plan 1/2 • The customer is Ring Datacom • The project leader is Ivan Škugor • The team leader in MDH is Guido Di Campli
DSD Project Plan 2/2 Project Responsability
Communications • Communication • Skype • MSN • Google group • E-mail • Common language: English
DSD Work handling 1/2 From ASN.1 to CVS file converter V0.1 documentation: “The General ASN.1 parser generation project can be divided into two subprojects that can be carried out independently providing that the interface between the two modules is clearly defined. The first part or module is a standalone GUI application that takes as an input an ASN.1 grammar and generates a configuration file for the ASN.1 to CSV file converter according to the choices made by the application user. This configuration file is used by the second module – the ASN.1 to CSV file converter that accepts a binary ASN.1 BER encoded file (conformant to the grammar in question) and generates a CSV text file with the values defined in the control file.” 8-11-2008
DSD Work handling 2/2 • Subproject 1: GUI + Converter • Subproject 2: eSNACC modification and testing Project Subproject 1 Subproject 2
DSD Risks
DSD Estimation Time
DSD ASN.1 CSV converter generator
DSD ASN.1 CSV converter generator • Select output format options in user friendly GUI • Generate ASN.1 decoding routines by ESNACC • Generate a main program (ANSI C) according to configuration file • Compile with ANSI C compiler for target platform