Karmaşık projelerde nasıl bir yol izlemeli?

Endorfin35+

Kayıtsız Üye
Katılım
1 Mayıs 2020
Mesajlar
4,331
Daha önce karmaşık sayılabilecek bir adet ciddi proje yaptım. Karmaşık olmasına rağmen görevler tanımlı idi.

Önce donanımı belirledim. Ufak tefek testler yaparak temel kod algoritmalarını oturttum.

Sonra ciddi detaylı akış şemaları oluşturdum. Hemen her ihtimale karşı akış şemasında çözüm oluşturdum. Sonra kodlamaya geçtim. Akış şeması detaylı olunca kod 3000 satır olmasına rağmen çok çabuk yürüdü. Çok şükür 3-4 yıldırda tık demeden ilk versiyon firmware ile çalışıyor.

Şimdi çok daha karmaşık bir iş ile uğraşıyorum. 2-3 farklı donanımı ki bu donanımlar standart değil başka başka varyasyonlar var. Tek bir mcu ile yönetip bir çok değişik yöntemle kontrol etmek istiyorum. Görevler net olmayınca baya bir zorlanıyorum. Şu an gerekli i/o sayısını tespit etmeye odaklandım. Harici bir donanımın herhangi bir fonksiyonu nasıl çalışacak irdeliyorum. Başka bir marka donanım olursa ne fark olacak irdeliyorum. Sonra sadece o fonksiyon için kaç i/o gerekecek excelde not alıyorum. Şu an 70 küsür io var ve daha bitiremedim. IO sayısı ortaya çıkınca akış şemasına geçecem. Yanlız ortalık baya karışık. Çalışma zamanında çok olasılık var. Aklıma bir özellik eklemek geliyor hemen worde kullanma klavuzu yazar gibi not alıyorum. Yoksa o bu derken karışmaya balkıyor. Akış şemasını bitirnce kodlama, dış devre, test şeklinde gideceğim.

Ekip vs yok tek başıma ilgileniyorum . Bireysel çalılmalarda Bu işin genel olarak yöntemi böylemidir.
 
Bence sen zaten bunu biliyorsun ama böl ve yönet algoritmasını kullanmalısın. Bunun bireysel ya da ekip işi olması fark etmiyor. Ekip olursa görev dağıtıyorsun. Gerisi motivasyon!

Paralel algoritmalar Böl ve Yönet (Divide & Conquer) Algoritması

Böl ve Yönet algoritması, orijinal problemi daha kolay çözmek için, problemi alt problemlere bölen, bölünen alt problemleri çözen, orijinal problemin çözümünü oluşturmak için, alt problemlerin çözümlerini birleştiren bir algoritmadır. Böl ve yönet paradigması program modülaritesini yükseltir, genellikle basit ve verimli algoritmalara yol açar. Bu nedenle sıralı algoritma tasarımcıları için güçlü bir araç olduğu kanıtlanmıştır. Böl ve yönet paralel algoritma tasarımı daha da önemli bir rol oynamaktadır. İlk adımda oluşturduğunuz alt problemler genellikle bağımsız olduğundan, bunlar paralel olarak çözülebilir. Genellikle alt problemler özyinelemeli olarak çözülür ve böylece bir sonraki bölme adımında paralel olarak çözülecek daha çok alt problem elde edilir. Ancak bilinmelidir ki, yüksek derecede bir paralel algoritma elde etmek için, böl ve yönet’in bölme ve birleştirme adımlarının paralelize (birlikte yürütülmesi) olması gerekir. Orijinal problemi mümkün olduğunca çok sayıda alt probleme bölerek, paralel olarak çözmek paralel algoritmalarda oldukça yaygındır. Paralel Böl ve Yönet örneği için, sıralı Merge Sort algoritması düşünün. Merge sort, n adet girilmiş elemanı alır ve onları sıralayarak geri verir. Bu algoritma, n elemanlı bir dizi iki parçaya bölünüp, bölünen her dizi öz yineli olarak sıralanıp ve sıralanmış yarı diziler tekrar birleştirilerek çalışır.

Referans
 
@uyesercan,

İşin aslı bu konuda bir eğitim almadım. Bu nedenle ifade ettiklerini anladığımı tahmin ediyor ve daha kolay bir yolun olmadığı, doğru yolda ilerlediğimi düşünüyorum. :D Algoritma konusunda tek bilgiğim oklar ile olayı yönetmek.

Mesela ilk açılışta eprom fonksiyonu diye bir kutu koyup işleme devam ediyorum. Başka bir sayfada eprom fonksiyonu için detaylı bir algoritma çiziyorum. Böl yönetten kasıt sanırım böyle birşey. Ana bir akış ve bir suru yan fonksiyon oluyor.

Bence yada benim zorlandığım kısım sorunları çözmekten ziyade sorunları belirlemek. Kapsam geniş olunca daha fikir aşamasında ordan oraya dallanıyor olaylar. Kafam ambale oldu. :cheeky3:
 
Ne kadar karmaşık olursa olsun, benim bildiğim en iyi başlangıç Bismillah çekip başlamak. Bu beni çok motive ediyor. Projenin kapsamı geniş olması, baştan tüm sorunları düşünüp çözeceğin anlamına gelmiyor. Nesin sen, milyon dolarlık ekip mi? En iyi başlangıç için makul olmak gerekir. Çok düşünürsen gözünde büyür, az düşünürsen başın beladan kurtulmaz. :D Bu anormal haller konsantrasyonunu da dağıtır.

Yaptığın gibi ana hatları ile ilişkili aşamaları çiz sonra onları kendi içinde çözüme kavuştur. Mesela senin bu geniş kapsamlı projen kesin 3 fazdan oluşuyordur. 1. fazda hazırlık, 2. fazda tasarım ve son olarak 3. fazda ise testler... Gördün mü hiç de zor değil! :D
 
Neyse başlamak işin yarısıdır. %50 ordan gitti. Biraz yol aldım. %20 de ordan olsa geriye kaldı işin %30 u..

Gerçi son %10 işin %90 nı dır derler ya bakalım :D

Ben bu gazla yarın bitiririm tamam :cool:
 
Neyse başlamak işin yarısıdır. %50 ordan gitti. Biraz yol aldım. %20 de ordan olsa geriye kaldı işin %30 u..

Gerçi son %10 işin %90 nı dır derler ya bakalım :D

Ben bu gazla yarın bitiririm tamam :cool:
En azından nasıl yapılacağını biliyorsun. Ya benim gibi hiç bilmeden yapmaya kalksan ne olacak?
Bence nasıl yapacağını biliyorsan işin 90%'ı bitmiş demektir. Bak bana ! Bilen birinin bir kaç saatte kopmle yapıp bitirebileceği bir iş için günlerdir uğraşıyorum. Çünkü bilmiyorum. Yapmak istediğim işi önce öğrenmem gerekiyor.

Algoritma çizme ile ilgili çok güzel bir program vardı. Adını hatırlayamadım. 7-8 yıl önce kullanmıştım çok hoşuma gitmişti. Adım adım renk renk ne istersen yapıyordu. Şimdiye kadar denemediysen tavsiye ederim. Ayrıca web sitesi sayfaları tasarlar gibi sekme sekme algoritma sayfaları oluşturabiliyor du.
 
En azından nasıl yapılacağını biliyorsun. Ya benim gibi hiç bilmeden yapmaya kalksan ne olacak?
Bence nasıl yapacağını biliyorsan işin 90%'ı bitmiş demektir. Bak bana ! Bilen birinin bir kaç saatte kopmle yapıp bitirebileceği bir iş için günlerdir uğraşıyorum. Çünkü bilmiyorum. Yapmak istediğim işi önce öğrenmem gerekiyor.

Algoritma çizme ile ilgili çok güzel bir program vardı. Adını hatırlayamadım. 7-8 yıl önce kullanmıştım çok hoşuma gitmişti. Adım adım renk renk ne istersen yapıyordu. Şimdiye kadar denemediysen tavsiye ederim. Ayrıca web sitesi sayfaları tasarlar gibi sekme sekme algoritma sayfaları oluşturabiliyor du.

Çok farklı değiliz, bende gözümü karartıp dalıyorum. Birşey bildiğimden değil ,öngörü ile başlayıp sonrasında öğrenmeye çalışıyoruz.

Adını hatırlamadığım bir program kullanıyorum. Yed gibi bir şey adı. Hafızam süperdir. En son akşam kullandım :D
 
Bizde yeni bir ürün tasarımında ilk aşama, ayrıntılı ve mümkün olduğunca kapsayıcı kullanım senaryolarını (use case) ortaya koymak. Mesela ağ bağlantılı bir hoparlör tasarlıyoruz

* Android ve iOS akıllı telefondan bluetooth ile bağlanmak ve müzik yönlendirmek, volüm kontrolü.
* Andriod'den GoogleCast, iOS dan AirPlay ile müzik aktarımı.
* lokal girişlerin ve çıkışların kullanılması.
*
*

Bu kullanım senaryoları uzun bir liste olarak hazırlarsan her zaman elinde çalışması gereken bir özellik listesi olacak. Bu doküman da, daha sonra bir test planı olarak da kullanılabilecektir.
 
Kullanim klavuzu taktigi kullandigim bir yontem. Detayli degilde Once biraz taslak gibi yaziyorum. Sonra detaylari kodlayama paralel klavuza giriyorum. Ornegin bir fonksiyonun varsayilan degerini 5 sectigim zaman hemen klavuza yaziyorum. Yoksa sonradan hatirladigim baska, kodlamada baska, klavizda baska degerler olabiliyor. :D
 
Kullanim klavuzu taktigi kullandigim bir yontem. Detayli degilde Once biraz taslak gibi yaziyorum. Sonra detaylari kodlayama paralel klavuza giriyorum. Ornegin bir fonksiyonun varsayilan degerini 5 sectigim zaman hemen klavuza yaziyorum. Yoksa sonradan hatirladigim baska, kodlamada baska, klavizda baska degerler olabiliyor. :D

Dokümantasyon ve kodu senkronize tutmanın en iyi yolu Doxygen gibi bir dokümantasyon üreteci kullanmak. Burada yapılan, program kodundaki açıklamaları özel bir yapıya getiriyorsun ve belli şekilde etiketliyorsun. Programı değiştirdikçe zaten kolaylıkla kod açıklamalarını da güncelliyorsun. Sonra da Doxygen, doğrudan program kodunu okuyarak buradan değişik formatlarda çıktı üretiyor (html, pdf vs)
 
Mesela bazı şirketlerde sadece pcb tasarımı yapn adamlar var.Nerede bu adamlar. Neden bunlarla birlikte iş yapamıyoruz.

Kalıpçılarda çalışan senelerin kalıpçıları var. Nerede bunlar?

Bir konuyu "iyi" bilen kişiler bir şirkette yada kendi kurdukları şirkette çalışırlar.İşleri çoktur ve gerçekten vakitleri de yoktur.
Emekli olanlarsa çalıştığı dönemdeki işin koşturmacasından çok yorulduğu için bu tür forum ortamlarına pek girmek istemezler.

Düşünsenize adam yıllarını o konuya vermiş ve mesela bir forumda bir konuya cevap yazmış.Soruyu soran gencin yaşı kadar o meslekte çalışmış kişiye. "Dayı sen bu konuyu pek bilmiyon galiba" tarzında cevap vermiş.
Akıllı bir adamın gireceği bir diyalog mu ?

Emekliğime çok az kala, yıllardır şirketimizde Autocad le çizimi yapan oda arkadaşıma:

"Şu adresdeki AutoCad forum sitesine bir bak bakalım belki bilmediğin bir konu vardır işine yarar dedim.
Tamam dedi siteye girdi.
Beş dakika geçti geçmedi siteyi kapattı ve bir daha hiç girmedi

"Abi bunlarda hiçbilgi falan yok bu adamlar birde firmalarda bu işleri yapıyorlarmış nasıl girmişlerse " diye gülmüştü.

Bu cümlelerimden bu forumdaki insanlar "Bilmeyen kişiler mi oluyor" diye anlaşılmasın.
Bizler hem kendi branşımızda ve hemde başka konularda, bilginin peşinden koşanlarız.
 

Forum istatistikleri

Konular
6,627
Mesajlar
112,644
Üyeler
2,722
Son üye
cansu

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top