Bagikan melalui


Membuat dan mengonfigurasi aplikasi Anda dari model

Anda dapat membuat atau mengonfigurasi bagian aplikasi Anda dari model.

Model mewakili persyaratan lebih langsung daripada kode. Dengan mengambil perilaku aplikasi langsung dari model, Anda dapat menanggapi persyaratan yang diubah jauh lebih cepat dan andal daripada dengan memperbarui kode. Meskipun beberapa pekerjaan awal diperlukan untuk menyiapkan derivasi, investasi ini dikembalikan jika Anda mengharapkan perubahan persyaratan, atau jika Anda berencana untuk membuat beberapa varian produk.

Membuat Kode Aplikasi Anda dari Model

Cara term mudah untuk menghasilkan kode adalah dengan menggunakan templat teks. Anda dapat menghasilkan kode dalam solusi Visual Studio yang sama tempat Anda menyimpan model. Untuk informasi selengkapnya, lihat:

  • Pembuatan Kode Waktu-Desain menggunakan Templat Teks T4

  • Membuat Kode dari Bahasa Domain-Specific

    Metode ini mudah diterapkan secara bertahap. Mulailah dengan aplikasi yang hanya berfungsi untuk kasus tertentu, dan pilih beberapa bagiannya yang ingin Anda variasikan dari model. Ganti nama file sumber dari bagian-bagian ini sehingga menjadi file templat teks (.tt). Pada titik ini, file .cs sumber akan secara otomatis dihasilkan dari file templat, sehingga aplikasi akan berfungsi seperti sebelumnya.

    Kemudian Anda dapat mengambil satu bagian dari kode dan menggantinya dengan ekspresi templat teks, yang membaca model dan menghasilkan bagian dari file sumber tersebut. Setidaknya satu nilai model harus menghasilkan sumber asli sehingga sekali lagi Anda dapat menjalankan aplikasi dan itu akan berfungsi seperti sebelumnya. Setelah menguji nilai model yang berbeda, Anda dapat melanjutkan untuk menyisipkan ekspresi templat di bagian lain dari kode.

    Metode inkremental ini berarti bahwa pembuatan kode biasanya merupakan pendekatan berisiko rendah. Aplikasi yang dihasilkan biasanya berkinerja hampir sama dengan versi tulisan tangan.

    Namun, jika Anda mulai dengan aplikasi yang ada, Anda mungkin menemukan bahwa banyak pemfaktoran ulang diperlukan untuk memisahkan berbagai perilaku yang diatur oleh model sehingga dapat bervariasi secara independen. Kami menyarankan agar Anda menilai aspek aplikasi ini saat Anda memperkirakan biaya proyek Anda.

Mengonfigurasi Aplikasi Anda dari Model

Jika Anda ingin memvariasikan perilaku aplikasi pada waktu proses, Anda tidak dapat menggunakan pembuatan kode, yang menghasilkan kode sumber sebelum aplikasi dikompilasi. Sebagai gantinya, Anda dapat merancang aplikasi Anda untuk membaca model, dan untuk memvariasikan perilakunya. Untuk informasi selengkapnya, lihat:

  • Cara: Membuka Model dari File dalam Kode Program

    Metode ini juga dapat diterapkan secara bertahap, tetapi ada lebih banyak pekerjaan di awal. Anda perlu menulis kode yang akan membaca model, dan menyiapkan kerangka kerja yang memungkinkan nilainya dapat diakses oleh bagian variabel. Membuat bagian variabel generik lebih mahal daripada pembuatan kode.

    Aplikasi generik biasanya berkinerja kurang baik daripada rekan-rekannya yang spesifik. Jika performa sangat penting, rencana proyek Anda harus menyertakan penilaian terhadap risiko ini.

Mengembangkan Aplikasi Turunan

Anda mungkin menemukan panduan umum berikut berguna.

  • Mulai spesifik, lalu generalisasi. Tulis versi tertentu dari aplikasi Anda terlebih dahulu. Versi ini harus berfungsi dalam satu set kondisi. Ketika Anda puas bahwa itu bekerja dengan benar, Anda dapat membuat beberapa bagiannya berasal dari sebuah model. Perluas bagian turunan secara bertahap.

    Misalnya, desain situs web yang memiliki sekumpulan halaman web tertentu sebelum Anda merancang aplikasi web yang menyajikan halaman yang ditentukan dalam model.

  • Memodelkan aspek yang bervariasi. Identifikasi aspek yang akan bervariasi, baik antara satu penyebaran dan penyebaran lainnya, atau seiring waktu saat persyaratan berubah. Ini adalah aspek yang harus diturunkan dari model.

    Misalnya, jika kumpulan halaman web dan tautan di antara halaman tersebut berubah, tetapi gaya dan format halaman selalu sama, model harus menjelaskan tautan, tetapi tidak harus menggambarkan format halaman.

  • Memisahkan kekhawatiran. Jika aspek variabel dapat dibagi menjadi area independen, gunakan model terpisah untuk setiap area. Menggunakan ModelBus, Anda dapat menentukan operasi yang memengaruhi kedua model, dan batasan di antaranya.

    Misalnya, gunakan satu model untuk menentukan navigasi antara halaman web dan model yang berbeda untuk menentukan tata letak halaman.

  • Model persyaratan, bukan solusinya. Desain model sehingga menjelaskan persyaratan pengguna. Sebaliknya, jangan merancang notasi sesuai dengan aspek variabel implementasi.

    Misalnya, model navigasi web harus mewakili halaman web dan hyperlink di antaranya. Model navigasi web tidak boleh mewakili fragmen HTML atau kelas dalam aplikasi Anda.

  • Membuat atau menafsirkan? Jika persyaratan untuk penyebaran tertentu jarang berubah, hasilkan kode program dari model. Jika persyaratan mungkin sering berubah, atau mungkin berdampingan dalam lebih dari satu varian dalam penyebaran yang sama, tulis aplikasi sehingga dapat membaca dan menafsirkan model.

    Misalnya, jika Anda menggunakan model situs web Anda untuk mengembangkan serangkaian situs web yang berbeda dan diinstal secara terpisah, maka Anda harus membuat kode situs dari model. Tetapi Anda menggunakan model Anda untuk mengontrol situs yang berubah setiap hari, maka lebih baik menulis server web yang membaca model dan menyajikan situs yang sesuai.

  • UML atau DSL? Pertimbangkan untuk membuat notasi pemodelan Anda dengan menggunakan stereotip untuk memperluas UML. Tentukan DSL jika tidak ada diagram UML yang sesuai dengan tujuan. Tapi hindari melanggar semantik standar UML.

    Misalnya, diagram kelas UML adalah kumpulan kotak dan panah; dengan notasi ini Anda dapat secara teori mendefinisikan apa pun. Tetapi kami tidak menyarankan Anda menggunakan diagram kelas kecuali di mana Anda sebenarnya menjelaskan sekumpulan jenis. Misalnya, Anda dapat menyesuaikan diagram kelas untuk menjelaskan berbagai jenis halaman web.