While building software for large projects with zero defects is virtually impossible, the quality of the software can be determined by the lifetime of a defect – the time when a defect is identified, fixed and released. A defect in a well-isolated module can be easily identified, root-cause analyzed and fixed in a short amount of time than a highly cohesive system.
In addition, adopting an agile development methodology helps reducing the lifetime of a defect drastically. This is possible by releasing well-tested software in short bursts or iterations and delivering higher quality software compared to other development methodologies.
In an agile project, tests are written before or concurrently while producing the code. Therefore, all code that is delivered for testing is tested code. In most agile projects there are four primary layers of testing:
- Unit testing, also called development testing.
- Acceptance testing, also called functional testing.
- Component testing.
- System and performance testing – integration testing and testing for non-functional requirements.
In agile methodology, the primary goal is to test all these layers during the course of iteration.
Continue reading “How to reduce the life of a software defect?”
An agile Solutions Architect is someone who values:
- Individuals and interactions over processes and tools.
- Building the software collaboratively with the development team over producing comprehensive documentation.
- Designing a flexible solution anticipating future requirement changes over current requirements
- Tapering down the flexible solution (described above) to meet time and budget over a solution that is build like a glove from ground up to meet the current requirements, time and budget.
While there is value in the items on the right, a pragmatic solution architect values the items on the left even more.
In addition, to be agile, a Solutions Architect should:
- Keep the architecture documentation alive by constantly updating it and keeping it current to reflect the current state of the architecture.
- Welcome requirements change late in the development cycle to support the development of a product in a constantly changing environment.
- At regular intervals reflect on how to make the architecture more effective and fine tune it to adjust its behavior accordingly.
Documenting the architecture and designs in a centralized repository (such as MEGA) is great, but all those diagrams is meaningless if the Solutions Architect does not proactively work with the Development team to help them understand the vision and patterns evangelized in the blueprints. The most efficient and effective way of conveying that information is through informal face-to-face conversations.
Sometimes my Mac Book Retina Pro’s fan goes on high for no apparent reason. I checked the memory and CPU usage and I cannot find a good reason for the increased RPM of the system fan inspite of adequate ventilation.
Apple has this to say about this issue, “It is possible that the SMC could encounter an issue that may cause unusual system behavior typically related to the symptoms described below. In some cases, resetting the SMC may be the only correct method to resolve the issue”.
Apparently, the only way to solve this is as follows, which to my surprise I found it works.
- Shut down the computer.
- Plug in the MagSafe power adapter to a power source, connecting it to the Mac if its not already connected.
- On the built-in keyboard, press the (left side) Shift-Control-Option keys and the power button at the same time.
- Release all the keys and the power button at the same time.
- Press the power button to turn on the computer.
Note: The LED on the MagSafe power adapter may change states or temporarily turn off when you reset the SMC.
RTO & RPO are two non-functional requirements that affect the business continuity management. While RTO has much broader impact, both of these factors should be determined objectively based on the need and cost factor in mind.
I am currently reviewing non-functional requirements for a project I am working on and the topic of Recovery Time Objective (RTO) and Recovery Point Objective (RPO) came up. While both RTO and RPO talks about business continuity, there are subtle differences.
RTO determines how quickly a system can recover in case of a disaster. The shorter the time span, the more investment is necessary to recover from an incident. For instance, if the RTO is 60 minutes, backup systems should be ready for a seamless switch over. System configurations should be transparent & decoupled to enable this – meaning, no hard-coding of servers in configuration files etc. Systems should also be replicated at memory and database level to achieve this. Compare this with an RTO of 1 day which provides enough time for switch over manually and the investment is very low. Ofcourse, for today’s production systems an RTO of one day is unacceptable. The point is, if your client is bent on reducing the RTO, they should also be ready to loosen up their purse strings.
RPO on the other hand indicates how much work can you affort to lose. For instance, if your system writes to a data store, is it tolerable to lose one hour of work, or four hours of work? The number of hours here is the RPO and helps formulate a strategy for backup. If your RPO is four hours, then you need to perform backup atleast every four hours, but if your RPO is one hour then your backup strategy should match. Ofcourse, this will increase the infrastructure cost.
Obviously, RTO has a much broader boundary as it impacts business continuity management, while RPO is focused on backup frequency. Regardless, these number should be determined objectively based on the need and cost factor.
Renaming a file on a Mac is not so obvious; plus an Automator script to rename files.
One would think that renaming a file on Mac must be easy given the user-friendliness of Mac OS. Turns out, it is not so obvious.
To rename a file in Finder, you click on the icon preceding the file name once and then click on the file name again. This will highlight the file minus the extension. Now you can type the new name to rename.
Having said that, I was able to create a Automator script that will pop-up a dialog to rename either part of the file (base or extension) by right-clicking and selecting the Services option.
Following is the snapshot of the Automator script.
MongoDB is an open source, document-based database management system. Designed for the data and scalability requirements of modern internet applications, MongoDB features dynamic queries and secondary indexes; fast atomic updates and complex aggregations; and support for replication with automatic failover and sharding for scaling horizontally.
Explores the difference between the leading document databases, CouchDB and MongoDB
Excerpt from Mongo DB in Action – “Few databases identify themselves as document databases. The other well-known document database apart from MongoDB is Apache’s CouchDB.
CouchDB’s document model is similar, although data is stored in plain text as JSON, whereas MongoDB uses the BSON binary format.
Like MongoDB, CouchDB supports secondary indexes; the difference is that the indexes in CouchDB are defined by writing map-reduce functions, which is more involved than the declarative syntax used by MySQL and MongoDB.
They also scale differently. CouchDB doesn’t partition data across machines; rather, each CouchDB node is a complete replica of every other.”
I picked up a DVD titled, “Animal Passport” from Redbox the other day to watch with my kids. It is a documentary profiling various animals in different continents. With the discussion about continent we have opened a can of worms. There is a lot of confusion about what makes a continent. There are currently five models (as per Wikipedia) to describe continents. The following is a list of models from http://en.wikipedia.org/wiki/Continent. While none of this discusses the sixth model which names Oceania to hold the countries of Australia, New Zealand, New Guinea and the other sundry islands or the seventh one which substitutes Australasia for Oceania which includes Australia (as we know it) and New Zealand (Note: Asia is not included in Australasia even though the name contains asia).
Australia – the continent that started this whole discussion seems to hold only Australia by itself if you go by Model 1 (7 continents) – the model I learnt growing up and one which is based on the logic of dividing continents by continental shelf. So the logical question is what happens to New Zealand? It turns out that this belongs to the continent of Zealandia (because it is in a different continental shelf). But, wait a second, where is Zealandia?, you ask. Unfortunately, Zealandia is a submerged continent, so you cannot see it. Convenient, eh!
So it appears the concept of continent is different depending on which continent you are from 🙂
“The seven-continent model is usually taught in Western Europe, Northern Europe, Central Europe, Southeastern Europe, China and most English-speaking countries. The six-continent combined-Eurasia model is preferred by the geographic community, Russia, Eastern Europe, and Japan. The six-continent combined-America model is taught in Latin America, and some parts of Europe including Greece, Portugal and Spain. This model may be taught to include only the five inhabited continents (excluding Antarctica)”
If that was fun, I will let you look up the idea behind Super Continent which now only has one member, “Eurasia”.
In an earlier post, I described how to use cups-pdf to print documents directly to PDF in Ubuntu 9.04. While playing around with cups-pdf, I discovered kword. This nifty piece of editor software allows you to convert PDF files to a format that could be edited. You can then convert it to PDF format again by ‘printing’ it to PDF using cups-pdf.
To get started, you have to install kword using the following:
sudo apt-get install kword
Now you invoke it using:
Applications -> Office -> kword
Here, use the File -> Import feature to import any PDF file into it. Happy editing!
Note: If the PDF is password protected, kword allows you to enter the password to decrypt it.