Elevator pitch for testing software architecture and software design


Published on

Why and how should we test software architecture and software design

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Elevator pitch for testing software architecture and software design

  1. 1. Why and how should we testsoftware architecture andsoftware design?Zarko Acimovic
  2. 2. Software Defects PotentialsAs an example for function point measure Win 7 has ~100K Function Points, Microsoft Word has~5K Function Points. The technology assumptions underlying below table assume CMMI level 1and a traditional waterfall development method.Source: Chapter 2. Estimating and Measuring Software Quality. The Economics of SoftwareQuality, ISBN: 9780132564762 , Pages 40, 41, Capers Jones, Olivier Bonsignourhttp://www.amazon.com/Economics-Software-Quality-Capers-Jones/dp/0132582201http://www.informit.com/store/product.aspx?isbn=0132582201 Defects per Function Point Percent of Total DefectsRequirement Defects 1.15 9.58%Architectural Defects 0.25 2.08%Design Defects 1.50 12.50%Coding Defects 2.00 16.67%Test Plan and Test Case Defects 1.85 15.42%User Documentation Defects 0.75 6.25%Database Defects 2.75 22.92%Website Defects 1.75 14.58%TOTAL 12.00 100.00%
  3. 3. ms Te te chSys n ic DoD Architecture al Operational Framework Overview Alessio Mosto May, 2004 Source: http://www.disi.unige.it/person/ReggioG/ISII04WWW/DODAF.ppt
  4. 4. Architecture Definition “The structure of components, their relationships, and the principles and guidelines governing their design and evolution over time.” DoD Integrated Architecture Panel, 1995, based on IEEE STD 610.12 “An architecture is the fundamental organization of a system embodied in its components, their relationships to each other, and to the environment, and the principles guiding its design and evolution.” IEEE STD 1471-2000Alessio Mosto DoD Architectural Framework 2
  5. 5. Architecture vs. Design System Architecture is used to:  Make buy decisions  Discriminate between options  “Discover” the true requirements  Drive one or more systems to a common “use” or purpose System Design is used to:  Develop system components  Build the system  Understand configuration changes as the system is modifiedAlessio Mosto DoD Architectural Framework 3
  6. 6. Basic Principles - An Integrated Architecture with Three Views Activities/ Operational Tasks Operational Elements View Identifies What Needs To Be Done And Who Does It Information FlowSystems Data Flow Standards Rules Systems Technical X View X Z Y Standards View YRelates Systems and Characteristics Y Prescribes Standards and to Operational Needs X Conventions Communications Conventions Alessio Mosto DoD Architectural Framework 4
  7. 7. Architecture ViewsAlessio Mosto DoD Architectural Framework 5
  8. 8. Software Architecture DefectsSource: A Dissertation Presented to the Graduate School of Clemson UniversityIn Partial Fulfillment of the Requirements for the Degree Doctor of PhilosophyComputer Science by Kyungsoo Im December 2010Links http://etd.lib.clemson.edu/documents/1306855520/http://etd.lib.clemson.edu/documents/1306855520/Im_clemson_0050D_10926.pdfArchStudio and ArchLight !http://www.isr.uci.edu/projects/archstudio/whatis.html
  9. 9. Software Design Defects Sourceshttp://www.cslhr.nu.edu.pk/GCCS/Spring2010/papers/Kamran.pdfhttp://www.scribd.com/doc/17402321/Software-Design-Defects-2http://www.ptidej.net/Members/mohanaou/paper/ASE06/Moha06-ASE.pdfhttp://www-etud.iro.umontreal.ca/~ptidej/yann-gael/Work/Publications/Documents/ASE06.ppt.pdf
  10. 10. 6/24/2009 Software Design DefectsSoftware Design Defects Design Patterns are “good” solutions to recurring design problems ◦ Where you want to be in terms of good design Design Defects are “bad” solutions to recurring problems ◦ Where you should not find yourself in software development Design Defects lessen the quality of OO architectures and impede their evolution and their maintenancePatterns and Software Defects AntiPatterns To Err Is Human AntiPatterns provide patterns that have negative consequences on software 2 categories: development effort ◦ High-level (global) problems: AntiPatterns ◦ Reality of a good number of software projects ◦ Low-level (local) problems: Code Smells Help identifying problems in software “ deviations from specifications or expectations ◦ Bad design results from common mistakes and misunderstandings which might lead to failures in operation ” Provide common vocabulary to discuss They describe in general what not to do problems and their solutions in software Arise due to lack of knowledge and experience industry Understanding AntiPatterns provides the A good form of problem-solving approach knowledge to prevent or recover from themWell-Well-known AntiPatterns AntiPatterns Root causes AntiPatterns are all around us. They’re often ◦ Haste used as tools for social control. Good design is a product of careful study Trimming budgets, unrealistic committeements SOCIAL AntiPatterns Leads to compromises in software quality ◦ Apathy ◦ Criminal Not caring about solving known problems ◦ Narrow-mindedness ◦ Drug Addict Refusal to accept widely known solutions ◦ Laziness (Sloth) ◦ Witch Configuration management ◦ Ignorance ◦ PickPocket Failing to seek understanding ◦ Pride Not-invented-here syndrome: avoids using or buying already existing products 1
  11. 11. 6/24/2009 AntiPatterns The Blob Blob (Huge Class) Describe context and causes “ Procedural-style design Describe symptoms to detect an leads to one object with a lion’s share of the AntiPattern in legacy software responsibilities while most other objects only hold Describe their consequences data or execute simple Describe a roadmap for their solution processes ” Large controller class Many fields and methods with a low cohesion In this course, we shall only cover Dependent on the data AntiPatterns related to software code stored in associated data classes The Blob The Blob Causes and Consequences Library_Main_Control Item Person Current_Catalog Title Typical CausesName Current_Item ISBNUser_ID User_ID Author ◦ Lack of proper Object-Oriented architectureItems_Out Fine_Amount PublisherFines Etc. Cost Data_In ◦ Prototype software evolves into a product… Do_Inventory() Check_Out_Item(Item) Qty … ◦ Lack of architectural enforcement Check_In_Item(Item) Add_Item(Item) Consequences Delete_Item(Item) Catalog Print_Catalog() Topic ◦ Modular continuity is compromised Sort_Catalog() Search_Catalog(Params) Inventory … ◦ Too complex for reuse and testing Print() Issue_Library_Card() ◦ Expensive to load into memory even for small Calculate_Late_Fine() operations The Blob The Blob - Solution Solution Library_Main_Control Item Avoid it Person Current_Catalog Title Name Current_Item ISBN ◦ Managers should review program design User_ID User_ID Author Items_Out Publisher regularly Fines Fine_Amount Etc. Cost … Data_In Refactor it Do_Inventory() Check_Out_Item(Item) Qty … Check_In_Item(Item) ◦ Move behavior away from the Blob Add_Item(Item) Delete_Item(Item) ◦ Construct cohesive classes: cohesive set of Print_Catalog() Catalog Topic attributes and methods are encapsulated Sort_Catalog() Search_Catalog(Params) Inventory … together Print() Issue_Library_Card() ◦ Remove far-coupling Calculate_Late_Fine() 2
  12. 12. 6/24/2009 Spaghetti Code Spaghetti Code Causes and Consequences “ Ad hoc software structure makes it difficult Typical Causes to extend and optimize code.” Code with very little software structure, ◦ Inexperience with Object-Oriented design lack clarity technologies Implementation invokes a process flow ◦ Ineffective code reviews Lack of structure : no inheritance, no ◦ No initial software design reuse, no polymorphism Long methods process oriented with no Consequences parameters and low cohesion ◦ Code reuse is difficult Procedural names of classes and methods ◦ Follow-on maintenance efforts contribute to the Negligible degree of interaction between problem objects Use of global variables for processing ◦ Software reaches point of diminishing returns: the effort involved to maintain existing code exceeds the cost of developing a new “ground up” solutionpublic boolean startElement(int, XMLAttrList) if (prefix == -1) { ...throws Exception { if (!fValidating && !fNamespacesEnabled) { return false; if (elementURI != -1) { fStringPool.setURIForQName(...); •No Objects •Process Flow Spaghetti Code } } if (contentSpecType == -1 && fValidating) { } else { •Conditionals •Complexity Solution ... ... } if (elementURI == -1) { •Cannot be The best way is to prevent spaghetti code by first if (... && elementIndex != -1) { ... } ... reused thinking and then developing. To avoid: } } fStringPool.setURIForQName(.elementURI); ◦ Domain model even when it is well-understood if (DEBUG_PRINT_ATTRIBUTES) { ... if (attrIndex != -1) { ◦ OO Analysis } int index = attrList.getFirstAttr(attrIndex); if (fNamespacesEnabled) { while (index != -1) { ◦ OO Design int attName = attrList.getAttrName(index); fNamespacesScope.increaseDepth(); if (attrIndex != -1) { if (!fStringPool.equalNames(...)) { ◦ Objects should be sufficiently refined ... int index = attrList.getFirstAttr(attrIndex); if (attPrefix != fNamespacesPrefix) { When adding new features, remove code defects while (index != -1) { if (attPrefix == -1) { ... ... Write accessor functions for member variables if (fStringPool.equalNames(...)) { } ... else { Refactor code into methods } if (uri == -1) { else {...} … Remove obsolete code } } index = attrList.getNextAttr(index); fStringPool.setURIForQName(attName, uri); Rename classes, functions, data types to conform if (fElementDepth >= 0) { } } fElementDepth++; to industry standards if (fElementDepth == fElementTypeStack.length) { int prefix = ...fStringPool.getPrefixForQName(elementType); } }}} int elementURI; return contentSpecType == fCHILDRENSymbol; } Functional Decomposition Functional Decomposition Causes and Consequences One main routine that calls several other Typical Causes subroutines ◦ No use of OO concepts like inheritance or Invoked subroutines are implemented as polymorphism classes ◦ Lack of understanding of OO concepts Classes with single action such as a ◦ Lack of architecture enforcement function Consequences Attributes are private and used only ◦ Difficult to reuse inside the class ◦ Expensive to maintain The resulting code resembles a structural ◦ no way to clearly document (or explain) how the system works language like C and is incredibly complex 3
  13. 13. 6/24/2009 Functional Decomposition Functional Decomposition Solution A customer loan scenario Find the original Use Cases to ascertain Adding a new customer features from user view point Updating a customers address OO reengineering process Calculating a loan to a customer Find matching OO design model Calculating the interest on a loan Combine classes which assist each other Calculating a payment schedule for a Combine classes which try to achieve the customer loan same design objective Altering a payment schedule Find similar subsystems (reuse of code)Functional Decomposition OO VersionCut-and-Cut-and-Paste Programming Cut-and- Cut-and-Paste Programming Causes and Consequences “Man, you guys work fast. Over 400,000 lines of Typical Causes code in just three weeks is outstanding progress.” ◦ Reusable code is difficult to create and organizations prefer Cut-and-Paste Programming is a short term benefits very common degenerate form of ◦ Easier to modify existing code than writing from scratch software reuse that causes maintenance nightmares. ◦ Lack of abstraction in developers Less experienced programmers ◦ Lack of knowledge of tools and technologies, hence working examples are modified to create new components learn by changing code of experienced developers ◦ Lack of forward thinking Presence of several similar Consequences segments of code ◦ Software defects and bugs are replicated Creates code duplication ◦ Difficult to locate all instances of a bug Positive short-term consequences ◦ Code reviews and inspections are needlessly extended such as boosting line count metrics ◦ Excessive software maintenance costs ◦ Duplication of testing, review, bug fixing efforts 4
  14. 14. 6/24/2009 Cut-and- Cut-and-Paste Programming Swiss Army Knife Solution A Swiss Army knife is a Three step approach brand of multi-function ◦ Identify Code duplication pocket knife or multi-tool. Excessively complex class ◦ Refactoring duplicates into libraries or interface components for black-box reuse Designer attempts to ◦ Configuration management : code inspection, provide for all possible uses of the class. reviews and validation efforts in future to Large number of interface avoid Cut-and-Paste Programming signatures No clear abstraction or focus of the class interface Swiss Army Knife Swiss Army Knife Causes and Consequences Solution Causes Describe a profile for the class ◦ No focused responsibility Profile documents the way to use a ◦ Class attempting to provide too much complex technology functionality Consequences Profile for an interface describe the ◦ More != Better signatures and parameter values ◦ Confusion ◦ Maintenance problems ◦ Each interface requires implementation of items on that interfaceConclusions Code Smells “If it stinks, change it” AntiPatterns provide patterns that have negative consequences on software development effort Each AntiPattern includes a solution + solution pair Hint that something has gone wrong ◦ AntiPattern Solution Generates mostly negative consequences Opportunities for improving program ◦ Refactored Solution Generates mostly positive design benefits AntiPatterns are useful for refactoring, migration, Code smells indicate the need for the upgrade, and reengineering application of a possible refactoring 5
  15. 15. 6/24/2009Code Smells - Examples Code Smells – More Examples Duplicate Code Long Parameter List ◦ Duplication of bugs, tests, reviews ◦ Same (or nearly) code in multiple places ◦ Programs harder to understand ◦ Frequently the result of cut-and-paste coding ◦ Difficult to reuse and change Long Method ◦ Parameter lists should be shorter in OO ◦ OO puts premium on short methods programs than in traditional programs ◦ Long procedures always harder to understand Divergent Change Large Class ◦ Class has poor cohesion ◦ One class commonly changed in different ◦ Too many instance variables or methods means a class is ways for different reasons doing too much ◦ Some methods changed in one case ◦ Class interface does not provide consistent level of abstraction ◦ Other methods changed in anotherCode Smells – More Examples Feature Envy ◦ Method seems more interested in a class other than the one it is in ◦ Most common focus is data (lots of getter calls) Data Clumps ◦ Same data items in multiple classes ◦ Parameter lists of several methods ◦ If after deleting one from clump the rest wouldn’t make sense, a clear candidate for refactoring 6
  16. 16. ArgoUML !!!
  17. 17. ArgoUML Design CriticsChapter 15. The CriticsTable of Contents15.1. Introduction 15.1.1. Terminology 15.1.2. Design Issues15.2. Uncategorized15.3. Class Selection 15.3.1. Wrap DataType 15.3.2. Reduce Classes in namespace <namespace> 15.3.3. Clean Up Diagram15.4. Naming 15.4.1. Resolve Association Name Conflict 15.4.2. Revise Attribute Names to Avoid Conflict 15.4.3. Change Names or Signatures in a model element 15.4.4. Duplicate End (Role) Names for an Association 15.4.5. Role name conflicts with member 15.4.6. Choose a Name (Classes and Interfaces) 15.4.7. Name conflict in a namespace 15.4.8. Choose a Unique Name for a model element (Classes and Interfaces) 15.4.9. Choose a Name (Attributes) 15.4.10. Choose a Name (Operations) 15.4.11. Choose a Name (States) 15.4.12. Choose a Unique Name for a (State related) model element 15.4.13. Revise Name to Avoid Confusion
  18. 18. 15.4.14. Choose a Legal Name 15.4.15. Change a model element to a Non-Reserved Word 15.4.16. Choose a Better Operation Name 15.4.17. Choose a Better Attribute Name 15.4.18. Capitalize Class Name 15.4.19. Revise Package Name15.5. Storage 15.5.1. Revise Attribute Names to Avoid Conflict 15.5.2. Add Instance Variables to a Class 15.5.3. Add a Constructor to a Class 15.5.4. Reduce Attributes on a Class15.6. Planned Extensions 15.6.1. Operations in Interfaces must be public 15.6.2. Interfaces may only have operations 15.6.3. Remove Reference to Specific Subclass15.7. State Machines 15.7.1. Reduce Transitions on <state> 15.7.2. Reduce States in machine <machine> 15.7.3. Add Transitions to <state> 15.7.4. Add Incoming Transitions to <model element> 15.7.5. Add Outgoing Transitions from <model element> 15.7.6. Remove Extra Initial States 15.7.7. Place an Initial State 15.7.8. Add Trigger or Guard to Transition 15.7.9. Change Join Transitions 15.7.10. Change Fork Transitions 15.7.11. Add Choice/Junction Transitions 15.7.12. Add Guard to Transition 15.7.13. Clean Up Diagram 15.7.14. Make Edge More Visible 15.7.15. Composite Association End with Multiplicity >115.8. Design Patterns
  19. 19. 15.8.1. Consider using Singleton Pattern for <class> 15.8.2. Singleton Stereotype Violated in <class> 15.8.3. Nodes normally have no enclosers 15.8.4. NodeInstances normally have no enclosers 15.8.5. Components normally are inside nodes 15.8.6. ComponentInstances normally are inside nodes 15.8.7. Classes normally are inside components 15.8.8. Interfaces normally are inside components 15.8.9. Objects normally are inside components 15.8.10. LinkEnds have not the same locations 15.8.11. Set classifier (Deployment Diagram) 15.8.12. Missing return-actions 15.8.13. Missing call(send)-action 15.8.14. No Stimuli on these links 15.8.15. Set Classifier (Sequence Diagram) 15.8.16. Wrong position of these stimuli15.9. Relationships 15.9.1. Circular Association 15.9.2. Make <association> Navigable 15.9.3. Remove Navigation from Interface via <association> 15.9.4. Add Associations to <model element> 15.9.5. Remove Reference to Specific Subclass 15.9.6. Reduce Associations on <model element> 15.9.7. Make Edge More Visible15.10. Instantiation15.11. Modularity 15.11.1. Classifier not in Namespace of its Association 15.11.2. Add Elements to Package <package>15.12. Expected Usage 15.12.1. Clean Up Diagram15.13. Methods 15.13.1. Change Names or Signatures in <model element>
  20. 20. 15.13.2. Class Must be Abstract 15.13.3. Add Operations to <class> 15.13.4. Reduce Operations on <model element>15.14. Code Generation 15.14.1. Change Multiple Inheritance to interfaces15.15. Stereotypes15.16. Inheritance 15.16.1. Revise Attribute Names to Avoid Conflict 15.16.2. Remove <class>s Circular Inheritance 15.16.3. Class Must be Abstract 15.16.4. Remove final keyword or remove subclasses 15.16.5. Illegal Generalization 15.16.6. Remove Unneeded Realizes from <class> 15.16.7. Define Concrete (Sub)Class 15.16.8. Define Class to Implement <interface> 15.16.9. Change Multiple Inheritance to interfaces 15.16.10. Make Edge More Visible15.17. Containment 15.17.1. Remove Circular Composition 15.17.2. Duplicate Parameter Name 15.17.3. Two Aggregate Ends (Roles) in Binary Association 15.17.4. Aggregate End (Role) in 3-way (or More) Association 15.17.5. Wrap DataType
  21. 21. Follow me on Facebook page “Automated Testing” https://www.facebook.com/AutomatedTesting
  22. 22. Search for people, places and things Automated Testing Home Admin Panel Edit Page Build Audience Help Show Ads Manager See Your Ad Here Automated Testing Automated Testing as Program Verification. Program Verification problem is decidable if P is finite-... Like · Automated Testing likes this. Get More Likes Now Automated Testing February 10 likes · 1 talking about this 2013 Launched Computers/Internet Website Automated Testing as Program Verification. Program Verification problem is decidable if P is finite-state with model-checking techniques. But real programs are not finite-state, they have arbitrarily complex inputs 10 and dynamic memory allocation About Photos Likes Highlights Status Photo / Video Event, Milestone + Recent Posts by Others on Automated Testing See AllWhats on your mind? Zarko Acimovic http://www.verifysoft.com/en.html Wednesday at 2:24pm Automated Testing shared a link. Zarko Acimovic 9 minutes ago http://hermit-reasoner.com/ February 15 at 11:26amhttp://www-dse.doc.ic.ac.uk/cgi-bin/moin.cgi/sue More Posts sue - DSE Imperial College www-dse.doc.ic.ac.uk Likes See All Distributed Software Engineering Section Department of Computing Imperial College London Huxley Building Room 568 180 Queens Gate, London SW7 2AZ, UKDirections to the DepartmentStreetmap link Phone: Erlang Programming +44 20 7594 8264 Fax: +44 20 7581 8024 Community Alonso ChurchLike · Comment · Share Public Figure Objective Caml Automated Testing shared a link. Interest 40 minutes ago Implementing Automated Software Testinghttp://sourceforge.net/projects/czt/ Book Community Z Tools Haskell sourceforge.net Interest Tool support for the Z formal notation Automated Testing shared a link.Like · Comment · Share about an hour ago http://www.doc.ic.ac.uk/~ar3/lectures/ProgrammingII/NewCours Automated Testing shared a link. eStructure.html about an hour ago Alessandra Russos Software Engineering Coursehttp://www.doc.ic.ac.uk/~jnm/book/index.html www.doc.ic.ac.uk These lecture notes are designed for the second part of the course Object Oriented Programming given to first year undergraduate students at Imperial College. The first half of this course is taught by Alastair
  23. 23. Donaldson. His lecture notes are electronically available on CATE. The second part of thi... Like · Comment · Share Like · Comment · Share Automated Testing shared a link. 16 hours ago Concurrency - State Models & Java Programs www.doc.ic.ac.uk http://www.cs.ru.nl/ftfjp/ Automated Testing 16 hours ago Formal Techniques for Java-like Programs (FTfJP) www.cs.ru.nlhttp://www.cs.ru.nl/ftfjp/ Starting 2002 the name of the workshop has been slightly changed - from "Formal Techniques for Java Programs" to "Formal Techniques for Java-like Programs" - to include not just work on Java, but also work onLike · Comment · Share related languages such as C# or Scala. Like · Comment · Share Automated Testing shared a link. 16 hours ago Automated Testinghttp://www.uppaal.com/index.php?sida=186&rubrik=93 16 hours ago UP4ALL Inc - uppaal.com http://csd.informatik.uni-oldenburg.de/~moby/ www.uppaal.com UPPAAL is an integrated tool environment for modeling, simulation and, Like · Comment · Share verification of real-time embedded systems. Typical application areas of UPPAAL includes real-time controllers and communication protocols in particular, those where timing aspects are critical. Automated Testing shared a link. ThursdayLike · Comment · Share http://www.informatik.uni- bremen.de/agbkb/forschung/formal_methods/index_e.htm Automated Testing shared a link. Wednesday Research Area "Formal Methods for Software Development" www.informatik.uni-bremen.dehttp://www.springer.com/computer/swe/book/978-0-85729-276-6 The main focus of research in formal methods at our group is algebraic specification, based on the CASL language, and development of effective tool support for all aspects of formal development. Specification of Software Systems www.springer.com Like · Comment · Share Recent advances in software specification methods, model checking, and theorem proving have generated new tools for the use of formal methods in both industry and academia. Yet, in order to choose the techniques Automated Testing shared a link. most appropriate ... March 5Like · Comment · Share http://www.locmetrics.com/index.html Automated Testing shared a link. http://www.locmetrics.com/index.html March 5 www.locmetrics.comhttp://www.locmetrics.com/alternatives.html Like · Comment · Share LOC Metrics - Alternative Tools www.locmetrics.com Automated Testing shared a link. LocMetrics is a simple tool for counting lines of code in C#, Java, and March 1 C++. http://www.flowgate.net/?lang=es&seccion=herramientasLike · Comment · Share [Flowgate Consulting] Servicios de consultoria en TI Automated Testing shared a link. www.flowgate.net February 28http://www.lispworks.com/ LispWorks Like · Comment · Share www.lispworks.com New features in LispWorks 6.1 include environment access, high-quality Automated Testing shared a link. drawing including anti-aliasing, February 28 exporting various image formats, extensions to symmetric multiprocessing and a 64-bit FreeBSD port. http://weitz.de/Like · Comment · Share
  24. 24. Edi Weitz Automated Testing shared a link. weitz.de February 28 Software, books, photos, and morehttp://www.cliki.net/ Like · Comment · Share CLiki: index www.cliki.net Automated Testing shared a link. CLiki is a Common Lisp wiki. It contains resources for learning about and February 28 using the programming language Common Lisp, and information about DFSG-compliant free software implemented in Common Lisp. http://cs.gmu.edu/~sean/book/metaheuristics/Like · Comment · Share Essentials of Metaheuristics cs.gmu.edu Automated Testing shared a link. Please always include the URL—its the only unique February 28 identifier to the text! Note the lack of edition number: I expect these to change very rapidly, and Google Scholar and Citeseer both have trouble with fast-http://www.franz.com/ changing editions. If you prefer BibTeX: @Book{ Luke2009Metaheuristics, author = { Sean Luke ... Like · Comment · Share About Franz Inc. www.franz.com Franz is a leading vendor of Semantic Web Technology Automated Testing shared a link. featuring the AllegroGraph RDF Store triple store February 28 database, and dynamic object-oriented Common Lisp development tools including Allegro Common Lisp with AllegroCache, an Object Database that provides Object http://cs.gmu.edu/~sean/lisp/ Persistence in Lisp, native to the langa...Like · Comment · Share Lisp at GMU cs.gmu.edu Automated Testing shared a link. Lisp runs fine on mason.gmu.edu (type lisp). But only use February 28 Lisp on Mason to verify your code, not for development. Instead, do development on your own machine -- its much less painful. However, in Prof. Lukes classes, yourhttp://letoverlambda.com/index.cl Lisp homework and projects must compile and run properly on Mason for them t... Like · Comment · Share Let Over Lambda letoverlambda.com Let Over Lambda (ISBN 978-1-4357-1275-1, 376+iv pp.) is one of the Automated Testing shared a link. most hardcore computer programming books out there. Starting with the February 27 fundamentals, it describes the most advanced features of the most advanced language: COMMON LISP. The point of this book is to expose you to ideas that you might o... http://cs.brown.edu/~jes/book/Like · Comment · Share Models of Computation: Exploring the Power of Computing cs.brown.edu Automated Testing shared a link. In Models of Computation:Exploring the Power of Computing, John February 27 Savage re-examines theoretical computer science, offering a fresh approach that gives priority to resource tradeoffs and complexity classifications over the structure of machines and their relationships tohttp://cs.brown.edu/~jes/book/pdfs/ModelsOfComputation_Chapt languages. This viewpoint refl...er4.pdf Like · Comment · Share http://cs.brown.edu/~jes/book/pdfs/ModelsOfComputation_C hapter4.pdf cs.brown.edu Automated Testing shared a link. February 27Like · Comment · Share http://www.google.rs/search? q=%22%22&oq=%22%22&sourceid=chrome&client=ubuntu&ch annel=cs&ie=UTF- Automated Testing shared a link. 8#client=ubuntu&hs=OiJ&channel=cs&sclient=psy- February 27 ab&q=Program+verification+is+decidable+if+P+is+finite- stae&oq=Program+verification+is+decidable+if+...See Morehttp://research.microsoft.com/en-us/projects/chess/ "" - Google претрага www.google.rs CHESS - Microsoft Research research.microsoft.com A concurrency testing tool for finding and reproducing Heisenbugs. CHESS repeatedly runs a concurrent test ensuring that every run takes a different interleaving. If an interleaving results in an error, CHESS can reproduce the Like · Comment · Share interleaving for improved debugging.Like · Comment · Share Automated Testing February 27
  25. 25. http://research.microsoft.com/en-us/projects/chess/Automated Testing shared a link.February 25 Like · Comment · Sharehttp://www.cambridge.org/gb/knowledge/isbn/item1112106/?site_locale=en_GB Logic in Computer Science www.cambridge.org Recent years have seen the development of powerful tools for verifying hardware and software systems, as companies worldwide realise the need for improved means of validating their products. There is increasing demand for training in basic methods in formal reasoning so that students can gain profic...Like · Comment · Share Earlier in February Zarko Acimovic shared a link. Automated Testing February 15 February 14http://hermit-reasoner.com/ John Hughes. Why functional programming matters - Google search HermiT Reasoner: Home hermit-reasoner.com Like · Comment · Share HermiT is reasoner for ontologies written using the Web Ontology Language (OWL). Given an OWL file, HermiT can determine whether or not the ontology is consistent, identify subsumption relationships Automated Testing shared a link. between classes, and much more. February 14Like · Comment · Share http://www.amazon.com/Purely-Functional-Structures-Chris- Okasaki/dp/0521663504 Automated Testing shared a link. Purely Functional Data Structures February 14 www.amazon.com Most books on data structures assume an imperativehttp://www.cs.cmu.edu/~rwh/theses/okasaki.pdf "Purely language such as C or C++. However, data structures forFunctional Data Structures" these languages do not always translate well to functional languages such as Standard ML, Haskell, or Scheme. This book describes data structures from the http://www.cs.cmu.edu/~rwh/theses/okasaki.pdf point of view of functional languag... www.cs.cmu.edu Like · Comment · ShareLike · Comment · Share Automated Testing shared a link. February 14 Automated Testing shared a link. http://okasaki.blogspot.com/ February 14 Teaching, Playing, and Programminghttp://www.sonarsource.com/ okasaki.blogspot.com I think you’ll enjoy this game, Thunderstone. I’ve been playing it a lot SonarSource - Continuous with my son. Like Race for the Galaxy, this one works very well with two Inspection of Code Quality players, but can also handle more players. (Predictably, with more www.sonarsource.com players, it becomes very chaotic, especially when thieves are in play…) I’m so certain… SonarSource provides applications and services for continuous inspection of Like · Comment · Share code quality. Its open source Sonar platform and commercial products help customers to perform development andLike · Comment · Share long-term maintenance of software at a lower cost and with reduced risk. Automated Testing shared a link. February 12 Automated Testing shared a link. scg.unibe.ch/archive/famoos/handbook/4handbook.pdf February 11 The FAMOOS Object-Oriented Reengineering Handbookhttp://xray.inf.usi.ch/xray.php http://scg.unibe.ch/archive/famoos/handbook/4handbook.pdfSoftware is inherently intangible. Systems can be composed of a scg.unibe.chhuge amount of software entities linked together by different
  26. 26. kinds of dependencies. Software designers use visualization toolsin order to rai...See More Like · Comment · Share Jacopo Malnati, X-Ray xray.inf.usi.ch Automated Testing shared a link. February 11 Website of Jacopo Malnati http://jhave.org/ JHAVÉ is a java application that renders algorithm visualizations. Students explore algorithms by viewing visual representations of data, controlling movement and byLike · Comment · Share responding to pop-up questions. We provide a large colle...See More JHAVE: Home Page jhave.org Automated Testing shared a link. February 10 JHAVEhttp://www.arisa.se/index.phpGoal of ARiSA™ - Applied Research in System Analysis - is toleverage quality management on software and information Like · Comment · Sharesystems engineering. We provide seminars, methods, anddevelopment tools supporting the effi...See More Automated Testing shared a link. February 10 ARiSA AB www.arisa.se http://www.arisa.se/compendium/quality-metrics- Målet för ARiSA™ är att utnyttja kvalitetshantering av framtagning compendium.html mjukvaru- och informationssystem. Vi tillhandahåller seminarier, metoder och Compendium of Software Quality Standards and Metrics - utvecklingsverktyg som stödjer effektiv Version 1.0 produktion och underhåll av högkvalitativ www.arisa.seLike · Comment · Share mjukvara. Compendium of Software Quality Standards and Metrics - Version 1.0 Automated Testing shared a link. Like · Comment · Share February 4http://research.microsoft.com/en-us/projects/specsharp/ Automated Testing shared a link. February 4 Spec# - Microsoft Research research.microsoft.com http://types.cs.washington.edu/jsr308/ Spec# is a formal language for API contracts (influenced by AsmL, JML and Eiffel), which extends C# with constructs for non-null types, Type Annotations (JSR 308) and the Checker Framework preconditions, postconditions, object invariants, and model programs types.cs.washington.edu (behavioral contracts that take the history of the entire run into account). Spec# comes with a... The Java 6 annotation syntax is useful but limited. The Type Annotations syntax permits annotations to be written in more places, such as genericLike · Comment · Share type arguments: List<@NonNull Object>. Programmers can use type annotations to write more informative types, and then tools such as type-checkers can det… Automated Testing shared a link. Like · Comment · Share February 4http://groups.csail.mit.edu/pag/daikon/ Automated Testing shared a link. February 4 The Daikon dynamic invariant detector groups.csail.mit.edu http://homes.cs.washington.edu/~mernst/software/ Daikon is an implementation of dynamic detection of likely invariants; that is, the Daikon invariant detector reports likely program invariants. Software released by Michael Ernst An invariant is a property that holds at a certain point or points in a homes.cs.washington.edu program; these are often seen in assert statements, documentation, and formal speci... This is a partial list of software packages released by Michael Ernst. I am always happy to receive comments, bug reports and fixes, andLike · Comment · Share improvements to the code. I will attempt to assist you with problems or incorporate your changes into the main source. Unless otherwise noted, all software should… Automated Testing shared a link. Like · Comment · Share February 3http://se.inf.ethz.ch/courses/2012b_fall/sv/ Automated Testing shared a link. February 3 Software Verification - Fall 2012 - Chair of Software Engineering se.inf.ethz.ch http://ix.cs.uoregon.edu/~michal/ 05.12.2012 — Please remember to bring questions/problems along for the exercise session of next week! The exam is approaching fast now...Like · Comment · Share
  27. 27. Automated Testing shared a link. February 3 Like · Comment · ShareThe Program Verification problem is decidable if P is finite-statewith model-checking techniques. Michal YoungBut real programs are not finite-state ix.cs.uoregon.edu• arbitrarily complex inputs The thread that runs through my work is understanding how we• dynamic memory allocation understand and gain confidence in software, through some combination Automated Testing shared a link.The term Software Model-Checking denotes techniques to of analysis (broadly construed to include testing as well as various static February 2automatically verify real programs based on finite-state models of checking techniques) and design. Im increasingly interested in interplaythem. between synthesis (g... http://www.scribd.com/doc/65043293/Introduction-to-Computer- Theory Index of /courses/2012b_fall/sv/slides se.inf.ethz.ch http://www.scribd.com/doc/65043293/Introduction-to- Computer-Theory www.scribd.comLike · Comment · Share Like · Comment · Share Automated Testing shared a link. Automated Testing shared a link. February 1 February 1http://www.ncl.ac.uk/computing/research/?pid=260 http://www.wou.edu/~broegb/ Research home - Computing Science - Newcastle University Index Winter 2013 www.ncl.ac.uk www.wou.edu We carry out fundamental computing science research which we evaluate and extend through application to industrial and interdisciplinary challenges. Our work constantly evolves to address the new challenges posed by a fast-changing environment: one in which computer systems become ever more complex,...Like · Comment · Share Like · Comment · Share Automated Testing shared a link. Automated Testing shared a link. February 1 February 1http://rodin.cs.ncl.ac.uk/ http://www.ai4fm.org/ RODIN - Rigorous Open Overview - AI4FM Development Environment for www.ai4fm.org Complex Systems rodin.cs.ncl.ac.uk AI4FM project aims to use "learning" techniques from artificial intelligence to Our overall objective is the creation of a record and abstract how experts do methodology and supporting open tool proofs in order to increase the platform for the cost effective rigorous proportion of cases where proofs are development of dependable complex constructed without (or with minimal)Like · Comment · Share software systems and services. We focus Like · Comment · Share human intervention. AI4FM is an EPSRC- on tackling complexity • caused by the funded research project, a joint effort… environment in which t... Automated Testing shared a link. February 1 http://homepages.cs.ncl.ac.uk/cliff.jones/ http://homepages.cs.ncl.ac.uk/cliff.jones/ homepages.cs.ncl.ac.uk Much of his research at this time focused on formal (compositional) development methods for concurrent systems. His major avenues of current research are listed below. Like · Comment · Share Earlier in 2013
  28. 28. Automated Testing shared a link. Likes January 31 2013https://www.scss.tcd.ie/Matthew.Hennessy/teaching/2013/slexternal2013/reading.php +3 Semantics of programming languages - 2012/13 Reading list - Computer Science - Trinity College Alonso Church Objective Caml F Sharp Dubl www.scss.tcd.ie Trinity College Dublin: Computer Science Department: Semantics of programming languages - 2012/13 Reading Automated Testing shared a link. list January 30Like · Comment · Share http://elib.mi.sanu.ac.rs/files/journals/mv/202/mv943409.pdf http://elib.mi.sanu.ac.rs/files/journals/mv/202/mv943409.pdf Automated Testing elib.mi.sanu.ac.rs January 29http://se.inf.ethz.ch/old/projects/tobias_widmer/ Like · Comment · ShareLike · Comment · Share Automated Testing shared a link. January 28 Automated Testing shared a link. January 28 http://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-737.pdfhttp://bertrandmeyer.com/2012/04/11/domain-theory-the- http://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-737.pdfforgotten-step-in-program-verification/ www.cl.cam.ac.uk Bertrand Meyers technology+ blog » Blog Archive » Domain Theory: Like · Comment · Share the forgotten step in program v bertrandmeyer.com Program verification is making considerable progress but is hampered Automated Testing shared a link. by a lack of abstraction in specifications. January 28 A crucial step is, almost always, absentLike · Comment · Share from the process; this omission is the principal obstacle to making verification http://ebooks.cambridge.org/chapter.jsf? a standard component of everyday bid=CBO9780511569883&cid=CBO9780511569883A012 software development. Automated Testing shared a link. Cambridge Books Online - The Statement of the January 28 Incompleteness Theorem ebooks.cambridge.orghttp://www.amzi.com/ The automatic verification of large parts of mathematics has been an aim of many Amzi! inc. Embeddable Extendable Prolog, Logic mathematicians from Leibniz to Hilbert. While Gödels Server, Knowledge Engineering, Rule Engines, first incompleteness theorem showed that no Artifici computer program could automatically prove certain www.amzi.com Like · Comment · Share theorems in mathematics, the advent of true electronic computers and s... Amzi! inc. provides software and services for embedding intelligent components that apply busines rules, diagnose problems, recommend configurations, give advice, Automated Testing shared a link. schedule events, monitor processes and more. January 28Like · Comment · Share http://www.computational-semantics.eu/ Automated Testing shared a link. Computational Semantics with Functional January 28 Programming www.computational-semantics.euhttp://homepages.cwi.nl/~jve/problem5/ ESSLLI Summer School Course, Ljubljana, Slovenia, August 2011. See the course description on the ESSLLI Challenging Imperative Programming with Algebra, Logic and 2011 homepage. Functions homepages.cwi.nl Like · Comment · Share ``How much land does a man need? asked Lev Tolstoi, and the answer turned out to be: surprisingly little. ``How many programming languages does a software designer need? The answer seems to be: surprisingly many. See below. Automated Testing shared a link. January 28Like · Comment · Share http://answers.yahoo.com/question/index?qid=1006030700479 Automated Testing shared a link. January 28http://en.wikipedia.org/wiki/Lambda_calculus
  29. 29. Lambda calculus - Wikipedia, the free encyclopedia en.wikipedia.org Like · Comment · Share Lambda calculus (also written as λ-calculus or called "the lambda calculus") is a formal system in mathematical logic and computer science for expressing computation by way of variable binding and substitution. First formulated by Alonzo Church, lambda calculus found early successes What is the difference between logic programming andLike · Comment · in the area of c... Share imperative programming.? answers.yahoo.com Logic programming Testing shared a link. Automated (sometimes called logical programming) is Automated Testing shared a link. programming that makes use of pattern-directed invocation of January 28 January 28 procedures from assertions and goals. John McCarthy [1958] was the first to pub http://racket-lang.org/http://users.soe.ucsc.edu/~cormac/ The Racket Language Cormac Flanagan Homepage racket-lang.org users.soe.ucsc.edu Racket is a modern programming language in the Lisp/Scheme family, suitable for a wide range of applications. Racket provides a rich language extension API, the DrRacket integrated development environment, and many Like · Comment · Share batteries-included libraries.Like · Comment · Share Automated Testing shared a link. Automated Testing shared a link. January 28 January 28 http://link.springer.com/book/10.1007/978-1-84628-692-6/page/1http://classes.soe.ucsc.edu/cmps112/Winter07/ Semantics with Applications: An Appetizer - CMPS 112 - Comparative Programming Languages - Winter Springer 2007 link.springer.com classes.soe.ucsc.edu Lectures: Tu/Th, 10:00-11:45am, Engineering 2, room 194Lab Sessions: Mondays 1:00-3:00pm and Thursdays 5:00-6:00pm, both in Baskin 105Like · Comment · Share Like · Comment · Share Automated Testing shared a link. Automated Testing shared a link. January 28 January 28http://cs.brown.edu/~sk/Publications/Books/ProgLangs/2007-04- http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme.html26/ Teach Yourself Scheme in Fixnum Days www.ccs.neu.edu Programming Languages: Application and Interpretation by Shriram Krishnamurthi A practical introduction to the programming cs.brown.edu language Scheme Programming Languages: Application and Interpretation Copyright © 2003-07, Shriram Krishnamurthi Creative Commons Attribution- NonCommercial-ShareAlike 3.0 United States License Version 2007-04-26 Like · Comment · ShareLike · Comment · Share Automated Testing shared a link. Automated Testing shared a link. January 26 January 26 http://mitpress.mit.edu/books/model-checkinghttp://d3s.mff.cuni.cz/teaching/program_analysis_verification/ Model Checking | The MIT Press mitpress.mit.edu Teaching @ D3S - Department of Distributed and Dependable Model checking is a technique for verifying finite Systems state concurrent systems such as sequential circuit d3s.mff.cuni.cz designs and communication protocols. It has a number of advantages over traditional approaches Official web page of the Department of that are based on simulation, testing, and deductive Distributed and Dependable Systems, reasoning. In particular, model checking is autom... Charles University, Prague Like · Comment · ShareLike · Comment · Share Automated Testing shared a link. Automated Testing shared a link. January 26 January 26 http://eu.wiley.com/WileyCDA/WileyTitle/productCd-http://www.pearsonhighered.com/educator/product/Concepts-of- 0471137723,descCd-tableOfContents.htmlProgramming-Languages-10E/9780131395312.page