The Role – while developing software


The Role – Why it is important while developing software

Now days, I am developing a software. …
Seriously defining… designing….implementing…..testing …doing all
I have adopted an incremental approach…. It is easy to see and feel progress in this way….feel satisfied I have done so much… some times feel flattened …so good … so beautifully I have done it…Easy to impress end user…
My approach of working is… if I would have used this software for my purpose… will I like it to work like this in such circumstances….. If not I correct it till I get satisfied yes this is OK now…
Unconsciously software development life cycle starts running in your mind …and consciously you are aware of each and every step of it…each and every theory of it… its tools in all phases…its metrics…its complexities all are running just in your mind. You are software engineer…..at this moment … trying to find out important objects…..objects related to problem definition,….. objects that are  related to the solution sets.. there relationships….there sequences of occurrence in the scene of working…..  you try to design database…create relational tables…. create entity relation ship among the tables…go for state diagrams.. no option should  left unattended in the working ….oh create DFDs ….after all.. it is important to gather flow of data correctly… and the most important is the target time…..till then this whole analysis and design part should get over…..your creativity get punched because of this time target… any how if you are matured enough…..then this won’t effect much in your tendency of creativity while handling all this
You can understand definition part is OK as if it is a fixed problem. still it requires lens of powerful experience as focal length so that you can visualize clearly every inch detail of it…. After all you are going to design solution map for the problem.. if problem is not seen clearly it is difficult to see solution path for the same…
For all this you try to find out the tool ... lets take help of UML …Install UML …. Read readme first… this is good tool for designing ER diagrams, state diagrams, sequence diagram or DFDs.. comes the language part.. anyhow you try to revive your self with the language  and do all this ….your nature of doing perfect things….and your creative tendencies of building innovative ideas all get the surface with the help of this tool ..you get indulged into learning language and side by side doing your things..  its easy …and you do it….but every time you switch over from learning then doing then learning then doing.. In between you are one shuffling your role of action ….leaving one as you have to play different now say now you are implementer… so

As implementer – software developer ….
Ah its over.. Let us  implement it …thinking that I am  perfect in vb.net…. also it is strong with its tools… its flexibilities… provide good set of related intellisence for all components…. Many times codes are auto generated…. Even help in while writing  codes….good good….I will use this as frontend….. sql server will be better for handling backend database…… but coding for microcontroller… c is better for this… but it is avr microcontroller …supported c will be better from atmel avr studio…
First make the software for the front end… start working
Even you must be familiar with the nature behavior of any component .. any tool which you are using for doing something specific… which will be better ..perhaps combobox will do better then the listbox or text box….. do I use menu strip or button will serve my purpose…… you must choose carefully your components forms languges database support ….after all you are software developer now… and you have to develop perfect software obeying lines of design which is telling perfect solution for the problem definition you get at first and from which you try to drive this design…. ……….
            End user is never satisfied.. after every now and then he request for new thing…. You are not asking Subject option here… I need it here only… Any how… my code is not that difficult… every object can be easily and independently handled… Subject information can be easily fetched when asking about class details … No problem.. one label, one checkbox which is bounded with table subject independently to this  will work.
My god …. New request has been received from the end user at such an advance stage … when everything is almost packed up… and is working fine…. Customize the software….
Previously you wanted to work the software in a specific way only … but now you say this is not the way…. we want an option where we can customize the software to feed the different needs….
Means you want a completely new hierarchy of classes of at least four level deep in front of whole software which is already coded. Organizational detail …ok fine this independent nature of information but is must and should be fetched at the very beginning when you first start working with the software… Next is department, then courses running by each department, then all subjects list that are taught in the course of that department. Course may be of type semester, yearly, quarterly, weekly or daily….. So many courses of heterogeneous attributes… not difficult but cumbersome to handle and thus need …. extra vigorous effort to draw and then actually make such an big umbrella over already made one. Any how at least I need create four new tables to handle this four level deep hierarchy above all my software… total tables are now 13 in the database including views. Size of some columns like class Id will be increased. This change has to be incorporated.  tblparticular require little amendment – I should add one column for subject information in this. This is because I must have this information when I am viewing attendance of that class for this subject…Software developer inside me switched its role and become software engineer again … thinking to handle this new huge puzzle… New strain…. software engineer inside me was challenged if this is maintainable software… yah I said and started working… I know this is going to take time….. Again recalled Jalote’s  “An Integrated Approach to Software Engineering” which told at very beginning where cost of effort to accept new change at this level is very high when it is at maintainable stage of the SDLC cycle. I was not worried….I was sure I can do it… I have followed the object oriented approach… tried to keep each module as cohesive in itself as possible….. still I had to work hard ..track each process wherever change can affect it
A strategy for software testing is developed by the project manager, software engineers, and testing specialists.
I am tester Now….  want to see if this is all working the way it should desired to work to provide desired results as  end user wanted…Immediately I got remembered that statement of Boehm given in the book I read once  ..” Software engineering – A practitioner’s approach ”  by Roger S. Pressman. Statement was
            Verification:    Are we building the product right?
             Validation    : Are we building the right product?
How smartly it is defining the role of validation and verification…
To see that I am building the product right … I tried to switch quickly from one function to another to check if it really doing the same thing for which these functions are created.
For checking the right product of course I concentrated on the flow and sequence of working and its outcomes.
Did unit testing, created test cases by putting the relevant data in the database... Check behavior of boundary values… often some functions and modules were highly coupled on a single button …Ah remove this otherwise this all will make mess of the whole software. After all it is only one person who is designer as well as developer as well as tester…. It was easy to switch over from one role to another person was one but role were three so are they interchangeable…So I did…. There was no communication gap no meeting of staff was required so I did  specially ok button of customized form was so burdened taking charge of functioning of four different groups…..This was done so…as all the groups organization, departments, courses, subjects were related to each other in a hierarchy. Oh this is too much… I scrutinize the whole mess created by me it self. Created independent ok button for each group…. Now they were four groups in a form with there own ok button still relating each group with another when required. Ah mess is clear… but customize form is highly burdened – written 1675 loc not auto generated at all. After all, all this information I think is better to be available at one page …. This is so to provide facility that user can evaluate whole scene of information at once by seeing whole things there only….
I was testing each components behavior individually… then I test them as a whole in a integrated form….Lets backtrack the test. First I started testing from first point till last then I reversed the direction….I started from the back ..if it gets the information the same way as before… Yah.. Its working….
Adding test data in the software is, itself a very difficult and cautious job….you must have at least one figure satisfying and one figure that do not satisfy the condition in each type of case. All the cases that should be tested must be in your mind. How it is behaving when struck up with errors and exception.   Just, little example…. Report is generating displaying well all the figures in place…..It is worksheet showing close button….Very obvious if user do not want to work further… unconsciously click close button….. No treatment has been given to this close button….. because, in the process this was not the time to close it… means either close button should not be disabled at that time or give it a treatment so that it cannot misbehave with the consistency of the figures….. let us switch the role…. implementer inside me located the problem area …..it took one day…..then searched help, solution material from net how to disable this close button or check its behavior….. one another day…….. and found the exact solution in the next day……. If you are lucky enough and alert too, you can find the solution in some hours only other wise it can take so many days…..
There is one most important thing, was to test if software is successfully working and maintaining consistency of the database well. E.g. is cascade updating of the keys in the database are properly handled. …I thought in this case, It is better to handle manually rather than to leave it to backend software to take care… different cases require different behavior… So I did the same created separate module to handle cascade updations.
‘Send to device’ process is working fine. Information is received correctly by the device and is being written in the database correctly…. But what happens…. It is not viewing in the report …. Let see the view process… Oh got it now viewing report requires two more parameters user Id and subject code. Previously class Id, date and time were enough to generate the report. But  according to new amendment in the software need that, report is generated for this particular user for this subject. Made corrections…. Yah It is working…..
In between you are none of the above … You are required by the society… by… your family… or by someone whom you cannot ignore or by something that require your attention immediately…. So now you are off from all of the above scenes. Your role has been changed completely according to your social needs …So work stops … office closes…..After long time all that over you back again to your one of the above role… things are changed…. Though all was well documented … date wise all backups were intact …Things were as it is as you left there still Now every thing you see there is new odd strange to you like some foreign language that you do not know at all .... because you have forgotten all that … you need time to revive all that again as before… you try to recognize your things…. And tempo built up as time passes, you start it again as before….  


And you comeback
i …! what is this …. It is adding student details…. but message appeared on this label is not relevant… I got remembered before leaving…. while modifying the code at the user request… I tried to modify the option where you can choose,  if it is a yearly course or a semester  course …For semester course it is giving right message but for yearly course also it is giving the same message… lets correct it… so that it takes the right value about course type period…. There are so many points like this… I know I can manage it…. my approach is systematic… and I did it…. But the point is all these things should be in your mind…. What more amendment you are doing in the software and at which part of the software it is going to affect…. Carefully think about amendments as designer and carefully do it as implementer …. And carefully check it as tester…. You are one… your roles are many….. no communication gap is there…. Since what you are thinking that you are doing … and what you are doing ….is what you are testing….I find this is a big advantage when you are one but you are handling all the roles while developing software……. But this is a disadvantage too… be cause now you  can not take advantage of the things where all independent modules can be ready simultaneously and thus reduces time of development ten times ..even hundred times.