"Software engineering is the branch of computer science that creates practical, cost-effective solutions to computation and information processing problems, preferentially applying scientific knowledge" says Mary Shaw of Carnegie Mellon University. If thats so, why do we programmers always document so irrationally as thought it is a formality? Wake up, software engineers.
Models of Software Systems
Thursday, December 29, 2005
Nobody would claim that debugging computer software is easy: all too often it proceeds by trial-and-error experiments in which programmers examine the behaviour of the system and form hypotheses that could explain what they see. These problems are exacerbated when developing distributed, peer-to-peer or multi-processor applications, or when unreliable network links form part of the system under test. Environments for pervasive computing take this to an extreme, allowing user-supplied code to run or migrate within and around the network.
Timothy L Harris, University of Cambridge.
Software is complex. Involves several million lines of code. For some, we cannot execute unless we are sure that it behaves exactly as we intended; not a little more, not a little less. Life is at stake! So, first understand and agree upon
1. What you really intended?
2. What have you developed?
Now analyze if there is even a little more or little less. If you are sure that everything is perfect, then call yourself a software engineer.
Take my word, you cannot do it unless you know some mathematics; for there is hardly any program that does not use numbers.
In the field of software engineering, the attempt is always to improve upon cost, time and quality. The size and complexity of the project and the need to have many people working together makes two things inevitable: Communication and Verification. Right from requirements to code, many things have to be specified and verified. If there is one single activity that we repeatedly do over and over again in all phases, its nothing but documentation and verification. Success of a project hence depends not on how good we are at coding but on how smart we are at documentation and verification and there lies the context of modeling software systems.
Developing reliable software depends not on writing flawless programs but on how good we are at communication.
Steve Easterbrook, University of Toronto.
Time is critical. We have limited time to document. Reader has limited time to comprehend. Can you model your thought to serve the purpose of communication or analysis within this time constraint is the question.
This world is fully observable. Just that we do not always know how exactly to record, communicate and analyze what we just observed.
Venkatesh.
The power of cognitive artifacts derives from the power of representation. The form of representation most appropriate for an artifact depends upon the task to be performed. The same information may need to be represented differently for different tasks. With the appropriate choice of representation, hard tasks become easy.
Norman, Chapter 3 – The Power of Representation.