Advanced Topics in Software Engineering
This was a full semister course taught at IIIT-Hyderabad along with Dr. Vasudeva Varma. We explored the application of systems thinking to software engineernig and software architecture, the semantic structures of design and problem solving.
In this course, we proposed that Software Engineering is perhaps the only discipline whose aim is to teach problem-solving, not to explain how to solve a particular problem. Programming is problem-solving. We defined that architecture is programming of a different kind. Architecture is programming for the highest level virtual machine. We basically disagreed with many current architecture methodologies and frameworks – in the sense that most of them approach the problem from a wrong end. Many methodologies attempt to decouple programming from architecture and make architecture into a glorified boxology.
In this course, we proposed a system of design. We treated the entire life cycle of software construction as a design problem – starting from requirements to programming, and tried to formulate a set of design techniques that apply at various dimensions of problem solving. The first dimension is the dimension of semantics – this can be roughtly equated with ‘conceptual architecture’. The main problem is to ‘transform’ the meaning of the domain into a set of information/computing problems. The second dimension is the dimension of structural engineering – this can be roughtly equated with ‘solution architecture’. The main problem in this dimension is to take the computing problems and solve them using the four engineering characteristics – RASP, and establish the quality of the design.
The material for the course was constructed almost hand in hand with each lecture. We did not know exactly what we were going to teach in each lecture at the beginign of the course. Each lecture gave us ideas about the next lecture. So, most of the material is a transcription of the audio recordings. We are still in the process of converting the audio files into text transcripts, only a few of the lectures are available in document format.
You are most welcome to download these documents, presentations and give us your feedback.
Some of the files are created using MindJet MindManager. You need to download a free MindManager Viewer to view these documents.
- Lecture-1: Introduction to the Course.mmap
- Lecture-1: Audio Transcript
- lecture-2-software engineering and architecture.mmap
- Lecture-4: Introduction to general systems thinking.pdf
- lecture-6-systems and structures.pdf
- Lecture-10-11-language interfaces.pdf
- Lecture-13-16: 115problemsolvingtechniques.pdf
- notes-what is oasis framework.mmap