Bu makale gizli fakat ortak hatalardan kaçınacağını ve mühendislere PCB kopyalama yazılımında gizli hataları bulmaya yardım etmek için birkaç teknik tanıtılacak. Yazılım geliştirme projelerinin çoğu yazılım yanlışlarını tanımak için kodu kontrol, yapısal testi ve fonksiyonel testi kombinasyonuna dayanıyor. Bu geleneksel teknikler çok önemli ve çoğu yazılım sorunlarını bulabilirler. Bugünkü karmaşık sistemlerinde birçok ortak hata bulamazlar.
Yapılacak testi ya da beyaz kutu testi kodda mantıklı, kontrol akışı, hesaplama ve veri hatalarını etkili olarak bulabilir. Bu test yazılım yapısının detaylarını anlamak için yazılımın iç çalışmalarının tamamen bir gözlemi gerekiyor (bu yüzden yazılım yapısının detaylarını anlamak için "beyaz kutu" veya "cam kutusu" terimi. Her şartlı ifade, matematik operasyonu, girdi ve çıkışı kontrol ediyor. Teste edilecek birçok detaylar yüzünden, yapısal testi birbirinde bir yazılım birimi kontrol eder, genellikle bir fonksiyon ya da sınıf. Kod inceleme aynı karmaşık teknikleri uygulama defekleri ve bulunmak için potansiyel sorunlar olarak kullanır. Beyaz kutu testi gibi, denetimler genellikle yazılım birimi için yapılır, çünkü etkili bir denetim süreci ortalamalı ve detaylı denetimler gerekiyor. Araştırma ve beyaz kutu testi, fonksiyonel testi veya siyah kutu testi yazılımın uygulaması hakkında hiçbir şey bilmediğini tahmin ediyor. Kontrol girdi tarafından kullanılan çıkışı test ediyor. Funksiyonel testler tester veya geliştiriciler tarafından yazılmış test prosedürlerinden oluşturulmuş. Bu da belirli bir program a giriş setine uygun beklenen program ın çıkışını belirtiyor. Test çalıştıktan sonra, tester gerçek çıkışı sorunu bulmak için beklenen çıkışla karşılaştırır. Siyah kutu testi program ın en sık kullanılan fonksiyonlarında uyumlu olmayan ihtiyaçları, arayüz sorunları, performans sorunları ve hatalarını bulabilir. Bu teknolojileri birleştirmesine rağmen özel bir yazılım program ında gizlenen hataların çoğunu bulabilir, bunların de sınırları var. Kod inceleme ve beyaz kutu testi sadece bir zamanda kodun küçük bir parçasını hedef alır, sistemin geri kalanını görmezden. Siyah kutu testi genelde sistemi tamamen tedavi ediyor, uygulama detaylarını görmezden. Bazı önemli sorunlar tüm sistemde etkileşimlerinin detaylarına odaklanıp keşfedilir. geleneksel metodlar bu sorunları güvenilir olarak tanımayamaz. Yazılım sistemi özel sorunun özel sebebini bulmak için tamamen kontrol edilmeli. Programdaki her detayları ve kodun diğer parçalarıyla etkileşimlerini tamamen analiz etmek imkansız olduğundan beri analiz sorunları sebep eden program ın özel açılarına amaçlı olmalı. Bu makale üç potansiyel sorun alanını keşfetecek:* yarış koşulları* ırk koşulları* deadlock Readers bu makalenin ikinci parçasını internette okuyabilir, ki bu konuları keşfetecek:* Zaman sorunları* Yeniden kontrol koşulları Bütün yukarıdaki sorunlar çoklu görev gerçek zamanlı tasarım teknolojisi kullanan sistemlerde oldukça yaygın. stack overflow Prozesör geçici değişkenleri depolamak için stack kullanır, adım verilen fonksiyona parametre gönderir, yiyeci "durum" ve bunlar gibi. Sistem sanal hafıza kullanmıyorsa (diğer sözler, hafıza sayfalarını diğer kullanımlar için hafıza alanını boşaltmak için diske gönderemez), fiyat fabrikadan ayrıldığında ürün boyutuna ayarlanacak. Eğer bazı sebeplere göre takımın programcısı tarafından ayırdığı menzilden çıkarsa, program ı kesin olacak. Bu sürekli sistem başarısızlarına sebep olabilir. Bu yüzden sistemin en kötü durumda yeterince stack ayırabileceğini sağlamak gerekiyor. Tek yol, bir stack a şırı akışını asla olmadığını sağlamak, kodu analiz etmek, program ın mümkün mümkün şartlar altında maksimum stack kullanımını belirlemek, sonra yeterince stack ayırdığını kontrol etmek. Testin, acil giriş kombinasyonu tetikleyecek ve sistemdeki en kötü durumda en kötü senaryosu sebebi olamaz. Stak derinlik analizinin konsepti relatively basit: 1. Her bağımsız ipe için bir arama a ğacı oluştur. 2. Arama ağacı.3'deki her fonksiyonun stack kullanımını belirleyin. Ağacın kökünden dışarıdaki "leaf" tarafından hangi arama yolunu belirlemek için her arama ağacını kontrol edin. 4. Her bağımsız yip arama ağacının maksimum stack kullanımını ekle. 5. Her bölünme öncelik seviyesinde her bölünme hizmet rutininin (ISR) maksimum stack kullanımını belirleyin ve toplamını hesaplayın. Ancak, eğer ISR'nin kendisi bir topu yoksa ve kesilmiş iplerin topunu kullanırsa, ISR'nin kullandığı topu maksimum sayısı her iplerin topuna eklenmeli.6. Her öncelik seviyesi için işlemci durumunu kaydetmek için kullanılan stack sayısını ekleyin. 7. RTOS kullanırsanız, RTOS'nun iç kullanımı için gereken maksimum stack sayısını ekleyin (uygulama kodu tarafından yapılan sistem çağrısından farklı, 2. adım içinde dahil edilen iki önemli şey var). İlk olarak, yüksek seviye dil kaynak kodundan inşa edilen bir arama a ğacı muhtemelen tamamlanmış olabilir. Çoğu kompiler, büyük değerli büyük sayılar, yüzücü noktalar operasyonları, vb. gibi ortak hesap görevlerini iyileştirmek için çalışma zamanı kütüphanelerini kullanır. Bu aramalar sadece kompiler tarafından oluşturulan toplama dilinde görünür. Çalışma zamanı kütüphanesi işlemleri kendileri birçok paket alanını kullanabilir ve analizi dahil edilmeli. Eğer C++ dilini kullanıyorsanız, tüm aşağıdaki tür fonksiyonlar (metodlar) de arama ağacına dahil olmalıdır: yapıcı, yıkıcı, yüklenmiş operatörler, kopyalama yapıları ve dönüştürme fonksiyonları. Bütün fonksiyon göstericileri de analiz edilmeli ve aradığı fonksiyonlar analiz içinde dahil edilmeli.