Friday, August 26, 2005

Search and Browse information not data

Currently when I search for some information on the net, Search Enginges definitely do a good job and show me the numerous (37999 results matched !) results.

However, when I start reading each of the links in the top 10 list, I see that most of them have information overlap. I spend 10 mins reading each page, only to find at the end of the 10 links, that the information I have really gained is 1.75 pages may be.

Now, search Enginges hog the bandwidth of the Websites and download the complete data. However the real power of this complete data is not harnessed.

If there is a search engine which has a reader attached to it, which can show me the snippets or excerpts of the information on the page or atleast cluster results based on search content overlap, that would be cool.

Now Challenges for this –
What exactly is information and how do you find its overlap?
Is this computationally feasible?
Adding another layer between search engine and the documents (reader layer), will that be usable?

Friday, August 19, 2005

CVS DB tool + Software Inspection ?


I saw today: http://www.cwi.nl/projects/renovate/javaQA/intro.html
The jCosmo code smell browser detects code smells in Java source code that can be used to review the quality of the analyzed code and indicate regions that could benefit from refactoring.


Questions for ME:
Can Inspection be improved by appending Empirical Analysis techniques with Static and Dynamic Software Analsysis?

More generally can knowledge from “Mining Software Repositories” help Inspection and suggest Potential Spots for Refactors??

Cyclomatic Complexity


Summary:

References:
http://www.sei.cmu.edu/str/descriptions/cyclomatic_body.html

Saturday, August 13, 2005

Friday, August 12, 2005

Architecture based Analysis

Summary:
As Software engg tries to redefine itself more and more as "re-use engg" we feel the necessity of modularization and component based development.

Estimating quality attributes of a system like performance, reliability, security and others in advance of actually building the system is important. This could be based on the individual components that compose the system. Architecture could be the best place where we could introduce such analysis and then reason about the system further.

Models include - Reliablity based on State-models, Markov Models, Poisson distribution of faults in modules and the interfaces of module interactions. Queying Network theory for Performance etc.

Need lot of exploring in there, but these analyses are what improve the necessity and significance of architectures and also makes architectural formalism worth it.


References:
Arch based analysis of Performance, Reliability and Security of Software Systems: Vibhy Saujanya Sharma and Kishore Trivedi
Architecture based performance analysis: Bridget Spitznagel and David Garlan

Tuesday, August 09, 2005

Monday, August 08, 2005

Problem Frames

Context: Software Requirements & Specifications, Software Design, Problem Analysis

Summary:
When you analyse a problem you see what kind of problem it is, and identify the concerns and difficulties you will have to deal with to solve it. Problem analysis takes you from the level of identifying the problem to the level of making the descriptions needed to solve it. But most realistic problems are too big and complex to handle in just two levels like this. Another level is needed: structuring the problem as a collection of interacting subproblems.If your structuring is successful, the subproblems will be smaller and simpler than the problem you started with, and their interactions will be clear and understandable. Then you can analyse each subproblem separately, as a simple problem on its own, and make the descriptions it needs.

Problem frames help in problem analysis and structure.
- help you by defining different simple problem classes. When you analyse the subproblem, you see what concerns it raises according to the problem frame that fits it. The frame shows you what you must do to solve it.
- problem frames help you to focus on the problem, instead of drifting into inventing solutions. They do this by emphasising the world outside the computer, the effects that are required there, and the relationships among things and events of the world

Problem frames share much of the spirit of design patterns. Design patterns look inwards towards the computer and its software, while problem frames look outwards to the world where the problem is found. But they both identify and describe recurring situations. They provide a taxonomy within which each increment of experience and knowledge you acquire can be assigned to its proper place in a larger scheme, and can be shared and accessed more effectively. So just as in object-oriented design a familiarity with design patterns allows you to say 'we need an instance of the decorator pattern here', so in problem decomposition a familiarity with problem frames allows you to say 'this part of the problem is a workpieces problem'. Having identified a part of a problem with a recognised problem frame, you can draw on experience associated with the frame.

Source:http://www.ferg.org/pfa/preface_to_problem_frames.html

References:
http://en.wikipedia.org/wiki/Problem_Frames_Approach

http://www.ferg.org/pfa/

CRC cards

Context: Software Design, Analysis

Summary:

References:
http://www.softstar-inc.com/Methodology/CRCIntro.htm

http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/crc_b/