26 Aralık 2016 Pazartesi

YAZILIM MÜHENDISLIĞINDE İYI ALIŞKANLIKLAR-2


  • Tırnak içinde % yazdırabilmek için %% yazmamız gerekir yoksa bizde atama bekler
  • Aynı tipte degiskenlerin toplandıgı yere dizi denir .Yapılar(struct)da ise farklı veri tipleri bulunabilir



  • struct isci{   char adi[20];  char soyadi[20];  int yas; char cinsiyet;  double saatlikUcreti;};  //Farklı tiplerde veriler tek bir yapı altında tutulması saglnamıştır 
  • Yeni bir yapı tipi oluştururken her zaman yapı etiket ismi kullanın. Yapı etiket ismi, programda daha sonradan o yapı tipinde yeni değişkenler bildirmek için gereklidir.
  • Union : aynı depolamayı kullanan değişkenlerin tek isim altında toplanmasıdır
  • typedef anahtar kelimesi, daha önce tanımlanmış veri tiplerine yeni(eş) isimler tanımlamada kullanılır.     Örn :   typedef struct parca Parca;    //parca ile aynı anlama gelecek "Parca" tanımladık
  • SEEK_SET aramanın dosyanın başından başlayacağını; SEEK_CUR aramanın dosyadaki o anda bulunulan konumdan başlayacağını ve SEEK_END aramanın dosya sonundan başlayacağını belirtir.
  • rewind fonksiyonu, programın dosya pozisyon göstericisini belirlenen dosyanın başına geri döndürmesini sağlatır.
  • fgetc fonksiyonu, belirlenen dosyadan bir karakter okur. fputs belirlenen dosyaya bir karakter yazdırır. fgets fonksiyonu belirlenen dosyadan bir satır okur. fputs fonksiyonu belirlenen dosyaya bir satır yazdırır
  • Dinamik olarak tahsis edilen hafızaya ihtiyaç kalmadığında,hafızayı sisteme anında geri döndürmek için free kullanın.
  • Malloc Tahsisi :yeniPtr = malloc ( sizeof ( struct dugum ) )
  • Alanı serbest bırakma :  free(yeniPtr)
  • protected : miras alanlardan ulasılabilir
  • Share:

    21 Aralık 2016 Çarşamba

    Yazılım Mühendisliğinde İyi Alışkanlıklar


    • Her fonksiyondan önce açıklama satırı yapmak
    • Her "printf" fonksiyonun içine yazdıktan sonra "\n" ile bitirmek önemlidir tekrar kullanılabilirliği saglamak açısından
    •  Virgülden sonra bir bşoluk bırakmak okunurluğu artırır
    • Değişkenleri 31 karakterden uzun yapılmamalıdır bu taşınırlığı artırır
    • int farklı sistemlerde farklılık gösterebildiğinden, eğer kullanacağınız değerlerin 32767 aralığı dışında olmasını bekliyorsanız ve programınızı farklı sistemlerde kullanabilmeyi istiyorsanız long tamsayıları kullanın.
    • Hafızanın sınırlı ya da hızın gerekli olduğu performansa yönelik durumlarda küçük tamsayı boyutları kullanmak gerekebilir.
    • break ve continue eğer uygun bir biçimde kullanılırsa, aynı etkiyi yaratacak yapısal programlama tekniklerinden daha hızlı çalışırlar.
    • float ve double tipte değişkenleri parayla ilgili hesaplamalarda kullanmayınız.Ondalıklı sayıların kesin olarak gösterilememesinden dolayı hatalar oluşabilir.
    • -1 değeri yerine EOF ile test etmek daha taşınırlığı arttırır. ANSI standardına göre EOF negatif bir değerdir. Bu sebepten, EOF farklı sistemlerde farklı değerler sahip olabilir.
    • Tekerleği yeniden icat etmekten kaçının. Mümkün olduğunda yeni fonksiyonlar yazmak yerine ANSI C standart kütüphanesi içindeki fonksiyonları kullanın. Bu, program geliştirme zamanını azaltacaktır.
    • ANSI C standart kütüphanesi içindeki fonksiyonları kullanmak daha taşınır programlar yazmamıza yardımcı olur.
    • Geri dönüş tipi void olarak bildirilmiş bir fonksiyonun, bir değer geri döndürmesi bir yazım hatasıdır.
    • Her parametre için ( eğer tipi int değilse) parametre tipi ayrı ayrı belirtilmelidir. Eğer tip listelenmezse int olarak algılanacaktır.
    • Aynı tipte fonksiyon parametrelerini, double x, double y yerine double x , y olarak bildirmek.
    • double x, y biçiminde parametre bildirmek y parametresinin tipinin int olmasına sebep olur. Çünkü belirtilmeyen parametre tipi otomatik olarak int tipinde varsayılır.
    • Yanlış olmasa da fonksiyona aktarılan argümanlarla bu argümanların yerine kullanılacak parametrelerin aynı isimde olmamasına özen gösteriniz. Bu, belirsizlikten kurtulmamızı sağlar.
    • Bir fonksiyon içinde başka bir fonksiyon tanımlamak yazım hatasıdır.
    • Bir fonksiyon genellikle bir sayfadan daha uzun olmamalıdır. Hatta en iyisi yarım sayfadan uzun olmamalıdır. Küçük fonksiyonlar, yazılımın yeniden kullanılabilmesini sağlatır.
    • standart giriş/çıkış kütüphane fonksiyonlarının prototiplerini ve bunlar
    • tarafından kullanılan bilgileri tutar
    • sayıları yazılara, yazıları sayılara çeviren, rastgele sayılar üreten, hafıza ayrılmasını sağlayan fonksiyonların prototiplerini tutar     string işlemlerini yapan fonksiyonların prototiplerini tutar  
    • Anlamlı fonksiyon isimleri ve anlamlı parametre isimleri kullanmak programları daha      okunur yapar ve yorumların çok fazla kullanılmasını engeller.
    • ANSI C standart kütüphanesi içindeki fonksiyonları kullanmak daha taşınır programlar yazmamıza yardımcı olur.
    • Performansın önemli olduğu durumlarda yinelemeden kaçının.Yineleme çağrıları fazladan vakit ve hafıza gerektirir.
    • printf ("%7d %13d\n”, j, s[j] );            //ilk degeri 7.sırada yazar 6 bosluk sonra 13.sırada ikinci degeri yazar
    • Sembolik sabitler için yalnızca büyük harfler kullanın. Bu, sembolik sabitlerin program içinde göze çarpmasını sağlayarak, programcıya bunların değişken olmadıklarını hatırlatacaktır.
    • Dizileri referansa göre çağırma, performans açısından oldukça mantıklıdır. Eğer diziler değere göre çağırma ile geçirilmiş olsaydı, her elemanının kopyası geçirilecekti. Büyük ve sıklıkla çağrılan dizilerde bu oldukça fazla vakit alacaktı ve fazladan hafızaya ihtiyaç duyacaktı.
    • printf("\n\n%p\n",&dizi);         /*Dizinin adresi Dizi[0] ile aynıdır 
    • %p dönüşüm belirteci, adresleri onaltılık sistemde yazdırır.
    • Her gösterici isimden önce * kullanılarak bildirilmelidir.
    • Beklenmeyen sonuçlarla karşılaşmamak için göstericilere ilk değer atamak.
    •            int y = 5;                                                                                                                                                                                       int *yPtr;                                                                                                                                                        yPtr=&y;   // yPtr artık y yi gösterir
    • Bir veri tipini depolamak için gerekli olan byte sayısı sistemler arasında farlılık gösterebilir.Veri tiplerinin büyüklüğüne bağlı programlar yazarken ve bu programlar farklı sistemlerde çalışacaksa veri tiplerini depolamak için gerekli olan byte sayısına sizeof kullanarak karar verin.
    • sayilar[4]   ,  *(sayilar + 4), nPtr[4] ,  *(nPtr + 4)     Hepside sayilar dizisinin 4. elemanını gösterir
    • NOT: & ile adresi alırız .. * ile degiskenin degerini gösteririz
    • NOT: Adresi yazdıracaksak printf ile   burada %p kullanırız Hexadecimal olarak yazdırırız adresi
    • d İşaretli bir tamsayıyı(onluk sistemde) gösterir. i İşaretli bir tamsayıyı(onluk sistemde) gösterir.   (Not: i ve d yalnızca scanf ile kullanıldıklarında farklıdır)  o İşaretsiz bir tamsayıyı(sekizlik sistemde) gösterir.
    • x ya da X İşaretsiz bir tamsayıyı(onaltılık sistemde) gösterir.X, 0-9 rakamlarının ve A-F harflerinin gösterilmesini ve x, 0-9 rakamları ve a-f harflerinin gösterilmesini sağlar.
    Share:

    20 Eylül 2016 Salı

    Yazılım Test(Software Tester ) Mühendislerine Öğütler

    * UYGULAMANIZI İYİ BİLİN
    Yazılımın Gereksinimlerini İyice Kavraman Öğrenmeden Kesinlikle Testi Başlatmayın.Yazılımın Gereksinimlerini Bilmeden Başaltılan Testte Nelerin Sağlanıp Nelerin Sağlanmadığını Bilemeyeceğiniz İçin Karar Vermede Hata Payı Yükselmektedir


    *ÇALIŞTIĞINIZ ALANI,BUSİNESS RULELARINI ÇOK İYİ BİLİN

    Çalıştığınız Alanla Ne kadar Fazla Bilgiye Sahipseniz O kadar Bug(Hata) Yakalama İhtimaliniz,Olasılığınız O kaddar Artacaktır  ve Test Yöneticinizin Size Takdir Edecektir
    Bug Yakalamakla Kalma Çözümleri iiçn Önerilerde Bulun. Çalıştıgınız Alan Bilginiz Ne Kadar İyi Olursa O kadar Kapsamlı ve Nitelikli Test Caseler Oluşturabilirsiniz

    * ÖNYARGI ve VARSAYIMLARDAN UZAK DUR

     Test Yaparken Bu Yazılımda Hata Yoktur Diye Bir yargı ile Teste Başlamayın veya Test Etmemezlik Yapmayın.Siz Test Mühendisi Olarak Hata Vardır Hata Bulabilrim Diye Yaklaşmanız Gerekmektedir


    *YENİ TEKNOLOJİ ve YENİ TEST TEKNİKLERİNİ ÖĞRENİN

    Şüphesiz Eski Bilgiler Hayati Önem Arzetsede Yeni Test Tekniklerini Öğrenin ve Teorikte Bırakmayın Uygulayın Deneyin Yeni Test Etme Fikirleri  Üretmeye Geliştirmeye Çalışın


    * HİÇBİR YAZILIM HATASIZ(BUG) OLDUĞUNU %100 GARANTİ EDEMEZ

    Sen Ne Kadar Defalarcada Test Etsen Yazılımda Buglar Olabilir Fakat Sen Yinede En iyi Şekilde En Hatasız Şekilde Test Etmeye Çalış


    *SON KULLANICI GİBİ DÜŞÜNÜN

    Belkide Öğütler Arasında En önemli Tavsiye Bu Olsa Gerek Bir Mühendis Gibi Olaya Yaklaşmayın Bir Kullanıcı Nasıl Kullanır Neler Yapabilir Gibi Sorularla Yaklaşın Bu Ürünün Daha Kullanıcı Dostu Olması ve Kullanıc Kabul Testlerinden Daha Kolay Geçmesini Sağlayacaktır


    * %100 YAZILIMI KAPSAMAK(TEST COVERAGE)  MÜMKÜN DEĞİLDİR

    Yazılım Binlerce Girdi ve Çıktı Bulunmaktadır Bunların Hepsinin Teste Tabi Tutulması Mümkün Değildir  Sınır-Değerler Seçilerek Yazılımlar Test Edilmelidir



    *GELİŞTİRİCİ ARKADAŞLARINIZLA İYİ İLİŞKİLER KURUN

    Herhangi Bir Sorun ve Hatada Onlara Uygun ve Tatlı Bir Dille Bunu Onlara  Anlatın.Haklı Olduğunuz Konularda Arkasında Durun .Siz Bir Profesyonelsiniz ve İyi Bir Ürün İstemelisiniz


    *HATALARINIZDAN DERS ÇIKARTIN

    Eğer Hata Yapmıyorsanız Yeterince Test Yapmıyorsunuz Demektir Hata Yapacaksınız ve Hata Yaptıkça Tecrübe Sahibi Olacaksınız 
    Share:

    18 Nisan 2016 Pazartesi

    29 Mart 2016 Salı

    Test Case Yazarken Unutulmaması Gereknler


    • Testçi sadece hatayı Loglamaz aynı zamanda çözümde sunarsa saygın olablir
    • Test Kapsamını %100 e yaklaştırmaya çalışın
    • Test alanını küçük parçalara bölün bütün testlere tabi tutmaya çalışın 

      Örneğin : Bir web sayfasında kullanıcı girişi gibi küçük bir alanı alın ui,security validation hepsi üzerine düşünün .
    • Test Caseleri Gruplayın REGRESSİON testlerini belrileyip tanımlayın bu size Manul testlerde hız ve efektiflik kazandıracaktır 
    • Önceki REGRESSİON testlerinde bugları gözönünde bulundurun 
    • Deneyimlerinizi diğer tester arkadaşlarınızla paylaşın
    • Ürün Hakkında Bilginizi daha çok artırmak için develperlarla iletişiminizi dahada artırın 
    • Temiz ,net,anlaşılır Bug Raporları oluştrurun .
    • Gereksinimler çok iyi anlaşılmalıdan TESTE  BAŞLAMA .. Gereksinimler anlaşılmadan Gerekli işlevi sağlayıp sağlamadığına karar veremeyiz
    • Çalıştıgın alanla tam bilgiye sahip ol bu sorunlara çöüzm üretmeyi ve daha iyi test caseler yazmayı kolaylaştıracaktır
    • Testte Varsayım ve Önyargı Yoktur ...Bu programda hata Yoktur diyerek bakmamak gerekir
    • HER ZAMAN SON KULLANICI VE MÜŞTERİ GİBİ DÜŞÜNÜN...Bu Testin En Önemli Kuralıdır.UNUTMA   Bir Uygulama Ne kadar Kullanıcı Dostu ise Kullanıcı Testlerini O kadar Kolay Geçer
    • Hatalardan Ders Çıkarmayı Ögren ve Tekrar Yapma !!!!  

    Share:

    22 Mart 2016 Salı

    Ups Nedir?

    UPS nedir?

    UPS ; elektrik yükünün ( elektrik ile çalışan tüm cihazlar ) bağlı bulunduğu şebekede meydana gelen veya gelebilecek olası gerilim dalgalanmaları ( çöküntüler, yükselmeler, ani değişikler ),
    harmonikler, kısa veya uzun süreli kesintiler v.b. durumlarda yükü bu değişimlerden koruyan ve yükün sağlıklı ve kesintisiz çalışmasını sağlayan elektronik cihazlardır.
    Share: