Dalam pengembangan suatu program aplikasi, sangat penting mempertimbangkan ketepatan penggunaan tipe data. Kajian tentang tipe data tidak terlepas dengan data itu sendiri, tipe data, dan nilai data yang diolah oleh program. Data merupakan fakta yang terukur, baik terlihat (tangible) maupun yang tidak terlihat (intangible). Contoh data adalah fakta-fakta tentang kondisi badan kita, antara lain berat, tinggi, maupun usia. Sedangkan tipe data adalah aspek yang membatasi karakteristik dari suatu data, baik dari sisi nilai maupun operasi yang diberlakukan terhadap suatu data. Contoh, kita kenal integer di dalam bahasa Pascal, atau int dalam bahasa C. Kalau suatu data bertipe integer, maka data tersebut nilainya hanya berupa bilangan bulat, dan operasi yang bisa dilakukan adalah tambah, kali, bagi dan sejenisnya.

Lebih lanjut mengenai tipe data, kita bisa kaji dari sisi kelas maupun level abstraksinya. Terdapat dua kelas tipe data kalau kita lihat dari kompleksitasnya, yaitu :
Tipe data atomik, adalah tipe data yg dipandang sebagai satu kesatuan tunggal dan tidak dapat dipecah-pecah lagi (non decomposible entity).Contoh : Integer, Char, float/real.
Tipe data berstruktur, adalah tipe data yang dipandang sebagai satu kesatuan tunggal dan dapat dipecah-pecah lagi (decomposible entity).Contoh : Array, Structure, dll.
Sedangkan atas level abstraksinya, tipe data dapat dikelompokkan ke dalam tiga level (Daniel, 8), yaitu :

Tipe data abstrak, adalah tipe data yang merupakan hasil imajinasi kita dengan memberikan beberapa batasan domain maupun operasinya. Contoh : usia, daftar nilai.
Tipe data virtual, adalah tipe data yang ada/dikenal oleh bahasa pemrograman. Contoh : integer, array of integer.
Tipe data fisikal, adalah tipe data yang nyata dalam main processor.

Dengan pertimbangan aspek nilai dan operasi dari suatu tipe data, kita dapat menentukan pemilihan yang tepat suatu tipe data. Bagaimana seandainya kita ingin membuat suatu batasan sendiri untuk suatu tipe data ? Beberapa teknik abstraksi bisa kita gunakan, antara lain dengan melakukan spesifikasi sebagaimana yang ada di buku yang penulis rujuk di atas. Hal penting untuk melakukan spesifikasi adalah pendefinisian domain dan operation. Untuk pendefinisian domain, dalam beberapa literatur lain sering juga disebut object, perlu terlebih dahulu mendefinisikan component element dan structure. Component element atau cukup disebut element adalah aspek yang membatasi nilai data, sedangkan structure adalah aspek pengorganisasian nilai datanya. Sejalan dengan pendefinisian domain, perlu juga dilakukan pendefinisian set of operations atau di beberapa literatur sering disebut function. Jika spesifikasi sudah dilakukan, maka sampai tahap ini perangcangan sudah siap untuk masuk tahap selanjutnya yaitu representasi dan implementasinya. Sebelum melanjutkannya, pemilihan bahasa pemrograman yang akan digunakan perlu dipertimbangkan. Sebagaimana level tipe data yang dijabarkan sebelumnya, representasi data di dalam setiap bahasa pemrograman bisa berbeda, contoh representasi usia, kita kenal int di bahasa C, integer di bahasa Pascal. Jadi pada tahap representasi ini, fokus utama adalah mewujudkan suatu domain ke bahasa pemrograman yang dipilih. Tahap berikutnya yaitu implementasi, dilakukan penulisan program sesuai bahasa yang dipilih untuk setiap operasi yang sudah didefinisikan pada saat proses spesifikasi.

Referensi :

Daniel F.Stubbs & Neil W. Webre (1985), Data Structure with Abstract Data Types and Pascal, Book / Cole Publishing Company.