Model driven, anyone?

Kjell Rilbe <[email protected]> Mon, 30 May 2011 09:50:08 +0200
Newsgroups gmane.comp.programming.language-of-the-year
Organization DataDIA AB
Message-ID <[email protected]>
--KPHtP9Xj18jiKJVbH17bZgyDLYwcUjhLr3sNJuc
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

Hi,

I was just wondering if there are any people on this list who, like me, 
like the model driven approach of software development?

I've been using a product that's now called ECO, Enterprise Core 
Objects, from CapableObjects, www.capableobjects.com. This product comes 
from the Delphi world and was originally called Bold for Delphi, from 
BoldSoft. After a period of Borland ownership, they broke themselves 
free from Borland/Inprise/CodeGear/Embarcadero and are now independent.

ECO comes as an extension to Visual Studio and provides quite a lot of 
features, of which I only use a subset. I use the modeller to draw my 
UML diagrams, generate code very smoothly, and the OR mapper. There are 
other details, like OCL queries, linq queries, undo/redo, in-memory 
transactions, support for data binding in both WinForms and ASP.Net, 
view models, state diagrams, automatic database schema evolution, etc.

What I find particularly useful is the runtime model information. For 
example, you can easily iterate through all modelled and persistent 
attributes of a class and do "something".

This all may sound complicated, but it really isn't, that's what I find 
so amazing! This way of programming has made me a LOT less concerned 
with change and refactoring. You just go into the model, make your 
changes and go! Sure, you have to check the schema evolution script to 
make sure it remaps data without unnecessary data loss and so forth, but 
it usually "just works".

So, tell me about your experiences with model driven, what tools and 
frameworks you use, what you like and dislike, etc!

Kjell
-- 
--------------------------------------
Kjell Rilbe
DataDIA AB
E-post: [email protected]
Telefon: 08-761 06 55
Mobil: 0733-44 24 64

--KPHtP9Xj18jiKJVbH17bZgyDLYwcUjhLr3sNJuc
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit




<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
</head>







<body style="background-color: #fff;">
<span style="display:none">&nbsp;</span>

<!--~-|**|PrettyHtmlStartT|**|-~-->
<div id="ygrp-mlmsg" style="position:relative;">
  <div id="ygrp-msg" style="z-index: 1;">
<!--~-|**|PrettyHtmlEndT|**|-~-->

    <div id="ygrp-text" >
      
      
      <p>Hi,<br>
<br>
I was just wondering if there are any people on this list who, like me, <br>
like the model driven approach of software development?<br>
<br>
I've been using a product that's now called ECO, Enterprise Core <br>
Objects, from CapableObjects, www.capableobjects.com. This product comes <br>
from the Delphi world and was originally called Bold for Delphi, from <br>
BoldSoft. After a period of Borland ownership, they broke themselves <br>
free from Borland/Inprise/CodeGear/Embarcadero and are now independent.<br>
<br>
ECO comes as an extension to Visual Studio and provides quite a lot of <br>
features, of which I only use a subset. I use the modeller to draw my <br>
UML diagrams, generate code very smoothly, and the OR mapper. There are <br>
other details, like OCL queries, linq queries, undo/redo, in-memory <br>
transactions, support for data binding in both WinForms and ASP.Net, <br>
view models, state diagrams, automatic database schema evolution, etc.<br>
<br>
What I find particularly useful is the runtime model information. For <br>
example, you can easily iterate through all modelled and persistent <br>
attributes of a class and do &quot;something&quot;.<br>
<br>
This all may sound complicated, but it really isn't, that's what I find <br>
so amazing! This way of programming has made me a LOT less concerned <br>
with change and refactoring. You just go into the model, make your <br>
changes and go! Sure, you have to check the schema evolution script to <br>
make sure it remaps data without unnecessary data loss and so forth, but <br>
it usually &quot;just works&quot;.<br>
<br>
So, tell me about your experiences with model driven, what tools and <br>
frameworks you use, what you like and dislike, etc!<br>
<br>
Kjell<br>
-- <br>
--------------------------------------<br>
Kjell Rilbe<br>
DataDIA AB<br>
E-post: <a href="mailto:kjell%40datadia.se">[email protected]</a><br>
Telefon: 08-761 06 55<br>
Mobil: 0733-44 24 64<br>
</p>

    </div>
     

    <!--~-|**|PrettyHtmlStart|**|-~-->
    <div style="color: #fff; height: 0;">__._,_.___</div>

        
  
   
    <div id="ygrp-actbar" style="clear: both; margin-bottom: 10px; white-space: nowrap; color: #666; padding-top: 15px;">
      <div>
        <a href="mailto:[email protected]?subject=Re%3A%20Model%20driven%2C%20anyone%3F" style="margin-right: 0; padding-right: 0;">
	  Reply to <span style="font-weight: 700;">sender</span></a> |
        <a href="mailto:[email protected]?subject=Re%3A%20Model%20driven%2C%20anyone%3F">
	  Reply to <span style="font-weight: 700;">group</span></a> |
        	  <a href="http://groups.yahoo.com/group/pragprog/post;_ylc=X3oDMTJxY3MzNTl0BF9TAzk3MzU5NzE0BGdycElkAzI4Mzg3MDgEZ3Jwc3BJZAMxNzA1MDA3MjA3BG1zZ0lkAzEwMTU4BHNlYwNmdHIEc2xrA3JwbHkEc3RpbWUDMTMwNjc0MTgxOQ--?act=reply&messageNum=10158">Reply <span style="font-weight: 700;">via web post</span></a> |
            	<a href="http://groups.yahoo.com/group/pragprog/post;_ylc=X3oDMTJlYTY5MWgyBF9TAzk3MzU5NzE0BGdycElkAzI4Mzg3MDgEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTMwNjc0MTgxOQ--" style="font-weight: 700;">Start a New Topic</a>
      </div>

                <a href="http://groups.yahoo.com/group/pragprog/message/10158;_ylc=X3oDMTM2aHB2NTJoBF9TAzk3MzU5NzE0BGdycElkAzI4Mzg3MDgEZ3Jwc3BJZAMxNzA1MDA3MjA3BG1zZ0lkAzEwMTU4BHNlYwNmdHIEc2xrA3Z0cGMEc3RpbWUDMTMwNjc0MTgxOQR0cGNJZAMxMDE1OA--">Messages in this topic</a>
          (<span style="font-weight: 700;">1</span>)
          </div> 
<!------- Start Nav Bar ------>

<!-- |**|begin egp html banner|**| -->
<div id="ygrp-vital" style="background-color: #e0ecee; font-family: Verdana; font-size: 10px; margin-bottom: 10px; padding: 10px;">
      <span id="vithd" style="font-weight: bold; color: #333; text-transform: uppercase; ">Recent Activity:</span>

    <ul style="list-style-type: none; margin: 0; padding: 0; display: inline;">
                                                    </ul>
    
  <div style="clear: both; padding-top: 2px; color: #1e66ae;">
    <a href="http://groups.yahoo.com/group/pragprog;_ylc=X3oDMTJlZnIxaWp1BF9TAzk3MzU5NzE0BGdycElkAzI4Mzg3MDgEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTMwNjc0MTgxOA--" style="text-decoration: none;">Visit Your Group</a>
  </div>
</div>

  
<div id="ft" style="font-family: Arial; font-size: 11px; margin-top: 5px; padding: 0 2px 0 0; clear: both;">
  <a href="http://groups.yahoo.com/;_ylc=X3oDMTJkcnY0cTNxBF9TAzk3MzU5NzE0BGdycElkAzI4Mzg3MDgEZ3Jwc3BJZAMxNzA1MDA3MjA3BHNlYwNmdHIEc2xrA2dmcARzdGltZQMxMzA2NzQxODE5" style="float: left;"><img src="http://l.yimg.com/a/i/us/yg/logo/us.gif" height="15" width="137" alt="Yahoo! Groups" style="border: 0;"/></a>
  <div style="color: #747575; float: right;">Switch to: <a href="mailto:[email protected]?subject=Change Delivery Format: Traditional" style="text-decoration: none;">Text-Only</a>, <a href="mailto:[email protected]?subject=Email Delivery: Digest" class="margin-rt" style="text-decoration: none;">Daily Digest</a> &bull; <a href="mailto:[email protected]?subject=Unsubscribe" style="text-decoration: none;">Unsubscribe</a> &bull; <a href="http://docs.yahoo.com/info/terms/" style="text-decoration: none;">Terms of Use</a></div>
</div>

<!-- |**|end egp html banner|**| -->

  </div> <!-- ygrp-msg -->

  <!-- Sponsor -->
  <!-- |**|begin egp html banner|**| -->
  <div id="ygrp-sponsor" style="width:160px; float:right; clear:none; margin:0 0 25px 0; background: #fff;">

<!-- Start Recommendations -->
<div id="ygrp-reco">
     </div>
<!-- End Recommendations -->



  </div>   <!-- |**|end egp html banner|**| -->

  <div style="clear:both; color: #FFF; font-size:1px;">.</div>
</div>

  <img src="http://geo.yahoo.com/serv?s=97359714/grpId=2838708/grpspId=1705007207/msgId=10158/stime=1306741819/nc1=1/nc2=2/nc3=3" width="1" height="1"> <br>

<div style="color: #fff; height: 0;">__,_._,___</div>
<!--~-|**|PrettyHtmlEnd|**|-~-->

</body>

<!--~-|**|PrettyHtmlStart|**|-~-->
<head>
  <style type="text/css">
  <!--
  #ygrp-mkp {
  border: 1px solid #d8d8d8;
  font-family: Arial;
  margin: 10px 0;
  padding: 0 10px;
}

#ygrp-mkp hr {
  border: 1px solid #d8d8d8;
}

#ygrp-mkp #hd {
  color: #628c2a;
  font-size: 85%;
  font-weight: 700;
  line-height: 122%;
  margin: 10px 0;
}

#ygrp-mkp #ads {
  margin-bottom: 10px;
}

#ygrp-mkp .ad {
  padding: 0 0;
}

#ygrp-mkp .ad p {
  margin: 0;
}

#ygrp-mkp .ad a {
  color: #0000ff;
  text-decoration: none;
}
  #ygrp-sponsor #ygrp-lc {
  font-family: Arial;
}

#ygrp-sponsor #ygrp-lc #hd {
  margin: 10px 0px;
  font-weight: 700;
  font-size: 78%;
  line-height: 122%;
}

#ygrp-sponsor #ygrp-lc .ad {
  margin-bottom: 10px;
  padding: 0 0;
}

  a {
    color: #1e66ae;
  }

  #actions {
    font-family: Verdana;
    font-size: 11px;
    padding: 10px 0;
  }

  #activity {
    background-color: #e0ecee;
    float: left;
    font-family: Verdana;
    font-size: 10px;
    padding: 10px;
  }

  #activity span {
    font-weight: 700;
  }

  #activity span:first-child {
    text-transform: uppercase;
  }

  #activity span a {
    color: #5085b6;
    text-decoration: none;
  }

  #activity span span {
    color: #ff7900;
  }

  #activity span .underline {
    text-decoration: underline;
  }

  .attach {
    clear: both;
    display: table;
    font-family: Arial;
    font-size: 12px;
    padding: 10px 0;
    width: 400px;
  }

  .attach div a {
    text-decoration: none;
  }

  .attach img {
    border: none;
    padding-right: 5px;
  }

  .attach label {
    display: block;
    margin-bottom: 5px;
  }

  .attach label a {
    text-decoration: none;
  }
  
  blockquote {
    margin: 0 0 0 4px;
  }

  .bold {
    font-family: Arial;
    font-size: 13px;
    font-weight: 700;
  }

  .bold a {
    text-decoration: none;
  }

  dd.last p a {
    font-family: Verdana;
    font-weight: 700;
  }

  dd.last p span {
    margin-right: 10px;
    font-family: Verdana;
    font-weight: 700;
  }

  dd.last p span.yshortcuts {
    margin-right: 0;
  }

  div.attach-table div div a {
    text-decoration: none;
  }

  div.attach-table {
    width: 400px;
  }

  div.file-title a, div.file-title a:active, div.file-title a:hover, div.file-title a:visited {
    text-decoration: none;
  }

  div.photo-title a, div.photo-title a:active, div.photo-title a:hover, div.photo-title a:visited {
    text-decoration: none;
  }

  div#ygrp-mlmsg #ygrp-msg p a span.yshortcuts {
    font-family: Verdana;
    font-size: 10px;
    font-weight: normal;
  }

  .green {
    color: #628c2a;
  }

  .MsoNormal {
    margin: 0 0 0 0;
  }

  o {
    font-size: 0;
  }

  #photos div {
    float: left;
    width: 72px;
  }

  #photos div div {
    border: 1px solid #666666;
    height: 62px;
    overflow: hidden;
    width: 62px;
  }

  #photos div label {
    color: #666666;
    font-size: 10px;
    overflow: hidden;
    text-align: center;
    white-space: nowrap;
    width: 64px;
  }

  #reco-category {
    font-size: 77%;
  }

  #reco-desc {
    font-size: 77%;
  }

  .replbq {
    margin: 4px;
  }

  #ygrp-actbar div a:first-child {
   /* border-right: 0px solid #000;*/
    margin-right: 2px;
    padding-right: 5px;
  }

  #ygrp-mlmsg {
    font-size: 13px;
    font-family: Arial, helvetica,clean, sans-serif;
    *font-size: small;
    *font: x-small;
  }

  #ygrp-mlmsg table {
    font-size: inherit;
    font: 100%;
  }

  #ygrp-mlmsg select, input, textarea {
    font: 99% Arial, Helvetica, clean, sans-serif;
  }

  #ygrp-mlmsg pre, code {
    font:115% monospace;
    *font-size:100%;
  }

  #ygrp-mlmsg * {
    line-height: 1.22em;
  }

  #ygrp-mlmsg #logo {
    padding-bottom: 10px;
  }

  #ygrp-mlmsg a {
    color: #1E66AE;
  }

  #ygrp-msg p a {
    font-family: Verdana;
  }

  #ygrp-msg p#attach-count span {
    color: #1E66AE;
    font-weight: 700;
  }

  #ygrp-reco #reco-head {
    color: #ff7900;
    font-weight: 700;
  }

  #ygrp-reco {
    margin-bottom: 20px;
    padding: 0px;
  }

  #ygrp-sponsor #ov li a {
    font-size: 130%;
    text-decoration: none;
  }

  #ygrp-sponsor #ov li {
    font-size: 77%;
    list-style-type: square;
    padding: 6px 0;
  } 

  #ygrp-sponsor #ov ul {
    margin: 0;
    padding: 0 0 0 8px;
  }

  #ygrp-text {
    font-family: Georgia;
  }

  #ygrp-text p {
    margin: 0 0 1em 0;
  }

  #ygrp-text tt {
    font-size: 120%;
  }

  #ygrp-vital ul li:last-child {
    border-right: none !important; 
  } 
  -->
  </style>
</head>

<!--~-|**|PrettyHtmlEnd|**|-~-->
</html>
<!-- end group email -->


--KPHtP9Xj18jiKJVbH17bZgyDLYwcUjhLr3sNJuc--