The Leading Gaming PC Cases Are Essential To Help Protect and Power Your Extreme Gaming Hardware

Gaming PC Cases come in a variety of shapes and sizes. From rack mount to ATX tower casing, you can find one that best suits your gaming needs. Many games are played by as many 15-24 users and such games require the power of hardware to control both the graphics and many millions of instructions to the CPU with great speed. Custom Gaming PCs are the current rave with game lovers who strive for a better playing experience, adding more hardware.

With a large variety of casing, it is confusing to choose the right one. A good PC Case for gaming is one that has ample space to add more fans and USB ports. Heating is the main problem that slows down the PC and in some instances can damage it. Looks also matter a lot, an attractive and next-gen look, makes for a better playing experience.

All gaming PC cases come with microphones and headphone sockets, while the more advanced ones have fan controllers. New game players can do with two fans while some want to get additional fans to keep the PC from heating up. More advanced users utilize much of CPU power, and need more cooling.

When you are ready to buy a case, first look at the price options, compare various makes and models and see where you can save money and get the same functionality. The most accommodating case is considered the best. It will allow for more fans, and offers ample space for advanced graphic cards. Check to see, if the case can allow more than 4 fans and has at least two USB ports.

Some cases come with 4 USB ports and have space for up to six fans. If you are an advanced level player, you may want to consider one that has a fan speed controller, so you can monitor the cooling easily. Further up the ladder, there are cases that come with space for as many as 12 hard drives. Such a case, can take any kind of mother board you want to use.

The ATX are more popular these days and are like the industry standard. ATX form-factor allows for better air passage so all components can stay cool. It uses less cable, generates less heat and is more affordable. The expansion slots are easily accessible making it easy for users to add more graphic cards.

Looks wise, a clear panel looks attractive and spices up the computer using LEDs. There are also cases with bright graphics, and a modish look to add to the adventure. It all depends on your game choice, if you like a good thrill considering Gaming PC Cases that will add excitement to game time.

Posted in general | Comments Off on The Leading Gaming PC Cases Are Essential To Help Protect and Power Your Extreme Gaming Hardware

How Are Brains Different From Computers?

Ever wondered how brains are different from computers? This article shows how. Read on to find out.

Brains consist of cells called neurons and they connect with millions of other neurons and information gets transferred across connection gaps called synapses. Inside the cells data are processed which gives rise to an idea, concept or understanding.

Computers are built of hardware chips and the central processing unit (CPU) processes data after receiving them from the other chips. How it processes data conss of several steps but the main outline is that software programs are fed into the CPU and processed. They provide end result information depending on how the programs are furnished with data and what the query is that fed into the system. If some information is asked that is outside the scope of the software programs, the computer gets limited in functioning.

Brains, however, are limitless. From childhood until adulthood, the brain gets more and more developed and mature. It can process unknown data or abstract data as well and provide insights and knowledge.

The brain is more complex than the CPU and therefore, with neurons and synaptic connections, it is possible to process all kinds of information. It uses the five senses: touch, smell, hearing, taste and sight and takes in information and produces knowledge.

On the other hand, the CPU of computers takes in data from the typing of the keyboard and processes it, which is very limited. However, it is only human beings feeding data, writing software programs and making the computer like like a brain although not quite so.

The brain is still more intelligent than the CPU of computers and has yet to train the computer to have like the brain of a human being.

Yes, computers will be able to take over many tasks of human beings but without human beings, they are lifeless because humans have to give life to these computers, operate on them and have regular updating, monitoring and maintenance on them.

Just as a brain needs to rest and relax, computers will also need that from time to time but they can operate longer times than the average brain. While the brain sleeps, the computer can carry on with its duties of processing data and converting them to knowledge and information.

Summing up, although the CPU is sometimes called the brain of the computer, it is actually a misnomer because as I have outlined in this article, the brain is definitely different from the computer in varying ways and the brain has yet to teach the computer to Behave 100% like a brain.

Posted in general | Comments Off on How Are Brains Different From Computers?

Choosing the Right SDLC For Your Project

Choosing the right SDLC (Software Development Lifecycle) methodology for your project is as important to the success of the project as the implementation of any project management best practices. Choose the wrong software methodology and you will add time to the development cycle. Adding extra time to the development cycle will increase your budget and very likely prevent you from delivering the project on time.

Choosing the wrong methodology can also hamper your effective management of the project and may also interfere with the delivery of some of the project’s goals and objectives. Software development methodologies are another tool in the development shop’s tool inventory, much like your project management best practices are tools in your project manager’s tool kit. You wouldn’t choose a chainsaw to finish the edges on your kitchen cabinet doors because you know you wouldn’t get the results you want. Choose your software methodology carefully to avoid spoiling your project results.

I realize that not every project manager can choose the software methodology they will use on every project. Your organization may have invested heavily in the software methodology and supporting tools used to develop their software. There’s not much you can do in this case. Your organization won’t look favorably on a request to cast aside a methodology and tools they’ve spent thousands of dollars on because you recommend a different methodology for your project. We’ll give you some tips on how to tailor some of the methodologies to better fit with your project requirements later in this article. In the meantime, before your organization invests in software development methodologies you, or your PMO, ought to be consulted so that at least a majority of projects are benefited from a good fit.

This article won’t cover every SDLC out there but we will attempt to cover the most popular ones.

Scrum

Scrum is a name rather than an acronym (which is why I haven’t capitalized the letters), although some users have created acronyms, and is commonly used together with agile software development. Scrum is typically chosen because of its iterative nature and its ability to deliver working software quickly. It is chosen to develop new products for those reasons. There is typically no role for a project manager in this methodology, the 3 key roles are: the scrum master (replacing the project manager), the product owner, and the team who design and build the system. There is only one role that you would be asked to play if your organization is committed to using this methodology, scrum master. If you should determine that this would actually be the best methodology for your project, you’ll have to re-examine your role as project manager. You can either identify a suitable scrum master and return to the bench, or fill the role of scrum master.

Scrum suits software development projects where its important for the project to deliver working software quickly. Scrum is an iterative methodology and uses cycles called sprints, to build a working system. Requirements are captured in a “backlog” and a set of requirements is chosen with the help of the product manager. Requirements are chosen based on 2 criteria: the requirement takes priority over others left in the backlog and the set of requirements chosen will build a functioning system.

During the sprint, which can last from 2 to 4 weeks maximum, no changes can be made to the requirements in the sprint. This is one of the reasons that a project manager isn’t necessary for this methodology. There is no need for requirements management because no changes are allowed to the requirements under development. All changes must occur in the requirements set in the backlog.

Scrum will be suitable for software development projects where the product is a new software product. By new I mean that it is new to the organization undertaking the project, not in general. The methodology was developed to address a need for a method to build software when its necessary to learn on the fly, not all requirements are known to the organization and the focus is on delivering a working prototype quickly to demonstrate capabilities. You need to be careful when choosing requirements to deliver in each sprint to ensure that the set developed builds a software system that is capable of demonstrating the feature set supporting the requirements included.

You also need to ensure that these requirements are well known and understood as no changes are allowed once the sprint starts. This means that any changes to the requirements must come through a new set of requirements in the backlog making changes to these requirements very expensive.

This methodology divides stakeholders into 2 groups: pigs and chickens. The inventors of this methodology chose this analogy based on the story of the pig and the chicken – it goes something like this. A pig and a chicken were walking down the road one morning and happened to notice some poor children who looked like they hadn’t eaten for days. The compassionate chicken said to the pig: “Why don’t we make those children a breakfast of ham and eggs?” The pig said: “I’m not happy with your suggestion. You’re just involved in making the breakfast, I’m totally committed!” The point to this is the product owner, scrum master, and team are all in the “pig” group. All others are in the “chicken” group. You will be in the “chicken” group if you choose the Scrum methodology as a project manager.

Waterfall

Waterfall methodology calls for each phase of the development cycle to be repeated once only. Requirements will be gathered and translated into functional specifications once, functional specifications will be translated to design once, designs will be built into software components once and the components will be tested once. The advantage of this methodology is its focus. You can concentrate the effort of all your analysts on producing functional specifications during one period rather than have the effort dispersed throughout the entire project. Focusing your resources in this way also reduces the window during which resources will be required. Programmers will not be engaged until all the functional specifications have been written and approved.

The disadvantage of this approach is its inability to teach the project team anything during the project. A key difference between the waterfall approach and an iterative methodology, such as Scrum or RUP, is the opportunity to learn lessons from the current iteration which will improve the team’s effectiveness with the next iteration. The waterfall methodology is an ideal methodology to use when the project team has built software systems very similar to the one your project is to deliver and has nothing to learn from development that would improve their performance. A good example of a project which would benefit from the waterfall methodology is a project to add functionality to a system the project team built in the not too distant past. Another example of an environment that is well suited to the waterfall methodology is a program to maintain a software system where a project is scheduled for specific periods to enhance the system. For example, an order and configuration software system which is enhanced every 4 months.

The waterfall methodology does not lend itself particularly well to projects where the requirements are not clearly understood at the outset. Iterative approaches allow the product owners or user community to examine the result of building a sub-set of requirements. Exercising the sub-set of requirements in the iteration’s build may cause the product owners or user community to re-examine those requirements or requirements to be built. You won’t have that opportunity with the waterfall method so you need to be certain of your requirements before you begin the build phase. Interpreting requirements into functionality is not the only aspect of development that can benefit from an iterative approach. Designing the system and building it can also benefit from doing these activities iteratively. You should use the waterfall method when your team is familiar with the system being developed and the tools used to develop it. You should avoid using it when developing a system for the first time or using a completely new set of tools to develop the system.

RUP

The Rational Unified Process, or RUP, combines an iterative approach with use cases to govern system development. RUP is a methodology supported by IBM and IBM provides tools (e.g. Rational Rose) that support the methodology. RUP divides the project into 4 phases:

1. Inception phase – produces requirements, business case, and high level use cases

2.Elaboration phase – produces refined use cases, architecture, a refined risk list, a refined business case, and a project plan

3. Construction phase – produces the system

4. Transition phase – transitions the system from development to production

RUP also defines 9 disciplines: 6 engineering disciplines, and 3 supporting disciplines: Configuration and Change Management, Project Management, and environment so is intended to work hand in hand with project management best practices.

Iteration is not limited to a specific project phase – it may even be used to govern the inception phase, but is most applicable to the construction phase. The project manager is responsible for an overall project plan which defines the deliverables for each phase, and a detailed iteration plan which manages the deliverables and tasks belonging to each phase. The purpose of the iterations is to better identify risks and mitigate them.

RUP is essentially a cross between Scrum and waterfall in that it only applies an iterative approach to project phases where the most benefit can be derived from it. RUP also emphasizes the architecture of the system being built. The strengths of RUP are its adaptability to different types of projects. You could simulate some of the aspects of a Scrum method by making all 4 phases iterative, or you could simulate the waterfall method by choosing to avoid iterations altogether. RUP will be especially useful to you when you have some familiarity with the technology but need the help of Use Cases to help clarify your requirements. Use Cases can be combined with storyboarding when you are developing a software system with a user interface to simulate the interaction between the user and the system. Avoid using RUP where your team is very familiar with the technology and the system being developed and your product owners and users don’t need use cases to help clarify their requirements.

RUP is one of those methodologies that your organization is very likely to have invested heavily in. If that’s your situation, you probably don’t have the authority to select another methodology but you can tailor RUP to suit your project. Use iterations to eliminate risks and unknowns that stem from your team’s unfamiliarity with the technology or the system, or eliminate iterations where you would otherwise use the waterfall method.

JAD

Joint Application Development, or JAD, is another methodology developed by IBM. It’s main focus is on the capture and interpretation of requirements but can be used to manage that phase in other methodologies such as waterfall. JAD gathers participants in a room to articulate and clarify requirements for the system. The project manager is required for the workshop to provide background information on the project’s goals, objectives, and system requirements. The workshop also requires a facilitator, a scribe to capture requirements, participants who contribute requirements, and members of the development team whose purpose is to observe.

JAD can be used to quickly clarify and refine requirements because all the players are gathered in one room. Your developers can avert misunderstandings or ambiguities in requirements by questioning the participants. This method can be used with just about any software methodology. Avoid using it where the organization’s needs are not clearly understood or on large, complex projects.

RAD

RAD is an acronym for Rapid Application Development uses an iterative approach and prototyping to speed application development. Prototyping begins by building the data models and business process models that will define the software application. The prototypes are used to verify and refine the business and data models in an iterative cycle until a data model and software design are refined enough to begin construction.

The purpose of RAD is to enable development teams to create and deploy software systems in a relatively short period of time. It does this in part by replacing the traditional methods of requirements gathering, analysis, and design with prototyping and modeling, the prototyping and modeling allow the team to prove the application components faster than traditional methods such as waterfall. The advantage of this method is it facilitates rapid development by eliminating design overhead. It’s disadvantage is that in eliminating design overhead it also eliminates much of the safety net which prevents requirements from being improperly interpreted or missed altogether.

RAD is suitable for projects where the requirements are fairly well known in advance and the data is either an industry or business standard, or already in existence in the organization. It is also suitable for a small development team, or a project where the system can be broken down into individual applications that require small teams. RAD is not suitable for large, complex projects or projects where the requirements are not well understood.

LSD

Lean Software Development, or LSD, applies the principles of waste reduction from the manufacturing world to the business of developing software. The goal of LSD is to produce software in 1/3 the time, on 1/3 the budget, and with 1/3 the defects of comparable methods. Lean does this by applying 7 principles to the endeavor of software development:

1. Eliminate waste

2. Amplify Learning (both technical and business)

3. Decide on requirements as late as possible

4. Deliver as fast as possible

5. Empower the team

6. Build integrity

7. See the whole

Although Lean Manufacturing has been around for some time, its application to the process of developing software is relatively new so I wouldn’t call it a mature process.

LSD would be a suitable method to use where you have a subject matter expert in the method who has some practical experience in applying lean methods to a software development project. “Amplified” learning implies that your development team has a depth of knowledge in the software tools provided, and also a breadth of knowledge that includes an understanding of the business needs of the client. LSD would be suitable for a project where the development team has these attributes.

LSD depends on a quick turnaround and the late finalization of requirements to eliminate the majority of change requests, so will not be suitable for a project where a delayed finalization of requirements will have a poor chance of eliminating change requests, or the size and complexity of the system being developed would prevent a quick turnaround.

Extreme Programming (XP)

Extreme programming places emphasis on an ability to accommodate changes to requirements throughout the development cycle and testing so that the code produced is of a high degree of quality and has a low failure rate in the field. XP requires the developers to write concise, clear, and simple code to solve problems. This code is then thoroughly tested by unit tests to ensure that the code works exactly as the programmer intends and acceptance tests to ensure that the code meets the customer’s needs. These tests are accumulated so that all new code passes through them and the chances for a failure in the field are reduced.

XP requires the development team to listen carefully to the needs and requirements of the customer. Ambiguities will be clarified by asking questions and providing feedback to the customer which clarifies the requirements. This ability implies a certain degree of familiarity with the customer’s business; the team will be less likely to understand the customer’s needs if they don’t understand their business.

The intent of XP is to enhance coding, testing, and listening to the point where there is less dependency on design. At some point it is expected that the system will become sufficiently complex so that it needs a design. The intent of the design is not to ensure that the coding will be tight, but that the various components will fit together and function smoothly.

XP would be a suitable software development method where the development team is knowledgeable about the customers business and have the tools to conduct the level of testing required for this method. Tools would include automated unit testing and reporting tools, issue capture and tracking tools, and multiple test platforms. Developers who are also business analysts and can translate a requirement directly to code are a necessity because design is more architectural than detail. This skill is also required as developers implement changes directly into the software.

XP won’t be suitable where the development team does not possess business analysis experience and where testing is done by a quality assurance team rather than by the development team. The method can work for large complex projects as well as simple smaller ones.

There is no law that states you must choose one or the other of these methodologies for your software project. The list I’ve given you here is not a totally comprehensive list and some methodologies don’t appear on it (e.g. Agile) so if you feel that there is some other methodology that will better suit your project, run with it. You should also look at combining some of the features of each of these methods to custom make a methodology for your project. For example, the desire to eliminate waste from the process of developing software is applicable to any method you choose and there is likely waste that could be eliminated in any development shop.

Be careful to choose a methodology that is a good fit for your team, stakeholders, and customer as well as your project. Bringing in a new development methodology that your team will struggle to learn at the same time they are trying to meet tight deadlines is not a good idea. On the other hand, if you have the latitude you may want to begin learning a new method with your project.

Posted in general | Comments Off on Choosing the Right SDLC For Your Project

Introduction to Silk Test Architecture

Normal use of an application consists of a person manipulating a keyboard and mouse to initiate application operations. The person is said to be interacting with the GUI (Graphical User Interface). During Silk Test testing, Silk Test interacts with the GUI to submit operations to the application automatically.

Thus Silk Test can simulate the actions of a person who is exercising all the capabilities of an application and verifying the results of each operation. The simulated user (Silk test) is said to be driving the application. The application under test reacts to the simulated user exactly as it would react to a human rest. Silk Test consists of two distinct software components that execute in separate processes:

The Silk Test host software

The 4Test Agent software

Silk Test host software

The Silk Test host software is the program you use to develop, edit, compile, run and debug your 4Test scripts and test plans. This manual refers to the system that runs this program as the host machine or the Silk Test machine.

The Agent

The 4Test Agent is the software process that translates the commands in your 4Test scripts into GUI-specific commands. In order words, it is the Agent that actually drives and monitors the application you are testing. One Agent can run locally on the host machine. In a networked environment, any number of Agents can run on remote machines. This manual refers to the systems that run remote Agents as target machines. This manual refers to the systems that run remote Agents as target machines. In a client/server environment, Silk Test drives the client application by means of an Agent process running on each application’s machine. The application then drives the server just as it always does. Silk Test is also capable of driving the GUI belonging to a server or of directly driving a server database by running scripts that submit SQL statements to the database. These methods o directly manipulating the server application are intended to support testing in which the client application drives the server.

Posted in general | Comments Off on Introduction to Silk Test Architecture

Corel DRAW – Best Desktop Publishing Software

Corel DRAW is a supreme supplier of graphics software, including the popular Corel DRAW program. Corel DRAW has tools that allow the user to both create and edit images. The type of desktop publishing tools that you use will depend on the type of project. For more information and assistance, use the Corel website.

Corel DRAW is the best Desktop publishing software that empowers users to create illustrations containing graphics, text and photographs. Corel has an extensive range of tools which enable the user to edit any shape or character with ease and precision, fit text to curves and create custom color separations. It is developed and marketed by Corporation of Ottawa. This tool can open files: Adobe PageMaker, Microsoft Publisher and Word, and other programs can print documents to Adobe PDF using the Writer printer driver, which such software can then open and edit every aspect of the original layout and design.

Several innovations to vector-based illustration originated with Corel: a node-edit tool that operates differently on different objects, fit text-to-path, stroke-before-fill, quick fill/stroke color selection palettes, perspective projections, mesh fills and complex gradient fills.

One of this software’s many strengths is the huge range of over 1,000 fonts that it comes with, provided in both TrueType and Postscript Type 1 format. Corel differentiates itself from its opponent in a number of ways: The first is its positioning as a graphics suite, rather than just a vector graphics program. A full range of editing tools allow the user to adjust contrast, color balance, change the format from RGB to CMYK, add special effects such as vignettes and special borders to bitmaps. Bitmaps can also be edited more extensively using Corel PhotoPaint, opening the bitmap directly from Corel and returning to the program after saving. It also allows a laser to cut out any drawings.

Expert believed it was the first of the Windows-based drawing programs and has built on this early start to become far-and-away the dominant drawing package on the PC. Its biggest strength – and its biggest potential limitation – is its all-encompassing approach. In the past this has led to accusations of unfocused bloating, but with version 7.0 Corel has addressed the criticisms with a far tighter and better rationalized program. Even so, there’s a huge range of functionality to cover.

Corel DRAW Download was originally developed for Microsoft Windows and currently runs on Windows XP, Windows Vista, and Windows 7. The current version, X5, was released on 23 February 2010.

Posted in general | Comments Off on Corel DRAW – Best Desktop Publishing Software

Mortgage Loan Origination Software – 10 Functions of Mortgage Banking

Regardless of a mortgage lending organizations’ size, mortgage loan software, data security solutions and automation tools and services should be able to assist with mortgage loan automation requirements. In today’s chaotic mortgage lending environment origination and document security systems need to be easily configured to emphasize a company’s special needs and increase efficiencies across all aspects of the loan origination process, allowing lenders to increase quality and productivity.

Technology-driven automation is the key to succeeding in the increasingly complex, deeply scrutinized mortgage industry. Web-based (Software-as-a-Service), Enterprise mortgage software that supports the ten primary functions in mortgage banking will provide lenders with the necessary competitive advantages to succeed in today’s mortgage industry.

Ten Primary Functions in Mortgage Banking

  1. Mortgage Web site design, implementation, and hosting to provide product, service, loan status, and company information to mortgage customers and business partners
  2. Online loan applications for gathering information from borrowers and business partners that issue loan terms, disclosures, and underwriting conditions
  3. Loan origination software for managing loan data, borrower data, property data, general status reporting, and calculations
  4. Interface systems to send and receive data from real estate service providers, such as credit reports, flood determinations, automated underwriting, fraud detection, and closing documents
  5. Internal automated underwriting system that is simple enough for originators and sophisticated enough for underwriting portfolio loan products
  6. Document generation for applications, upfront disclosures, business processes, and closing documents
  7. Integrated imaging that is used from loan origination to investor delivery and for file archiving
  8. Interest rate and fee generation along with program qualification guidelines
  9. Secondary marketing data tools to track loan revenue and investor relationships, including warehouse line management and interim servicing to complete the back-office system
  10. Reporting such as loan delivery, year-end fee reporting, and HMDA reporting for loan application disposition

Web-Based, enterprise mortgage software that supports the ten primary functions of mortgage banking simplifies compliance, maximizes operational efficiencies, and increases profitability.

Posted in general | Comments Off on Mortgage Loan Origination Software – 10 Functions of Mortgage Banking

10 Top Reasons Why I Have to Upgrade My Computer

The rate at which technology is improving is very fast and in the time you get comfortable with the computer hardware you have bought, several new and improved models appear in the market. While some people prefer to keep their computers state of the art, most of us have a 'If it is not broken, do not fix it' attitude when it comes to upgrading or replacing our computers.

This is a strategy that could prove expensive in the long run. It is always better to upgrade your computer on a regular basis, especially if you have had it for over 2-3 years. Even if your computer has had a large trouble-free existence, you really need to consider periodic upgrades and here are the reasons why you must dos so:

1. Increase in Processing Speed ​​- This is one place where you really get to notice an improvement in performance. If you are upgrading from a Celeron 433MHz processor to a Pentium 4 1.6GHz, you would really notice the difference in performance!

2. Faster Memory Access – Improvements in CPU speed are typically accommodated by improvements in the speed at which data transfer occurs between the CPU and RAM. This is another area that provides an improvement in performance.

3. Size and Capacity improvements – Technology drives a reduction in component size coupled with an increase in storage capacity. This means that a RAM card or hard disk of the similar size as the older ones in your computer could have double the capacity!

4. Software Compatibility – Many of the new software packages you may wish to use in order to improve your productivity or entertainment experience may not function well on you old computer. It is better to upgrade your computer to enjoy the benefits of new software fully.

5. Obsolescence of Hardware – As your hardware gets older; Getting a replacement will get more difficult once manufacturers start phasing out the production. With improvement in technology, the older hardware becomes cheaper initially and becomes expensive as supply dries up.

6. Technical Support Issues – Many manufacturers stop providing technical support for older components as they cease production. The older your computer gets, the harder it is to find help in fixing it when it malfunctions.

7. Development of New Hardware – New hardware products appear in the market frequently that revolutionize your computer experience and are based on newly developed technology. The chances of your old computer supporting new devices are very low.

8. Faster Devices – Your old computer may not be in a position to accommodate the speed at which the new devices communicate.

9. New, Fast Communication Protocols – You may not be able to implement new or faster communication protocols in your old computer because the hardware is unable to support them.

10. Operating System and File Format – Your old hardware may not be able to run newer operating systems and some of the file formats may not be supported.

Posted in general | Comments Off on 10 Top Reasons Why I Have to Upgrade My Computer

Schedule Slippage – Root Causes

“The single most important task of a project: setting realistic expectations. Unrealistic expectations based on inaccurate estimates are the single largest cause of software failure.”- Futrell, Shafer

Introduction

With global and competitive market, it is very important to launch a product or service in the market on time, ahead of competitors. Definitely, timely launch depends on on-time-completion of the product development projects. Project planning has lots of challenges to overcome in order to finish the project on time – right from schedule predictability, envisioning future/possible risks and coming up with mitigation plans.

This article talks about some of the challenges, often faced in the Software Product Development industry that causes the schedule slippage.

Schedule slippage: Delay in the project completion from its initial estimated date of completion.

Each project plan will have a planned completion date (NRA, RA), and a bounding box or upper limit in schedule. Nowadays, it is a common practice to have three dates associated with any project plan:

  • Non-Risk Adjusted (NRA) date: Project completion date assuming no hurdles – Ideal conditions.
  • Risk Adjusted (RA) date: Project completion date assuming some risks will come on the way and will need extra time to attend to them.
  • Bounding Box (BB) or upper limit: The upper limit on the project plan before which the project has to be finished under any circumstances – Generally decided by the top management based on product/services roadmap and launch in the market.

Under ideal circumstances, any project is scheduled to complete by NRA date. Considering some risks that may come on the way and would eat some time off the schedule, the project should be over by RA date. If the risks were not envisioned and hence not planned well, then project may get delayed and would complete after RA date. Project completion crossing the RA or upper limit is neither good nor expected out of a well-planned project.

Root Causes

As we always plan for a project to get over before RA date, seldom is the case it happens as expected. There are multiples reasons for schedule slippage, right from improper planning, lack of resources to unplanned requirements and rework that eat away vital time off the planned schedule.

A typical project development process – Each project will have a team (development, testing and other functions) that will work through a process (requirement analysis, schedule estimation, design, implementation and testing) to deliver a product to the customer/end user. Each entity that participate in the project – directly or indirectly affect the schedule.

From the development process, we can identify the items that can cause delay in the execution of the project – for example, misinterpreted or unclear requirement adds up to completion time, unavailability of development tools or resources can prolong the project duration. Various processes like schedule estimation, detailed design and product development if not executed skillfully, may significantly blow up the project cycle.

For better understanding all these possible causes that may result in schedule slippage are categorized .

Let’s have a detailed look at the root causes of schedule slippage category wise.

1) Schedule Estimation: “The key is not to prioritize what’s on your schedule, but to schedule your priorities.” – Stephen Covey

For a project to be executed on time, it is very important to have it planned very well. Any mistake in project schedule estimation reflects as delay in the project completion from its deadline. There are several factors that contribute to improper schedule estimation:

· Underestimation of technical complexities: At the start of the project, many of the team members may not have thorough knowledge of technical complexities and hence their estimation would be incorrect. Sometimes it may so happen that the person giving estimates for a particular task is having no idea about the technical challenges involved in carrying out that particular task. You might hear, towards the mid/end of the project life cycle when the task is not finished on time – “Oh, I didn’t know that this feature also requires 5 more tasks to be done!” or “I was thinking this task to be so simple, but I under estimated it!”. · Lack of Design/Big picture: It is important to have a bigger picture / overview of the complete project to understand how a particular module/feature would fit in to complete project. Product or system level design helps in understanding the interfaces among other modules and the required coordination for product assembly and hence, a better insight into the work involved. Often, estimates without focus on detailed design tend to deviate more from the actual time taken for finishing the job. · Integration Testing: While making a project plan, testing also needs to be accommodated in the schedule. At times, the unit testing or testing done by individual contributors on their module is taken into account but not the system level testing. Toward the release, when all the individually tested modules are brought together, a system level or integration testing is a must. Having the time for integration testing not accounted in the overall project schedule will cause delay in the project completion.

· Unplanned dependencies: Project planning is not only about breaking the project into minute tasks and managing them. A well-planned project schedule also needs to consider certain unplanned dependencies. Some of these are:

o People: Optimum utilization of human resources calls for same set of people working in multiple projects. A person may not be available to work for currently planned/assigned project due to extended/unplanned work in another parallel project. Another issue related to people could be unplanned/unexpected attrition that will affect the project plan. Time is also lost in mentoring of new member by a senior (more experienced) person which goes unaccounted if not planned.

o Tools & Equipments: Project can be delayed if team is waiting for release of upgrade or procurement of any vital tool (hardware or software being used in the project) or if the equipments required for development and testing are not available. “We had a 3-months project for validating our existing solution on new product platform using customer DUT (device under test). We had to wait for the DUT for nearly 1.5 months as it got stuck in customs. After getting the DUT, we realized that it’s been damaged partially during transportation. As a result we had to ask for another DUT and whole project took more than 5 months to get finished.” – I am sure that such cases will be quite familiar to many organizations. Other reason for timely unavailability of tools / equipments is that they are shared among various projects to reduce the operating cost. Any unplanned dependency on their usage or wrong assumption about availability of these shared resources would cause delay in the program. Team members might have to work on shifts to optimize the usage of shared resources which can cause reduced work hours and/or productivity loss and results to schedule slippage.

“I was waiting for Matlab license to be released by another person in the team but he left the office without doing so and I lost 3 hours figuring out what to do?” – is it something you faced before?

o Other programs: If multiple programs have deliverable dependencies, then delay in one project will have cascaded effect on other projects, which directly or indirectly depend on its deliverable. “We got delayed because we had to wait for a critical UI component from the framework project team” or “We didn’t plan for bug fixes for a component which was supposed to be delivered defect free for our usage” are the common scenarios for delays in program which are dependent on other program deliverables. Parallel programs may affect the schedule of your program in a different way as well – Sometimes, management changes the priority of the programs running in parallel. If your project is considered as a low priority one then there might be lack of resources assigned to your project that may result in schedule slippage.

· Beta releases: How many times we seek feedback on our product during development? And how often we allocate time for it? It’s important to plan beta releases if we desire to have our product validated by expert users or lighthouse customers during development. Getting feedback from beta customers becomes important especially when their requirements echo that of a mass customer base. Process of giving workable releases to customers, collecting their experience, having their feedback analyzed, and then incorporating in the final product version takes significant time.

· Risk mitigation and plan B: Every project will have some or the other risks. These risks can be of varying severity and probabilities. While making project plan, it is important to treat the risk individually based on their severity and probability of occurrence. If high probable risks with higher severity are not planned with their mitigation plan (or plan B), they will have huge impact on schedule deviation from planned one. As in one of the previous examples quoted, getting a DUT on time for validation was a risk. Had there been a mitigate plan (plan B) like – Validate with other DUT or if DUT is not available here, let one developer travel to customer’s place and finish the validation on time, the schedule slippage would have been avoided.

2) People: Ultimately, projects are executed by people who may not be skilled or talented. Hence, looking for perfection in projects involving human beings may not be a feasible thought. Certain unpredictable and hence unavoidable issues under this category are:

· Poor leadership: Before thinking of project execution, it is project planning that actually would set the platform of success. Execution of the project depends on its team while planning is taken care by the project leader. The project leader is expected to have enough technical know-how to understand the project goals and to the details of the tasks involved. Poor leadership and superficial knowledge of assignments often results in invalid effort estimation and ad hoc task delegation causing stress and possible delay in project execution. People leading the team are also responsible for keeping the team spirit and motivation level upbeat. Poor personal commitment due to lack of motivation results in loss of productivity and may cause schedule to slip. Another reason that adds up to delay in projects is inability of leadership team to track the schedule progress and take the correction action.

· Attrition: If the project duration is large and job market is hot, it may be difficult to retain people in the project till its completion. Attrition may further delay the completion especially if the person leaving the job was in critical path. A person leaving the organization would leave a gap in the project that a new person may not fill immediately, which in turn causes sudden reduction in the task force.

· Learning curve: When ever a new person or team member is included in the project, he or she may require some time to understand the project to keep in pace with other members. Learning curve is needed for new team members, joining the team either due to attrition or due to any specific technical competency requirement. · Context switching: In smaller organization or groups where people work on multiple projects simultaneously, it is important to have some buffer for context switching. A person planned to work in project ‘A’ for two hours after a gap of two weeks, would take more than scheduled time to complete that task. Gap of two weeks and the fact that he or she was involved in other project would require some time for the member to get back to the context of current project. · Global development teams: In an era of globalization and outsourcing, it is common these days to have development team distributed over different geographical regions. Project plan needs to account for different time zones and working culture. You might expect an input for your task on Monday morning your time but it may be Sunday late evening for that person and finally when the input arrives, you might be on your way to home after work.

Sometimes schedule estimation might go completely wrong if you have not understood the work culture of the region your teammate belongs to – “In my previous work, I was given a task to be completed with a heads up that its very critical task and needs immediate attention’. When I asked my project lead how many days/hours I have for it, I had been time for 2 weeks for high priority and ‘immediate-attention’ work.” Definition of ‘urgent’, ‘high priority tasks’ changes with culture and region.

· Communication Issues: People communicate differently. If important issues are not brought to the notice of the team members, or are not escalated on time, the entire project may suffer. Often fear of embarrassment stops team members from reporting issues faced during execution leading to more time being spent on that task that can easily be executed additional help.

3) Customer Involvement: These issues are quite serious if customer or end users of the product are involved in the development phase. Understanding customer’s priorities, defining your expectation from their involvement needs to be clear and in agreement with both the parties.

· Expert user testing: In the beginning of the project, expert user testing cycle needs to be planned. Process of giving builds or releases for testing and collecting their feedback, analyzing and incorporating them in your product takes significant time which, if not planned, can delay your program. · Timely feedback: “I got feedback from customers for features, delivered in development milestone-1, after milestone-5 towards the release. These feedbacks are critical but now I am worried how to incorporate them without affecting the schedule.” It sounds like a common problem. Incorporation of feedback from customers needs to be planned well taking a commitment from the customer. · Product requirement specification review: Having a product requirement review planned and executed will keep you on right track throughout the project. Reviewing the requirement specification will avoid requirement related defects fixing which otherwise would have delayed, the project.

4) Ambiguous Project Requirement: For any project to be initiated, the first thing is to have requirements for it. In the product development life cycle, requirement phase acts like a foundation. Clear requirement or vision for the project navigates the team to success. However, requirements may not be clear at the time of estimation and may result in delay in the project completion. Issues related:

· Evolving specs: If you are making a product based on a standard which is not yet matured or still evolving, you are more prone to have this risk. Frequency changes in the specs will change the requirement for the project during different stages of product development and team will continue to work on something that is not yet evolved. This results in rework that would delay the project if time for dealing with these changes is not accommodated in the schedule. “We developed an algorithm and hence measurement that was based on certain industry standard. Towards the release of the product, the specs changed and our measurement was no more valid. We had to redo the algorithm to reflect the changes in the specs. This caused our product release delayed by 2 months.” · New requirements: Sometimes new requirements are added as the project evolves towards completion. Implementation of new requirements is not planned at the beginning of the project and hence is not accounted in schedule. Adding new feature without revising the schedule may result in delay.

· Untold expectation: Requirements from the customers may be of two types – implicit or explicit. It is important to have the requirements well documented. Implicit requirements needs to be better defined and documented to avoid any confusion towards the end of the project. Customers may not describe their requirements related to system performance, memory issues, user interface quality and usability but they are very keen on providing feedback in those aspects once the product is given for expert user testing. If we are not clear about such requirements, out design might not address them. Addressing them towards the end of the project may call for design changes and extra work that would delay the project.

5) Unplanned Tasks / Reworks: Bounding box for the project is set by higher management and often lack buffer for unplanned task(s). Having more of unplanned task that creep up at different phases of project can cause schedule slippage. The unplanned tasks or rework may arise due to:

· Sustaining work: In smaller organizations, some of the project team may also be responsible for sustaining / customer support of existing products. These unplanned tasks, which come on event basis, related to customer support are always of high priority. Excess or prolonged sustaining work may take resource out of the planned project causing a potential threat for schedule slippage. · Defect fixes: Defects are bad as they degrade the product quality and consume extra time/effort to fix them. It is good to have testing of the intermediate releases of the project to find and fix defects sooner in the development life cycle. If the fixing-cycle for such internal-milestone defects is not planned, then either the project is either going to slip or product is going to be of poorer quality. Poor programming skill of the team, not adapting to modern programming practices and having ad hoc development processes may lead to higher number of defects which would take more time to fix then planned and cause slippage.

· Task spillover from previous milestone: Tasks that are not completed in previous milestone, due to whatever reason (inefficiency, vacation of the team member, resource crunch etc), will have to be completed in the next milestone thereby increasing the load on the team. If adequate buffer is not planned, these tasks spilled from previous milestone over to next, can delay the project. · Requirement change / refinement: Requirement changes during the product development will result in rework of what has been previously done with first version of requirement(s). Addressing changes in the requirements needs extra time and effort and may cause schedule slippage. In some cases, the requirement from customer is misunderstood resulting in wrong system design and implementation. Additional, unplanned time is lost in correcting the design/implementation which causes schedule slippage.

Conclusion

On time delivery is the challenge software development companies are facing globally. To have a complete control over estimated schedule, it is very important to identify the elements in the development cycle that cause schedule slippage. This article uncovers and explains the root causes of delay in programs using examples from real world. Having an insight to the root causes will help the program managers to make good decisions to avoid future schedule slippage.

Posted in general | Comments Off on Schedule Slippage – Root Causes

Examples Of Spyware And What They Are

Spyware is a general term used to describe software that performs certain behaviors such as advertising, collecting personal information, or changing the configuration of your computer, generally without appropriately obtaining your consent first.

Spyware is often associated with software that displays advertisements (called adware) or software that tracks personal or sensitive information.

That does not mean all software that provides ads or tracks your online activities is bad. For example, you might sign up for a free music service, but you “pay” for the service by agreeing to receive targeted ads. If you understand the terms and agree to them, you may have decided that it is a fair tradeoff. You might also agree to let the company track your online activities to determine which ads to show you.

Other kinds of Spyware make changes to your computer that can be annoying and can cause your computer slow down or crash.

These programs can change your Web browsers home page or search page, or add additional components to your browser you don’t need or want. These programs also make it very difficult for you to change your settings back to the way you originally had them.

The key in all cases is whether or not you (or someone who uses your computer) understand what the software will do and have agreed to install the software on your computer.

There are a number of ways Spyware or other unwanted software can get on your computer. A common trick is to covertly install the software during the installation of other software you want such as a music or video file sharing program.

Any software that covertly gathers user information through the user’s Internet connection without his or her knowledge, usually for advertising purposes. Spyware applications are typically bundled as a hidden component of freeware or shareware programs that can be downloaded from the Internet; however, it should be noted that the majority of shareware and freeware applications do not come with SpyWare. Once installed, the Spyware monitors user activity on the Internet and transmits that information in the background to someone else. Spyware can also gather information about e-mail addresses and even passwords and credit card numbers

Aside from the questions of ethics and privacy, SpyWare steals from the user by using the computer’s memory resources and also by eating bandwidth as it sends information back to the spy ware’s home base via the user’s Internet connection. Because SpyWare is using memory and system resources, the applications running in the background can lead to system crashes or general system instability.

Because SpyWare exists as independent executable programs, they have the ability to monitor keystrokes, scan files on the hard drive, snoop other applications, such as chat programs or word processors, install other SpyWare programs, read cookies, change the default home page on the Web browser, consistently relaying this information back to the SpyWare author who will either use it for advertising/marketing purposes or sell the information to another party.

Licensing agreements that accompany software downloads sometimes warn the user that a SpyWare program will be installed along with the requested software, but the licensing agreements may not always be read completely because the notice of a SpyWare installation is often couched in obtuse, hard-to-read legal disclaimers.

Examples of SpyWare

These common SpyWare programs illustrate the diversity of behaviors found in these attacks. Note that as with computer viruses, researchers give names to SpyWare programs which may not be used by their creators. Programs may be grouped into “families” based not on shared program code, but on common behaviors, or by “following the money” of apparent financial or business connections. For instance, a number of the SpyWare programs distributed by Claria are collectively known as “Gator”. Likewise, programs which are frequently installed together may be described as parts of the same SpyWare package, even if they function separately.

o CoolWebSearch, a group of programs, takes advantage of Internet Explorer vulnerabilities. The package directs traffic to advertisements on Web sites including coolwebsearch.com. It displays pop-up ads, rewrites search engine results, and alters the infected computer’s hosts file to direct DNS lookups to these sites.

o Internet Optimizer, also known as DyFuCa, redirects Internet Explorer error pages to advertising. When users follow a broken link or enter an erroneous URL, they see a page of advertisements. However, because password-protected Web sites (HTTP Basic authentication) use the same mechanism as HTTP errors, Internet Optimizer makes it impossible for the user to access password-protected sites.

o Zango (formerly 180 Solutions) transmits detailed information to advertisers about the Web sites which users visit. It also alters HTTP requests for affiliate advertisements linked from a Web site, so that the advertisements make unearned profit for the 180 Solutions Company. It opens pop-up ads that cover over the Web sites of competing companies.

o HuntBar, aka WinTools or Adware,WebSearch was installed by an ActiveX drive-by download at affiliate Web sites, or by advertisements displayed by other SpyWare programs-an example of how SpyWare can install more SpyWare. These programs add toolbars to IE, track aggregate browsing behavior, redirect affiliate references, and display advertisements.

oZlob Trojan or just Zlob, Downloads itself to your computer via ActiveX codec and reports information back to Control Server. Some information can be as your search history, the Websites you visited, and even Key Strokes.

Posted in general | Comments Off on Examples Of Spyware And What They Are

Top 25 Terms All Computer Students Should Know

The following basic terminologies are considered the top 25 terms all computer students should know before they even begin their studies:

1. Bit: Binary data storage unit valued at either 1 or 0.

2. Byte: Eight data bits valued between zero and 255.

3. Word: Two data bytes or 16 data bits between zero zero and 16,535.

4. CD-ROM: A storage disk with approximately 640 megabytes of capacity.

5. CD-ROM Drive: Hardware used for reading and writing to CD-ROMs.

6. Storage Media: Magnetic devices that permanently store computer data.

7. File: Permanent storage structure for data kept on a hard drive or other permanent place.

8. Virus: Unauthorized programs that infect files or send themselves via email.

9. Vulnerability: When unauthorized access can be gained due to software errors.

10. Security Flaw: When attackers gain unauthorized system access due to a software bug.

11. Worm: Unwanted programs accessing computers via application / system vulnerabilities.

12. Hardware: Physical parts of computer (case, disk drive, monitor, microprocessor, etc.).

13. Software: Programs that run on a computer system.

14. Firmware: Software that has been permanently written into a computer.

15. ISP: Internet Service Provider.

16. BIOS: The basic input / output system computers use to interface with devices.

17. MIME: Multipurpose Internet Mail Extension.

18. Boot: What happens when a computer is turned on and beginning to run.

19. Crash: When computer software errors occur and programs fail to respond.

20. Driver: Program that understands interfaced devices like printers and video cards.

21. Network: Cables and other electrical components carrying data between computers.

22. Operating System: A computer's core software component.

23. Parallel: Sending data over more than one line simultaniously.

24. Serial: Sending data over a single line one bit at a time.

25. Protocols: Communication methods and other standard Internet / networking functions.

These are the top 25 terms all computer students should know before they even begin their technical training. Most computer students know much more. In fact, everyone who uses a computer these days should understand these terms so they can be better informed about the important tool that is so integral to our daily lives.

Posted in general | Comments Off on Top 25 Terms All Computer Students Should Know