Programlama Metodolojileri - Hızlı Kılavuz

Programlar, envanter yönetimi, maaş bordrosu işleme, öğrenci kabulleri, sınav sonuçlarının işlenmesi vb. Gibi gerçek hayattaki sorunları çözmek için geliştirildiğinde, büyük ve karmaşık olma eğilimindedirler. Bu tür karmaşık sorunları analiz etme, yazılım geliştirme için planlama ve geliştirme sürecini kontrol etme yaklaşımı denir.programming methodology.

Programlama Metodolojisi Türleri

Yazılım geliştiriciler arasında yaygın olan birçok programlama yöntemi vardır -

Prosedürel Programlama

Sorun prosedürlere veya her biri bir görevi gerçekleştiren kod bloklarına bölünmüştür. Birlikte alınan tüm prosedürler tüm programı oluşturur. Yalnızca karmaşıklığı düşük olan küçük programlar için uygundur.

Example- Toplama, çıkarma, çarpma, bölme, karekök ve karşılaştırma yapan bir hesap makinesi programı için bu işlemlerin her biri ayrı prosedürler olarak geliştirilebilir. Ana programda her prosedür, kullanıcının seçimine göre çalıştırılacaktır.

Nesne yönelimli programlama

Burada çözüm, sorunun parçası olan varlıklar veya nesneler etrafında döner. Çözüm, varlıklarla ilgili verilerin nasıl saklanacağı, varlıkların nasıl davrandığı ve tutarlı bir çözüm sağlamak için birbirleriyle nasıl etkileşime girdikleri ile ilgilenir.

Example - Bir bordro yönetim sistemi geliştirmemiz gerekirse, etrafında çözümün inşa edilmesi gereken çalışanlar, maaş yapısı, izin kuralları vb. Varlıklarımız olacaktır.

Fonksiyonel Programlama

Burada sorun veya istenen çözüm fonksiyonel birimlere bölünür. Her birim kendi görevini yerine getirir ve kendi kendine yeterlidir. Bu birimler daha sonra tam çözümü oluşturmak için birbirine dikilir.

Example - Bir maaş bordrosu işleme, çalışan veri bakımı, temel maaş hesaplama, brüt maaş hesaplama, izin işleme, kredi geri ödeme işleme vb. Gibi işlevsel birimlere sahip olabilir.

Mantıksal Programlama

Burada sorun, fonksiyonel birimlerden ziyade mantıksal birimlere bölünmüştür. Example:Bir okul yönetim sisteminde, kullanıcılar sınıf öğretmeni, konu öğretmeni, laboratuvar asistanı, koordinatör, sorumlu akademik vb. Gibi çok tanımlanmış rollere sahiptir. Böylece yazılım, kullanıcı rollerine bağlı olarak birimlere ayrılabilir. Her kullanıcının farklı arayüzü, izinleri vb. Olabilir.

Yazılım geliştiriciler, bir yazılım geliştirmek için bu metodolojilerden birini veya birden fazlasını bir arada seçebilirler. Tartışılan metodolojilerin her birinde, sorunun daha küçük birimlere bölünmesi gerektiğine dikkat edin. Bunu yapmak için geliştiriciler aşağıdaki iki yaklaşımdan birini kullanır:

  • Yukarıdan aşağıya yaklaşım
  • Aşağıdan yukarıya yaklaşım

Yukarıdan Aşağıya veya Modüler Yaklaşım

Sorun, daha küçük birimlere bölünmüştür ve bunlar daha da küçük birimlere bölünebilir. Her birime birmodule. Her modül, görevini yerine getirmek için gereken her şeye sahip kendi kendine yeten bir birimdir.

Aşağıdaki çizim, bir bordro işleme programı geliştirirken farklı modüller oluşturmak için modüler yaklaşımı nasıl izleyebileceğinize dair bir örnek göstermektedir.

Aşağıdan Yukarı Yaklaşım

Aşağıdan yukarıya yaklaşımda, sistem tasarımı en düşük bileşen seviyesiyle başlar ve daha sonra daha yüksek seviyeli bileşenler elde etmek için birbirine bağlanır. Bu süreç, tüm sistem bileşenlerinin bir hiyerarşisi oluşturulana kadar devam eder. Bununla birlikte, gerçek hayat senaryosunda, başlangıçta tüm en düşük seviyeli bileşenleri bilmek çok zordur. Yani aşağıdan yukarıya yaklaşımı yalnızca çok basit problemler için kullanılır.

Bir hesap makinesi programının bileşenlerine bakalım.

Tipik bir yazılım geliştirme süreci şu adımları izler -

  • Şartlı toplantı
  • Problem tanımı
  • Sistem tasarımı
  • Implementation
  • Testing
  • Documentation
  • Eğitim ve destek
  • Maintenance

İlk iki adım, bir çözüme ulaşmanın en önemli ilk adımı olan sorunu anlamada takıma yardımcı olur. İhtiyaç toplamak, sorunu tanımlamak ve sistemi tasarlamaktan sorumlu kişi çağrılırsystem analyst.

Şartlı toplantı

Genellikle müşteriler veya kullanıcılar sorunlarını veya gereksinimlerini net bir şekilde tanımlayamazlar. Ne istediklerine dair belirsiz bir fikirleri var. Bu nedenle, sistem geliştiricilerinin çözülmesi gereken sorunu veya neyin teslim edilmesi gerektiğini anlamak için müşteri gereksinimlerini toplamaları gerekir. Sorunun ayrıntılı olarak anlaşılması, ancak önce çözümün geliştirildiği iş alanını anlamakla mümkündür. Bir işletmeyi anlamaya yardımcı olan bazı temel sorular şunlardır:

  • Ne yapılıyor?
  • Nasıl yapılıyor?
  • Bir görevin sıklığı nedir?
  • Kararların veya işlemlerin hacmi nedir?
  • Karşılaşılan sorunlar nelerdir?

Bu bilgilerin toplanmasına yardımcı olan bazı teknikler şunlardır:

  • Interviews
  • Questionnaires
  • Mevcut sistem belgelerini incelemek
  • İş verilerini analiz etmek

SMART'a özgü, ölçülebilir, üzerinde anlaşmaya varılmış, gerçekçi ve zamana dayalı gereksinimleri belirlemek için sistem analistlerinin açık ve özlü ancak kapsamlı gereksinimler belgesi oluşturması gerekir. Bunu yapmamak -

  • Eksik problem tanımı
  • Yanlış program hedefleri
  • Müşteriye gerekli sonucu sunmak için yeniden çalışın
  • Artan maliyetler
  • Geciken teslimat

Gerekli bilgi derinliği nedeniyle, gereksinim toplama şu şekilde de bilinir: detailed investigation.

Problem tanımı

Gereksinimler toplandıktan ve analiz edildikten sonra, problem ifadesi açıkça ifade edilmelidir. Problem tanımı, hangi problem veya problemlerin çözülmesi gerektiğini açıkça belirtmelidir. Açık bir sorun ifadesine sahip olmak,

  • Proje kapsamını tanımlayın
  • Ekibin odaklanmasını sağlayın
  • Projeyi yolunda tutun
  • Proje sonunda istenen sonuca ulaşıldığını doğrulayın

Çoğu zaman, kodlamanın herhangi bir yazılım geliştirme sürecinin en önemli parçası olduğu varsayılır. Bununla birlikte, kodlama sürecin sadece bir parçasıdır ve sistem doğru tasarlanmışsa asgari süreyi alabilir. Sistem tasarlanmadan önce, eldeki soruna bir çözüm belirlenmelidir.

Bir sistem tasarlarken dikkat edilmesi gereken ilk şey, başlangıçta sistem analistinin birden fazla çözüm bulabileceğidir. Ancak nihai çözüm veya ürün yalnızca bir tanesi olabilir. İhtiyaç toplama aşamasında toplanan verilerin derinlemesine analizi, benzersiz bir çözüme ulaşmaya yardımcı olabilir. Sorunun doğru bir şekilde tanımlanması da çözüme ulaşmak için çok önemlidir.

Analistler, birden fazla çözüm sorunuyla karşı karşıya kaldıklarında, her çözümü derinlemesine anlamak için akış şemaları, veri akış diyagramları, varlık ilişkisi diyagramları vb. Gibi görsel yardımcılara başvurur.

Akış çizelgesi oluşturma

Akış çizelgesi oluşturma, bir sistemdeki iş akışlarını ve veri akışlarını semboller ve diyagramlar aracılığıyla gösterme sürecidir. Sistem analistine soruna bir çözüm bulmada yardımcı olmak için önemli bir araçtır. Sistemin bileşenlerini görsel olarak tasvir eder.

Akış çizelgesinin avantajları şunlardır -

  • Görsel temsil, program mantığının anlaşılmasına yardımcı olur

  • Gerçek program kodlaması için taslak görevi görürler

  • Akış çizelgeleri program dokümantasyonu için önemlidir

  • Akış çizelgeleri, program bakımı sırasında önemli bir yardımcıdır

Bunlar, akış şemasının dezavantajlarıdır -

  • Karmaşık mantık, akış şemaları kullanılarak gösterilemez

  • Mantıkta veya veri / iş akışında herhangi bir değişiklik olması durumunda, akış şeması tamamen yeniden çizilmelidir.

Veri Akış Şeması

Veri akış diyagramı veya DFD, bir sistem veya alt sistem üzerinden veri akışının grafiksel bir temsilidir. Her sürecin kendi veri akışı vardır ve veri akış diyagramlarının seviyeleri vardır. Seviye 0, tüm sistem için giriş ve çıkış verilerini gösterir. Daha sonra sistem modüllere ayrılır ve seviye 1 DFD her modül için ayrı ayrı veri akışını gösterir. Modüller ayrıca gerekirse alt modüllere ayrılabilir ve seviye 2 DFD çizilebilir.

Sözde kod

Sistem tasarlandıktan sonra uygulama yani kodlama için proje yöneticisine teslim edilir. Bir programın gerçek kodlaması, yalnızca o dilde eğitim almış programcılar tarafından anlaşılabilen bir programlama dilinde yapılır. Ancak asıl kodlama gerçekleşmeden önce, programın temel çalışma prensipleri, iş akışları ve veri akışları, kullanılacak programlama diline benzer bir notasyon kullanılarak yazılır. Böyle bir gösterim denirpseudocode.

İşte C ++ 'da bir sözde kod örneği. Programcının, program kodunu almak için her bir ifadeyi C ++ sözdizimine çevirmesi yeterlidir.

Matematiksel İşlemleri Tanımlama

Bilgisayara yönelik tüm talimatlar nihayet makine düzeyinde aritmetik ve mantıksal işlemler olarak uygulanır. Bu işlemler önemlidir çünkü bunlar -

  • Hafıza alanını işgal et
  • Uygulamada zaman ayırın
  • Yazılım verimliliğini belirleyin
  • Genel yazılım performansını etkiler

Sistem analistleri, eldeki problemin benzersiz çözümünü belirlerken tüm önemli matematiksel işlemleri belirlemeye çalışır.

Gerçek hayattaki bir problem karmaşık ve büyüktür. Monolitik bir çözüm geliştirilirse, şu sorunları ortaya çıkarır -

  • Tek bir büyük programı yazmak, test etmek ve uygulamak zor

  • Nihai ürün teslim edildikten sonra değişiklikler neredeyse imkansızdır

  • Programın bakımı çok zor

  • Tek bir hata tüm sistemi durdurabilir

Bu sorunların üstesinden gelmek için çözüm adı verilen daha küçük parçalara bölünmelidir. modules. Geliştirme, uygulama, değiştirme ve bakım kolaylığı için bir büyük çözümü daha küçük modüllere ayırma tekniğine denirmodular technique programlama veya yazılım geliştirme.

Modüler Programlamanın Avantajları

Modüler programlama şu avantajları sunar -

  • Her bir modül paralel olarak geliştirilebildiği için daha hızlı geliştirme sağlar

  • Modüller yeniden kullanılabilir

  • Her modül bağımsız olarak test edileceğinden, testler daha hızlı ve daha sağlamdır

  • Tüm programın hata ayıklaması ve bakımı daha kolay

  • Modüller daha küçüktür ve daha düşük karmaşıklığa sahiptir, bu nedenle anlaşılması kolaydır

Modülleri Tanımlama

Bir yazılımdaki modülleri tanımlamak akıllara durgunluk veren bir görevdir çünkü bunu yapmanın tek bir doğru yolu olamaz. İşte modülleri tanımlamaya yönelik bazı ipuçları -

  • Veri sistemin en önemli unsuruysa, ilgili verileri işleyen modüller oluşturun.

  • Sistem tarafından sağlanan servis farklıysa, sistemi işlevsel modüllere ayırın.

  • Her şey başarısız olursa, gereksinim toplama aşamasında sistemi anladığınıza göre sistemi mantıksal modüllere ayırın.

Kodlama için, programlama kolaylığı için her modülün tekrar daha küçük modüllere bölünmesi gerekir. Bu, belirli programlama kuralları ile birlikte yukarıda paylaşılan üç ipucu kullanılarak tekrar yapılabilir. Örneğin, C ++ ve Java gibi nesne yönelimli bir programlama dili için, verileri ve yöntemleriyle her sınıf tek bir modül oluşturabilir.

Adım adım çözüm

Modülleri uygulamak için, her modülün süreç akışı adım adım açıklanmalıdır. Adım adım çözüm kullanılarak geliştirilebiliralgorithms veya pseudocodes. Adım adım çözüm sağlamak şu avantajları sunar -

  • Çözümü okuyan herkes hem sorunu hem de çözümü anlayabilir.

  • Programcılar ve programcı olmayanlar tarafından da aynı derecede anlaşılabilir.

  • Kodlama sırasında her bir ifadenin bir program ifadesine dönüştürülmesi gerekir.

  • Dokümantasyonun bir parçası olabilir ve programın bakımına yardımcı olabilir.

  • Tanımlayıcı adları, gerekli işlemler vb. Gibi mikro düzey ayrıntılar otomatik olarak hesaplanır

Bir örneğe bakalım.

Kontrol Yapıları

Yukarıdaki örnekte görebileceğiniz gibi, bir program mantığının çalışması gerekli değildir sequentially. Programlama dilinde,control structuresVerilen parametrelere göre program akışı hakkında kararlar alır. Herhangi bir yazılımın çok önemli unsurlarıdır ve herhangi bir kodlama başlamadan önce tanımlanmaları gerekir.

Algoritmalar ve pseudocodes analistlere ve programcılara kontrol yapılarının nerede gerekli olduğunu belirlemede yardımcı olur.

Kontrol yapıları bu üç türdendir -

Karar Kontrol Yapıları

Karar kontrol yapıları, uygulanacak bir sonraki adım bir kritere bağlı olduğunda kullanılır. Bu ölçüt genellikle değerlendirilmesi gereken bir veya daha fazla Boole ifadesidir. Bir Boole ifadesi her zaman "doğru" veya "yanlış" olarak değerlendirilir. Ölçüt "doğru" ise bir ifade kümesi yürütülür ve ölçüt "yanlış" olarak değerlendirilirse başka bir küme yürütülür. Örneğin, if ifadesi

Seçim Kontrol Yapıları

Program sırası belirli bir sorunun cevabına bağlı olduğunda seçim kontrol yapıları kullanılır. Örneğin, bir programın kullanıcı için birçok seçeneği vardır. Bundan sonra yürütülecek ifade, seçilen seçeneğe bağlı olacaktır. Örneğin,switch Beyan, case Beyan.

Tekrarlama / Döngü Kontrol Yapıları

Tekrarlama kontrol yapısı, bir dizi ifadenin birçok kez tekrarlanması durumunda kullanılır. Tekrarların sayısı, başlamadan önce bilinebilir veya bir ifadenin değerine bağlı olabilir. Örneğin,for Beyan, while Beyan, do while ifade vb.

Yukarıdaki resimde görebileceğiniz gibi, hem seçim hem de karar yapıları benzer şekilde bir akış şemasında uygulanmaktadır. Seçim kontrolü, sırayla alınan bir dizi karar ifadesinden başka bir şey değildir.

İşte bu ifadelerin nasıl çalıştığını gösteren programlardan bazı örnekler -

Herhangi bir sorunu çözmek için izlenmesi gereken sonlu bir dizi adım, algorithm. Algoritma genellikle gerçek kodlama yapılmadan önce geliştirilir. Programcı olmayanlar tarafından bile kolayca anlaşılabilmesi için İngilizce gibi bir dil kullanılarak yazılmıştır.

Bazen algoritmalar kullanılarak yazılır pseudocodesyani kullanılacak programlama diline benzer bir dil. Bir problemi çözmek için algoritma yazma şu avantajları sunar -

  • Ekip üyeleri arasında etkili iletişimi teşvik eder

  • Eldeki problemin analizini sağlar

  • Kodlama için şablon görevi görür

  • Hata ayıklamaya yardımcı olur

  • Bakım aşamasında ileride başvurmak üzere yazılım dokümantasyonunun bir parçası olur

Bunlar iyi ve doğru bir algoritmanın özellikleridir -

  • Bir dizi girişi vardır

  • Adımlar benzersiz şekilde tanımlanmıştır

  • Sonlu adıma sahiptir

  • İstenilen çıktıyı üretir

Örnek Algoritmalar

Öncelikle algoritma oluşturmak için gerçek hayattaki bir duruma bir örnek verelim. İşte bir kalem satın almak için pazara gitme algoritması.

Bu algoritmadaki 4. adım başlı başına tam bir görevdir ve bunun için ayrı bir algoritma yazılabilir. Şimdi bir sayının pozitif mi yoksa negatif mi olduğunu kontrol etmek için bir algoritma oluşturalım.

Flowchartbir programın mantıksal adımlarının sırasının şematik bir temsilidir. Akış çizelgeleri, ilişkileri ve süreç / veri akışını göstermek için süreçleri ve okları tasvir etmek için basit geometrik şekiller kullanır.

Akış Şeması Sembolleri

İşte akış şemalarının çizilmesinde kullanılan bazı yaygın semboller için bir grafik.

Sembol Sembol Adı Amaç
Başla dur Programın başlangıcını ve sonunu göstermek için algoritmanın başında ve sonunda kullanılır.
İşlem Matematiksel işlemler gibi süreçleri gösterir.
Giriş çıkış Program giriş ve çıkışlarını belirtmek için kullanılır.
Karar Yanıtın genellikle Evet veya Hayır olduğu bir programdaki karar ifadelerini ifade eder.
Ok Farklı şekiller arasındaki ilişkileri gösterir.
Sayfa Üzerinde Bağlayıcı Aynı sayfada bulunan bir akış şemasının iki veya daha fazla bölümünü birbirine bağlar.
Sayfa Dışı Bağlayıcı Farklı sayfalara yayılmış bir akış şemasının iki bölümünü birbirine bağlar.

Akış Şemaları Geliştirme Yönergeleri

Akış şeması oluştururken akılda tutulması gereken bazı noktalar:

  • Akış çizelgesinde yalnızca bir başlangıç ​​ve bir durdurma sembolü olabilir

  • Sayfa üzerindeki bağlayıcılara sayılar kullanılarak başvurulur

  • Sayfa dışı konektörlere alfabe kullanılarak başvurulur

  • Genel süreç akışı yukarıdan aşağıya veya soldan sağa

  • Oklar birbirini geçmemelidir

Örnek Akış Şemaları

İşte bir kalem satın almak için pazara gitmenin akış şeması.

İşte iki sayının ortalamasını hesaplamak için bir akış şeması.

Bildiğiniz gibi, bilgisayarın kendine ait bir zekası yoktur; basitçe takip ederinstructions kullanıcı tarafından verilir. Instructionsbir bilgisayar programının ve dolayısıyla bir yazılımın yapı taşlarıdır. Başarılı bir program oluşturmak için net talimatlar vermek çok önemlidir. Bir programcı veya yazılım geliştiricisi olarak, net talimatlar yazma alışkanlığı edinmelisiniz. İşte bunu yapmanın iki yolu.

İfadelerin Netliği

Bir programdaki ifade, aritmetik veya mantıksal bir hesaplama yapmak için bir operatörler ve işlenenler dizisidir. İşte bazı geçerli ifade örnekleri -

  • İki değeri karşılaştırmak
  • Bir değişken, nesne veya sınıf tanımlama
  • Bir veya daha fazla değişken kullanan aritmetik hesaplamalar
  • Veritabanından veri alma
  • Veritabanındaki değerleri güncelleme

Açık ifadeler yazmak, her programcı tarafından geliştirilmesi gereken bir beceridir. İşte bu tür ifadeleri yazarken akılda tutulması gereken bazı noktalar:

Kesin Sonuç

İfadenin değerlendirilmesi tek bir kesin sonuç vermelidir. Örneğin, tekli operatörler dikkatli kullanılmalıdır.

Karmaşık İfadelerden Kaçının

Tek bir ifadede birçok şeyi başarmaya çalışmayın. İşler karmaşıklaşmaya başladığı anda iki veya daha fazla ifadeye bölün.

Talimatların Basitliği

Net talimatlar yazmanız gerekenler sadece bilgisayarlar için değil. Programı daha sonra okuyan herhangi biri (kendiniz bile!) Talimatın neyi başarmaya çalıştığını anlayabilmelidir. Programcıların, bir süre geçtikten sonra tekrar ziyaret ettiklerinde kendi programlarını takmamaları çok yaygındır. Bu, bu tür programların bakımının ve değiştirilmesinin oldukça zor olacağını göstermektedir.

Basit talimatlar yazmak bu sorunu önlemeye yardımcı olur. İşte basit talimatlar yazmak için bazı ipuçları -

  • Avoid clever instructions - Hiç kimse doğru bir şekilde anlayamazsa, akıllı talimatlar daha sonra o kadar akıllı görünmeyebilir.

  • One instruction per task - Aynı anda birden fazla şey yapmaya çalışmak talimatları karmaşıklaştırır.

  • Use standards- Her dilin standartları vardır, bunlara uyun. Proje üzerinde yalnız çalışmadığınızı unutmayın; kodlama için proje standartlarını ve yönergelerini izleyin.

Bu bölümde, iyi bir programın nasıl yazılacağını ele alacağız. Ancak bunu yapmadan önce, iyi bir programın özelliklerinin neler olduğunu görelim -

  • Portable- Program veya yazılım aynı türdeki tüm bilgisayarlarda çalışmalıdır. Aynı türden, kişisel bilgisayarlar için geliştirilen bir yazılımın tüm PC'lerde çalışması gerektiğini kastediyoruz. Veya tabletler için yazılan bir yazılım, doğru özelliklere sahip tüm tabletlerde çalışmalıdır.

  • Efficient- Atanan görevleri hızlı bir şekilde yerine getiren bir yazılımın verimli olduğu söyleniyor. Kod optimizasyonu ve bellek optimizasyonu, program verimliliğini artırmanın yollarından bazılarıdır.

  • Effective- Yazılım, problemin çözülmesine yardımcı olmalıdır. Bunu yapan bir yazılımın etkili olduğu söyleniyor.

  • Reliable - Program, aynı girdi seti verildiğinde her seferinde aynı çıktıyı vermelidir.

  • User friendly - Program arayüzü, tıklanabilir bağlantılar ve simgeler vb. Kullanıcı dostu olmalıdır.

  • Self-documenting - Tanımlayıcı adları, modül adları vb. Açık adların kullanılması nedeniyle kendini tanımlayabilen herhangi bir program veya yazılım.

İşte iyi programların yazılabileceği bazı yollar.

Uygun Tanımlayıcı Adları

Herhangi bir değişkeni, nesneyi, işlevi, sınıfı veya yöntemi tanımlayan bir ad, identifier. Uygun tanımlayıcı adlarının verilmesi, bir programın kendi kendini belgelemesini sağlar. Bu, nesnenin adının ne yaptığını veya hangi bilgileri sakladığını söyleyeceği anlamına gelir. Bu SQL talimatına bir örnek verelim:

10. satıra bakın. Programı okuyan herkese öğrenci kimliğinin, adının ve kayıt numarasının seçilmesi gerektiğini söyler. Değişkenlerin isimleri bunu kendi kendini açıklayıcı kılar. Bunlar, uygun tanımlayıcı adları oluşturmak için bazı ipuçlarıdır -

  • Dil yönergelerini kullanın

  • Netliği korumak için uzun isimler vermekten çekinmeyin

  • Büyük ve küçük harf kullanın

  • Dil izin verse bile iki tanımlayıcıya aynı adı vermeyin

  • Birbirini dışlayan kapsama sahip olsalar bile birden fazla tanımlayıcıya aynı isimleri vermeyin

Yorumlar

Yukarıdaki resimde, 8. satıra bakın. Okuyucuya, sonraki birkaç satır kodun, karnesi oluşturulacak öğrencilerin listesini alacağını söyler. Bu satır kodun bir parçası değildir, sadece programı daha kullanıcı dostu hale getirmek için verilmiştir.

Derlenmeyen ancak programcı için not veya açıklama olarak yazılan böyle bir ifadeye comment. Aşağıdaki program bölümündeki yorumlara bakın. Yorumlar // ile başlar.

Yorumlar şu şekilde eklenebilir -

  • Programın amacını açıklamak için önsöz

  • Mantıksal veya işlevsel blokların başında ve / veya sonunda

  • Özel senaryolar veya istisnalar hakkında not alın

Gereksiz yorumlar eklemekten kaçınmalısınız çünkü bu, okurken kod akışını bozarak ters etki yapabilir. Derleyici yorumları ve girintileri görmezden gelebilir, ancak okuyucu her birini okuma eğilimindedir.

Girinti

Metnin sol veya sağ kenar boşluğuna olan uzaklığı denir indent. Programlarda, mantıksal olarak ayrılmış kod bloklarını ayırmak için girinti kullanılır. Girintili program segmentinin bir örneğini burada bulabilirsiniz:

Gördüğünüz gibi girintili program daha anlaşılır. Kontrol akışıfor loop -e if ve geri dön forçok açık. Girinti, özellikle kontrol yapıları durumunda kullanışlıdır.

Boşluklar veya satırlar eklemek de girintinin bir parçasıdır. Girintiyi kullanabileceğiniz ve kullanmanız gereken bazı durumlar şunlardır:

  • Program içindeki mantıksal veya işlevsel kod blokları arasında boş satırlar

  • Operatörlerin etrafındaki boş alanlar

  • Yeni kontrol yapılarının başındaki sekmeler

Bir programdan veya yazılımdan hataları tanımlama ve kaldırma denir debugging. Hata ayıklama ideal olarak test sürecinin bir parçasıdır, ancak gerçekte programlamanın her adımında yapılır. Kodlayıcılar, devam etmeden önce modüllerinin en küçük hatalarını ayıklamalıdır. Bu, test aşamasında ortaya çıkan hataların sayısını azaltır ve test süresini ve çabasını önemli ölçüde azaltır. Bir programda ortaya çıkabilecek hata türlerine bakalım.

Sözdizimi Hataları

Syntax errorsbir programdaki gramer hatalarıdır. Her dilin, program yazmak için tanımlayıcılar oluşturmak, ifadeler yazmak vb. Gibi kendi kuralları vardır. Bu kurallar ihlal edildiğinde hatalar çağrılırsyntax errors. Birçok modernintegrated development environmentsprogramınızı yazarken sözdizimi hatalarını belirleyebilir. Aksi takdirde, programı derlediğinizde gösterilecektir. Bir örnek alalım -

Bu programda, prod değişkeni, derleyici tarafından ortaya atılan bildirilmemiştir.

Anlamsal Hatalar

Semantic errors ayrıca denir logical errors. İfadede sözdizimi hatası yoktur, bu nedenle doğru şekilde derlenecek ve çalışacaktır. Ancak mantık doğru olmadığı için istenen çıktıyı vermeyecektir. Bir örnek ele alalım.

Satır 13'e bakın. Burada programcı, 0'a bölmekten kaçınmak için bölenin 0 olup olmadığını kontrol etmek ister. Ancak, karşılaştırma operatörü == yerine, atama operatörü = kullanılmıştır. Şimdi her defasında "if ifadesi" doğru olarak değerlendirilecek ve program "0'a bölemezsiniz" şeklinde çıktı verecektir. Kesinlikle amaçlanan şey değil!

Mantıksal hatalar herhangi bir program tarafından tespit edilemez; istenen çıktı elde edilemediğinde programcının kendisi tarafından tanımlanmaları gerekir.

Çalışma Zamanı Hataları

Çalışma zamanı hataları, programı çalıştırırken oluşan hatalardır. Bu, programın sözdizimi hatası içermediği anlamına gelir. Programınızın karşılaşabileceği en yaygın çalışma zamanı hatalarından bazıları şunlardır:

  • Sonsuz döngü
  • 0'a göre bölme
  • Kullanıcı tarafından yanlış değer girildi (örneğin, tamsayı yerine dize)

Kod Optimizasyonu

Kalitesini ve verimliliğini artırmak için kodun değiştirildiği herhangi bir yöntem denir code optimization. Code qualitykodun ömrünü belirler. Kod uzun süre kullanılabiliyor ve muhafaza edilebiliyorsa, üründen ürüne taşınıyorsa, kalitesi yüksek ve daha uzun ömürlü olduğu kabul edilir. Aksine, bir kod parçası yalnızca kısa süreler için kullanılabilir ve korunabilirse, örneğin bir sürüm geçerli olana kadar, düşük kaliteli ve kısa ömürlü olduğu kabul edilir.

Bir kodun güvenilirliği ve hızı belirler code efficiency. Kod verimliliği, bir yazılımın yüksek performansının sağlanmasında önemli bir faktördür.

Kod optimizasyonuna iki yaklaşım vardır -

  • Intuition based optimization (IBO)- Burada programcı programı kendi becerisine ve deneyimine göre optimize etmeye çalışır. Bu, küçük programlar için işe yarayabilir, ancak programın karmaşıklığı arttıkça sefil bir şekilde başarısız olur.

  • Evidence based optimization (EBO)- Burada, performans darboğazlarını bulmak için otomatik araçlar kullanılır ve ardından ilgili kısımlar buna göre optimize edilir. Her programlama dilinin kendi kod optimizasyon araçları seti vardır. Örneğin, Java kodunu optimize etmek için PMD, FindBug ve Clover kullanılır.

Kod, yürütme süresi ve bellek tüketimi için optimize edilmiştir çünkü zaman azdır ve bellek pahalıdır. İkisi arasında bir denge olmalı. Eğertime optimization bellek üzerindeki yükü artırır veya memory optimization kodu yavaşlatır, optimizasyon amacı kaybolur.

Yürütme Süresi Optimizasyonu

Kullanıcılara hızlı hizmet sağlamak için kodu yürütme süresi için optimize etmek gereklidir. İşte yürütme süresi optimizasyonu için bazı ipuçları -

  • Yerleşik yürütme süresi optimizasyonuna sahip komutları kullanın

  • İf koşulu yerine anahtarı kullanın

  • Döngü yapıları içindeki işlev çağrılarını en aza indirin

  • Programda kullanılan veri yapılarını optimize edin

Bellek Optimizasyonu

Bildiğiniz gibi veriler ve talimatlar hafızayı tüketir. Veri dediğimizde, ifadelerin sonucu olan ara verilere de atıfta bulunur. Ayrıca, programı veya optimize etmeye çalıştığımız modülü oluşturan komutların sayısını da takip etmemiz gerekir. İşte bazı ipuçlarımemory optimization -

  • Yerleşik bellek optimizasyonuna sahip komutları kullanın

  • Kayıtlarda saklanması gereken değişkenlerin kullanımını minimum tutun

  • Birçok kez çalıştırılan döngülerin içinde global değişkenleri bildirmekten kaçının

  • Sqrt () gibi CPU yoğun işlevleri kullanmaktan kaçının

Kullanıcılarına bir yazılımı veya programı açıklayan herhangi bir yazılı metin, resim veya video denir program or software document. Kullanıcı, bir programcı, sistem analisti ve yöneticiden son kullanıcıya kadar herkes olabilir. Çeşitli geliştirme aşamalarında, farklı kullanıcılar için birden çok belge oluşturulabilir. Aslında,software documentation genel yazılım geliştirme sürecinde kritik bir süreçtir.

Modüler programlamada dokümantasyon daha da önemli hale gelir çünkü yazılımın farklı modülleri farklı ekipler tarafından geliştirilir. Geliştirme ekibinden başka biri bir modülü anlamak istiyorsa veya buna ihtiyaç duyuyorsa, iyi ve ayrıntılı dokümantasyon görevi kolaylaştıracaktır.

Bunlar, belgeleri oluşturmak için bazı yönergelerdir -

  • Dokümantasyon okuyucunun bakış açısından olmalıdır

  • Belge net olmalıdır

  • Tekrar olmamalı

  • Endüstri standartları kullanılmalı

  • Belgeler her zaman güncellenmelidir

  • Güncelliğini yitirmiş herhangi bir belge, aşamalı olarak sona erme zamanı kaydedildikten sonra aşamalı olarak kaldırılmalıdır

Dokümantasyonun Avantajları

Bunlar program dokümantasyonu sağlamanın avantajlarından bazılarıdır -

  • Bir yazılımın veya programın tüm parçalarını takip eder

  • Bakım daha kolaydır

  • Geliştirici dışındaki programcılar, yazılımın tüm yönlerini anlayabilir

  • Yazılımın genel kalitesini iyileştirir

  • Kullanıcı eğitimine yardımcı olur

  • İnsanların sistemden aniden ayrılması durumunda bilgi merkeziyetsizliğini, maliyetleri ve çabayı azaltır

Örnek Belgeler

Bir yazılım, kendisiyle ilişkili birçok türde belgeye sahip olabilir. Önemli olanlardan bazıları şunlardır:

  • User manual - Yazılımın farklı özelliklerini kullanmak için son kullanıcıların talimatları ve prosedürleri açıklar.

  • Operational manual - Gerçekleştirilen tüm işlemleri ve bunların birbirine bağımlılıklarını listeler ve açıklar.

  • Design Document- Yazılıma genel bir bakış sağlar ve tasarım öğelerini ayrıntılı olarak açıklar. Gibi ayrıntıları belgelerdata flow diagrams, entity relationship diagrams, vb.

  • Requirements Document- Sistemin tüm gereksinimlerinin bir listesi ile gereksinimlerin uygulanabilirliğinin bir analizini içerir. Kullanıcı vakalarına, gerçek hayat senaryolarına vb. Sahip olabilir.

  • Technical Documentation - Algoritmalar, akış şemaları, program kodları, işlevsel modüller vb. Gibi gerçek programlama bileşenlerinin bir dokümantasyonudur.

  • Testing Document - Test planını, test senaryolarını, doğrulama planını, doğrulama planını, test sonuçlarını vb. Kaydeder. Test, yazılım geliştirmenin yoğun dokümantasyon gerektiren bir aşamasıdır.

  • List of Known Bugs- Her yazılımda, çok geç keşfedildikleri veya zararsız oldukları veya düzeltilmesi gerekenden daha fazla çaba ve zaman alacağı için kaldırılamayan hatalar veya hatalar vardır. Bu hatalar daha sonraki bir tarihte kaldırılabilmeleri için program belgelerinde listelenmiştir. Ayrıca hata etkinleştirilirse kullanıcılara, uygulayıcılara ve bakım personeline yardımcı olurlar.

Program maintenance bu sonuçlardan herhangi birine ulaşmak için teslimattan sonra bir yazılımı veya programı değiştirme sürecidir -

  • Hataları düzelt
  • Performans geliştirme
  • İşlevler ekleyin
  • Kullanılmayan bölümleri kaldırın

Yazılım hayata geçtikten sonra ortaya çıkan hataları düzeltmek için bakımın gerekli olduğu yönündeki yaygın algıya rağmen, gerçekte bakım çalışmalarının çoğu, mevcut modüllere küçük veya büyük yetenekler eklemeyi içerir. Örneğin, bir rapora bazı yeni veriler eklenir, giriş formlarına yeni bir alan eklenir, değişen hükümet yasalarını dahil etmek için değiştirilecek kod vb.

Bakım Türleri

Bakım faaliyetleri dört başlık altında toplanabilir -

  • Corrective maintenance- Burada yerinde uygulamadan sonra ortaya çıkan hatalar giderilmiştir. Hatalar, kullanıcıların kendileri tarafından belirtilebilir.

  • Preventive maintenance - Gelecekte hataları önlemek için yapılan değişikliklere önleyici bakım denir.

  • Adaptive maintenance- Çalışma ortamındaki değişiklikler bazen yazılımda değişiklik yapılmasını gerektirir. Buna uyarlamalı bakım denir. Örneğin, devlet eğitim politikası değişirse, okul yönetimi yazılımının öğrenci sonuç işleme modülünde ilgili değişikliklerin yapılması gerekir.

  • Perfective maintenance- Müşteriden gelen yeni gereksinimleri dahil etmek için mevcut yazılımda yapılan değişikliklere mükemmel bakım denir. Buradaki amaç, her zaman en son teknoloji ile güncel olmaktır.

Bakım Araçları

Yazılım geliştiriciler ve programcılar, yazılım bakımında kendilerine yardımcı olmak için birçok araç kullanır. İşte en yaygın kullanılanlardan bazıları -

  • Program slicer - programın değişiklikten etkilenecek bir bölümünü seçer

  • Data flow analyzer - yazılımdaki tüm olası veri akışlarını izler

  • Dynamic analyzer - program yürütme yolunu izler

  • Static analyzer - programın genel olarak görüntülenmesine ve özetlenmesine izin verir

  • Dependency analyzer - programın farklı bölümlerinin karşılıklı bağımlılığının anlaşılmasına ve analiz edilmesine yardımcı olur