Yazar: hcetin

Bir Multicopter’in Temel Parçaları

Son zamanlar popülerleşen, ilk olarak hobi amaçlı kullanılmaya başlayan bu cihazlar gelecekte hayatımızı bolca kullanılacak gibi görünüyor. Kargo taşımacılığından, fotoğraf çekmeye, film çekimlerinden, güvenlik amaçlı tespit sistemlerinde kullanıma kadar bir çok alanda aktif olarak kullanılmaktadır. Düşük maliyeti, kullanım kolaylığı ve yüksek hareket kabiliyeti bu cihazların kullanım alanlarını artırarak tercih sebebi olmaktadır.

Genel olarak drone olarak adlandırılan bu cihazların 4, 6, 8 pervaneli ve çeşitli boyutlarda bir çok modelini ile karşılaşabiliriz. Bu yazıda ortalama bir quadcopter yapmak için gerekli olan temel parçalardan ve teknolojilerden bahsedeceğim.

İskelet (Body)

Öncelikle tasarlanmak istenen cihazın kaç pervaneli olacağı, ne kadar süre havada tutulmak istendiği max ağırlığı gibi temel paramatreleri en optimum şekilde planlanması gerekmektedir. Bu hesaplamada yardımcı olabilecek bir çok hesaplama sitesi bulunmaktadır. İnternette “multicopter calculator” olarak aratıldığında bir çok örneğini görülebilir.

İskeleti kendiniz yapabileceği gibi piyasada bulunan hazır ürünler de kullanabilir. Burda dikkat edilmesi gereken temel konu genel gövdenin hafif ve sağlam olmasıdır.

Pervaneler (Propellers)

Multicopter’de kullanacağınız pervane seçimi basit gibi görünse de bir hayli önemlidir. Pervane çapı, üretilen malzeme, kanatlardaki eğim ve sağlayabileceği kaldırma kuvveti gibi birçok parametreyi göz önünde bulundurmalıdır. En ufak bir çarpmada hasar almaması için yedekli temin edilmesi ve dayanıklı malzemelerin kullanılması önerilir. Kullanılacak olan pervane yuvaları ile motorların bağlantı noktalarının mutlaka uyum sağlıyor olması gerekir.

Motorlar (Motors)

Bir cihazı uçurabilmek için yüksek devirde dönüş sağlayan motorlara ihtiyaç vardır. Multikopterlerde de elektrikli motorlar tercih edilir. Brushless DC (BLDC) motorlar yani fırçasız motorlar bu cihazları uçurabilecek en uygun motor çeşididir. Düşük enerjiyle daha çok hareket sağlayabilen motorlar uçuş süresini etkileyeceğinden yüksek verimli motorları kullanmak tavsiye edilir.

Electronic Speed Controller (ESC)

Multikopterleri havada kontrol edebilmek için motorlara farklı değerlerde akımlar vermek gerekir. Bu konuda ESC’ler devreye giriyor. ESC’lere multikopterin kontrol sistemi üzerinden ne kadar devirde (RPM) motorların çevireceği bilgisini sağladıktan sonra ESC’ler sürekli olarak motorla iletişim halinde hareket ederek, ne kadar akım verilmesi gerekiyorsa pil üzerinde bu akımı motora sağlarlar. Her motor için bir ESC temin edilerek multikopterin dengede uçması sağlanır.

Pil (Battery)

BLDC motorlar anlık yüksek akımlara ihtiyaç duymaktadır. Lipo (Lityum Polimer) piller bu motorların akım ihtiyacını karşılayacaktır. Kullanılacak olan pilin sağlayacağı enerji miktarı havada uçuş süresini uzatacağından fakat pilin ağır olması ağırlığı artıracaktır. Burada en optimum değerin seçilmesi uygun olacaktır. Pilin Amper, Voltage ve Constant değerleri motorlara uygun ve hassas şekilde hesaplanmalıdır.

Yüksek akım sağlayabilen pillerde tehlike oluşturabileceğinden dolayı pilin kısa devre yapmamasına çok dikkat edilmelidir. Pilin şarj edilmesi için cihaz temin edilmesi de unutulmamalıdır.

Kablolar (Cables)

Motorlar, pil ve ESC’ler arasında yüksek miktarda akım taşınacağı için kablolarda ısınma gerçekleşebilir. Dolayısıyla multikopter’ler de ısıya dayanıklı hafif silikon kaplı kablolar tercih edilir. Bağlantı noktalarının sağlam ve düzgün şekilde bağlanıldığından emin olunmalıdır.

Kontrol Sistemi (Control System)

Tüm multikopterin dengeli bir şekilde uçması için ve belirtilen yöne doğru hareket etmesi için ana bir kontrol sistemine ihtiyacı vardır. Kontrol sistemleri Gyroscope, Accelerometer gibi sensörlerden aldığı verileri yorumlayarak tüm sistemin düzenli çalışmasını sağlarlar. Yine kontrol sistemi üzerinde barometer, speedometer, thermometer gibi sensörlerde bulunabilir. Multikopter’e hazır bir kontrol sistemi alabileceği gibi yeni bir kontrol sistemi de tasarlanabilir.

Kontrol sistemini tasarlamak için ciddi bir çalışma yapılması ve bilgi birikimi gerekir. PID(Proportional Integral Derivative) hesaplama gibi ve algoritmik yapıları iyi derece hakim olunması gerekir.

Yine detaylı bir şekilde mikroişlemci programlama ve kart dizayn etme gibi temel elektronik bilgisine sahip olunmalıdır.

Ağ Haberleşmesi (Network Communication)

Tasarlanan multikopteri yerden kontrol edilmesi gerekiyorsa arada bir ağ yapısı kurulması gerekir. İletişim sağlanacak mesafe, taşınacak veri boyutu vs gibi parametreler hesaplandıktan sonra kullanılacak olan yönteme kara verilmelidir. Bu amaçla ZigBee gibi modüller kullanılabilir. Kullanılacak olan network kartlarının serbest olan frekans değerlerinde çalışması gerekir.

Yer İstasyonu (Ground Station)

Multikopteri yerden kontrol etmek için bir yer istasyonu geliştirilebilir veya open source bazı projeler kullanılabilir. Yer istasyonu sayesinde multikopter üzerinde bulunan veriler okunabilir ve cihaza komutlar gönderilebilir.

Yazılım Proje Yönetim Modelleri

Proje yönetimi, bir olayın belirli hedef ve amaçlarına doğrultusunda bitirilmesi için gerekli kaynaklarının planlanmasını, organize edilmesi ve tedarik edilmesi için yürütülen disiplin biçimidir.

Proje yönetimi denince akla inşaat mühendisliği veya endüstri mühendisliği alanları gelse de bu yazımızda yazılım proje yönetimine değineceğiz.

Dünya üzerinde yazılım sektörünün büyümesiyle bu geliştirme süreçlerini belirli akışlara oturmak için bazı metodolojiler ortaya çıkmıştır. Bu yöntemlerin kullanmasındaki temel amaç daha düşük maliyetle daha hızlı ve kaliteli projeler oluşturulması olmuştur.

Proje yönetim şekillerinin belirli standartlara oturması için Amerika merkezli Project Management Institute (PMI) kuruluşu çalışmalara öncülük etmektedir. Kuruluş verdiği Project Management Professional (PMP) sertifikası bu alanda çalışanlara artı katmaktadır.

Proje yönetimi altında Zaman Yönetimi, Maliyet Yönetimi, Kalite Yönetimi, Risk Yönetimi, Kaynak Yönetimi, Değişiklik Yönetimi, İletişim Yönetimi gibi alt konularda mevcut olsa da bu yazımda bu detaylara girmeyeceğiz.

Genel bir akışa değinmemiz gerekirse yazılım projeleri “Açılış -> Analiz -> Tasarım -> Geliştirme -> Test -> Kapanış” adımlarından oluşur. İhtiyaçlar doğrultusunda bu akışta belirli katmanlar eklenebilir veya döngülerle akış değiştirilebilir.

Yazılım geliştirme modellerinde dünyada standartlaşmış yöntemleri inceleyecek olursak aşağıdaki gibi yaklaşımlar karşımıza çıkmaktadır.

Agile Development Model

Waterfall Development Model

Prototype Development Model

Spiral Development Model

Rapid Software Development Model (RAD)

Iterative Development Model

Incremental Development Model

Bu yöntemlerin hepsinin belirli durumlarda artıları, belirli durumlarda eksileri bulunduğu kabul etmek gerekir. Bir yazılım projesinde geliştirmesinde kullanılacak olan yönteme ön analizler yapıldıktan sonra karar verilebilir. Günümüzde en popüler kullanılan yöntemler Agile ve Waterfall Development Model’dir.

Agile Development Model döngülü bir akışı temel alır. Sürekli değişen kapsamlarını yönetmek daha kolaydır. Daha kısa geliştirme adımlarından oluşur. Kısa döngülerle müşterinin önüne ürünü koyma ve geri dönüşlerle geliştirmenin akış belirlenir. Örnek bir akış verecek olursak aşağıdaki şekilde yazılım geliştirme safhalarını görebilirsiniz.

Analiz -> Plan ->

Tasarım -> Geliştirme -> Test” -> “Tasarım -> Geliştirme -> Test” ->  “Tasarım -> Geliştirme -> Test” -> ”…”

-> Kabul

Waterfall Development Model, projenin yol haritasını en baştan belirlemenin ve sabit bir kapsamda ilerlemenin mümkün olduğu projelerde uygulanır. Genel olarak daha basit bir yönetim şeklidir. Örnek bir akışı aşağıda bulabilirsiniz.

Analiz -> Plan -> Tasarım -> Geliştirme -> Test -> Kabul

Web Uygulamalarında Sızma Testi Yöntemleri

Cross Site Script (XSS)

Kötü niyetli javascript, VBScript, ActiveX, HTML yada Flash kodları gömülerek web uygulaması üzerinden veri çalınan yöntemlerdir. İkiye ayrılır; Reflected XSS ve Stored XSS

1-Reflected XSS: Bu saldırı tipi açıklık bulunan sitede uygun alanlara yazılan javascript kodlarının çalıştırılması ile gerçekleştirilir. Burada sadece saldırı yapan kişi etkiyi görebilir ziyaretçilere etki edemez.

2-Stored XSS: Bu saldırı tipi reflected xss saldırısına göre daha çok tehlikelidir. Saldırgan açıklık bulduğu alana zararlı javascript kodlarını ekleyerek veritabanına kaydeder. Veritabanına kaydedilen veriler siteyi ziyaret eden herkese etki eder.

SQL Injection Vulnerability

SQL Injection, uygulama ekranındaki ilgili alana ek SQL ifadelerini ekleyerek yapılan bir tür atak tekniğidir. Saldırgan bu şekilde içerideki verileri ele geçirebilir.

Insecure Direct Object References

Insecure Direct Object References saldırı, geliştiricinin, URL olarak veya parametre yoluyla; dosya, dizin, veritabanı kaydı veya anahtar gibi, iç uygulama nesnesine ait bir referansı açığa çıkardığı zaman meydana gelir. Saldırgan, eğer erişim kontrol denetimi yoksa, izinsiz diğer nesnelere erişmek için doğrudan nesne referanslarını kullanabilir.

Security Misconfiguration

Güvenlik ile ilgili tanımların zayıf, yanlış veya varsayılan olarak bırakılmasından kaynaklanan saldırılardır. Standart bilgileri kullanarak sisteme sızmaya çalışılan saldırı tipidir.

Broken Authentication and Session Management

Tam olarak güvenliği sağlanmamış oturum nesneleri ve çerezlerinin ele geçirilip kötü amaçlar için kullanılmasıdır.

Cross Site Request Forgery (CSRF)

CSRF ataklarından bir sisteme login olmuş kullanıcı tekrardan login request göndermesi için zorlanır fakat bu sefer login requestindeki bilgileri istemciye değil saldırgana aittir.  Bu saldırılar kullanıcının izni ve isteği dışında, onun yerine işlem yaptırılmasıyla gerçekleşir.

Insecure Cryptographic Storage

Kriptolanmamış verilerin zayıf sunucularda korunmamasıdır. Eğer yeterli kriptolama sağlanmamışsa sunucular üzerinden özel güvenlik gerektiren bilgilere erişilebilir.

Failure to Restrict URL Access

Erişimi kısıtlanmış sayfalara erişimlerin kontrol edilmemesidir. Erişime açık bırakılan sayfalardan saldırılar alınabilir.

Insufficient Transport Layer Protection

Uygulamalar genelde hassas mesajlar gönderilirken network trafiğini zayıf algoritmalarla kriptolamayı gerçekleştirmeyebilirler. Burada eğer network trafiğini dinlemeyi başaran birileri varsa network üzerinden ulaştırmaya çalıştığımız bütün bilgileri saldırgan tarafından ele geçirilebilir.

Unvalidated Redirects and Forwards

Birçok web uygulamasında ilk ve son veri kontrolü yapılmaksızın yönlendirmeler yapılmaktadır. Eğer bir kontrol yoksa saldırgan phishing ya da malware sitesine yönlendirebilir.

Buffer Over Flow

Buffer Overflow hatalı kodlanmış bir programın dışarıdan bir etkiyle belleğinin taşmasına neden olmaktır. Kontrolsüz şekilde belleğin taşmasıyla programın akışı değiştirilerek saldırı gerçekleştirilir.

Local File Inclusion

LFI Serverdan dosya çağırma işlemidir. Lfi açığı Php’de bulunan bir açıktır. Bu açık yöntemiyle de çeşitli saldırılar gerçekleştirilebilir.

Remote Code Execution ve Remote Commend Execution (RCE)

Remote code execution ve remote command execution farklı olaylardır. Remote code execution, script üzerinden kod çalıştırma açığıdır. eval() fonksiyonu ve bu fonksiyonla aynı mantıkla çalışan veya bünyesinde bu fonksiyonu çağıran fonksiyonlar remote code execution’a sebebiyet vermektedir. Eval desteği olan her web programlama dilinde karşılaşılabilir ve o script dilinde yazacağınız kodları çalıştırabilmenize imkan sağlar.

Remote command execution farklıdır. Bu açık türü ise bu tür script dilleri üzerinden işletim sistemine yapılan çağrıları kullanır. Yani script kodları değil, doğrudan cmd/shell komutları çalıştırılır.

Remote File Inclusion (RFI) ve Local File Inclusion (LFI)

Genel olarak Local File Inclusion, Yerelden dosya ekleyerek kod çalıştırmak, Remote File Inclusion ise Uzaktan dosya ekleyerek kod çalıştırmaktır.

Click Jacking

Web sitesinin içine yerleştirilen kodlarla bilgisayarınıza zararlı yazılımlar yüklenmesi işlemidir. Ön tarafta görünen bir web sitesi hazırlanır bu web sitesi iframe içinde yerleştirilir. Sayfa transparant olduğundan site ziyaretçisi onun yerine arka plan da bulunan içeriği görür.  Kullanıcı arka tarafta sitede ilgili butonu tıklamaya çalışırken ön taraftaki komutu tetikler. Bu işlemle bilgisayara zararlı yazılımlar bulaştırılır.

Directory Listing

Directory Listing, bir web uygulamasının sahip olduğu dizin bilgilerinin tarayıcıda listelenmesi özelliğidir. Standartlara uygun olarak geliştirilmiş web uygulamalarında, listelemesi yapılabilecek dizinlerin sadece istemciyi ilgilendiren kaynakları içermesi gerekir. Saldırı senaryosunda ise bu dizinlerin yapılandırma ayarlarını ve bağlantı bilgilerini gibi kritik bilgileri içeriyorsa saldırgan bazı teknik bilgilere erişebilir.

Directory Travesing

Saldırganın yetkisi sınırlandırılmış dizinlere girerek gizli verilere ulaşmayı yada kod çalıştırılması olayıdır. Bu açık direkt web sunucusunda ya da sunucuda çalışan uygulamaların aldığı girdilerin kontrol edilmemesinden kaynaklanır.

Sızma Testi Nedir?

Günümüzde teknoloji her alanda kullanılmaya başlanmıştır. Bilgisayar, internet ve web teknolojilerinin büyümesi bilgisayar ağlarının kullanılmasını kaçınılmaz kılmaktadır. Ağların içinde bulunan büyük sistemler oldukça karmaşık yapılara sahipler. Bu karmaşıklıkla gelen güvenlik açıkları ve yönetimin zorlaşması, sistem yöneticilerinin karşılarına çıkan büyük sorunlardır. Sızma testleri ise güvenliğin kontrol altında tutulması noktasında ciddi faydalar sağlamaktadır.

Sızma testi temel olarak bir sisteme kontrollü şekilde saldırılar düzenlenerek güvenlik açıklarının tespitini ve raporlanmasını kapsar. Raporlar doğrultusunda hareket eden sistem yöneticileri sistemin daha güvenilir çalışması sağlarlar.

Sızma Testi Çeşitleri
Temel olarak üç çeşit sızma testi çeşiti vardır. Bunlar;
– Black Box
– White Box
– Gray Box

ERP Nedir?

ERP (Enterprice Resource Planning) sistemler yada Kurumsal Kaynak Planlaması, bir işletmede üretim için gereken kaynakların verimli bir şekilde kullanılmasını ve yönetilmesini sağlayan genel sisteme verilen isimdir. Geçmişte kullanılan MRP (Material Requirements Planning) sistemlerin devamı olarak karşımıza çıkmaktadır. Günümüzde yoğun olarak kullanılmaya başlanmıştır.

ERP’nin en büyük faydası büyük kuruluşlarda tek merkezden yönetimi sağlamasıdır. Veritabanlarının departmanlar arasında paylaşımını sağladığından kontrolü kolaylaştırır. Geçmişte kurumlarda her departmanın ayrı bir yazılım sistemi ve iş akışı olduğundan veri iletişimi zorlaşırdı. Küçük bir bölümdeki değişiklik tüm sistemlerde entegrasyon sorunu oluştururdu. ERP sistemler tüm bu sorunları ortadan kaldırmak için dizayn edildi ve büyük kurumların tercihi oldu.

ERP sistemlerin kurulumu, uyarlaması ve sorunsuz çalışmasını sağlamak başta yüksek maliyetli gibi görünebilir. Fakat sistem düzgün bir şekilde oturtulup çalışmaya başladığında kuruma ciddi kazançlar sağlayacaktır.

Dünya üzerinden birçok ERP yazılımı mevcuttur. Dünyadaki büyük markalar; SAP, Oracle, Microsoft Dynamics, SAGE, INFOR… Yerli ERP sistemi olarak NETSİS ve LOGO firmaları öne çıkmaktadır.

Gartner verilerine göre global ERP pazarında 2005 yılı itibarı ile ilk 5 firma ve pazar payları;

  1. SAP – 28.21%
  2. Oracle Corporation – 9.99%
  3. SAGE – 7.29%
  4. Microsoft – 3.68%
  5. INFOR Global Solutions (SSA Global) – 2.77%

Confluence

Atlassian firmasının dokümantasyon yönetim sistemi programıdır. Enterprice Wiki olarakta nitelendirilebilir. Firmadaki dokümanlar düzenli ve sistemli tutarak gerekli kişilerle rahatça paylaşımı sağlayan bir programdır.

Basit bir ara yüzü vardır ve kullanımı çok kolaydır. Ekipler içindeki iletişimi kolaylaştırır. Dokümantasyonların düzgün bir şekilde yapılmasını sağlar. Geçmiş notlara rahatlıkla ulaşmak ve düzenlemek mümkündür. Yetkilendirme sistemiyle kullanıcıları istenen sayfalara ulaşmasını sağlayabilirsiniz.

Java tabanlı bir yazılımdır. Dolayısıyla platforma bağımsız çalışır. Online olduğu için istediğiniz yerden kolaylıklar erişebilirsiniz. Browserların bir çoğunda sorunsuz çalışabilir. Ayrıca Confluence’un servislerini kullanarak diğer yazılımlarla da entegre edebilirsiniz.

İnternette geniş bir eklenti kütüphanesi de vardır. Bu eklentileri kullanarak istediğiniz şekillendirmeniz mümkündür.

Atlassian firmasının Jira programıyla da rahatlıkla entegre edilebilir. Bu entegrasyon Jira üzerinden atanan işlerin Confluence’dan görülebilme imkanı sağlar.

Jira

JIRA web tabanlı çalışan iş, hata takip ve proje yönetim aracıdır. Hata takip programları içerisinde başarılı bir konuma sahiptir. JAVA platformu üzerinde çalışır.

JIRA ‘nın en büyük özelliği hızlı proje yönetimi ve kolay iş takibinizi yapabilmenizdir. Değiştirilebilir özel filtreler, ayarlanabilir iş takip grafikleri ve kullanıcıyı bilgilendiren otomatik bildiri e-postaları gibi özellikleri ile kullanıcılarına büyük fayda sağlıyor. Profesyonel hata takibine sahip bu program sayesinde yüzlerce karışık sorunu ve çözümlerini, düzenli bir şekilde kullanıcılarınıza sunabilirsiniz. Ayrıca JIRA ’nın raporlama ve analiz yapma özelliği ise kullanıcılarına ayrı bir pratiklik katıyor.

Program yazılım sektörüne hizmet amaçlı olarak tasarlanmış olsa da her sektöre rahatça uyarlanabilir. Tasarlanabilir iş akış şemaları, oluşturulabilir talepler ve alanlar gibi geniş kullanımlı özelliklere sahip olması kurumsal ihtiyaçlarınıza göre şekillenmesini kolaylaştırıyor.

JIRA ’nın geniş eklenti olanağı da mevcuttur. Ücretli ve ücretsiz eklentileri ile genişletilebilir kullanım özelliği en güçlü yanlarından birisi. Bu eklentiler içerisinde Türkçe dil paketi de kullanıcılara ücretsiz indirme ve kurma imkanı sağlıyor.

Şimdi de JIRA ’nın temel kavramlarını inceleyelim;

Talepler (Issues): Talepler JIRA ’nın temel yapı taşıdır. Talep tiplerinde standartları kullanabileceğiniz gibi kendi kişisel talep tipinizi de oluşturabilirsiniz.

İş Akışları (Workflows): İşlerini ilerleyişini takip edebilme olanağını, görsele dökmenize yarayan özelliktir. JIRA’da bu akışları istediğiniz gibi bir dizayn edebilme şansına da sahipsiniz.

Alanlar (Fields): Alanlarda standartları kullanabileceğiniz gibi kendi alanlarını oluşturup kullanma imkanıda sahipsiniz.

Ekranlar (Screens): Kendi alanlarınızla kendi ekran tasarımlarınızı da yapmanız mümkün. Bu olanak sayesinde süreçte karşınıza çıkacak ekranları esnek bir şekilde oluşturabiliyorsunuz.