Hi guys
We are writing some articles on the work of veronica to support merging activities. We need your input great smalltalk community :)
What are the questions that you ask yourselves when you are/want to merge some code in your project?
We would like to do a compilation of questions and also evaluate how the solution of veronica solves them or part of them.
Here are some typical questions we asked ourselves.
- What other changes did this change require?
- Can I integrate this change right now?
- How large it is?
- Who made it?
- Is it still valid (when I'm working on an old change)?
- Is this change impacted by a change that happened in another branch of my software?
Stef D., Andy K. and Veronica U.
On Wednesday, November 23, 2011 at 10:57 AM, Stéphane Ducasse wrote:
Hi guys
We are writing some articles on the work of veronica to support merging activities. We need your input great smalltalk community :)
What are the questions that you ask yourselves when you are/want to merge some code in your project?
We would like to do a compilation of questions and also evaluate how the solution of veronica solves them or part of them.
Here are some typical questions we asked ourselves.
Number 1 question I always ask but is sort of implicit in the other questions is,
why was this change made?
which impacts on, is it still valid and is this change impacted by a change that happened in another brach of software.
On 23/11/2011 12:57, Stéphane Ducasse wrote: > ```
<pre wrap="">Hi guys We are writing some articles on the work of veronica to support merging activities. We need your input great smalltalk community :) What are the questions that you ask yourselves when you are/want to merge some code in your project? We would like to do a compilation of questions and also evaluate how the solution of veronica solves them or part of them. ```
At my job we have several programming rules hat we check on pieces of code before integrating.
Some of these checks could be automated, some cannot.
Besides, there is a more subtle analysis about two things: the alignment of the changes with the software design and politics; and a little cost-benefit considering added complexity as a cost (could yield negative when it is a refactoring, for instance) and additional functionality or enhancements or clarity or performance as benefits.
I don't think this could be automated, but it could be supported to some extent (we could measure the added complexity and raise hints about some design invariants).
I think this goes to the line that Sean T Allen pointed: why do we want to integrate these changes.
signaturecarlos e. ferro | senior developer| caesar systems | see clearly. decide smarter.
ceferro@caesarsystems.com | t: +1.281.598.8790 | t: +54.11.4389.0126 | blog.caesarsystems.com | www.caesarsystems.com
[This message and any attached documents contain information from Caesar Systems LLC that may be confidential/trade secret and/or privileged. If you are not the intended recipient, you may not read, copy, distribute or use this information. If you have received this transmission in error, please notify the sender immediately by telephone or by reply e-mail and then delete this message.
I find the question How Large is it interesting because it can be easily
enhanced to complexity metrics. Two simple ones are #loc and #sends (you
don't need to compile a method to count the number of message sends it
contains). If the change represents a Class definition you could measure
the number of instance variables. Changes that remove classes or methods
would subtract their complexity from the total. There are more metrics easy
to calculate. The point is that with these considerations you could ask how
much complexity the change set adds to/removes from the system.
leandro caniglia ph.d. | chief technologist | caesar* systems | see
clearly. decide smarter.*
lcaniglia@caesarsystems.com | t: +1.281.598.8810 +1.281.617.2972
+54.11.4389.0126 | petrovr.blogspot.com | www.caesarsystems.com
This message and any attached documents contain information from Caesar
Systems LLC that may be confidential/trade secret and/or privileged. If
you are not the intended recipient, you may not read, copy, distribute or
use this information. If you have received this transmission in error,
please notify the sender immediately by telephone or by reply e-mail and
then delete this message.
On Wed, Nov 23, 2011 at 12:57 PM, Stéphane Ducasse <
stephane.ducasse@inria.fr> wrote:
Hi guys
We are writing some articles on the work of veronica to support merging
activities. We need your input great smalltalk community :)
What are the questions that you ask yourselves when you are/want to merge
some code in your project?
We would like to do a compilation of questions and also evaluate how the
solution of veronica solves them or part of them.
Here are some typical questions we asked ourselves.
- What other changes did this change require?
- Can I integrate this change right now?
- How large it is?
- Who made it?
- Is it still valid (when I'm working on an old change)?
- Is this change impacted by a change that happened in another
branch of my software?
Stef D., Andy K. and Veronica U.
Esug-list mailing list
Esug-list@lists.esug.org
http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
At my job we have several programming rules hat we check on pieces of code before integrating.
Some of these checks could be automated,
like what?
I integrated daily changes and I have a lot of simple questions. I'm quite sure that people would be interested by the answers
to these questions. But for the moment I will not tell them but I want to know what you guys are asking yourselves.
some cannot.
Besides, there is a more subtle analysis about two things: the alignment of the changes with the software design and politics; and a little cost-benefit considering added complexity as a cost (could yield negative when it is a refactoring, for instance) and additional functionality or enhancements or clarity or performance as benefits.
I don't think this could be automated, but it could be supported to some extent (we could measure the added complexity and raise hints about some design invariants).
I think this goes to the line that Sean T Allen pointed: why do we want to integrate these changes.
carlos e. ferro | senior developer| caesar systems | see clearly. decide smarter.
ceferro@caesarsystems.com | t: +1.281.598.8790 | t: +54.11.4389.0126 | blog.caesarsystems.com | www.caesarsystems.com
This message and any attached documents contain information from Caesar Systems LLC that may be confidential/trade secret and/or privileged. If you are not the intended recipient, you may not read, copy, distribute or use this information. If you have received this transmission in error, please notify the sender immediately by telephone or by reply e-mail and then delete this message.
Esug-list mailing list
Esug-list@lists.esug.org
http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
What does this relate to in the bug-tracking system?
Did the tests pass before?
Do the tests pass now?
Which parts of this are real changes and which are just because somebody
felt it was important to reformat everything? :-)
What were those changes I just accepted/deleted because the cat was
stepping on my keyboard?
Stéphane Ducasse mailto:stephane.ducasse@inria.fr
23 November, 2011 10:57 AM
Hi guys
We are writing some articles on the work of veronica to support
merging activities. We need your input great smalltalk community :)
What are the questions that you ask yourselves when you are/want to
merge some code in your project?
We would like to do a compilation of questions and also evaluate how
the solution of veronica solves them or part of them.
Here are some typical questions we asked ourselves.
Stef D., Andy K. and Veronica U.
Esug-list mailing list
Esug-list@lists.esug.org
http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
Thanks alan!
We want more.
Please log them next time you integrate something. I really a bunch of them. But I want to hear you guys!
Stef
On 23/11/2011 12:57, Stéphane Ducasse wrote:
Hi guys
We are writing some articles on the work of veronica to support merging activities. We need your input great smalltalk community :)
What are the questions that you ask yourselves when you are/want to merge some code in your project?
We would like to do a compilation of questions and also evaluate how the solution of veronica solves them or part of them.
At my job we have several programming rules hat we check on pieces of code before integrating.
Some of these checks could be automated, some cannot.
Besides, there is a more subtle analysis about two things: the alignment of the changes with the software design and politics; and a little cost-benefit considering added complexity as a cost (could yield negative when it is a refactoring, for instance) and additional functionality or enhancements or clarity or performance as benefits.
I don't think this could be automated, but it could be supported to some extent (we could measure the added complexity and raise hints about some design invariants).
I think this goes to the line that Sean T Allen pointed: why do we want to integrate these changes.
carlos e. ferro | senior developer| caesar systems | see clearly. decide smarter.
ceferro@caesarsystems.com | t: +1.281.598.8790 | t: +54.11.4389.0126 | blog.caesarsystems.com | www.caesarsystems.com
This message and any attached documents contain information from Caesar Systems LLC that may be confidential/trade secret and/or privileged. If you are not the intended recipient, you may not read, copy, distribute or use this information. If you have received this transmission in error, please notify the sender immediately by telephone or by reply e-mail and then delete this message.
Esug-list mailing list
Esug-list@lists.esug.org
http://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
On 23/11/2011 18:30, stephane ducasse wrote: > > > ```
<pre wrap=""> ```<pre wrap="">At my job we have several programming rules hat we check on pieces of code before integrating. Some of these checks could be automated,
<pre wrap=""> like what?
I will mention a couple, but they are just OUR programming rules, not intended to be universal... Most people would disagree with any of them.
We consider alarming if variable names (instance or local) have more than 2 words.
Selectors with many keywords (more than 2) are also suspects.
We don't allow complex arguments for messages. No parenthesis.
example:
test := aVariable between: (self calculateMin: arg) and: (self calculateMax: arg).
should be:
min := self calculateMin: arg.
max := self calculateMax: arg.
test := aVariable between: min and: max.
Code duplication and hard-coded constants must be avoided.
and so on...
I am not sure if it is interesting to know which particular rules we would like to check, but to think that there should be a place where I could define rules to check.
signaturecarlos e. ferro | senior developer| caesar systems | see clearly. decide smarter.
ceferro@caesarsystems.com | t: +1.281.598.8790 | t: +54.11.4389.0126 | blog.caesarsystems.com | www.caesarsystems.com
[This message and any attached documents contain information from Caesar Systems LLC that may be confidential/trade secret and/or privileged. If you are not the intended recipient, you may not read, copy, distribute or use this information. If you have received this transmission in error, please notify the sender immediately by telephone or by reply e-mail and then delete this message.
On 23.11.11 22:30, stephane ducasse wrote:
At my job we have several programming rules hat we check on pieces of code before integrating.
Some of these checks could be automated,
like what?
I integrated daily changes and I have a lot of simple questions. I'm quite sure that people would be interested by the answers
to these questions. But for the moment I will not tell them but I want to know what you guys are asking yourselves.
I've always considered it important to have a set of code quality tests
which would run before code was checked in and accepted into a common
baseline. Tests that were more than SUnit or functional acceptance
tests, but which then took a bit longer to run. I'd like to have these
tests automated and run when merging. SmallLint provides a number of
these, and there are surely some other quality and metric tools around.
This may go a bit far, but since merging is part of a build process, I'd
also like to see whatever you do fit into a CRISP build:
*Complete, i.e. scorched-earth build
*Repeatable, i.e. consistent and reproducable
*Informative
*Schedulable
*Portable
Joseph Pelrine [ | ]
MetaProg GmbH
Email: jpelrine@metaprog.com
Web: http://www.metaprog.com
As soon as you introduce people, things become complex.
Hi,
in a previous company I worked we had something very similar to what
Carlos described. We used SmallLint to verify that no errors where in the
code (we extended SmallLint to be able to document false positives), we had
what we called programming rules that were run as SUnit tests before
integration and after integration, and we also had something we called
architecture tests.
The programming rules included simple rules like checking the numbers of
parameters, doing spell checking, that the initialize message is not send
for other object but the class, etc. up to complex validations for patterns
like the visitor, state, etc.
The architecture rules were oriented towards dependencies between modules
(applications in Envy), dependencies between systems, etc.
We had a process that defined when to run each type of test (tests were
categorized like functional, programming rules, architecture rules, etc
using different suites). For example if you changed something, first you
had to run the tests related to the changed module, then the functional
tests of all the system (around 23.000 test, ran in 7 minutes) then the
programming rules. After that the change was sent to the integrator who
used an automatic integration tool and also the architecture tests where
runned. Before closing the new release the version was uploaded to a fresh
GemStone image, and all the functional tests where ran in GemStone. If
everything ran correctly, the new version was released. The last steps
(uploading code to gemstone, running the tests, etc) are currently done
automatically in a build server using Jenkins.
This process allowed us to be very confident in the code we produced. Of
course that it took some time to do the whole integration cycle, that is
why sometimes when the release was an internal one, we could avoid running
the tests in gemstone, etc.
Anyway, it feels really good to have a process like that and it is still in
use. The programmers add new rules when they find mistakes they do,
sometimes to prevent errors in the evolution of the code (that is very nice
too... design decisions are made explicit through these tests), etc. So, at
the same time is a very "reflective" process...
Bye,
Hernan.
On Thu, Nov 24, 2011 at 5:49 AM, Joseph Pelrine jplists@metaprog.comwrote:
On 23.11.11 22:30, stephane ducasse wrote:
At my job we have several programming rules hat we check on pieces of
code before integrating.
Some of these checks could be automated,
like what?
I integrated daily changes and I have a lot of simple questions. I'm
quite sure that people would be interested by the answers
to these questions. But for the moment I will not tell them but I want to
know what you guys are asking yourselves.
I've always considered it important to have a set of code quality tests
which would run before code was checked in and accepted into a common
baseline. Tests that were more than SUnit or functional acceptance tests,
but which then took a bit longer to run. I'd like to have these tests
automated and run when merging. SmallLint provides a number of these, and
there are surely some other quality and metric tools around.
This may go a bit far, but since merging is part of a build process, I'd
also like to see whatever you do fit into a CRISP build:
*Complete, i.e. scorched-earth build
*Repeatable, i.e. consistent and reproducable
*Informative
*Schedulable
*Portable
Joseph Pelrine [ | ]
MetaProg GmbH
Email: jpelrine@metaprog.com
Web: http://www.metaprog.com
As soon as you introduce people, things become complex.
_____________**
Esug-list mailing list
Esug-list@lists.esug.org
http://lists.esug.org/mailman/**listinfo/esug-list_lists.esug.**orghttp://lists.esug.org/mailman/listinfo/esug-list_lists.esug.org
--
Hernán Wilkinson
Agile Software Development, Teaching & Coaching
Mobile: +54 - 911 - 4470 - 7207
email: hernan.wilkinson@10Pines.com
site: http://www.10Pines.com http://www.10pines.com/
Address: Paraguay 523, Floor 7 N, Buenos Aires, Argentina