Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

PROGRAMLAMA Temel Kavramlar

Benzer bir sunumlar


... konulu sunumlar: "PROGRAMLAMA Temel Kavramlar"— Sunum transkripti:

1 PROGRAMLAMA Temel Kavramlar
PROF.DR.YALÇIN ÇEBİ Dokuz Eylül Üniversitesi Bilgisayar Mühendisliği Bölümü Buca/İzmir E-posta:

2 PROGRAM Bilgisayarın veriyi bilgiye çevirebilmesi için takip etmesi gereken deyimler grubu (Instruction Set). Herhangi bir programlama dilinin deyimleri kullanılarak yazılmış olabilir. Programlama: Program geliştirme sürecinin tümü. Bu süreç “Yazılım Geliştirme (Software Development)” olarak da adlandırılmaktadır. Prof.Dr.Yalçın ÇEBİ

3 Program Standartları (1)
Günümüzde, bilgisayarların hayatın hemen her alanında kullanılır olması, değişik ortamlarda çalışabilecek programların hazırlanması gerekliliğini de beraberinde getirmektedir. Eğitimli eleman azlığı, programlama maliyetlerini arttırmaktadır. Daha yüksek programcı verimi sağlamak amacıyla programlama standartlarının düşürülmekte, standart dışı programlar ortaya çıkmaktadır. Prof.Dr.Yalçın ÇEBİ

4 Program Standartları (1)
Bu programlar bir bilgisayar ortamından diğerine taşınırken sorunlar ortaya çıkmakta ve hatalar oluşmaktadır. Sorun ve hataların giderilmesi için daha fazla işgücü ve kaynak ayırılmaktadır. Programların geliştirilmesindeki gereklilikler: Belirli standartların konulması ve bunlara uyulması. Nitelikli elemanlarla çalışılması. Prof.Dr.Yalçın ÇEBİ

5 İyi Program- Düşük Maliyet ?
İyi kalitedeki bir programa her zaman gereksinim duyulmakta, ancak programlama maliyetlerinin de düşürülmesi gerekmektedir. Maliyetleri düşürmek için: Kötü tasarlanmış bir programı çalıştırmak için uğraşmamalı, Program tasarlama süreçlerine daha fazla özen gösterilerek tasarlanmış programların yazılmasını sağlamalıdır. Program geliştirme sürecinde program tasarım aşaması daha da önem kazanmaktadır. Prof.Dr.Yalçın ÇEBİ

6 Program Tasarım Hedefleri
Güvenilirlik (Reliability): Program her zaman için kendisinden beklenen işlemi gerçekleştirmelidir. Bakım yapılabilirlik (Maintainability): Gerek duyulduğunda program kolaylıkla değiştirilebilinmeli ve düzeltilebilinmelidir. Taşınabilirlik (Portability): Program başka bir bilgisayar sistemine en az değişiklikle taşınabilmelidir. Okunabilirlik (Readability): Program, başka bir programcı tarafından da okunabilir ve anlaşılabilir olmalıdır. Verim (Performance): Programın yerine getirmesi gereken işlemler çabuk ve verimli olarak gerçekleşmelidir. Kaynak tasarrufu (Storage Saving): Program gereksiz ölçüde uzun ve kaynak harcayıcı olmamalıdır. Prof.Dr.Yalçın ÇEBİ

7 “Doğru” Program Bir program hazırlanırken, kendisinden beklenen hedefler doğrultusunda geliştirmeler yapılmakta ve program düzenlenmektedir. Program, hedeflenen özellikleri sağlıyorsa “doğru” olarak nitelendirilmekte ve kullanılmaktadır. Prof.Dr.Yalçın ÇEBİ

8 “Doğru” Program =“Uygun” Program?
Bazen, Program özelliklerinde programdan gerçekten istenilenler tam olarak belirtilmemektedir. Bu özelliklere göre geliştirilen program “doğru”, ancak “uygun” olmamaktadır. Bazen; Program özelliklerinin tanımlanması doğru olarak yapılmaktadır. Program geliştirme yöntemlerinden kaynaklanan hatalar nedeniyle program yanlış olabilmektedir. Program geliştirme sürecinin çok dikkatli ve ayrıntılı olarak hazırlanması ve takip edilmesi gerekmektedir. Prof.Dr.Yalçın ÇEBİ

9 Program Yaşam Döngüsü (1) (Program Life Cycle)
Altı ana aşamadan oluşmaktadır. Bu aşamalardan yalnızca bir tanesi programın bilgisayara kaydedilmesidir. Diğerleri ise bilgi toplama, programı tasarlama, deneme, belgeleme ve bakım gibi işlemleri içermektedir. Bir programın bilgisayara bir programlama dilinde aktarılması toplam işin yalnızca %20’sidir. Prof.Dr.Yalçın ÇEBİ

10 Program Yaşam Döngüsü (2)
Program Özellikleri (Program Specification): Programın hedefleri, girdiler, çıktılar ve işlem gereksinimleri belirlenmektedir. Program Tasarımı (Program Design): Çeşitli programlama teknikleri kullanılarak program için çözümler geliştirilmektedir. Prof.Dr.Yalçın ÇEBİ

11 Program Yaşam Döngüsü (3)
Program Yazımı (Program Coding): Bir veya bir’den fazla programlama dilinde program yazılmaktadır. Program Deneme (Program Testing): Program, yazım veya mantık hataları açısından kontrol edilmektedir. Prof.Dr.Yalçın ÇEBİ

12 Program Yaşam Döngüsü (4)
Program Belgeleme (Program Documentation): Programın geliştirilmesine başlandığı andan itibaren devam eden ve etmesi gereken bir süreçtir. Programın geliştirilmesi sırasındaki her aşama belgelenmektedir. Prof.Dr.Yalçın ÇEBİ

13 Program Yaşam Döngüsü (4)
Program Bakımı (Program Maintenance): Tamamlanmış olan programlar, belirli aralıklarla duyarlılık, verimlilik, standartlaştırma ve kullanım kolaylığı sağlama yönlerinden gözden geçirilmektedirler. Gerekli görüldüğü anda programda değişiklikler yapılmaktadır. Prof.Dr.Yalçın ÇEBİ

14 Yazılım Ekibi Program yaşam döngüsünü yazılım mühendisleri (Software Engineer) veya programcılar (programmer) uygulamaktadırlar. Yaşam döngüsünün dördüncü aşamasında, Programcılar sistem çözümleyicilerle (System Analyst) birlikte çalışmaktadır. Bilgi sistemleri için gereken yazılımı hazırlamaktadırlar. Prof.Dr.Yalçın ÇEBİ

15 Program Özellikleri (1)
Program yaşam döngüsünün ilk aşaması Programın tanımlanması veya programın incelenmesi Problemin anlaşılması olarak da tanımlanabilmektedir. Programcı veya çözümleyiciden beklenenler: Programın hedefleri, İstenen çıktı, Gerekli olan girdiler, İşlem gereksinimleri, Belgeleme. Prof.Dr.Yalçın ÇEBİ

16 Program Özellikleri (2)
Bir programın hedefleri belirlenirken gerçekleştirilen çalışmalar da gündelik hayattaki çalışmalardan farklı değildir. Çözümlenecek olan problemin net bir tanımı yapılmalı, problemin ne olduğu açıkça ortaya konulmalıdır. Daha sonra problemin çözümü için gereken diğer aşamalara geçilebilmektedir. Prof.Dr.Yalçın ÇEBİ

17 Program Özellikleri (3)
Bir problemin çözümüne başlarken, Problemi çözmek için hazırlanacak olan programdan hangi çıktıların isteneceği belirtilmelidir. Belirlenen çıktıların elde edilmesi için hangi girdilerin olması gerektiği belirlenmektedir. Programın kullanıcısı olan kişilerin, programdan bekledikleri çıktıyı kağıt üzerinde yazarak veya çizerek ifade etmeleri gerekmektedir. Bu sayede programcılar hangi hedefe erişmeleri gerektiğini rahatlıkla anlayabilmektedirler. Prof.Dr.Yalçın ÇEBİ

18 Program Özellikleri (4)
Çıktılar tanımlandıktan sonra, gerekli verilerin ve bu verilerin hangi kaynaktan girileceğinin belirlenmesi gerekmektedir. Verilerin türleri, yapıları, hangi ortamdan toparlanacağı, nasıl toparlanacağı, bilgisayar sistemine nasıl girileceği gibi soruların cevaplandırılacağı çalışmalar bu aşamada gerçekleştirilmektedir. Girilen verilerin, istenilen çıktıyı verebilecek şekilde nasıl işleneceğinin belirlenmesi de bu aşamada gerçekleştirilen işlerden birisidir. Prof.Dr.Yalçın ÇEBİ

19 Program Özellikleri (5)
Program geliştirmenin her aşamasında belgeleme (dokümantasyon) gerçekleştirilmelidir. Belgelemenin, bu aşamadan başlayarak her aşamayı ayrıntılı olarak kapsayan bir şekilde hazırlanması gerekmektedir. Bu aşamada programın özelliklerini, girdi, çıktı ve gereken işlemleri içeren bir belge hazırlanmaktadır. Prof.Dr.Yalçın ÇEBİ

20 Program Tasarımı (1) Problemin çözüm yöntemini ve bu yöntemin geliştirilme işlemlerini içermektedir. Program yaşam döngüsünün en önemli aşamasıdır. Bu aşamada; Bir çözüm yöntemi planlanmakta, Bu çözüm yöntemi uygun çözüm, program geliştirme yöntem ve araçları ile geliştirilmektedir. Prof.Dr.Yalçın ÇEBİ

21 Program Tasarımı (2) Hazırlanan çözüm içinde;
Programın nasıl geliştirileceği, Programın nasıl bölümlendirileceği, Programın hangi bölümünde hangi programlama dilinin kullanılacağı, Programın hangi bölümünün kim tarafından kodlanacağı (seçilen programlama dilinde bilgisayara aktarılacağı) ayrıntılı olarak belirtilmelidir. Prof.Dr.Yalçın ÇEBİ

22 Program Tasarımı (3) Özellikle büyük programlarda, program “parça” veya “modül” olarak adlandırılan bölümlere ayrılmaktadır. Her parça ayrı programcılar tarafından ve bazen de ayrı programlama dillerinde yazılmaktadır. Birbirinden bağımsız olarak hazırlanan ve denenen bu modüllerin, bütünleştirme sürecinde birbirleri ile birleştirilmeleri ve bir bütün olarak denenmeleri gerekmektedir. Prof.Dr.Yalçın ÇEBİ

23 Yapısal Programlama Teknikleri
Yukarıdan Aşağıya (Top-down) yöntemi Aşağıdan Yukarıya (Bottom-up) yöntemi Sözde kod (Pseudocode) Akım Şeması (Flowchart) Mantıksal Yapılar (Logic Structures) Prof.Dr.Yalçın ÇEBİ

24 Aşağıdan-Yukarı Yöntemi (1)
Programlama ve sistem tasarımında karşılaşılan problemler, hep bir arada çözülemeyecek kadar büyük olabilmektedirler. Nereden başlanacağı konusunda bir soru işareti doğmaktadır. Eğer karşılaşılan problem, daha önce karşılaşılan türden bir problem değilse; Problemin anlaşılan bir bölümünü çözmek, Böylece problemin diğer bir tarafının anlaşılmasını kolaylaştırmak, Daha sonra o parçayı çözmek ve Sırasıyla tüm parçaları çözüme kavuşturmak gerekebilir. Prof.Dr.Yalçın ÇEBİ

25 Aşağıdan-Yukarı Yöntemi (2)
Her bir parça ayrı ayrı çözümlendiği için daha sonra birleştirilmeleri ve birlikte düzgün çalışıp çalışmadıklarının denenmesi gerekmektedir. Bu yönteme “Aşağıdan Yukarıya (Bottom-up)” adı verilmektedir. Bu yöntemin en büyük sorunu: Problemin çözüm aşamasında her bir parça ayrı ayrı çözüme kavuşturulmakta, Program parçaları arasındaki ilişki kısmen de olsa gözardı edilmektedir. Bunun sonucunda program içinde bütünlük sağlamak için yeniden düzenlemeler gerekmekte, programın bütünleştirilmesi sırasında yoğun bir ek çalışmaya gereksinim duyulmaktadır. Prof.Dr.Yalçın ÇEBİ

26 Yukarıdan-Aşağı Yöntemi (1)
Karmaşık problemler Parçalara ayrılarak Aşama aşama çözümlenebilecek bölümler halinde ele alınarak çok daha kolay çözümlenebilirler. Programlamada geliştirilen modern yöntemler bunu öngörmektedir. Her aşamada problem küçük parçalara bölünmekte ve ayrıntılardan mümkün olduğunca kaçınılmaktadır. Prof.Dr.Yalçın ÇEBİ

27 Yukarıdan-Aşağı Yöntemi (2)
Bu yaklaşımda, programın tüm parçaları arasındaki ilişkiler çözüme başlanmadan önce ayrıntılı olarak tanımlanmakta, böylece parçaların birleştirilme aşaması kolaylıkla geçilebilmekte ve istendiği gibi çalışan bir program elde edilmektedir. Bu genel yaklaşım, Yukarıdan Aşağıya Yöntemi (Top-down Method) olarak adlandırılmaktadır. Prof.Dr.Yalçın ÇEBİ

28 Sözde Kod (Pseudocode)
Yazılacak olan programın mantıksal akışının yazı ile ifade edilmesidir. Programın yazılmasından önce bir özetinin yapılmasına benzemektedir. Örneğin; Ekrandan girilen “n” tane sayının okutulması, toplatılması, aritmetik ortalamasının alınması ve sonucun yazdırılması: Sözde kodda, yapılacak olan işlem genel hatları ile tariflenmektedir. Bu koda bakarak istenilen bir programlama dilinde bu işlemi gerçekleştiren bir program geliştirmek mümkündür. Prof.Dr.Yalçın ÇEBİ

29 Örnek Sözde Kod İşleme Başla n değerini oku
adet’e ve toplam’a sıfır değerini ata a sayısını oku a sayısını toplam ile topla ve sonucu toplam’a ata adet’in değerini 1 arttır. Eğer adet’in değeri n’den küçükse yeni sayıyı okumak üzere 4.aşamaya git. toplam değerini adet değerine bölerek aritmetik ortalamayı bul ve bu değeri ortalama’ya aktar toplam, adet ve ortalama değerlerini yazdır İşlemi bitir Prof.Dr.Yalçın ÇEBİ

30 Akım Şeması (Flowchart)
Bir programlama probleminin çözümü için gerekli ayrıntılı aşamaları grafiksel olarak gösteren bir çizimdir. Akım şemalarında her simge belirli bir işlemi ifade etmektedir. Prof.Dr.Yalçın ÇEBİ

31 Akım Şeması Simgeleri Prof.Dr.Yalçın ÇEBİ

32 Programın Parçalar Halinde Gösterimi
Ancak, büyük çaplı programlarda akım şeması hazırlanması oldukça zor olmaktadır. Yukarıdan aşağıya programlama yöntemi sayesinde programın parçalara ayrılması yarar sağlamaktadır. Böylece her program parçasının akım şeması ayrı hazırlanmakta, hazırlanan bu akım şemaları ise daha üst seviyeli bir akım şeması ile gösterilebilmektedir. Prof.Dr.Yalçın ÇEBİ

33 Örnek Program Akım Şeması
Prof.Dr.Yalçın ÇEBİ

34 Akım Şeması Türleri- Çerçeve Akım Şeması
Çerçeve akım şeması ve ayrıntılı akım şeması farklı seviyelerdeki ayrıntıları vermektedir. Çerçeve akım şemalarında, programcı programı genel hatları ile anlayabilmektedir. Sistem akım şemasının program akım şemasına çevrilmiş hali bulunmaktadır. Bu akım şemasında gerçekleştirilecek işlemlerin ana hatları bulunmaktadır. Prof.Dr.Yalçın ÇEBİ

35 Akım Şeması Türleri- Ayrıntılı Akım Şeması
Ayrıntılı akım şemaları çerçeve akım şemaları temel alınarak hazırlanmakta ve özel işlemlerin yapılabilmesi için gerekli ayrıntıları içermektedirler. Bu akım şemasından yararlanarak programcı program kodlama sayfalarını hazırlama imkanını bulabilmektedir. Bu akım şemaları genellikle değişik programcılar tarafından hazırlanabilmektedir. Prof.Dr.Yalçın ÇEBİ

36 Çerçeve ve Ayrıntılı Akım Şeması
Prof.Dr.Yalçın ÇEBİ

37 Günümüzde Akım Şemaları
Akım şemaları, orijinalinde problemleri çözümleme ve bilgisayar destekli çözümler üretilmesine yardımcı olmak amacıyla geliştirilmişlerdir. Yazılım teknolojisinin gelişimi ile birlikte, akım şemaları can sıkıcı ve yetersiz araçlar olarak algılanmaya başlamışlardır. Daha yeni seçenekler geliştirilmiş ve uygulamaya konmuşlardır. Prof.Dr.Yalçın ÇEBİ

38 Akım Şemalarının Zorlukları
Farklı seviyelerdeki ayrıntılar kolaylıkla karıştırılabilmektedirler. Örneğin, özel bir uygulamanın ayrıntıları tasarımın ilk başlarında verilmek zorunda kalınabilmektedir. Bir seviyedeki akım şemasından diğer bir seviyedeki akım şemasına açıkça geçilememektedir. Yapılacak işin nasıl yapıldığının teknik ayrıntıları arasında hangi işin yapıldığı gözden kaçabilmektedir. Akım şemaları, kolay takip edilebilmektedir. Bir dildeki yazılı anlatım kadar anlaşılır değildir. Programcı, bu akım şemasından yararlanarak programı geliştirememektedir. Prof.Dr.Yalçın ÇEBİ

39 Mantıksal Yapılar Bir programın geliştirilmesi sırasında değişik özelliklere sahip mantıksal yapıların (Logical Structures) kullanımı gerekmektedir. En çok kullanılanları, sıralanma (sequence), seçim (selection) Döngü (loop). Bu yapıların kullanımı ile yapısal olarak düzenlenmiş programlar yazılabilinmektedir. Prof.Dr.Yalçın ÇEBİ

40 Sıralanmalar Sıralanmalarda, bir program deyimini diğer bir program deyimi takip etmektedir. Bir deyimin işlenmesi bittiğinde program bir sonraki deyime geçmekte ve işlemler sırası ile gerçekleştirilmektedir. Prof.Dr.Yalçın ÇEBİ

41 Seçimler Karar verme durumu sözkonusu olduğunda gündeme gelmektedir.
Karar verme işleminin sonucuna göre program iki ayrı deyime yönlendirilmekte ve o duruma uygun deyim işlenmektedir. Daha sonra program bir sonraki deyime geçmektedir. Bu yapı IF_THEN_ELSE yapısı olarak da adlandırılmaktadır. Prof.Dr.Yalçın ÇEBİ

42 Döngüler Bir işlemin veya işlem grubunun belirli bir şarta bağlı olarak tekrarlanması gerektiğinde kullanılan yapılara ise “döngü” adı verilmektedir. Bu yapılar, işlemler arka arkaya sürekli tekrarlandıklarından aynı zamanda “iterasyon” olarak da adlandırılabilmektedir. Prof.Dr.Yalçın ÇEBİ

43 Döngü Türleri Döngüler, genel olarak
Belirli bir sayıda işlem yapılması istendiğinde kullanılan FOR_NEXT, Belirli bir şarta bağlı olarak kullanılan DO_UNTIL ve DO_WHILE döngüleri olarak gruplandırılabilir. Prof.Dr.Yalçın ÇEBİ

44 FOR_NEXT Döngüsü Belirli bir sayıda tekrar edilmesi gereken işlemler FOR ve NEXT deyimleri arasına yazılmaktadır. NEXT deyimi, genellikle BASIC programlama dilinde kullanılmakta, diğer programlama dillerinde ise bu deyimin yerini başka deyim ve/veya işaretler almaktadır. Bu yapı, IF_THEN yapısı ile kurulan döngülerin daha sadeleştirilmiş bir şeklidir. Prof.Dr.Yalçın ÇEBİ

45 DO_UNTIL; DO_WHILE DO_UNTIL ve DO_WHILE yapıları birbirlerine benzemektedirler. DO_UNTIL en çok kullanılan döngü yapısıdır. Yapı içinde bulunan deyim grubu, kontrol şartı sağlanıncaya kadar ardışık olarak işlenmektedir. DO_WHILE yapısında döngü içinde bulunan deyimler, şart sağlandığı müddetçe işlenmektedirler. Prof.Dr.Yalçın ÇEBİ

46 Tasarımı Belgeleme Program geliştirme sürecinin her aşamasında gerekli olan belgeleme işlemlerine bu aşamada da devam edilmektedir. Bu belgeleme işlemi sırasında hazırlanacak olan belgelerin içerisinde sözde kod, akım şemaları ve mantıksal yapılar ayrıntılı olarak yer almalıdır. Prof.Dr.Yalçın ÇEBİ

47 Program Yazımı (1) “Kodlama” olarak da tanımlanabilen program yazım aşamasına kadar yalnızca sistem çözümleyiciler çalışmış, programcılar henüz hiç bir çalışmaya başlamamışlardır. Bu aşamaya gelinceye kadar, programın yazılabilmesi için gerekli bütün hazırlıklar tamamlanmıştır. Artık, programın yazımına başlanabilecektir. Prof.Dr.Yalçın ÇEBİ

48 Program Yazımı (2) Yanlış bir yaklaşım olmasına karşın, “programlama” denildiğinde akla gelen tek şey program yazım aşaması olmaktadır. Program yazım aşaması, program geliştirmenin yalnızca bir bölümüdür. Genel olarak program geliştirme sürecinin yaklaşık %20’lik bir bölümünü içermektedir. Prof.Dr.Yalçın ÇEBİ

49 Program Yazımı (3) Geliştirilen bir program birçok yönden “iyi” olarak kabul edilmelidir. Bir program : Güvenilir olmalıdır; Birçok şart altında çalışabilmelidir; Açık ve genel girdi hatalarını yakalayabilmelidir; İyi bir şekilde belgelenmelidir; Diğer programcılar tarafından da anlaşılır olmalıdır; Yapısal olarak düzenlenmelidir. Yapısal olarak hazırlanan programlar yalnız çok amaçlı olmamakta, aynı zamanda programın doğru çalışmasını kontrol etmek amacıyla yapılan denemeler sırasında da kolaylık sağlamaktadırlar. Prof.Dr.Yalçın ÇEBİ

50 Programın Sunumu Programın yazımı sırasında dikkat edilmesi gereken kuralları içermektedir. Program sunumunda dikkat edilmesi gerekenler: Program, altprogram, değişken ve sabitler için yeterince uzun ve anlamlı tanımlayıcılar kullanılmalıdır. Programda, programın yapısını yansıtacak şekilde girintiler kullanılmalıdır. Uygun program yapıları kullanılmalıdır. Programdaki altprogramlar yönetilebilir uzunluklarda düzenlenmelidir. Program içine, ne yapıldığı ve ne için yapıldığını anlatan açıklayıcı bilgiler yazılmalıdır. Prof.Dr.Yalçın ÇEBİ

51 Programın Güvenilirliği (Reliability)
Programın güvenilirliği için gerekli çalışmalar da program kodlama aşamasında gerçekleştirilmektedir. Eğer bir program belirli bir süre ve belirli şartlar altında çalışmaya devam ediyorsa o program “doğru” olarak kabul edilmektedir. Güvenilirlik “Hatalar Arasında Geçen Ortalama Zaman” (MTBF:Mean Time Between Failure) ile belirlenmektedir. Bu değer, programın iki hatası arasında geçen zaman ile belirlenmektedir. Prof.Dr.Yalçın ÇEBİ

52 Verimlilik / Karmaşıklık ?
Programın verimliliği (Efficiency) zaman ve depolama birimi kullanımı ile ölçülmektedir. Verimlilik ile karmaşıklık arasında değişik bağlantılar bulunmaktadır. Örneğin, bir diziyi basit bir algoritma kullanarak sıralamak, karmaşık bir algoritma ile sıralamaktan daha kısa sürebilmektedir. Öncelikli olarak çalışan bir program tasarlanmalı, verimlilik çalışmaları programın çalıştırılmasından sonra sürdürülmelidir. İyi tasarlanmış bir programda verimlilik çalışmalarının sonradan gerçekleştirilmesi, kötü tasarlanmış bir programdan daha kolay gerçekleştirilebilmektedir. Prof.Dr.Yalçın ÇEBİ

53 Dil Seçimi ve Belgeleme
Bütün programlama mantığı düzenlendiğinde, program tasarım parametrelerine de dikkat edilerek, yapılacak olan çalışmaya uygun olarak seçilen programlama dillerinin kullanımı ile program geliştirmeye başlanabilmektedir. Program geliştirmenin bu aşamasında da belgeleme gerçekleştirilmelidir. Prof.Dr.Yalçın ÇEBİ

54 Program Deneme (Test) Bir programın yazımı sırasında ve bittikten sonra, programın kendisinden beklenen işleri doğru olarak yerine getirip getirmediğini belirlemek amacıyla çeşitli denemeler yapılmaktadır. Bu denemeler sırasında düzeltilmesi gereken hatalar ortaya çıkmakta ve bu hatalar düzeltilmektedir. Bir programın denenmesi ve doğruluğunun onaylanması oldukça uzun ve pahalı bir süreçtir. Program tasarımının önceki aşamalarında dikkatli ve titiz bir tasarım yapılması, hataları en aza indirgemektedir. Programın kullanıma girme aşamasından sonra bir hata çıkması durumunda bu hatanın giderilmesi daha pahalı ve zor olmaktadır. Prof.Dr.Yalçın ÇEBİ

55 Program Hataları - Yazım Hatası
Yazım (Syntax) ve mantık (logic) hataları. Yazım hataları, programın, yazıldığı dildeki yazım kurallarına uygun yazılmamasından kaynaklanan hatalardır. Bu hatalar programın çalışmasını doğrudan etkileyen ve hata giderilmedikçe programın derlenmesini engelleyen hatalar olmaktadır. Örneğin, matematiksel bir işlemde toplama işaretinden sonra herhangi bir değişkenin veya değerin yazılmaması bir yazım hatası olmaktadır. Prof.Dr.Yalçın ÇEBİ

56 Program Hataları - Mantık Hatası
Mantık hataları, programın çalışmasını etkilemeyen, ancak programın çalışması sırasında ve sonucunda yanlış sonuçlar elde edilmesine neden olan hatalardır. Örneğin, toplama işareti yerine çıkarma işareti kullanılması bir matematiksel işlemin yazım yönünden doğru, ancak sonucunun yanlış olmasına neden olmaktadır. Prof.Dr.Yalçın ÇEBİ

57 Program Deneme Türleri (1)
Masabaşı kontrol (Desk Check) Çeviri sırasında kontrol (Conversion check) Örnek veri kullanarak el ile kontrol (Manual testing) Birim kontrolü (unit testing) Bütünlük kontrolü (integrity testing) Sistem kontrolü (system testing) Kullanıcı kabul kontrolü (acceptance testing) Prof.Dr.Yalçın ÇEBİ

58 Program Deneme Türleri (2)
Masabaşı kontrol: Programın, bir programcı tarafından kağıda yazdırılmış şeklinin gözden geçirilmesidir. Programcı program listesini yazım ve mantık hataları yönünden gözden geçirmektedir. Çeviri sırasında kontrol: Programın bir derleyici kullanımı ile makine diline çevirilmesi sırasında gerçekleştirilen kontroldür. Bu kontrol işlemi derleyici yazılımı tarafından gerçekleştirilmekte ve programdaki yazım hatalarını denetlemektedir. Derleyici kullanılarak geliştirilmek istenen bir program, ancak yazım hataları tümüyle giderildikten sonra makine diline çevrilebilinmekte ve çalıştırılabilinmektedir. Prof.Dr.Yalçın ÇEBİ

59 Program Deneme Türleri (3)
Örnek veri kullanarak el ile kontrol: Bir programcı, örnek bir veri grubu alarak ve programın kağıt üzerindeki çıktısından yararlanarak, bir hesap makinesi yardımı ile programdaki deyimleri takip etmekte ve hesaplamaları yapmakta, böylece kontrolü gerçekleştirmektedir. Birim kontrolü: Her program bileşeni, yazım işlemi bittikten sonra denenmektedir. Prof.Dr.Yalçın ÇEBİ

60 Program Deneme Türleri (4)
Bütünlük kontrolü: Programın değişik bölümleri biraraya getirilerek çalışmaları denenmektedir. Sistem kontrolü: Programın kullanılması öngörülen en son ve tam şekli denenmektedir. Kullanıcı kabul kontrolü: Değişik seviyelerden kullanıcılar, genellikle de programı talep eden kişi veya kişiler programı, gereksinim ve taleplerini karşılama yönünden denemektedirler. Bu aşama “Beta Deneme” olarak da adlandırılabilmektedir. Prof.Dr.Yalçın ÇEBİ

61 Diğer Deneme Süreçleri
İşlevsel Deneme (Kara Kutu / Black BoxTesting) Mantıksal Deneme (Beyaz Kutu / White Box Testing) İşlevsel deneme: Program özelliklerinde belirtilen normal, sıradışı ve geçersiz veri tipleri ile programın denenmesine dayanmaktadır. Mantıksal deneme: Programın içsel yapısı incelenmekte, Mantıksal kontrol işlemlerinin hem doğru hem de yanlış olması durumları için örnek veriler girilmekte, Her mantıksal sürecin içindeki işlemler kontrol edilmektedir. Prof.Dr.Yalçın ÇEBİ

62 Programın Kabulü ve Belgeleme
İşlevsel deneme süreci, Program geliştirme sürecinin sonunda gerçekleştirilmektedir. Bu süreç, programın kabul veya reddi için bir temel oluşturmaktadır. Ancak, işlevsel süreç tek başına doğru bir değerlendirme süreci olmayıp, program geliştirme sürecinde mantıksal süreçlerin de değerlendirilmesi daha doğru bir yaklaşım olmaktadır. Belgeleme bu aşamada da gerekmektedir. Örnek veriler, program listeleri, program kodlama sırasında karşılaşılan sorunlar, bu sorunların çözüm önerileri gibi bilgiler bu belgelerin içinde bulunmalıdırlar. Prof.Dr.Yalçın ÇEBİ

63 Programın Belgelenmesi
Bir program tasarım süreci, ilk aşamadan son aşamaya kadar ayrıntılı bir şekilde belgelenmelidir. Program belgeleme, program sürecinin tüm ayrıntılarını içermektedir. Programın geliştirme aşamaları tamamlandıktan sonra değil, programın özelliklerinin belirlenmeye başlandığı ilk aşamadan itibaren hazırlanmalıdır. Program belgesi, değişik seviyelerdeki kişilere yönelik olarak hazırlanabilmektedir. Prof.Dr.Yalçın ÇEBİ

64 Belgeleme-Kimler İçin ? (1)
Programcı için: Program geliştirme sürecinde veya sonrasında, programlamanın tüm aşamalarına yardımcı olmak üzere belgeler gerekli olmaktadır. Diğer programcılar için: Programlar, “yaşayan varlıklardır”. Bir programın geliştirilme ve kullanım süreci çok uzun sürebilmektedir. Programın yazılmasından itibaren geçen zaman dilimi içinde programda çeşitli değişiklik, düzenleme ve ekleme gereksinimleri ortaya çıkabilmektedir. Bu gereksinimlerin giderilmesi, değişik programcılar tarafından gerçekleştirilebilmektedir. Prof.Dr.Yalçın ÇEBİ

65 Belgeleme-Kimler İçin ? (2)
Programın kullanıcıları için: Programın kullanımında değişik kademelerde uzmanlaşmak isteyen kişiler olabilir. Bazı kurumlarda, hazırlanan programın kullanımı için kurslar olabilir. Bazı kurumlardaki yöneticiler, program kullanıcılarının program kullanımını yalnızca belgelerden yararlanarak öğrenmelerini isteyebilirler. Bilgisayar işletmenleri için: Programın verdiği hata iletilerinin neler olduğunu ve her iletinin ne anlama geldiğinin sistem işletmenleri tarafından anlaşılabilmesi, Gerekli işlemlerin işletmenler tarafından gerçekleştirilmesinin sağlanması hedeflenebilir. Prof.Dr.Yalçın ÇEBİ

66 Program Belgesi İçeriği (1)
Problemin tanımı, sistem ve program özellikleri. Girdi ve çıktıların kalıplarının bulunduğu ve verilerin geçerliliğinin onaylandığı belgeler. Veri yapılarının kullanım şekillleri, veri dosyalarının düzenlenme şekillleri, bağlantı ve güvenlik işlemleri. Problemin çözümü için kullanılan algoritma ve yordamlar. Bunlar sözde kod veya akış şeması şeklinde olabilir. İyi hazırlanmış örnek veriler ve bu verilerle elde edilen sonuçlar. Bu bölüm, programın hatasız çalıştığının belirlenmesi için kullanılmaktadır. Prof.Dr.Yalçın ÇEBİ

67 Program Belgesi İçeriği (2)
Programın doğru çalışması yanında, kullanıcıların bilgi girişi ve sonuçları almaları için basit, verimli, kesin ve hatasız yöntemler içerdiği ile ilgili belgeler. İyi bir kullanıcı arayüzü olduğunun belirtilmesi. Programın kullanıcı veya kurucusuna yönelik ayrıntılı bilgiler: Programın sınırları, Programın çalışması için gerekli asgari donanım ve yazılım altyapısı, Programın nasıl çalıştırılacağı, Programın kullanımı ile ilgili örnekler ve açıklamalar. Prof.Dr.Yalçın ÇEBİ

68 Program Girdilerinin İçeriği
Hangi verilerin girileceği, bunların türleri, geçerlilik değerleri, kullanıcı geçersiz veya yanlış bir veri girdiğinde ne yapılacağı bilgisi bulunmalıdır; Verilerin hangi kalıpta girileceği tanımlanmalıdır. Burada kullanıcının veri giriş sürecinde kullanabileceği diyalog pencereleri ve bu pencerelerde hangi verinin ne şekilde isteneceği ayrıntılı olarak tanımlanmalıdır Ekran tasarım şekillleri belge içinde yer almalıdır. Bu ekran tasarımlarında, veri giriş ve çıkış ekranları, ara ekranlar ayrıntılı olarak yer almalı hangi ekranın hangisi ile bağlantılı olduğu belirtilmelidir. Prof.Dr.Yalçın ÇEBİ

69 Program Çıktılarının İçeriği
Çıktıların nelerden oluşacağı, bu çıktıların hangi verilerden yararlanılarak oluşturulacağı, ne zaman bu çıktının üretileceği ve hangi formun içinde sunulacağı belirtilmelidir. Çıktı olarak verilecek bilgilerin kalıpları bulunmalıdır. Prof.Dr.Yalçın ÇEBİ

70 Program Özellikleri Toplantı tutanakları, sözde kod, akım şeması, program yapısı blok çizimleri, karar tabloları ve ağaçları gibi ayrıntılar bulunmalıdır. Program içinde kullanılan tüm yordam ve altyordamların ayrıntıları, Her altyordamın kullanım amacı, Girdileri, Çıktıları, Hangi yordam ve altyordam ile bağlantılı olduğu, Altyordam içinde kullanılan parametreler ve işlevleri ayrıntılı olarak program belgesi içinde yeralmalıdır. Prof.Dr.Yalçın ÇEBİ

71 İyi Bir Program Belgesi:
Tüm ayrıntıları içermelidir. Programın yalnızca geliştirilip kullanıma konulduğu zaman için değil, çok daha sonraları da başka programcı veya gruplar tarafından geliştirilmesi ve “yaşamasını” sağlamalıdır Program belgeleme işlemi sırasında, yapılan çalışmalar gerek kağıt üzerinde belgelenmeli, gerekse de program içinde kayıt altına alınmalıdır. Özellikle program içine bilgi yazım işlemi sırasında programda ne yapıldığı, eğer bu bir değişiklik ise hangi gerekçe ile ve kim tarafından hangi tarihte gerçekleştirildiği, eski ve yeni program deyimleri ayrıntılı olarak belirtilmelidir. Böylece programcılar, programı izleyerek de gerçekleştirilen çalışmalar hakkında bilgi sahibi olup, sonraki işlemleri daha sağlıklı olarak gerçekleştirebilirler. Prof.Dr.Yalçın ÇEBİ

72 Program Bakımı Bir programın tüm “yaşamı” boyunca yapılan harcamanın %75’i bakım gideri olarak gerçekleşmektedir. “Bakım programcısı” adı ile anılan bir iş kolu bile oluşmuştur. Program bakımının temel amacı, programın hatasız, verimli ve etkin kullanımını sağlamaktır. Program bakımı: Programın işletilmesi Değişen şartlara uyum sağlaması. Prof.Dr.Yalçın ÇEBİ

73 Programın İşletilmesi
İşlevsel hataların giderilmesi, Programın kullanımını basitleştirmek Programı yapısal programlama teknikleri ile standart hale getirme çalışmalarını içermektedir. Baştan itibaren iyi tasarlanmış programlarda bu çalışmalar az miktarda olmaktadır. Prof.Dr.Yalçın ÇEBİ

74 Programın Değişime Uyum Sağlaması
Tüm kurumların gereksinimleri zaman içinde değişiklik göstermekte, doğal olarak, kullandıkları programların da bu değişikliklere uyum göstermeleri gerekmektedir. Programlarda yeni vergi yasaları, yeni bilgi gereksinimleri ve yeni şirket politikaları gibi nedenlerle değişiklikler yapılmaktadır. Program bakım sürecinde gerçekleştirilen tüm değişiklikler, nedenleri, nasıl gerçekleştirildikleri gibi ayrıntılar da belirtilerek belgelenmeli ve program dosyasına konulmalıdır. Prof.Dr.Yalçın ÇEBİ

75 Program Geliştirme Araç ve Yöntemleri
Bilgisayar Destekli Yazılım Mühendisliği (BDYM; CASE:Computer Aided Software Engineering) yazılımları. Bu yazılımlar progam tasarımı, kodlanması ve denenmesi işlemlerinde kolaylıklar sağlamakta, yazılım geliştirme süreçlerini kısaltmaktadırlar. Nesneye Dayalı Yazılım Geliştirme veya Programlama (NDYG, NDP; OOSD:Object Oriented Software Development; OOP:Object Oriented Programming). Prof.Dr.Yalçın ÇEBİ

76 Geleneksel-NDP Geleneksel sistem geliştirme işlemi, belirli bir hedefi gerçekleştirmek için gerekli olan yordamlara odaklanmayı dikkatli ve adım adım gerçekleştirmeyi öngörmektedir. NDP’de ise, yordamlara odaklanmak yerine, önceden tanımlanmış yordamlar ve nesneler arasındaki ilişkilerin tanımlanmasına odaklanmaktadır. NDP, bir programın nesneler halinde tasarlanmasını öngörmektedir. Her nesne, bir işin yerine getirilmesi için gerekli veri ve işlemleri içermektedir. Prof.Dr.Yalçın ÇEBİ

77 NDP (1) Programlamanın ilk dönemlerinde:
Her program tümüyle yeni baştan tasarlanmakta, Daha önceden herhangi bir şekilde hazırlanmış olan programlardaki herhangi bir bölümden yararlanmak mümkün olamamaktaydı. Bu nedenle program geliştirme süreci uzun zaman ve emek almakta, dolayısıyla da program geliştirme maliyeti yüksek olmaktaydı. Bu süreç, bir evin tümüyle temelden çatıya kadar yapımına benzemektedir. Prof.Dr.Yalçın ÇEBİ

78 NDP (2) Nesneye Dayalı Programlama, önceden üretilmiş (prefabrike) yapı elemanları ile bir bina inşa etmeye benzemektedir. Programlar yazılırken, önceden hazırlanmış ve “nesne (object)” adı verilen modüller kullanılmaktadır. Nesneler, yeniden kullanılabilir, kendileri için gerekenleri içlerinde bulunan bileşenlerdir. Bu nesnelerle oluşturulan programlarda, belirli fonksiyonların aynı olduğu kabul edilmektedir. Örneğin, ekrandaki pencerelerin tasarımını yapan bir nesne, her program tarafından kullanılabilmektedir. Bu nesnenin her program için yeniden yazılmasına gerek kalmamaktadır. Prof.Dr.Yalçın ÇEBİ

79 Bilgisayar Personeli (Computer Staff)
Bir programın geliştirilmesi sırasında değişik konumda bulunan birçok kişi görev almaktadır. Sistem çözümleyiciler (System Analyst) Programcılar (Programmer) Prof.Dr.Yalçın ÇEBİ

80 Sistem Çözümleyici Bir yazılımın geliştirilmesinde en önemli konumda bulunan kişi sistem çözümleyicidir. Sistem çözümleyicinin görevleri: Olası bilgisayar uygulamalarının olabilirliğini araştırmak, Varolan sistemleri bilgisayarlaştırılma açısından incelemek, Bilgisayar tabanlı sistemleri tasarlamak, uygulamak ve izlemek ‘dir. Sistem çözümleyiciler, proje ekiplerinde temel proje çözümleyici olarak görev yapmaktadırlar. Prof.Dr.Yalçın ÇEBİ

81 Programcı Programcılar ise sistem çözümleyiciler kadar ayrıntılı işlerle uğraşmamaktadır. Programcılar; Çözümleyici tarafından ayrıntılı olarak kendilerine verilen yordamları, belirlenen bilgisayar sistemine uygun bir programlama dili ile kodlarlar. Çözümleyici ile birlikte çalışarak, hazırlanacak olan programın mantıksal olarak doğru olmasını sağlarlar. Programcılar, proje ekiplerinin içinde de yer alarak, program geliştrime sürecini en baştan itibaren takip etmelidirler. Sistem çözümleyicilerin hangi problemin çözümüne nasıl yaklaştığını daha yakından görüp, program yazım aşamasında daha iyi bir programı daha kısa sürede yazma imkanına sahip olabilirler. Prof.Dr.Yalçın ÇEBİ

82 İnsan-Bilgisayar Arayüzü (1)
Bilgisayar kullanıcıları ile bilgisayar arasındaki etkileşim, İnsan-Bilgisayar Arayüzü (İBA; HCI:Human-Computer Interface) olarak tanımlanmaktadır. Bu terim yalnızca donanımsal yapıları değil, bilgisayar ile kullanıcı arasındaki tüm etkileşimi kapsamaktadır. Bu etkileşimde, kullanılan arayüzlerin kullanıcı tarafından daha rahat kullanılabilir ve beğenilir olmasının sağlanması hedeflenmektedir. Prof.Dr.Yalçın ÇEBİ

83 İnsan-Bilgisayar Arayüzü (2)
Bilgisayarların ilk geliştiği yıllarda bilgisayar kullanıcıları, konularında ve bilgisayar kullanımında uzman kişilerdi. Bilgisayarın kullanımı için ayrıntılı ve gözalıcı arayüzlerin oluşturulması gerekmemekteydi. Herkesin rahatlıkla kullanabileceği bilgisayar arayüzleri hazırlanmalıdır, çünkü: Bilgisayarların günlük hayatta yaygın kullanılmaktadır. Bilgisayar kullanan kişilerin sayılarının artmıştır. Bilgisayar kullanan kişilerin eğitim düzeyleri farklıdır. İnsan-bilgisayar arayüzü, kullanıcı ile bilgisayar arasında veri alışverişini kolaylaştırmayı hedeflemektedir. Prof.Dr.Yalçın ÇEBİ

84 Kullanıcı Dostu (1) İnsan-bilgisayar arayüzünden beklenen en önemli özellik “Kullanıcı Dostu (User Friendly)” olmasıdır. Kullanıcı dostu bir arayüz, kullanıcının yardım alabileceği, kolay öğrenebileceği ve kullanabileceği bir şekilde olmalıdır. Çok iyi bir program yazmak, o program iyi bir kullanıcı arayüzüne sahipse anlamlı olmaktadır. Kullanıcı dostu olmayan arayüzleri belirlemek kolay, ancak kullanıcı dostu bir arayüz tasarlamak ise zor olmaktadır. Prof.Dr.Yalçın ÇEBİ

85 Kullanıcı Dostu Arayüz Özellikleri (1)
Kullanıcının sistemi kullanmaya başlayabileceği kadar kolay olmalıdır. Mümkün olabildiğince sistem kullanıcının gereksinim duyabileceği yardım ve program kullanım bilgilerini içermelidir. Kullanıcı, programın kullanımı için değişik belgelere, kitaplara, notlara başvurmamalıdır. Kullanıcının sistemden istediği sonuçları alabilmesi fazla güç ve bilgi gerektirmemelidir. Kullanıcı beklenmeyen veya sıradışı sistem eylemlerinden izole edilmelidir. Sistem herhangi bir şekilde hata verdiğinde ve kendisini kapattığında, gerek kullanıcı gerekse de yazılım sistemi bundan etkilenmemelidir. Prof.Dr.Yalçın ÇEBİ

86 Kullanıcı Dostu Arayüz Özellikleri (2)
Sistem, değişik seviyelerde bilgiye sahip olan kullanıcılara göre hazırlanmalıdır. Program kullanım şekli, hiç bilmeyen, bilen ve uzman kişilere göre ayarlanabilmeli, eğer varsa menülerde kullanıcı kendi isteğine göre değişiklikler yapabilmelidir. Kullanıcı hangi işlemlerin gerçekleştiği, nelerin yapıldığı, işlerin nasıl yürüdüğü konusunda her an bilgilendirilmelidir. Sistem, mantıksal ve tutarlı bir şekilde çalışmalıdır. Prof.Dr.Yalçın ÇEBİ

87 Kullanıcı Arayüz Türleri
Komut yönetimli arayüzler (Command Driven Interface) Menü yönetimli arayüzler (Menu Driver Interface) Doğrudan işletmeli arayüzler (Direct Manipulation Interface) Kullanıcı arayüz yönetim sistemleri (User Interface Management Systems) Özel amaçlı arayüzler (Special-Purpose Interfaces) Prof.Dr.Yalçın ÇEBİ

88 Kavram Kargaşası Genelde “arayüz (interface)” kelimesi ile “insan-bilgisayar arayüzü (human-computer interface)” aynı anlamlarda kullanılmaktadır. Bu nedenle birçok kaynakta “insan-bilgisayar arayüzü” yerine “arayüz” kelimesi kullanılmasına karşın bu tanımın kullanımında dikkatli olunması gerekmektedir. Arayüz kelimesi aynı zamanda donanımsal bir yapıyı da temsil etmektedir, ve bir aygıtın diğer bir aygıt ile bağlantısını sağlayan donanım parçası (arabirim) anlamında kullanılmaktadır. Prof.Dr.Yalçın ÇEBİ

89 Kaynaklar BEEKMAN, G. (2005), Computer Confluence, 6th Edition, Prentice Hall, ISBN 0‑13‑127313‑2. FRENCH, C.S., (1992), Computer Science, 4/e., DP Publications Ltd., ISBN 1‑873981‑19‑8. O’LEARY, T.J., O’LEARY, L., (2000), Computing Essentials , McGraw Hill, ISBN 0‑07‑116610‑6. REED, D. (2005), Computer Science, Prentice Hall, ISBN 0‑13‑127774‑X.

90 Sorular ? Prof.Dr.Yalçın ÇEBİ


"PROGRAMLAMA Temel Kavramlar" indir ppt

Benzer bir sunumlar


Google Reklamları