Sunday, January 17, 2010

what the ... is siberfiber?

I am often exposed to this question and usually my attempt to tell people what siberfiber is ends with failure, and finally I decided to write it down.

siberfiber is an a computer-aided management software developed by intimatek, and supported by TUBITAK. it is aiming to create an environment for business analysts to make them capable of producing industry and company specific enterprise resource planning (ERP) and bussiness process management (BPM) solutions, without any need for a programmer.

what makes siberfiber a R & D project is it's original approach to some ancient problems. a major problem in an ERP software is reflecting changes in a resource, to the other resources that are affected by this change. programmers are the ones who analyses resources and designs the data model and they create necessary tables on database according to this design. but the general problem of classical database systems is to keep relationship between data models one-sided.

well what does that mean? assume that we have two resources 'teacher' and 'student', if there is a 1 to n relationship between these two resources (1 teacher can have multiple student, 1 student can have only 1 teacher), on conventional database systems, general method is adding a column to 'student' table to hold the ID of the teacher. in this case, by looking at the schema of 'student' table, it's possible to see realationship between 'teacher' and 'student' resources, but the 'teacher' table's schema won't have any information about this relationship. if you need the 'x teacher's students' knowledge, you have to hire a programmer to write a new sql query for you.

siberfiber is developed based on declarative programming rather than procedural programming, all the relations between resources on siberfiber is two-sided. this two approach solves basical problems from the root even without they born.

on siberfiber, the relationship between teacher and student can be seen on both 'student' and 'teacher' types' schemas, because all relations are established at definition level.

let's make our sample a little more complex, for example, we need 'x teacher's successful students' information, we need to add a new column with name 'grade' for 'student' table. and then give our programmer the definition of 'successful student' as 'students with a grade higher than 50'. in this case, our programmer will write the following sql for us:
select * from student, teacher where and student.grade => 50;
and on siberfiber this logic will be expressed by this sfs [1], at the time when 'teacher' and 'student' types are created:
createsifter "teacher" "successful students" n "student" "succeeded teacher" 1 filtervaluesgreaterthan student.grade 50
(i'll not do any explanation about sfs now, unfortunately it's impossible to explain it by 3 words, I think at this stage it would be an unnecessary detail, but if I hadn't given this example it would be too abstract)

sfs script at above is creating a property (at classical database system, properties can be considered as columns in the table) both at 'student' type and 'teacher' type.

even though no one had asked us 'which teachers did this student passed from?' question, siberfiber's two-sided relations made this answer ready automatically and unavoidably. in fact, what we do here is binding two types with a rope, and there is a sign by this rope at student side on which 'goes to teachers whose lessons are passed' is written. and in the other side, teacher side, on the sign what's written is 'goes to students who are passed the lesson' text. it's possible to travel in both directions on this rope.

usually in conventional databases you can only go down by a rope, you can not go up. to get the 'teachers who are passed' knowledge you have to pull another rope, which means programmers have to write some more sql for you.

by two-way relationship, at siberfiber space it's possible to update all types that are affected by changes occured at any type instantly and automatically (in fact i mean 'thing' which means instance of types at siberfiber terminology by saying 'type' here).

at ERP software world, normally business analysts are the ones who identify process and resources, then they would tell programmers what to do, they would expect programmers to know what they are talking about as much as they are, then programmers began to code in the light of what they understood, and there becomes a software. or the programmer had done same kind of jobs for that sector too much, and (s)he'd turned into a bussiness analyst-programmer, and (s)he was thinking that (s)he is the god of that bussiness, (s)he doesn't need anyone in the world.

in siberfiber, definitions are given directly to the system, not to the programmer. of course, we don't expect business analysts to write sfs code, for this, an analyst designer interface is being written, siberfiber definitions can be expressed with a notation smilar to BPMN [2]. business analysts, by using this design interface, will be able to create these definitions, sfs codes created by these definitions will update system at real-time.

and of course, a CAM[3] sofware as siberfiber will need a user interface for it's users, well, who will create this interface then? answer is business analysts again, they will create this user interface by siberfiber definitions called masks. masks determine how and which part of a type will be shown in the interface. for example, grade property of 'student' will be shown as a read-only field at student interface, and it will be shown as an editable textbox on teacher interface. mask definitions are also done via analyst designer interface graphically, as it's done in type definitions.

I hope, I could succeed to give an idea about siberfiber. as you can estimate, this is the only visible part of the iceberg. if I'd tried to tell more, it would be unnecessarily confusing, and maybe it became so even for now.

[1] Siberfiber Script
[2] Bussiness Process Modeling Notation
[3] Computer Aided Management

No comments: