Methods of Software Development Karl Lieberherr Spring 2007
Methods of Software Development Karl Lieberherr Spring 2007
A list of possibilities (from the web) • method: a way of doing something, especially in a systematic way. – Statistical methods in Software Engineering (reliability and risk) by Singpurwalla and Wilson – Software development processes: each process as a method – Formal methods: using mathematical approaches to solving software problems (from requirement to implementation level)
A list of possibilities (cont. ) (from the web) • method: a way of doing something, especially in a systematic way. – object-oriented methods of software development • • generic programming by contracts programming with meta classes design patterns – aspect-oriented methods of software development • joinpoints, pointcuts, advice
What is the goal of methods for software development? • modular designs, good separation of concerns • easy to understand modify • efficient implementation • etc.
Methods of software development based on relations and constraints • Examples: – design analysis: state machine S over structured states, violating the expected property P. S and !P – code analysis: check a procedure against its declarative spec. – test case generation from data invariants – component assembly and installation • Use relational constraint solving engine – successful approach: use SAT solver
Methods of software development based on relations and constraints • A relational engine is also useful for other domains than software development • Other Examples: – course scheduling – network configuration – biology: haplotype inference
Build our knowledge from the ground up • SAT and CSP solvers • How to express relations and constraints in a way most suitable for the software developer and other users? Possibilities: Alloy, Kodkod language, etc. • How to translate relations and constraints to SAT and CSP
SAT and CSP solvers • Use methods of software development to develop SAT and CSP solvers. • Methods we want to use: – implementation modeling using transition systems – based on Pragmatic Programmer Tips: • • • Write code that writes code Design with contracts Configure, Don’t integrate Minimize coupling etc
- Slides: 8