ASN.1 to CSV code generator - FER-a

advertisement
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!
2015-02-14
1
Selected Topics in Software Engineering
Distributed Software Development
2015-02-14
2
ASN.1 to CSV converter
generator
Project Current state presentation
2008-12-04
FER:
MDH:
Ivan Škugor
Guido Di Campli
Željko Krpetić
Giovanni Piemontese
Željko Knežević
Paolo D’Amelio
Steering group:
Igor Čavrak at FER
Rikard Lang at MDH
M.Sc. Branko Beslać (Ring datacom)
2015-02-14
3
What we will talk about?
•
•
•
•
•
•
Problems
Solution modification
Interfaces
Alternative solution
GUI
General project status
2015-02-14
4
Problems - Mapping of BER to CSV
-
-
The BER file format (as described by the ASN.1
grammar) is a structured format, while CSV is a linear
format
There is NO direct 1:1 mapping from BER files to CSV
files !
In cooperation with our customer we found a solution
Data in each node of the grammar is represented with a
separate, different row in the CSV file
Each row has a type identifier at the beginning
It is not a real CSV file
2015-02-14
5
Problems – testing a lot of tools
-
Open Source
SNACC/eSNACC
ASN1C
Libtasn1
...
Commercial software
- ASN.1 analyzer (Japan)
- ASN1C ASN1 Compiler (Objective systems)
- MARBEN™ ASNSDK TCE
2015-02-14
6
Problems – eSNACC modification
-
Modifying eSNACC turned out to be very difficult.
Even just compiling eSNACC from source code was
problematic
Finding and modifying ASN.1 parsing routines was a
major problem
We found a better solution (using another ASN1C tool
and our own parsing routines)
2015-02-14
7
Problems - Custom code generator
-
-
Generating code for all possible cases could be a
problem
We extracted many rules from only one sample
grammar (and of course, that was the simple one :)
We decided to look for other solutions
We found that BER files have a 1:1 mapping with XML
Alternative solution : use a 3rd party BER to XML
converter, and then parse the XML file and generate
CSV output
2015-02-14
8
Old software architecture
2015-02-14
9
Solution modifications
2015-02-14
10
Interfaces
1. Between tree generator and GUI
2. Between GUI and Custom code
generator
2015-02-14
11
Example ASN.1 Grammar
Nrtrde ::= [APPLICATION 1] SEQUENCE
{
specificationVersionNumber SpecificationVersionNumber OPTIONAL, -- *m.m.
releaseVersionNumber
ReleaseVersionNumber
OPTIONAL, -- *m.m.
sender
Sender
OPTIONAL, -- *m.m.
recipient
Recipient
OPTIONAL, -- *m.m.
sequenceNumber
SequenceNumber
OPTIONAL, -- *m.m.
fileAvailableTimeStamp FileAvailableTimeStamp OPTIONAL, -- *m.m.
utcTimeOffset
UtcTimeOffset
OPTIONAL, -- *m.m.
callEvents
CallEventList
OPTIONAL,
callEventsCount
CallEventsCount
OPTIONAL -- *m.m.
}
CallEventList ::= [APPLICATION 2] SEQUENCE OF CallEvent
CallEvent ::= CHOICE
{
moc
Moc,
mtc
Mtc,
gprs
Gprs
}
2015-02-14
12
First interface - XML
2015-02-14
13
Second interface – Xpath format
/Nrtrde[@type=‘SEQUENCE’]/CallEventList[@type=‘SEQUENCE
OF’]/CallEvent[@type=‘CHOICE’]/Moc[@type=‘SEQUENCE’]/Imsi[@optional=‘YES’]
/Nrtrde[@type=‘SEQUENCE’]/CallEventList[@type=‘SEQUENCE
OF’]/CallEvent[@type=‘CHOICE’]/Moc[@type=‘SEQUENCE’]/Imei[@optional=‘YES’]
/Nrtrde[@type=‘SEQUENCE’]/CallEventList[@type=‘SEQUENCE
OF’]/CallEvent[@type=‘CHOICE’]/Moc[@type=‘SEQUENCE’]/CallEventDuration
[@optional=‘YES’]
/Nrtrde[@type=‘SEQUENCE’]/CallEventList[@type=‘SEQUENCE
OF’]/CallEvent[@type=‘CHOICE’]/Moc[@type=‘SEQUENCE’]/DialledDigits [@optional=‘YES’]
/Nrtrde[@type=‘SEQUENCE’]/CallEventList[@type=‘SEQUENCE
OF’]/CallEvent[@type=‘CHOICE’]/Moc[@type=‘SEQUENCE’]/ChargeAmount [@optional=‘YES’]
2015-02-14
14
Alternative solution
2015-02-14
15
BER
2015-02-14
16
BER to XML
2015-02-14
17
(Quasi) CSV
2015-02-14
18
Custom code generator, xml2csv.c &
XML to CSV converter
2015-02-14
19
GUI
2015-02-14
20
General project status
Project status : slightly behind
Activity
w45
w46
w47
w48
w49
w50
w51
w52
w1
w2
Project plan
Requirements
analysis & definition
System Design
Tree view generator
Converter generator
GUI
Integration
Testing
Final Product
2015-02-14
21
w3
Summary
- We learned a lot about the task and the standards that
are involved
- Now we understand the problem much better, and our
customer also understands the problem much better 
- We hope that this presentation will help the steering
team also understand the problem.
2015-02-14
22
Summary
- The official name of the project is "ASN.1 to CSV
converter“
- The input file is in fact a BER file (The BER format
specifies a self-describing and self-delimiting format for
encoding ASN.1 data structures)
- The output file isn't actually in CSV format (because it's
impossible to convert BER to that kind of format)
- We are not producing a converter but a converter
generator, and that is significantly different
- We put a lot effort to understand all this things
2015-02-14
23
Download