5 Nisan 2018 Perşembe

Enterprise Architect Notlarım

EA Notlarım
SQL Server Üzerinde Projeye Bağlanmak
1. Start Page sekmesinde "Manage Projects" altında "Connect to Server" linkine tıklanır.
2. Açılan pencerede "Provider" sekmesinde "Microsoft OLE DB Provider for SQL Server" seçilir
3. Next düğmesine tıklanır ve "Connection" sekmesine geçilir. "Select or enter Server Name" alanına sunucu ismi girilir. Sunucuya login olmak için "Use Windows NT Integrated Security" seçilir.
4. Aynı pencerede "Database on the Server" alanı doldurulur. Test Connection düğmesine tıklanarak bağlantı kontrol edilir.
5. "Advanced" sekmesinde "Connection timeout" alanına 999999 değeri girilir.
6. OK Düğmesine tıklayınca Connection Name & Type penceresi açılır. Burada bağlantıya istenilen isim verilir.
7. OK düğmesine tıklayınca Login EA Repository penceresi açılır. Kullanıcı ismi girilir ve Login düğmesine tıklanır.

Projeyi Import ve Export Yeteneği
EA'ya girilen herhangi bir paket, Project Browser ağacına sağ tıklanarak, XML olarak kaydedilebiliyor. Daha sonra paketi silip, tekrar import edebilmek mümkün.

Model Transformation
Burada Computation Independent Model'den Project Independent Model'e (PIM) ve daha sonra Platform Specific Model'e geçiş anlatılıyor.

Use Case
Use Case çizindikten sonra "Project Explorer" penceresinde balon simgesin sağ tıklanıp "Sequence Diagram" eklenebilir. Daha sonra balon'a sağ tıklayıp Advance -> Composite menüsü seçilince balon'a bir ataç simgesi ekleniyor. Yani balona çift tıklayınca Sequence Diagram'a gitmek mümkün oluyor.

Kaynak Kodu Import Yeteneği
Pakete sağ tıklanınca çıkan "Code Engineering" menüsünden "Input Source Directory" seçilir. Açılan penceredeki bazı seçenekler şu anlama geliyor.

Package Structure
Create Package per Directory : C++ projelerinde namespace yerine dizin yapısı bazen daha önemli olabiliyor. Dizin yapısını EA'da paket yapısını yansıtmak istersek kullanılır.

Create Package per Namespace : Java, C# gibi namespace'e dayalı projelerde aynı namespace içinde ancak farkı dizinlerdeki kodları aynı EA paket içine toplar.

Import işlemi sonucunda çıkan class diagram çok büyükse "Diagram/Zoom/Fit to Window" menüsünden harita görünümü elde edilebilir ve sınıflar düzenlenir.

Tersine Mühendislik Sonucunda Model Ne Yansır?

class, enum ve typedef'lerin modellenmesi
Araç C++ kodunu global space içinde bulunan class,enum ve typedef'leri başarıyla modelliyor. Her türe stereotype veriyor.

typedef'lerin UML ile modellediğini ilk defa bu araçta gördüm. Sağ üst köşede typedef'in gerçekte hangi tip olduğu olduğu da yazıyor.

Association'ların modellenmesi

class A {} class B {A* m_pA;} şeklindeki iki sınıf "association" olarak modelleniyor. Association yerine Aggregation veya Composition (Aggregation'a göre daha sıkı bir bağı temsil eder) denilseydi belki daha iyi olurdu. Ancak genel bir kelime olan "association" kullanılmış. Association düz bir çizgi ile gösteriliyor. Eğer direction değeri verilmişse ucunda ok vardır. Association ile her nesnenin kendi yaşam döngüsü olduğu ve bir nesnenin diğerinin sahibi olmadığı farz edilir.

Association çizgisine çift tıklayınca

General Sekmesinde 
Source : B Target : A Direction : Source -> Destination

Target Role Sekmesinde 
B Role : m_pA (çizgide gösterilen etiket) yazıldığını görebiliriz.


Attribute'ların Modellenmesi

Array
Araç array gibi attribute'ları Attributes penceresindeki Details sekmesinde bulunan Container Type alanında gösteriyor. C++ kodu için bu alana örneğin [4] yazıyor.

static, const vs
Araç static, const gibi modifier'ları Attributes penceresindeki General sekmesinde "static" ve "const" checkboxlarında gösteriyor. Ayrıca varsa "Initial" alanınıda dolduruyor

Attribute'ların Gruplanması veya Sıralanması
Araç eğer arzu edilirse attributeları gruplayıp her grubu kendi içinde sıralayabiliyor. Ben bu şekilde çalışmasını sevmiyorum çünkü koddan farklı bir şey gösterilmesi hoşuma gitmiyor. Bu yüzden Tools / Options altındaki "Group Operations by Stereotype""Group Attributes by Stereotype""Sort Features Alphabetically" seçeneklerini kapatıyorum.

Aggregate İlişkisi
Bu ilişkiyi kurmak için "Compose" düğmesine tıklanarak hedef sınıfı kaynak sınıfı birleştirmek gerekiyor.

Kaynak Kod Üretme Yeteneği
Burada Model Interpretation ve Code Generation arasında karşılaştırma yapılan bir yazı var.

Pakete sağ tıklanınca çıkan "Code Engineering" menüsünden "Generate Source Code" seçilir. "Auto Generate Files" seçeneği kullanılmazsa, her element için üretilecek dosya ismi istenir. EA element ile dosya ismini bir şekilde eşleştirip hatırlıyor. "Override Code" seçeneği kullanılırsa diskteki mevcut dosyanın üzerine yazılır.

Code Template
Kaynak kodu üretirken EA Code Template'ları kullanır. Hazır şablonlardaki  macroları şu şekilde okuyabiliriz.

%macro% : Aynı Windows bat dosyasında olduğu gibi macronun değerini verir.


Diyagram Düzenleme
Layout
Tersine mühendislik sonucunda yaratılan diagram çok düzensiz görünebilir. "Diagram/Layout Diagram" menüsünden diagram otomatik olarak daha düzenli hale getirilebilir.

Hizalama
Birden fazla nesne seçilip sağ tıklanarak "Align Centers / Align Horizontally" veya Vertically seçenekleri ile yatay dikey hizalama yapılabilir.

Arama
Açtığımız bir diagramı Project Browser içinde bulmak istersek "Diagram/ Find in Project Browser" menüsü kullanılabilir.

Aynı şekilde isim ile modelde  arama yapmak için "Model Search Window" simgesi kullanılabilir veya "Edit/Model Search" menüsü de aynı işlevi görür.


Class Attribute Düzenleme
Mevcut bir attribute "Copy" düğmesi ile kopyalanabiliyor.

Aynı Anda Birçok Kişinin Çalışması
Model üzerinde aynı kullanıcı ismiyle giriş yaparak, birden çok kişi çalışabilir. Bu durumda EA modelin değiştiğini anlıyor ve tekrar yüklenmesi gerektiği konusunda uyarı veriyor.

Eğer bir başka kişi tarafından modelin değiştirilmesi engellenmek istenirse, pakete sağ tıklayıp "Lock" seçeneği kullanılarak, kişi veya grup haricindekilerin paket/diyagramı değiştirmesi engellenebilir.

Eğer modeli kendimiz yenilemek istersek File/Reload Current Project menüsünü kullanabiliriz.

UML Patterns
Resources Penceresinde UML / Patterns GoF dizininde kullanıma hazır tasarım örüntüleri var. Örüntüye sağ tıklayıp "Add" seçeneği ile Class Diagrama eklemek mümkün.

UML Stereotype'ları
Enterprise Architect ile UML stereotype yaratmak istersek aşağıdaki adımları izleyebiliriz. UML stereotype'ları Resources penceresinde görünürler. Bu pencereyi açmak için View/Other Tools/Resources menüsü seçilmelidir.

1. Yeni bir paket açmak
Yeni bir paket aç ve paket "stereotype" tipi olarak combobox'tan "profile" seç. Paketi yaratmanın daha kolay bir yolu ise ToolBox'tan Profile Araçları altındaki "Profile" simgesini bir diyagram üzerine süreklemek ve bırak. EA otomatik olarak yeni bir paket yaratılması gerektiğini algılıyor.

2. Bir metaclass eklemek
Profile Araçları altındaki "Metaclass" simgesini bir diyagram üzerine süreklemek ve bırak. Metaclass'ı yaratırken EA element tipi seçmemizi istiyor. Element tipi olarak "Class" veya "Attribute" seçilebilir.


UML Note
"Note" kutusunu bir başka elemana bağlamak için "Note Link" kullanılır.

EA ve Data Flow Diyagramı
UML'de data flow diyagramı bulunmuyor. Bunun yerine activity diyagramı kullanılıyor. Ancak EA data flow diyagramı çizilebiliyor. Data flow diyagramı sistemin bileşenleri arasında akan mesaj tiplerini göstermek için çok güzel bir araç. Ayrıca sistemin dış aktörlerle etkileşimini gösteren System Context Diagram çizmek içinde de kullanılabilir.


UML Notlarım
Konuyu UML başlıklı yazıya taşıdım.

Model Driven Architecture ve Model Driven Development
Bunlar son zamanlarda öne çıkan kavramlar. Bir ara konuyla ilgili yazmak istiyorum.

Hiç yorum yok:

Yorum Gönder