Share
Embed
Humane assessment by example (MooseDay 04.2013)
I used this set of slides for a presentation at MooseDay 2013 (April)
Tudor Girba
April 04, 2013
Transcript
34 slides
-
humane assessment humane-assessment.com by example the missing method for making
software engineering decisions -
craft analysis processes daily spike strategic facilitator stakeholder organization tooling
buildup throwaway assessment -
com.company common module core whatever name srv ui inter whatever
model allModelNamespaces select: [:each | (NamingConventionGrammar new matches: each mooseName) not] -
2012-03-13 16:10:56,876 TRACE CachingDelegate: Cache hit /service/Region QueryTO [depth=-1, parentDepth=1,
namespace=Region, regioncode=IACA, itemcodes=[APA4725090], codesystem=, elementkind=ITEM, descriptionIncluded=false, validityTestMode=false] hash=-742458864 2012-03-13 16:10:58,470 TRACE CachingDelegate: Cache MISS /service/Region QueryTO [depth=1, parentDepth=2, namespace=Region, regioncode=Structure, itemcodes=[], codesystem=, elementkind=ITEM, descriptionIncluded=false, validityTestMode=false] hash=2003270021 2012-03-13 16:10:58,563 INFO LegacyScriptCalls: LegacyScriptCall called with Parameter: namespace[nnn;Core] From=abc To=xyz [DataFilter] Id=1234 [OutputFormat] Format=xml [XsltConfig] XSLT=WithItemId ] payload[] 2012-03-13 16:10:58,798 INFO ActionService: getActionsByDate: patId=8909580, caseId=3807672, from=Wed Dec 21 00:00:00 CET 2011, to=Wed Mar 14 00:00:00 CET 2012 2012-03-13 16:10:58,923 TRACE CachingDelegate: Cache hit /service/Region AnotherQueryTO [regioncode=null, itemCodes=[], namespace=Region, codeSystem=domain.entry, elementKind=Region, validityDate=Tue Mar 13 00:00:00 CET 2012, descriptionIncluded=false, locale=de_CH, validityTestMode=false] hash=570633577 2012-03-13 16:10:59,266 TRACE CachingDelegate: Cache MISS /service/AnotherRegion QueryTO [depth=1, parentDepth=-1, namespace=AnotherRegion, regioncode=630, itemcodes=[I_23451], codesystem=, elementkind=ITEM, descriptionIncluded=false, validityTestMode=false] hash=-1116635756 -
2012-03-13 16:10:56,876 TRACE CachingDelegate: Cache hit /service/Region QueryTO [depth=-1, parentDepth=1,
namespace=Region, regioncode=IACA, itemcodes=[APA4725090], codesystem=, elementkind=ITEM, descriptionIncluded=false, validityTestMode=false] hash=-742458864 2012-03-13 16:10:58,470 TRACE CachingDelegate: Cache MISS /service/Region QueryTO [depth=1, parentDepth=2, namespace=Region, regioncode=Structure, itemcodes=[], codesystem=, elementkind=ITEM, descriptionIncluded=false, validityTestMode=false] hash=2003270021 2012-03-13 16:10:58,563 INFO LegacyScriptCalls: LegacyScriptCall called with Parameter: namespace[nnn;Core] From=abc To=xyz [DataFilter] Id=1234 [OutputFormat] Format=xml [XsltConfig] XSLT=WithItemId ] payload[] 2012-03-13 16:10:58,798 INFO ActionService: getActionsByDate: patId=8909580, caseId=3807672, from=Wed Dec 21 00:00:00 CET 2011, to=Wed Mar 14 00:00:00 CET 2012 2012-03-13 16:10:58,923 TRACE CachingDelegate: Cache hit /service/Region AnotherQueryTO [regioncode=null, itemCodes=[], namespace=Region, codeSystem=domain.entry, elementKind=Region, validityDate=Tue Mar 13 00:00:00 CET 2012, descriptionIncluded=false, locale=de_CH, validityTestMode=false] hash=570633577 2012-03-13 16:10:59,266 TRACE CachingDelegate: Cache MISS /service/AnotherRegion QueryTO [depth=1, parentDepth=-1, namespace=AnotherRegion, regioncode=630, itemcodes=[I_23451], codesystem=, elementkind=ITEM, descriptionIncluded=false, validityTestMode=false] hash=-1116635756 Cache MISS Cache hit Cache MISS Cache hit -
2012-03-13 16:10:56,876 TRACE CachingDelegate: Cache hit /service/Region QueryTO [depth=-1, parentDepth=1,
namespace=Region, regioncode=IACA, itemcodes=[APA4725090], codesystem=, elementkind=ITEM, descriptionIncluded=false, validityTestMode=false] hash=-742458864 2012-03-13 16:10:58,470 TRACE CachingDelegate: Cache MISS /service/Region QueryTO [depth=1, parentDepth=2, namespace=Region, regioncode=Structure, itemcodes=[], codesystem=, elementkind=ITEM, descriptionIncluded=false, validityTestMode=false] hash=2003270021 2012-03-13 16:10:58,563 INFO LegacyScriptCalls: LegacyScriptCall called with Parameter: namespace[nnn;Core] From=abc To=xyz [DataFilter] Id=1234 [OutputFormat] Format=xml [XsltConfig] XSLT=WithItemId ] payload[] 2012-03-13 16:10:58,798 INFO ActionService: getActionsByDate: patId=8909580, caseId=3807672, from=Wed Dec 21 00:00:00 CET 2011, to=Wed Mar 14 00:00:00 CET 2012 2012-03-13 16:10:58,923 TRACE CachingDelegate: Cache hit /service/Region AnotherQueryTO [regioncode=null, itemCodes=[], namespace=Region, codeSystem=domain.entry, elementKind=Region, validityDate=Tue Mar 13 00:00:00 CET 2012, descriptionIncluded=false, locale=de_CH, validityTestMode=false] hash=570633577 2012-03-13 16:10:59,266 TRACE CachingDelegate: Cache MISS /service/AnotherRegion QueryTO [depth=1, parentDepth=-1, namespace=AnotherRegion, regioncode=630, itemcodes=[I_23451], codesystem=, elementkind=ITEM, descriptionIncluded=false, validityTestMode=false] hash=-1116635756 Cache MISS Cache hit Cache MISS Cache hit QueryTO AnotherQueryTO QueryTO QueryTO -
accept(Visitor) Description description Value accept(Visitor) Boolean actualValue BooleanValue accept(Visitor) ...
...Value accept(Visitor) UndefinedValue -
accept(Visitor) Description description Value accept(Visitor) Boolean actualValue BooleanValue accept(Visitor) ...
...Value accept(Visitor) UndefinedValue Value value; ... if (value == null) { ... } -
accept(Visitor) boolean isUndefined() Description description Value accept(Visitor) Boolean actualValue BooleanValue
accept(Visitor) ... ...Value accept(Visitor) boolean isUndefined() UndefinedValue Value value; ... if (value == null) { ... } -
accept(Visitor) boolean isUndefined() Description description Value accept(Visitor) Boolean actualValue BooleanValue
accept(Visitor) ... ...Value accept(Visitor) boolean isUndefined() UndefinedValue Value value; ... if (value.isUndefined()) { ... } -
valueClass := self allModelTypes entityNamed: #'Value'. valueVariables := valueClass withSubclassHierarchy
flatCollectAsSet: #structuresWithDeclaredType. valueVariables select: [ :each | (('*', each name , ' != null*') match: each belongsTo sourceText) or: [ ('*', each name , ' == null*') match: each belongsTo sourceText ] ] Value value; ... if (value == null) { ... } -
/** * The method can return null */ Value doSomething()
{ ... return value; } -
valueMethods := valueClass withSubclassHierarchy flatCollectAsSet: #behavioursWithDeclaredType. valueMethods select: [:each |
each comments anySatisfy: [:c | '*null*' match: c sourceText ] ] /** * The method can return null */ Value doSomething() { ... return value; } -
craft analysis processes daily spike strategic facilitator stakeholder organization tooling
buildup throwaway assessment