Elevator pitch for testing software architecture and software design
1. Why and how should we test
software architecture and
software design?
Zarko Acimovic
2. Software Defects Potentials
As 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 1
and a traditional waterfall development method.
Source: Chapter 2. Estimating and Measuring Software Quality. The Economics of Software
Quality, ISBN: 9780132564762 , Pages 40, 41, Capers Jones, Olivier Bonsignour
http://www.amazon.com/Economics-Software-Quality-Capers-Jones/dp/0132582201
http://www.informit.com/store/product.aspx?isbn=0132582201
Defects per Function Point Percent of Total Defects
Requirement 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. ms
Te
te
ch
Sys
n ic
DoD Architecture
al
Operational
Framework
Overview
Alessio Mosto
May, 2004
Source:
http://www.disi.unige.it/person/ReggioG/ISII04WWW/DODAF.ppt
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-2000
Alessio Mosto DoD Architectural Framework 2
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 modified
Alessio Mosto DoD Architectural Framework 3
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 Flow
Systems Data Flow Standards Rules
Systems Technical
X View X
Z
Y
Standards View
Y
Relates Systems and Characteristics
Y Prescribes Standards and
to Operational Needs
X
Conventions
Communications Conventions
Alessio Mosto DoD Architectural Framework 4
8. Software Architecture Defects
Source: A Dissertation Presented to the Graduate School of Clemson University
In Partial Fulfillment of the Requirements for the Degree Doctor of Philosophy
Computer Science by Kyungsoo Im December 2010
Links http://etd.lib.clemson.edu/documents/1306855520/
http://etd.lib.clemson.edu/documents/1306855520/Im_clemson_0050D_10926.pdf
ArchStudio and ArchLight !
http://www.isr.uci.edu/projects/archstudio/whatis.html
13. 6/24/2009
Software Design Defects
Software 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 maintenance
Patterns 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 them
Well-
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
14. 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 Causes
Name Current_Item ISBN
User_ID User_ID Author ◦ Lack of proper Object-Oriented architecture
Items_Out Fine_Amount Publisher
Fines 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
15. 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” solution
public 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
16. 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 Version
Cut-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
17. 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 interface
Conclusions 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
18. 6/24/2009
Code 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 another
Code 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
21. ArgoUML Design Critics
Chapter 15. The Critics
Table of Contents
15.1. Introduction
15.1.1. Terminology
15.1.2. Design Issues
15.2. Uncategorized
15.3. Class Selection
15.3.1. Wrap DataType
15.3.2. Reduce Classes in namespace <namespace>
15.3.3. Clean Up Diagram
15.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
22. 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 Name
15.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 Class
15.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 Subclass
15.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 >1
15.8. Design Patterns
23. 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 stimuli
15.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 Visible
15.10. Instantiation
15.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 Diagram
15.13. Methods
15.13.1. Change Names or Signatures in <model element>
24. 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 interfaces
15.15. Stereotypes
15.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 Visible
15.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
25. Follow me on Facebook page “Automated Testing”
https://www.facebook.com/AutomatedTesting
26. 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 All
What's 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:26am
http://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 Queen's Gate,
London SW7 2AZ, UKDirections to the DepartmentStreetmap link Phone: Erlang Programming
+44 20 7594 8264 Fax: +44 20 7581 8024 Community
Alonso Church
Like · Comment · Share
Public Figure
Objective Caml
Automated Testing shared a link. Interest
40 minutes ago
Implementing Automated Software Testing
http://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 Russo's Software Engineering Course
http://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
27. 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.nl
http://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 on
Like · Comment · Share related languages such as C# or Scala.
Like · Comment · Share
Automated Testing shared a link.
16 hours ago
Automated Testing
http://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.
Thursday
Like · 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.de
http://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 5
Like · Comment · Share
http://www.locmetrics.com/index.html
Automated Testing shared a link. http://www.locmetrics.com/index.html
March 5 www.locmetrics.com
http://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=herramientas
Like · Comment · Share
[Flowgate Consulting] Servicios de
consultoria en TI
Automated Testing shared a link. www.flowgate.net
February 28
http://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
28. Edi Weitz
Automated Testing shared a link. weitz.de
February 28
Software, books, photos, and more
http://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—it's 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 -- it's
much less painful. However, in Prof. Luke's classes, your
http://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 to
http://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 27
Like · 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 More
http://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
29. http://research.microsoft.com/en-us/projects/chess/
Automated Testing shared a link.
February 25 Like · Comment · Share
http://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 14
http://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 14
Like · 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 imperative
http://www.cs.cmu.edu/~rwh/theses/okasaki.pdf "Purely language such as C or C++. However, data structures for
Functional 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 · Share
Like · Comment · Share
Automated Testing shared a link.
February 14
Automated Testing shared a link. http://okasaki.blogspot.com/
February 14
Teaching, Playing, and Programming
http://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 and
Like · 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 Handbook
http://xray.inf.usi.ch/xray.php
http://scg.unibe.ch/archive/famoos/handbook/4handbook.pdf
Software is inherently intangible. Systems can be composed of a scg.unibe.ch
huge amount of software entities linked together by different
30. kinds of dependencies. Software designers use visualization tools
in order to rai...See More Like · Comment · Share
Jacopo Malnati, X-Ray 1.0.4.1
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 by
Like · 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 JHAVE
http://www.arisa.se/index.php
Goal of ARiSA™ - Applied Research in System Analysis - is to
leverage quality management on software and information Like · Comment · Share
systems engineering. We provide seminars, methods, and
development 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.se
Like · Comment · Share mjukvara.
Compendium of Software Quality Standards and Metrics - Version 1.0
Automated Testing shared a link. Like · Comment · Share
February 4
http://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 generic
Like · 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 4
http://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, and
Like · 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 3
http://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
31. Automated Testing shared a link.
February 3 Like · Comment · Share
The Program Verification problem is decidable if P is finite-state
with model-checking techniques. Michal Young
But 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 2
automatically verify real programs based on finite-state models of checking techniques) and design. I'm increasingly interested in interplay
them. 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.com
Like · Comment · Share
Like · Comment · Share
Automated Testing shared a link. Automated Testing shared a link.
February 1 February 1
http://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 1
http://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
32. Automated Testing shared a link. Likes
January 31 2013
https://www.scss.tcd.ie/Matthew.Hennessy/teaching/2013/slexter
nal2013/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 30
Like · 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 29
http://se.inf.ethz.ch/old/projects/tobias_widmer/
Like · Comment · Share
Like · 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.pdf
http://bertrandmeyer.com/2012/04/11/domain-theory-the-
http://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-737.pdf
forgotten-step-in-program-verification/ www.cl.cam.ac.uk
Bertrand Meyer's 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, absent
Like · 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.org
http://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ödel's
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 28
Like · Comment · Share
http://www.computational-semantics.eu/
Automated Testing shared a link.
Computational Semantics with Functional
January 28
Programming
www.computational-semantics.eu
http://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 28
Like · Comment · Share
http://answers.yahoo.com/question/index?qid=1006030700479
Automated Testing shared a link.
January 28
http://en.wikipedia.org/wiki/Lambda_calculus