İnternet sitemizde çerez (cookie) kullanılmaktadır. Çerezler (cookie) hakkında detaylı bilgi için Çerez Politikası'nı inceleyiniz. Devam etmeniz halinde çerez (cookie) kullanımına izin verdiğinizi kabul edeceğiz. Çerez ayarlarınızı değiştirmeniz halinde internet sitesinin birtakım özelliklerini kullanamayabileceğinizi belirtmek isteriz.

Android Programlamada Modelleme

Modele Dayalı Geliştirme (MDD) ile Android Cihaz ve Uygulamaların Teslimini Hızlandırma

Android ile Modele Dayalı Geliştirme (MDD) - Android Cihaz ve Uygulamaların Teslimini Hızlandırma


"Android yazılım yığınının çeşitli cihazlar üzerinde uygulamalar için pazar payı kazanması ile birlikte, gömülü ürün tasarımları daha karmaşık hale gelmektedir ve ürün yaşam döngüsü daralmaktadır. Verimli geliştirme daha önemli hale gelmektedir. Bu makale, modele dayalı geliştirme kullanarak geliştiricilerin Android tabanlı cihazların ve uygulamaların teslimini hızlandırmasına yardımcı olacak çeşitli opsiyonlar sunar."

Android yazılım yığınının akıllı telefon, tablet, televizyon, araç içi bilgilendirme ve eğlence sistemleri gibi çeşitli cihazlar üzerinde uygulamalar için hızla pazar payı kazanmaktadır. Pazar segmentlerinin çeşitliliği, yeni cihazların sayısında bir patlama meydana gelmesi ve heterojen kullanıcıların talepleri cihaz üreticilerini ve uygulama sağlayıcılarını yüksek kaliteli, kısa zaman diliminde yenilikçi ürünler tanıtmaya zorlamaktadır. Aynı zamanda bütçeler de küçülmekte ve bu bağlamda zorlu bir ekonomik ortamda geliştirme kaynaklarının verimli kullanılması kritik bir gerekliliğe sahiptir.

Gömülü ürün tasarımlarının daha karmaşık hale gelmesi ve ürünlerin yaşam döngüsünün küçülmesi ile verimli bir uygulama ya da cihaz geliştirmek vazgeçilmez hale gelmiştir. Modele dayalı geliştirmenin ortaya çıkması ile birlikte, ürün geliştirme sürecini ivmelendirmek mümkün kılınmıştır. MDD ile, yazılım mühendisleri gereksinimlerini daha açık bir şekilde anlayıp analize edebilir, otomatik olarak hedef donanımda direkt olarak kod oluşturabilir. Bu makalede MDD kullanarak geliştiricilerin Android tabanlı uygulama ve cihazlarda hızlarını arttırabileceği birkaç senaryo üzerinde durulmaktadır.


Android Yığını Hakkında


Android mobil cihazlar için bir yazılım yığınıdır. Android bir işletim sistemi, katman ve anahtar uygulamalar içerir. Android SDK, Android platformunda Java programlama dilini kullanarak uygulama geliştirmeye başlamak için gerekli olan araçları ve API' leri sağlar. Bunlar bir cihaz emülatörü, hata ayıklamak için araçlar, bellek ve performans profilleme, ve Eclipse ortamında çalışabilmek için bir eklentiden oluşur. Figür 1 'de Android işletim sisteminin uygulama çerçevesi (application framework) , kütüphaneler, Android çalışma zamanı ve Linux çekirdeği gibi ana bileşenleri gösterilmektedir.


 

    Figür 1. Android yazılım yığının ana bileşenleri


Android yazılım geliştiricileri platform satıcıları ve uygulama geliştiricileri olarak iki tür altında sınıflandırılabilir.

• Platform satıcıları şirketlerin yazılım ve donanımı birleştirerek asıl cihazları üreten şirketlerdir. Bu cihazlar, akıllı cihaz uygulamaları için birer hosting ortamı sunarlar, çoğu uygulama server öğesi de içerebilir.

 

• Uygulama geliştiricileri, Android ortamında çağrılan servislerin yazılımlarını yaratırlar. Bu kategoride, platform satıcılarının sık sık cihazlarını önceden yüklenmiş uygulamalar ile yani tamamen kullanıma hazır bir şekilde teslim almak istemesi yüklenmiş uygulamaların üçüncü parti kişiler tarafından yapılması haliyle doğru çalıştığından emin olunmaması platform satıcılarında ortak olarak görülen ve değinilmesi gereken bir noktadır.

 

Gömülü Sistemlerde Modele Dayalı Geliştirme


Modeller sistemi en yüksek seviyede soyutlanmış, tutarlı doğru ve hassas bir şekilde sunar. Modeller kaynak kodundan soyutluk bakımından daha yüksek bir seviyeye sahiptir çünkü görünümlerin inşasında sistemin ya da yazılımın fonksiyonel davranışsal veya yapısal durumu hakkındaki spesifik sorulara cevap verebilirler. "Resim" ve semantik modelleri ayırt etmek önemlidir. Belirsiz bir kavram gösteren bağlantısı uygulama ile kesik bir resim yararlı olabilir, ancak yazılımın ilgili yönlerini ayrıntılarını gösteren semantik olarak derin bir model geliştirici ve diğer paydaşlara büyük faydalar sağlayabilir. Özellikle, her zaman kaynağın asıl içeriğini sunan yazılıma bağlanmış iyi modeller görünümler arası tutarlılığı arttırır ve yazılımın iletişim gücünü de geliştirir.

Dünyada en bilinen modelleme dili Unified Modeling Language(UML), bir on yıl içerisinde büyük başarıya ulaşmıştır. UML, dile hem hassasiyet hem de bir faaliyet alanı sunan bir metamodeldir. UML diyagramları sistemi grafiksel olarak sunan ve model içindeki elementleri ve onların ilişkileri gösteren bir görünüme sahiptir. Model, uygulamanın fonksiyonel ve davranışsal bütünlüğü ile uygulamanın spesifik hedeflerde, RTOS, katman ve iletişim mekanizmalarında tamamen işlenebilir olmasına odaklanır.

 

Android Yazılım Geliştirme ve MDD Yakınsaması


MDD bize Android cihazların gelişimini hızlandırmak için çeşitli yollar sağlar. Android uygulamalarını güncelleyerek ve oluşturarak bu sırada yazılımın gelişimini gereksinimler, test ve planlama aşamaları doğrultusunda birleştirerek Android uygulamalarını ve Android framework' lerine daha derin bir bakış açısı kazandırır. Bu faydalarla birlikte Android bilgisayarlar ve hem Android SDK hem MDD araçları için birincil geliştirme ortamı olan Eclipse' i daha da güçlendirir.

 

 

Modelin Bir Parçası olan Android API


UML modelleme için güçlü bir dildir ancak sistemleri için bilgiyi sadece genel bir şablonda sunarlar. Yıllar boyunca UML profil olarak bildiğimiz bir dizi varyantlar oluşmasına neden oldu. İlgili olan domain' i yakından modellemek belirsizliği azaltır ve meslektaşlar ve müşteriler için tasarım daha net ve anlaşılır bir görünümde olur.

Android alanında ürün geliştirmeyi kolaylaştırmak için Android Framework Android API' de bazı ana Android inşa bloklarını yani Android ana kalıplarını enkapsüle etmiş bir profil üzerinde bulunan çeşitli paketler, sınıflar ve ara yüzlerden oluşan bir kütüphane modeli üzerinden görselleştirilmiştir. Geliştiriciler elementleri profilden alıp model kütüphaneden UML diyagramlarının içine direkt olarak ekleyebilmeleri ile bu özellik API ile tasarımı zenginleştirir ve modelden Android uygulama üretmemize kılavuzluk eder. Figür 2' de Android uygulamalarda MDD kullanılarak görselleştirme, yaratma ve güncelleştirme yapılan bir UML profili ve bir model kütüphane gösterilmektedir. Bu sayede geliştiriciler Android terminolojisini tasarımlarında da kullanılabilir hale getirirler.


Figür 2. Bir model kütüphane ve UML profili üzerinden Android API

 

Bir Android cihaz geliştirmek için yeni kod üretmek, var olan kodun üzerinde modifikasyonlar yapmak gerekir ve aynı zamanda değiştirilemez olan kodlar ve üçüncü parti kütüphanelere de sahip olursunuz. Var olan kod ve üçüncü parti kütüphaneler modelde görselleştirilebilir, yapısını ve UML class diyagramlarını kullanarak ilişkilerini grafiksel bir sunumla görüntülenebilir. Görselleştirmek geliştiricilerin bir Android uygulamanın farklı bakış açılarını görmesine yardımcı olur ve müşteriler, yöneticiler, mimarlar, diğer geliştiriciler gibi paydaşlarıyla iletişimini de kolaylaştırır. Ek olarak da modelin dokümantasyon haline getirilmesi iletişimin bir yönden daha geliştirilmesine yardımcı olur.

Uygulamaların görsele dönüştürülmesi sırasında Android profili ve model kütüphane otomatik olarak Android' e özel servis veya aktiviteler de tanınır. Bu bağlamda Figür 3' de gösterildiği gibi görselleştirme sadece uygulamanın içinde değil, aynı zamanda Android API kullanımında ve API ile olan ilişkisinde de önemli bir paya sahiptir. Aynı zamanda Figür 3' de Eclipse ortamında modele dayalı geliştirmenin nasıl bir eklenti olarak entegre edilmesi, modellemeye olanak sağlaması , kodlama ve Android geliştirici araçlarının(Android Development Tools) yanı sıra simülasyonu inceleyebilirsiniz.


   Figür 3. Android uygulamanın algoritma ve yapısının görselleştirilmesi


Grafiksel sunumun yanı sıra , MDD araçları uygulamanın çalışma süresinin daha iyi anlaşılmasını sağlayan bir grafiksel ortam da sağlar. Figür 4'de bir Android uygulamasının bir cihaz simülasyonu ile yürütüldüğündeki işleyişi gösterilmektedir. Etkileşimler, yatay çizgilerin uygulamanın elementlerinin sırasını ve dikey çizgilerin elementler arasındaki işlemleri gösteren UML sequence diyagram ile tasvir edilmiştir. Elementler arasındaki yüksek seviye soyutluğun gösterilmesi ile birlikte, uygulamanın çalışma esnasındaki davranışları daha iyi bir şekilde anlaşılır ve paydaşlarla paylaşılması daha kolaydır.


 

Figür 4. Grafiksel ortam kullanılması uygulamanın çalışma şeklinin anlaşılmasına yardımcı olur.


Uygulamanın Yaratılması ve Güncellenmesi


Doğrudan kaynak koda bağlı olmayan diyagramların pratik değeri daha azdır. Sistemin semantiğini anlamak için oluşturulan bir model ve kodun iki ayrı sunum olarak gösterilmesi, zamanla kod ile modelin arasındaki denkliği yitirmesine sebep olur.

Yeni oluşturulan bir model, zaten var olan Android uygulamanın içindeki modeli kullanmak veya MDD eklentisi ile eşlenmiş bir Eclipse-Android projesinde uygulamanın kodu model üzerinden oluşturulur. Modelde paketler, sınıflar ve operasyonlar gibi statik olan bölümler ve davranış modelleme (durum makinesi) bulunur. Bu süreçte modelin ve Android profilinin otomatik olarak yarattığı "glue" kodun bağlanması Android framework' ünde kullanıcı kodu ile bağlanması da sağlanır.

Figür 5'de ise yapısal model sunumundan oluşturulmuş kodu göstermektedir. Uygulama geliştiricilerin modeli değiştirmesi halinde kod otomatik olarak güncellenir. Benzer şekilde eğer kaynak kodu güncellenirse model de yeni kaynak kodu içeriklerini yansıtacak şekilde değişir. Bu şekilde model üzerinden ya da kaynak kodundan çalışmak geliştiricinin tercihine bağlıdır model ile kod arasındaki senkronizasyon otomatik olarak sağlanır.

 

Figür 5. Yapısal modelden oluşturulmuş kod bölümü

 

Hata Ayıklama ve Test


Kusurların sürecin başlarında tanıtılmasına rağmen daha bir çok kusur söylenebilir. Hataları düzeltmenin maliyeti hata keşfedildiği andan itibaren eksponansiyel olarak artar. Sonuç olarak buradaki zorlu görev hatanın oluştuğu anda nasıl bulacağımızdır. Eğer model doğru bir şekilde uygulamadan istenen fonksiyonları ve davranışları gösterirse, önceden hata ayıklamada ve testte de etkin olur.

Figür 6' da bir modelden oluşturulmuş bir uygulama ile bir Android simülatörü kullanılmıştır. Aktif olan kısmı UML bölümünde görebilirsiniz. Sonradan uygulamadan beklenen davranışı sequence diyagramı ile karşılaştırabilirsiniz, bu size tasarım sırasında daha düzgün çalışmanızı sağlar. Ayrıca gerilemelere yol açabilecek değişimleri saptamak istediğiniz programı önceki çağırışlarınızda otomatik olarak oluşmuş sequence diyagramlarında da karşılaştırmalar yapabilirsiniz. Modele dayalı test aracı ise sonradan kullanmak üzere sequence diyagramlar oluşturarak hem testi yürütmek ve izlemek için yararlı olacaktır.


 

Figür 6. Hata ayıklama işlemi hem kod hem de model seviyesinde yapılabilir.


Uyum


Android cihazlar ve uygulamalar geliştirmek ana bilgisayar sistemi geliştirme, eski uygulama bakımı, donanım geliştirme yönetme gibi işlemler içerir. Bu farklı alanların entegrasyonunu yönetmek kompleks bir süreçtir ve bu alanlarda çalışan takımların da bütünsel bir görüşe sahip olmasını gerektirir. Android cihazların bu bakımdan kompleks olması test dizilerinde, yaşam döngülerinde, bu sistemleri birbirine bağlayan eklem sistemlerinde, çıkan ürünlerin müşteriye sunulma yöntemlerinde ve bu sistemleri izlemek ve yönetmek gittikçe zorlu ve çekişmeli bir hale getirmiştir. Bu çekişme giderek ajanslar, girişimciler, firmalar ve OEM' ler gibi büyük distrübitör takımlara kadar genişlemiştir.

Figür 7' de gösterildiği üzere sürekli devam eden geçerlilik ve doğruluğunu saptama aşaması, gereksinimleri kombinlemek, modeller, kalite yönetimi, proje izleme gibi süreçleri de teşvik eder.Modeller bütün takım tarafından erişilebilir olmalıdır ve bu sayede de ana tasarımın kaynağı haline gelir.

 

Figür 7. Akıllı cihaz veya uygulamaların uyumla yönetilmesi


Örnek olarak, Figür 8' de gösterildiği gibi MDD gereksinimlerin daha iyi bir şekilde görselleştirilebilmesi için kullanılabilir bir yöntemdir. Gereksinimlerin modelde saklanması, tasarım elementlerinin ve test durumlarının yaratılması modelle birlikte izlenebilir bilginin sağlanmasına öncü olur. Gereksinimlerden edindiğimiz bilgiler de örnek olarak bir kullanıcı adı veya spesifikasyon ile gereksinimlerin kullanılır haline getirilmesine, modelin tasarımına ve kodun implementasyonuna da geçirilmiş olur


 

Figür 8. Modelin bir parçası olan gereksinimler.


Sonuç


MDD ile yapabileceklerimizi arttırarak ve birleştirerek Android geliştirme ortamında verimliliği arttırıp, piyasayı zenginleştirip artı olarak da maliyeti düşürebiliriz. Kodlama ve modelleme ile tek bir çevre yaratmakla aynı zamanda uygulama geliştirenlere de tasarım adına görsel bir teknik özellik sunar. Ek özellik olara da bir framework de uygulamanın yapısına ve davranışına ışık tutma avantajıyla var olan Android uygulamalarında kullanılabilir. Modellerde gereksinimleri bağlamak, tasarım ve kodu oluşturmak aynı zamanda da dokümantasyonu da basitleştirme ve hatta da otomatik olarak bir dokümantasyona da sahip olmak sahip olabileceğimiz anlamına gelir.

Android geliştirme ortamında modelleri yarattıktan sonra, uygulamalara doğrudan sahip oluruz. Özetle modeller tasarımı oluşturmak, doğrulamak ve onaylamak ve tasarımın döngüsünde hataları baştan yakalamayı sağlar ve bize kodun kalitesini de geliştirmek adına otomatikleştirilmiş bir yazılım birimi ve regresyon testleri sunar. Entegre edilmiş bu ortam geliştirici takımlar arasındaki uyum ve karşı geliştirilmiş organizasyonlar adına da çok önemli bir faktördür.

 

Kaynak: IBM, Beery D.Holstein, Rhapsody Product Development, 2011

 

Ece ALTAYLAR