Tuesday, April 30, 2013
What is hard disk and what is its purpose?
Posted by Sunflower at 4/30/2013 08:48:00 PM 0 comments
Labels: Access, Benefits, Capacity, Characteristics, Data, Discs, Disk Drive, Drives, files, Hard Disk Drives, HDD, Information, Operating System, Performance, Random, Read, Storage, Store, System, Write
Subscribe by Email |
|
Defect handling - Planning how to find bug bugs earlier in the cycle
One of the biggest problems with such defects is the time period in which many of these defects are found. Defects which have a high impact are typically found in the latter part of the cycle, primarily because a lot of the functionality comes to be ready in the latter half of the cycle. If there are a number of features in development, the earlier parts of the cycle see the development of these features. As time progresses, these features start getting into a good shape and the integration points of these features start getting worked on. This is the time when the workflows of the product start coming into shape, and that is when the testing team will be able to check the integration of these features into one another.
The testing effort at this stage is able to detect workflow problems, as well as design flaws where the type and amount of information flowing from one feature to the other may have issues, and not happening as per design. These defects take more time to analyse, and may also need teams from the different feature areas to collaborate to figure out the defects. As a result, the time involved to fix these defects is more, and this gets problematic when the number of such defects found is more than expected, which means that the time that the team has to fix issues may be less. Further, the later that such defects are found, the greater the risk that the fix for such defects can cause other problems; because of such risks, defects found later are at a greater risk of not being fixed.
What do you do ? Some of the issues may be more problematic to solve. Feature development work focuses on the specific features in the earlier part of the cycle, with the focus shifting to integration only later in the cycle, so changing the timelines for this may be more difficult. But, it is possible to do studies to estimate the amount of bugs that will be found (far easier of this is just a new version of the product being developed and there is historic data), and then plan for more time for the same. At the same time, a number of problems typically are found out if there is inadequate time spent during the design and architecture phase and teams should ensure that they are spending the right amount of time on these activities. Further, as the feature is being developed, workflow or integration related flows should be tested, even if integration has not been completed. An example of this can be done is to prepare a software harness which will allow the input and output of data from the various features even if the integration has not been done. Doing this ensures that a number of the defects that are found post integration can be found earlier in the cycle, and this saved a lot of time and effort.
Posted by Ashish Agarwal at 4/30/2013 05:58:00 AM 0 comments
Labels: Bugs, Defect Management, Defects, Risk Management, Software development, Software Process
Subscribe by Email |
|
Monday, April 29, 2013
What is cache memory?
How is cache implemented?
Posted by Sunflower at 4/29/2013 05:54:00 PM 0 comments
Labels: Access, Application, Cache, Cache hit, Cache Memory, Cache Miss, Content, CPU, Data, Datum, Efficiency, Memory, Operating System, Performance, Processor, Requests, Source, Storage, URL, Web browser
Subscribe by Email |
|
Sunday, April 28, 2013
What is fragmentation? What are different types of fragmentation?
What is Fragmentation?
- The external fragmentation
- Internal fragmentation and
- Data fragmentation
Types of Fragmentation
Posted by Sunflower at 4/28/2013 10:13:00 PM 0 comments
Labels: Algorithms, Allocation, Chunk, CPU, Data, External, Fragmentation, Inefficient, Internal, Memory, Performance, Principle, program, Space, Storage, System, Types, Wastage
Subscribe by Email |
|
Capturing information from within the product - Need to balance the privacy perspective
Now, this card needs to work on many different operating systems, needs to work at machines with different performance parameters, and also needs to work on different browsers. How do you get this sort of information ? Well, you can get this information from users in the terms of mailers, surveys, questions from within the software, and other such ways, or you can get it from the users own machines. So, Lisa did some discussion with her team, and came out with a technical solution - there will be some tracking devices built within the software that will, on every launch, report back to the company about the platform and browser that is there on the machine of the user and this data will be located in a database where this information can be mined.
In the next version of the software, this process worked out real well. The team was very enthusiastic about the capabilities of retrieving all sorts of information from the user's machine and starts building more of this. Lisa also got swept along in this tide and was an enthusiastic collaborator about trying to determine what more information can be mined. And all of this was done with the best of intentions. So, there was a need to know which printers the users were having, since this would allow the determine which printers were most often used (the belief was that more customers would be using low end printers given the profile of customers), and this would allow some more optimization of the printing capabilities.
Piracy was a big problem, so there was a thought about tracking the serial number on the user's machine, and also getting the machine name and any other such information that would allow identification of the user. Somebody had a bright idea about trying to determine whether the customers were also using a rival software, which was not easy to track, but they managed to do it by searching the registry for the other rival software. By this time Lisa was getting a bit nervous, all her instincts were reporting problems.
And then the whole thing blew up. A user who had a personal firewall and a bit of paranoia found that the software was causing a number of hits on the firewall, and decided to investigate further. As he investigated and reported, other users also started getting curious and doing investigations, and also reporting more such issues, and also raising questions on the user forums. The legal department of the company stepped in and wanted to know what all information was being tracked, and why (WHY in capital terms) they were not consulted. It turned out that there are privacy implications, and every legal team has a list of items that they find fine to track, and other info on the user's machine which absolutely cannot be tracked. The tracking of a rival installation was way beyond what was permissible, and caused a lot of problems when it was discovered.
The company did a mea culpa (not fully though), and also promised that they will ensure that at the time of installation, there will be a note that will let the users know about what all information is being tracked, and also provide the users with an option about tracking such information (this language was all couched in very positive words, but it was far more than what the team was doing). So, when you start trying to get info from the user through your software, make sure that what you are doing is above board.
Posted by Ashish Agarwal at 4/28/2013 12:50:00 AM 0 comments
Labels: Information, Legal, Legal checks, Legal processes, Privacy, Privacy Concerns, Tracking, User tracking
Subscribe by Email |
|
Saturday, April 27, 2013
Learning - Setup groups within the company and share experiences - Part 1
So what is this post about ? In any decent sized organization, whether it be a product development organization or an organization that works on projects, a number of teams do similar kind of work and hence are in a position to learn a lot from each other. Even though their products or projects may be somewhat different from each other, the level of difference with each other would not be significant enough. As a result, if there was coordination (or rather, let us not use the term of coordination, rather let us talk about how they can share their experiences), then the teams and their managers can learn a lot about how each team handled some situations which are common.
This is best served through an example. We had a situation where we were running into problems with an external vendor (not even a vendor, more like a open source component maker who would post new versions of their component with updates and notes on a regular basis, every 6 months or so). We did not have any clarity as to what were the contact details of the key people in the component maker, we did not know details about the kind of testing processes that they had, and so on. This was causing us problems, since the component was important to us (it saved us a lot of money that would otherwise be needed to buy a professional software that did the same function).
At that time, we recollected that another team in the company was doing something similar in terms of functionality. We did a quick engineering discussion with them, and realized that they were far ahead of us in terms of figuring out these kind of details that we were looking for. They had knowledge of the key people in that open source project, and they had discussions which provided them far more comfort in terms of the testing processes and the level of quality in the released version of that component.
Because of this particular discovery, we had a senior engineering person within our group interact with a similar person from their team on a regular basis for these kind of discussions. We also created an email group with the specific name of that component, and made it open for other people within the company to join. The resultant was that over a period of time, we discovered 2 smaller project teams within the company that were also looking to evaluate such a component, and they got a head start based on the discussions that they had with us and with the other teams.
Now, if you do such discussions, not only for such an example, but for other cases where you are running into problems, such as problems with the latest seeds of MS Windows or OS from Apple, or where you are running into other problems, such groups can provide a lot of help, since it allows people to share issues and share solutions. However, it takes time and effort to do this kind of sharing and coordination, even though the rewards that you get from such sharing can be well worth it.
I will add more about this in the next post in the series (Sharing experiences within the company - Part 2 - TBD)
Posted by Ashish Agarwal at 4/27/2013 08:28:00 AM 0 comments
Labels: Collaboration, Coordination, Learning, Learning from others, Sharing experiences, Software Process, Software Process Improvement
Subscribe by Email |
|
Friday, April 26, 2013
What is the cause of thrashing? How does the system detect thrashing? Once it detects thrashing, what can the system do to eliminate this problem?
How can a system handle thrashing?
Posted by Sunflower at 4/26/2013 03:32:00 PM 0 comments
Labels: Application, Causes, Communication, CPU, Crash, Data, Detect, Instruction, Memory, OS, Page Fault, pages, Paging, Performance, Physical, program, System, Techniques, Thrashing, Utilization
Subscribe by Email |
|
Thursday, April 25, 2013
What is the difference between Hard and Soft real-time systems?
- The
hard – real time operating system and
- The
soft – real time operating system
- The
hard real time operating systems produce less jitter while producing the
desired outputs. On the other hand, the jitter produced by the soft real time
operating system is quite more when compared to its hard real time
counterpart.
- The
thing that distinguishes them is not the main goal but rather the type of
performance it gathers i.e., whether hard or soft.
- The
soft real time operating systems have been designed as such that they
can usually meet the deadlines whereas, the hard real time operating
systems are designed in such a way so as to meet the deadlines deterministic-ally.
- The
hard – real time systems are also called as the immediate real time
systems. They are bound to work within the confined strict deadlines. If
in case, the application is unable to complete its task in the allotted
time, then it is said to have failed. Some examples of the hard – real
time operating systems are: anti-lock brakes, aircraft control systems and
the pacemakers.
- Hard
real time operating system are bound to adhere to the deadlines assigned to them.
Missing a deadline can incur a great loss. As for the soft real time
operating systems, it is acceptable if the deadline is missed such as in
the case of the online databases.
More about Real time Operating System
Posted by Sunflower at 4/25/2013 10:01:00 PM 0 comments
Labels: Application, Deadline, Efficiency, Hard, Hard Real time OS, Input, Operating System, OS, Output, Performance, Real time Operating system, Resources, Results, soft, Soft Real time OS, System, Tasks, Time
Subscribe by Email |
|
Wednesday, April 24, 2013
What is multi-tasking, multi-programming and multi-threading?
What is Multitasking?
What is Multi-Programming?
What is Multi-threading?
Posted by Sunflower at 4/24/2013 07:30:00 PM 0 comments
Labels: CPU, Data, Devices, efficient, Memory, Multi-programming, Multi-tasking, Multi-threading, Performance, peripherals, Process, program, Resources, System, Tasks, Threads, Time
Subscribe by Email |
|
Learning about external dependencies - getting information from external teams by getting on their lists
Near the beginning of the year, we started getting customer complaints that the product would just not work with a particular social networking site. They would try to use the product to send it, and they would get back an error that was basically saying something like: "Resource not found". This was reported on the user forums that we had for our product and once one person reported such a problem, others were able to confirm. This was good since it confirmed that it was not just a problem with one user, but also meant that people who were not using that particular feature also started feeling unhappy.
However, what really caused us a lot of problems was when one of our more technically oriented users pointed out that this could be because one of the API's that we were using was no longer in existence, it had replaced by another such API. And even worse, the user pasted the relevant notice from their technical forum where it was mentioned, pointed out the tweet where it has been pointed out, and so on. All this was repeated by more users who started making fun. How we had not bothered to keep up, how our problem was affecting a product that they were using, and whether we could finally get our thumb out and do something. Boy, was it embarrassing, and the problem was, nobody had much of sympathy for us. After all, we should have been on the ball, and should have known that the API was going to be replaced. The social networking platform had been talking about that for around 6 months now, so that people had enough time to do something.
The good news was that we could replace the API without needing to make a change in the application that users had, since the API call would in turn look at a piece of code on our website, and we were able to redirect them. It slightly decreased speed by around 5 seconds, but that was acceptable rather than try to roll out a patch to all the affected users.
Another policy was set in place as a result of this. From this point onwards, any external technology that we used was tracked in a database where we also tracked the site of the technology, we tracked all their accounts (twitter, facebook, forums, email) and once every month, we had a person assigned to review these so that if there was any notice, we could something rather than finding out later. It was good that we did so, since we ran into a possibly bigger problem later, but we were prepared and handled it so well that nobody noticed any problem.
Posted by Ashish Agarwal at 4/24/2013 07:20:00 AM 0 comments
Labels: Communication, Communication Practices, Email, External Component, External Documentation, Facebook, Handling risks, Information, Software development, Twitter
Subscribe by Email |
|
Tuesday, April 23, 2013
What is Throughput, Turnaround time, waiting time and Response time?
What is Throughput?
What is Turnaround Time?
What is Waiting Time?
What is Response Time?
Posted by Sunflower at 4/23/2013 06:57:00 PM 0 comments
Labels: Communication, Complete, CPU, Data, digital, Factors, Network, Operating System, Packets, Performance, Processes, Response time, Submit, Tasks, Thread, Throughput, Turnaround time, Waiting time
Subscribe by Email |
|