Sponsors

Microsoft


TechWell

We have 2737 guests and 4 members online

Home CM Journal Articles Integrated Software Development - The ‘Good Parts' Version

Integrated Software Development - The ‘Good Parts' Version

E-mail
Written by Austin Hastings   
Monday, 01 December 2003 16:00

A group of women is shocked to hear the beautiful 40-something announce that despite marrying her third husband, she is completely without experience at physical love.

She explains, "My first marriage was for love: we married when he was drafted, but he went away and was killed in Vietnam. My second marriage was for money: he was 77 when we married, and 85 when he died. 

"What about my third husband? Well, he's in the software business. In the evenings, he sits beside the bed and tells me how good it's going to be."

This article is dedicated to telling you how good it can be (software, that is). It's a shopping list of sorts: I'm describing a whole lot of things working together, some of which you don't have in your shop. If you like an idea you see here, implement it. After your first implementation steps, you can return here to find yet another idea to implement. (Justifying an even larger budget for next year.) 

I'll confess this isn't a totally true story: no single shop I've been to has implemented all of these things. On the other hand, I've seen all these things at different client sites. I'm describing a ‘Platonic Ideal' development shop, made up of a collage of good ideas from all over.

This fantastic voyage is broken up on a calendar basis, following my imaginary development shop through a release cycle. Each month (chapter, if you will) describes a little bit more of the process. Things in italics generally are things to remember. 

December

Customers are unreasonable. They want things, so they ask for them - paying no heed to production schedules or project plans. This is true no matter how sophisticated or flexible your development team gets. In fact, the better a team becomes at delivering features, the less likely customers are to ask for things that are already on the project plan. It's a trust thing: when customers don't trust a vendor, they ask for obvious things "just in case". When customers do trust a vendor they relax about the small stuff and their horizon becomes a lot wider. 

Not surprisingly, these customers are asking for new features - the kinds of features that take a lot of work. To get any of them delivered will take massive changes to the existing software. 

Being clever, the product management team has assembled a product steering committee with representatives from some of the most important customers. Their input is solicited before every major and minor release. The major releases focus on new function, while the minors help find the important shortcomings and most critical bugs.

Product management prioritizes the bugs, enhancements, and new features by involving sales, development, and the steering committee. The steering committee sorts the new functions and defects by their importance to existing customers. The sales department sorts the new functions and defects by their importance to new customers and competitive analysis. Development reports the estimated delivery cost of the most important features and fixes, and the likely sequence of implementation. The result is a single unified schedule of changes for use by all of the planning groups.

The product management team establishes their priorities and begins meeting with members of the Project Management Office (PMO). The PMO allocates project managers to work on all projects throughout the organization. (In fact, there is a pool of project managers that always work with the software group.)

The PMO is using a set of project estimation tools to generate schedules, resource allocation tables, and other predictive data. The tools use data derived from industry as well as project data from prior projects in the organization to generate their projections. The more they are used, the more refined their predictions become. Product management emphasizes the need for a quick release to generate some marketing buzz and keep the customer base happy with the responsiveness of the organization.

The PMO announces that a three month mini-release can deliver the top 30% of bug fixes, but the new features would require at least a year. However, dropping some of the more esoteric features will allow a seven month release, with potentially two more releases at four month intervals. 

Realistically, the eleven and fifteen month time frames are not as clear as they could be, due to changes taking place in the industry. The PMO feels it would be better to allocate all of the long term development to a single release, and re-evaluate the product plan and feature list at a later date.

Thus, just before the holiday break everyone knows that the new year will see three separate streams of development: a Bugfix release, an "Early" feature release, and a catch-all "Late" feature release.

January

Development has begun, albeit with a hangover. The build management team creates three parallel branches using the Software CM (SCM) tool, one to support each scheduled release. This maps the high-level "strategic" branching strategy of the product management team down to the "tactical" branching strategy used by the development team internally. Automated nightly builds are activated for each branch, with flow-forward propagation of changes between the Bugfix branch and the Early Feature branch. The Late Feature branch will require large-scale changes, so propagation to that branch will occur on an intermittent, negotiated basis.

The Bugfix Release

The Bugfix release is drawing most of its changes from the defect tracking system, with a few low-impact enhancements thrown in. (These "low-hanging fruit" are a scattering of severity 3 items: enhancing consistency across the user interface, or providing a shortcut in a dialog box.)

Once the initial release gate has been passed, the PMO generates Change Requests (CRs) for each proposed change. The CRs derived from customer reported items were linked to the defect reports in the defect tracking system. (Naturally, the defect reports are already linked to the call tracking system: in general, multiple customer call tickets may link to a single defect, with the status of all tickets being updated when the defect status changes.)

The defect tracking system is a homegrown legacy system called PT. (Because it's always called PT.) Developed decades ago, PT is linked to all kinds of bizarre places, including the product shipping system and accounts payable. Attempts to replace it have been unsuccessful to date, so instead of trying to cost-justify the replacement effort (almost impossible at this late stage), the engineering management team has chosen to integrate the defect tracking system with a more modern CR system.

The PT system tracks some rather strange fields. Some of these fields (usually five to ten of them) are concerned with precisely specifying the root cause of the defect, including the product lifecycle phases in which the defect was introduced and corrected. This data is used for phase containment metrics - a way of understanding the impact and cost of defects. As part of the root cause analysis, the defects are individually linked to the requirements in the requirements management tool and to the CR that introduced the defect, if it can be determined. (Note that a change made to implement one requirement can cause a deviation in an unrelated requirement. Part of the root cause analysis is to look for unknown linkage between requirements.)

Because it can take a varying amount of time to resolve the defects, the project manager has elected to assign earned value to defect bundles. The defects (and minor enhancements) are broken into nine groups of similar estimated work duration (estimation of work duration was performed in December during the project initiation phase). Each group is assigned 11% of earned value, corresponding to one week of scheduled development time (nine weeks of development, three weeks of software freeze). 

The Early Feature Release

The Early Feature release is composed of a page or so of lower-priority customer requested changes (defects or low impact enhancements) plus a collection of planned new features. Because these features have been planned for some time, the requirements analysis and high level design work are already complete. The development and project management teams have voluntarily shortened the early stages of the development process.

When the initial release gate is passed, the Change Review Board (CRB) marks the proposed requirements changes (already entered and with status "proposed") as scheduled for implementation in the Requirements Management (RQM) tool.

The integration between the RQM tool and the CR system automatically generates CRs when the requirements changes move forward. CRs are generated for the software (it is automatically assumed to be out of conformance until shown otherwise) as well as for the development of validation test plans and test cases for the new requirements. 

The newly-generated CRs, along with the change proposals from the RQM tool, are batched into a report that is provided to the PMO. The PMO manually links the CRs to individual tasks in the project tracking tool. (The step is manual because the project plan is managed at a finer level of granularity than that of a single CR, although many CRs will correspond directly to tasks on the project plan. Note that some SCM systems include CR components that support finer-grained tracking of work: it may be possible to link directly from the CR system to the PM system.)

Once the CRs have been created they are independently reviewed, to ensure the CR correctly reflects the needed change. Then coding can begin. The development team assigned to this release begins by ensuring that every defect has an automated test case to demonstrate it. These test cases will serve two purposes: they will be used to confirm that the defect has been resolved, and they will be added to the regression test suite to ensure that the defect stays resolved in the future. (For this reason, test cases that are coded to demonstrate defects tend to grow, either into multiple test cases or an entire test plan that looks for similar defects across the board.)

The Late Feature Release

The Late Feature release is composed of mostly new or unusual features, lacking the advanced design work that has been done for the Early Feature release. A lot of the Late Feature release is blue-sky requests from customers, sales, and marketing. Obviously, this is going to require a full treatment -including all the steps in the software development lifecycle.

The first step is to convert the desired "features" from marketing-speak into a concrete set of requirements. The Systems Engineering/Architecture team begins to work knowing they have a very short window to produce their documents.

The first artifact is a Release Requirements Document (RRD). This is a small document detailing the requirements for the release. This document is the translation document from the marketing and product management team's "Product Vision" document. Entries in the Vision document will be linked to the RRD. The RRD will be linked to the System Requirements Specification (SRS) and other technical documents as needed. The linkage from the RRD to the SRS, and the changes to the SRS to support the new RRD, will be supported using the RQM tool (which stores all these documents) and the integrated requirements change process. Like all other change requests, requirements changes are reviewed, approved, and implemented in a formal manner.

Using the requirements extensions to UML, the requirements work is linked directly to the analysis modeling in the CASE tool. Included in the UML requirement object attributes is the origination of the requirement. In this case, the origin is an entry in the RRD.

When individual subsystems are completed, the corresponding requirements are exported from the CASE tool and imported into the RQM tool as proposed changes. The exported data, of course, includes links back to the CASE tool. 

Once all the requirement change lists have been imported to the RQM tool, Requirements Change Requests (RCRs) are created for each entry in the RRD. The next step in the requirements change cycle is to ensure that the CRB has enough information to make a decision. 

The RCRs are assigned back to the systems engineering team to provide estimates for the impact and effort required to implement each change. Since the proposed changes are still on the drawing board in the systems engineering group, the impact estimation is a simple matter. 

The scheduling and required effort is another story, but the project management team already has some of this data in a tentative project plan - they used it to provide the original schedule estimate. The old plan is used as a skeleton for the Late Feature release plan. The first iteration of development is kicked off with the objective of providing accurate scheduling data for some of the more esoteric plan entries. The remainder of the plan is massaged into a workable format, and then used as initial data for the project estimation tool.

The estimating tool has already been used to generate the schedule requirements for the release. Now, it will be used to generate more detailed estimates predicting earned value and defect flux over time. 

February

With the success of a series of overnight builds, the Configuration Management Office (CMO) creates dedicated pages on the release dashboard for each of the three branches. The dashboard is an intranet application that combines data from several locations: the nightly builds, the automated regression test engine, the defect tracking system, the CR system, the project scheduling tool, the estimating tool, the RQM tool, and the test case management tool.

The reported data on the dashboard includes the following for each branch:

  • the status of the nightly builds
  • the current status of the automated regression tests
  • the status of the allocated defects
  • the status of allocated CRs
  • the current earned value
  • the predicted earned value
  • any tasks deviating from the predicted schedule
  • the present defect flux
  • the defect flux charted against estimate
  • the size of delivered changes
  • the size charted against estimate
  • the complete set of validation test plans
  • the wait/try/pass/fail status of all validation plans

On Fridays, the PMO reviews the overall project status with engineering management. The earned value is monitored, and the status of all change requests associated with the current week is reviewed. Additionally, note is made of any additional CRs that may have been resolved early. Finally, the CRs to be resolved in the next week are reviewed and assignments finalized. 

The same meeting (usually referred to as the ‘Weekly Beating') sees the QA organization reporting on the status of the testing and validation elements. Normally, this sees QA confirming the successful closure of issues from the current or previous week. However, when more testing is required, or when a defect is found in the testing process itself, the meeting includes estimates for the work required to resolve the testing problems, as well as any costs associated with revisiting CRs that were already believed to be resolved.

The real value of these meetings is that they allow the technical team leads, QA, the PMO, and engineering management to get on the same page. All the participants can discuss the ramifications of any issues, and all understand the reasons behind the assignment of priorities.

The Bugfix Release

Development on the Bugfix release is now in full swing. The project schedule is in place, the software is rebuilding each night, and the automated regression tests are running.

The PMO has scheduled a series of propagation meetings. Meetings are held each Monday and Thursday to coordinate the propagation of changes from the Bugfix release forward to the Early Feature release. Representatives of both branches, along with the PMO, review all of the delivered changes and the estimated impact. 

When the changes are incompatible, or when they are not "morally correct" (as when a feature is disabled to eliminate a defect) the propagation is prevented and a new item is added to the Early Feature release schedule. The propagation of changes has been configured to be automatic from the Bugfix to the Early Feature release. Preventing propagation is a manual step that must be coordinated by the PMO and confirmed by the CMO.

As the CRs are being worked, most of them are causing updates in the PT system as well, since the integration between defect tracking and CRs is bi-directional. In this case, the status of the defects changes from acknowledged to work in progress when the CR is assigned. All customer reported defects (as opposed to defects discovered internally) have an associated trouble ticket from the customer call tracking system. These call tickets will be updated as well, reflecting the status change of the defect entry.

In addition to automatically updating the PT system, the CR system will update the project-tracking tool, crediting partial completion when code is delivered. The test case management tool will credit full completion when the associated test cases succeed.

Some of the development team working on the Bugfix release will be new to the code base. A short, well-contained release is a great training ground for developers. Accordingly, interns, fresh-outs, new hires and contractors just coming up to speed will make up as much as seventy percent of the development effort on this branch.

There are four important things for the new developers to absorb while working on this release. First and foremost is the culture of the organization: coding standards, policies, and styles of work. Second is familiarization with the procedures to be followed for working: meetings, code reviews, checkin and checkout procedures, the mechanics of the various systems. Third is familiarization with the codebase itself. Finally, the new developers will be involved in the detail work of the process, providing their mentors with an opportunity to explain the rationale behind some of the procedures. (Most standards documents have a separate rationale document associated with them, but corporate culture won't.)

An excellent example is the root cause analysis process. The obvious starting point for any defect is a review of the code: is there a coding problem that causes the defect? If so, then why didn't an earlier code review catch this problem? If not, then from where does the defect spring? (Combination of factors? Design defect? Requirements problem?) Walking through the root cause analysis can introduce a new staff member to a lot of the development artifacts. Following the root cause analysis with the rework needed to correct illustrates most of the software development procedures.

The Early Feature Release

The development ramp-up has gone smoothly for the Early Feature release. This isn't surprising since so many people have been thinking for so long about how to implement these features. In order to solve the one outstanding technical problem that the development staff had not solved in advance, project management has elected to contract with an outside development shop.

The outside contractor selection process focuses on the ability to deliver the needed technology, compatibility with the organization's processes, and the stability to ensure they chosen contractor will be around for maintenance tasks for the lifetime of the components. Much of this will be handled at the management level, using methodologies not normally associated with the software development arena (such as ‘schmoozing' and ‘kickbacks').

As the paperwork is being signed, the CMO and PMO spring into action. The CMO has to make sure that some paperwork of its own is taken care of, as well as integrating the contractor into the overall project. The PMO now has another set of project tasks to monitor, some additional resources to allocate, and an interface headache trying to stay on top of the contractor's progress.

The first step for the CMO will be to decide the level at which the contractor is integrated into the ongoing development operations. If the contractor were more of a body shop, then the technical experts would be working on-site. This simplifies things immensely - the experts act like other contractors or employees, everything is contained in one location, all is well. 

In this case, the other firm is doing the work off-site, managing the work internally, and generally acting like a good contract development shop. The CMO has to update the software CM plan for the project to specify the interface to the contractor, as well as detailing the vendor CM plan, list of deliverables, and delivery schedule. Of course the contractor tries the old "Don't worry: we'll deliver what is required on the last day" dodge, but CMO is having none of it. Instead, CMO and PMO combine to define a set of milestones, each corresponding to a deliverable baseline from the contractor.

As a final measure, CMO arranges access for the contractor to the internal CR system. This will require some extra work for them, since the contractor isn't using the same version control and build software. However, it's worth doing so that the PMO and upper management can stay on top of project status.

The Late Feature Release

Things aren't going well for the Late Feature release. In fact, the demands made by the two near term branches have consumed almost all of the resources needed by this branch. Knowing a problem when they hear one, the PMO begins negotiating with upper management for a slightly broader resource base. 

The result is the go-ahead for both the Early and Late Feature releases to use offshore resources from the company's development and testing affiliate in India. The company has been working with these developers for two years now, so the wide area network is already established, the development environment has been exported, and the developers are easy to roll on to the projects.

The CMO is familiar with the needs of offshore contributors, and enables repository replication between the Bangalore development center and the local office. The first few nightly builds are made without any changes, since the PMO is still trying to reallocate the work breakdown to utilize the new resources. (In particular, ensuring that all offshore work is tested and validated locally, while assigning offshore test resources to work completed locally.) 

Near the end of the month, the "assessment" iterations for scheduling some of the features is wrapped up, with enough data to enable the project estimating tool to provide a finer estimate of the whole project. Some of the requirements documents will have to change, with corresponding changes needed to all the downstream elements: test plans, validation plans, UML design documents, etc. 

March Bugfix Release

The first week of the month marks the final round of pure development. After the first week ends, the Bugfix release enters ‘soft freeze' - a period when active work may be concluded, but nothing new may start. This is the beginning of the final push to get the release out the door. The PMO has allocated a one week soft freeze because the individual items in the project plan don't take much time to complete.

At the end of the soft freeze comes ‘hard freeze' - no changes at all are permitted to be delivered except as individually approved by the QA group in response to severity 1 or severity 2 defects. This period last two weeks and allows the QA group to run all their testing one more time against a stable target. 

The developers are reassigned to the other branches as their tasks are completed, except the two or three luckless individuals always stuck dealing with the last severity 2 issues before release.

The CMO attempts to get ahead of the game a little bit by doing some of their physical configuration audit early. In this case, they are running all of the necessary reports except for the release content. This audit reports list defects and requirements changes, the associated software change requests, and the corresponding test plans and test cases. The purpose here is to ensure that all of the scheduled changes from the project plan do in fact appear in the product.

The PMO, satisfied by daily status reports from the QA team, issues a warning to the software publishing team to expect a new release on schedule. Once the QA group has passed the final release candidate, the pre-release process kicks off.

The QA group and the CRB update the resolution data of all the defects resolved by this release. The CMO updates all of the CRs for this release to reflect their released status. 

The CMO performs the last step in their physical configuration audit, confirming that the changes previously reported are completely represented in the delivered product, and demonstrating that no changes are in the release that were not approved by the CRB and included in the release plan.

Additionally, the CMO performs its functional configuration audit - reviewing the requirements, the test plans, and the test case results. All requirements have associated test plans or specific test cases identified that verify the requirement is satisfied. The RQM tool, which maintains links between the requirements and the test documents, is used to generate a traceability matrix that is merged with the test case results to confirm that all the relevant requirements have been verified, or that deviations have been written up (in the form of defect reports) for any defects. In the unlikely event of a severity 2 or worse defect, no release can occur without slipping until the defect is resolved, or without obtaining a waiver. Either of these cases requires explicit sign-off from engineering management.

Finally, the CMO generates the Release Content Letter (RCL) - sometimes called a Version Description Document (VDD) - which is a document skeleton automatically generated using the reporting capability of the CR system. This document describes all of the defects and enhancements present in the new release, listing them by their external reference numbers. The documentation team develops the "boilerplate" sections of this report: the corporate contact information, website address, and troubleshooting tips. Product management provides the custom introductory material and performs the final document review.

Once all of the pre-release steps have been performed, the final release image is generated. This image is archived by the CMO and forwarded to the software publishing team for distribution.

The Early Feature Release

With the looming release of the Bugfix release, the focus is placed on getting the release ready to go out the door. The automatic propagation of changes from the Bugfix to the Early Feature release is disabled. One last round of propagation meetings is performed before the Bugfix hard freeze. No further changes will be propagated until after the Bugfix release goes out the door. 

The CMO and the build management team are kept busy setting up synchronization of software repositories between the headquarters and the external contractor hired in February. The contractor is using an open source software repository, so establishing bi-directional synchronization every night is a relatively straightforward process. Now that the changes made by the contractor are being built, and the approved updates coming from the nightly build are being exchanged between the sites, everyone can be much more confident in the ability of the contractor to deliver.

Unlike the Bugfix release, the Early Feature release will definitely need updates to the installation program. The new features being added will depend on the installation hardware. The installation development group already has some of the necessary work completed, since the Target Operating Environment (TOE) document has been modified, including required features and revision levels. The remaining work - installation script code to update the target system for the new features - is handled as regular development in the architecture-specific installation components. Most of the routine scripting is handled automatically, since the TOE data is processed mechanically to extract minimum required characteristics of the target system and generate the installation script.

When the installation package updates become available, the development team will receive most of them automatically. The development network is using a Systems Management package that tracks the latest versions of software approved for the Standard Operating Environment (SOE). When developers register as members of the team for the Early Feature release, the software automatically keeps their system configuration up to date. This has the added benefit of ensuring that the last successful nightly build (the Last Good Build, or LGB) and the last stable build (the Known Good Build, or KGB) are automatically deployed to each developer's desktop.

One of the major hurdles when rapidly deploying updates to a complex application is updating the database schema. Fortunately, the architecture group has designed in a live update capability and provided versioning data for the database records. This enables the developers to perform development and testing while database upgrades are in progress, with relatively little slowdown. (Major schema changes, obviously, may prevent this from functioning correctly.) The ability to "roll back" minor upgrades means that a copy of a testing database can be successively "upgraded" to a new nightly or stable build, tested for a few days, then rolled back to the original data when a new test run is about to commence.

The Late Feature Release

With the availability of developers from the offshore development center, the PMO has reassigned local developers to the Late Feature release. Specifically, some of the more "blue sky" features being considered for this release are going to require a lot of research and the teams to work those features need to be firmed up early. In the two months since the original project schedule was set up, some of those developers have become deeply involved in the Early Feature release: transitioning them will be a challenge.

The simplest parts are the automated systems. CRs assigned to these developers are bulk-transitioned backwards to "pending assignment" status, to enable the development managers to allocate them anew. (Some of these changes may very well be allocated overseas. Since the overseas development center uses the same CR database, this is simple.) In order to make the hand-off as painless as possible, interim design and code reviews are scheduled for each CR. As the reviews are completed, the CRs are assigned to new developers who are now up to speed on the status of each item. Notes from the reviews are entered into the CR records as well, to minimize the questions that may come from some of the overwhelmed developers taking over all these changes.

While development is reorganizing to use its new resources, the testing groups are coming up for air after the rush to get the Bugfix release out the door. The big issue for testing will be the development of test plans for the Late Feature release (the Early Feature release test plans have been ready for some time -they knew the work was coming, just not when). The requirements for the Late Feature release have finally settled down, and the architecture changes are pretty well understood (if not totally documented) so the overall test planning process can get pretty far before needing to sync up with the engineering teams again.

Once the test plans are laid out, they are linked in the Test Case Management (TCM) tool to the corresponding requirements, architecture, and design elements in the RQM and CASE tools. Defects reported by the testing group will be automatically logged against the corresponding design elements. As test plans are finalized, some of the test engineers begin work on updating the testing harness - some of the more esoteric features require that the testing process change a little. Once all the test frame changes are themselves tested, the test frame undergoes an internal release and is made available to all testers. The development of the test cases themselves can begin.

The build manager for the Late Feature release has come to the realization that some of the changes are going to require massive changes to the SOE and TOE. The new web services framework, for example, will require that all the developers working on the release have a new operating system version on their desktop, as well as new development tools. Similarly, the new deployment and automatic update features will require a new OS and new third party software on the target installation platform.

Many of these changes are relatively simple to implement: the new operating systems can still be updated using the Systems Management tools, and the new operating systems themselves can be licensed and acquired easily. But the need for developers to be able to work in two or more radically different environments when supporting both releases may pose some problems. 

Some of these problems can be ameliorated by dual-booting machines for various release configurations. Other solutions involve using KVM switches to connect several machines to a single developer's desktop, using soft switching technology to connect a single keyboard/mouse to multiple machines, using removable hard drives to archive good configurations and development support environments for very old releases, using environment replication software (Ghost images) to archive entire configurations, and using machine emulation software to run several configurations simultaneously on the same desktop.

April Bugfix Release

In April, the sun is shining, the birds are singing, and the Bugfix release is finally out the door. All that remains is for the last post-release steps to be taken care of. Since this is purely a Bugfix release, there are no feature updates required. This means that no training material, sales brochures, etc. need to be changed. 

The software production group has already archived the golden disk containing the official released image. The distribution centers have received the update, and confirmed it, and superseded the old release in production. The RCL has been burned onto the release image as well as being printed and inserted into all new packages. The sustaining engineering team has written an upgrade/update pamphlet for existing customers wanting to deploy the new software. (In point of fact, the upgrade/update letter looks suspiciously like the last one - one team's ‘consistency of style' is another team's plagiarism.)

The CMO will finalize its audits and hand the results off to the PMO. The PMO will organize a release postmortem to look for any problems with the process that could have been handled better. Once the audits are completed, the traceability from defect reports and requirements to release code is verified. The requirements and software CRs, and the open defect reports, can be closed out. Those defect reports associated with customer trouble tickets will be updated and the customer trouble tickets will be closed. The customer support organization will contact the individual customers to notify them that their issues are resolved and to make arrangements to deliver the software updates. 

The Early Feature Release

With the wrap-up of the Bugfix release, the testing team and a few developers have become available for assignment. The PMO and the test organization will move them around as needed. Since they are coming in to an ongoing project in the middle, mostly they will receive "new work" instead of trying to take over an existing task.

Changes made while change propagation was frozen in March will be examined by the PMO and the development team. These meetings will allocate the propagation (or reengineering) of the changes for the Early Feature release among the development teams, and update the development schedules as a result.

The first baseline for the local contract-coding shop comes and the contractor is already behind schedule. This surprises just about no-one, since the CMO reported in their vendor CM audit that the contractor looked to be at CMM level one, with some hints that they could see the path to level two but were not on it. The PMO drags one of the senior developers to a meeting with representatives from the contractor. After pointing out the clause in the contract that provides for significant monetary penalties for non-delivery, the PMO suggests that the senior developer provide a schedule and estimate for the deliverables assuming that the developer were using internal technology. This can be merged with the contractor's own estimates (which turn out, sadly, to be a series of guesses for entire systems: "two months to get that done, and another month for this" with no documentation, work breakdown, or task list). 

When the PMO and engineering management realize what is going on, a set of emergency meetings is scheduled and the PMO assigns one of their own people to monitor the internal situation at the contractor. Weekly status meetings begin. According to one project manager, "They're a month into the contract, and already two months late. But we'll get ‘em fixed, no sweat." The synchronization of the contractor's CM system with the internal build system means that development can monitor all the contractor deliverables, and keep the PMO informed when things go amiss. (This is costing resources, but the schedule remains roughly intact.)

In an attempt to keep relations friendly with the contractor, the CMO sets up a build system at the contractor's location. This server is updated with the latest build of the project, including the contractor's part, on a nightly basis. The CMO and development management hope that having the entire system available will enable the contractor to test and debug a little quicker, thereby getting back some of the lost time. (There are some intellectual property issues here, so it takes quite a while to get the whole thing approved.)

The build team, meanwhile, has heard from the developers that some of the features are "just about done". Staying ahead of the curve, a good nightly build is copied out and designated as the first numbered release candidate. This gives the build and test teams a chance to practice the handoff, and provides a straw man for the audit and trace functions. All of the automated content verification, delivery, and regression scripts can be run (to failure, mostly) on this first candidate. (We knew the scripts would work, of course: "Trust, but verify.")

The Late Feature Release

The updates to the requirements and architecture are complete, the high-level design documents for the new features have been substantially wrapped up, and the test plans (not test cases) for the new features are completed. Since this is a logical "documentation milestone," the CMO has scheduled an allocated baseline for this month. All documents will be reviewed and archived, and a baseline audit will be conducted to check the traceability and verifiability of the design artifacts. 

With the conclusion of the Bugfix release the PMO elects to propagate all of the Bugfix changes, and whatever Early Feature release changes have made it into testing, into the Late Feature code base. This bulk merge of changes risks interrupting the development teams, but the extent and impact of the changes is already pretty well understood because the Early Feature release did the same sort of analysis for their own merge earlier in the month.

The changes to the test framework have been finished. After some "test testing" - in this case using the new framework to test an old release - the testing organization performs an internal release to make the new framework available to the developers and other testing teams. Documentation is available, of course, but because of the changes the API document has to be updated. The testing group's intranet web site provides all these documents once they are reviewed and approved. 

The highest impact document is the required tests database. This database - mapping the language, purpose, and design of modules to the testing elements that are required or recommended to be present - must be updated for the new technologies being introduced with the Late Feature release. This involves the local experts (including contractors) working with the testing and architecture groups to determine the right amount of mandatory testing.

Aftershocks from the changes to the SOE and TOE are still being felt throughout the development organization. Some of the development and (especially) testing hardware is incompatible with the updated software requirements. Engineering management is working with the Licensing group to determine how many customers will be impacted by the incompatibility, and how severe the impact will be. (It is not anticipated that the impact will be so high that the upgrade must be abandoned. But if the impact were sufficiently high, a "non-upgrade" release might be considered as a support path of last resort for legacy customers.)

Another problem has arisen for the CMO and build management team: the existing metrics tools don't support the new technology used in this release. Part of the problem is legacy data - the project estimating tool, for example, needs legacy data to use when generating estimates. The other part of the problem is technical - the code-counting and analysis tool doesn't understand the new languages. 

Both of these situations can be remedied by applying to the respective vendors. In the case of the code analysis tool, it is likely that an update is already on the way. If not, some customer-funded engineering may be required to get the desired results. (Alternatively, a different tool may be used, entirely or for just the new parts of the project. But integrating a new tool is often more expensive than paying to have the existing tool brought up to date.) 

The project estimation tool will take more work. Since the technology is totally new, there is no data available. Engineering management contracts with the tool vendor to provide internal scheduling and metric data to the vendor in exchange for access to the updated models when they become available. (This is relatively common, but it does tend to skew the vendors' models early on, since the data are from shops that rigorously collect data: usually better organized than most.) 

May The Early Feature Release

The problems with the local contractor have begun to have real effects on the project schedule. The PMO decides to handle this by moving one late-scheduled feature from the Early Feature release to the Late Feature release. The development group, with this pressure removed, has the resources to spend to manage the contractor more closely. 

With the creation of the first numbered release candidate, the testing team has begun to execute their test plans. Some test cases remain to be written, of course, but the regression suite and the performance evaluation tests from the prior release can still run, as well as certain basic unit test cases for the new features. As the month progresses, all of the existing functionality tests will be run, and as many of the new feature tests as possible.

The CMO and the build team have an automatically maintained impact analysis database that maps source code and third party modules to affected deliverable products. This database is used to automatically select regression tests to run against the nightly build, based on the changes delivered to the build. 

In order to schedule tests effectively, the testing organization polls the developers to predict the modules impacted by changes that are assigned or pending but which have not yet been completed. This data, combined with the project schedule, gives the testing group a roadmap of which tests they will be expected to run in the future. This, in turn, is used to build the overall test plan - running the right tests in the right order streamlines the entire process.

The Late Feature Release

Both development and the build team are having some problems caused by the SOE and TOE changes. The offshore development group in India and the local contractor both have to keep up with the changes manually - the systems management software used internally cannot update either site. This is not a problem of record keeping, since the CMO is tracking the changes to both documents, so much as it is a problem of making sure the changes get applied in a timely fashion. The India site, especially, is cursed by the vast time zone difference as well as not having access to the same software market as the local office. Frequently, the build management team has to purchase software locally and then FedEx it overseas.

The build team is working around the issue of metrics for the new language code by cobbling together a set of work-around scripts to provide rudimentary values for the database. The new language looks enough like C that with some basic text manipulation the existing tools can be run. The team is less sanguine about the complexity metrics, but whatever data can be had will suffice until the tool vendor provides an update.

June The Early Feature Release

With two months to go until ship date, the Early Feature release is about to go into soft freeze. With the exception of changes coming from the local contractor, all the feature work that is going to be delivered has already started. The PMO requests a process deviation to allow the local contractor to catch up. The development organization is working smoothly, and expects to have all of the features implemented within the next four to five weeks.

The testing team is working at full capacity. The ‘organic' testing groups - those attached directly to development teams - have worked with the developers to code the unit and module test cases. Once those tests are ready to run, the developers can run them automatically as part of their desktop build process. The testers, released from this work, help out the ‘formal' testing teams and help with support activities like code reviews.

The PMO monitors the results of the testing process, including the unit testing, via the project dashboard. The numbers of defects found and fixed is one of the metrics that the project estimating tool tracks (this is a good indicator of where the project is in its development/test cycle).

The Late Feature Release

The update to the code metric software is delivered in very rough form. A significant part of the functionality is missing for the new language, but the "basic" metrics - size, organization, and complexity - are available. The CMO begins work to update the metrics data in the database with the "correct" values reported by the tool. (Having the data stored in the repository simplifies the generation of many of the metrics reports.) 

The product management team contacts the PMO with the news that: 

The customers are asking for new features. The kinds of features that take a lot of work. To get any of them delivered will take massive changes to the existing software...

July

July sees the Early Feature release go through hard freeze and then ship. The Late Feature release is developing smoothly, although the shipment of the Early release is a good time to perform a propagation sweep, getting all the changes moved forward in one fell swoop. 

Since this is an iterative process, and we've now seen two iterations, we can safely fade away before the whole thing starts up once more, "déjà vu, all over again."



Austin Hastings
has been a software developer, Unix administrator, and CM weenie. He is currently Principal Consultant for Longacre, Inc., a consultancy in software CM and process automation.

You can reach Mr. Hastings by email at
Austin_Hastings@yahoo.com 

 

Trackback(0)

Comments (0)add comment


Write comment

You must be logged in to post a comment. Please register if you do not have an account yet.

busy
Last Updated on Thursday, 29 June 2006 07:22
 
allo-puren without retin-a drugstore side effects of cordarone medication cause where to buy depression medicine buy acticin permethrin drug effexor xr generic available when mg cvs pharmacies in north carolina order colchicine cheap buy trial erection packs 2 lantus generic price zyvox 800 mg information is nizoral a prescription zyprexa prescription drugs where cane i get free samples of viagra dog medicine for allergies propecia cost in india is effexor available in generic xr venlafaxine order etodolac cheap official canadian complaints online pharmacy mexican ditropan order celexa online aloxyn price cheap prelone hiv antiviral drugs side effects order fluoxetine 60 mg ricky s drugstore in new york shop apple discount drugs berlin order allegra lowest price paxil drugs interact buy biaxin line deproxin coupon buy advair uk pharmacy what is the generic name for singulair cheap nexium india mobic medicine arthritis buy trevilor buy furosemide no prescription drug generic names vs trade names buy zetia canada erocap canadian purchase mexitil online is viagra over the counter in spain purchase meclizine 25 mg online cheap coversyl 10mg buy protonix online no prescription provera prescription dosage antifungal drug resistance loeffler pravastatin sodium 40 mg g5 debossed flamatrol fedex order zanaflex from blood pressure medication amlodipine canadian online pharmacy directory trade and generic drug names cheap celexa online low betnovate skin problems generic coupons buy effexor xr overnight pharmacy phenergan drugs without buy cheap generic buy ampicillin discount discount prescription eyeglasses store biaxin medication buy drugs from canada law mexican zantac pharmacy prescription pharmacy buy alesse drug waterloo order of battle allied army cefspan nextday dog arthritis natural treatment furosemide overnight buying prescription drugs from canada legal immunosuppressive drugs methotrexate veterinary drugs directorate of health canada vdd purchase abilify 2 mg cheap celebrex us purchase cialis overnight delivery online azelastina seller discount septran buy nitroglycerin lowest price forced seller doctrine order aldactone 50 mg diprolene af cream price fluticasonum pharmacy generic clonidine in use doctor cheap viagra tablets purchasing antibiotics online overnight pharmacy without cheap revia dumoxin canada without a script allopurinol pills canadian cheap cafatine order augmentin 875 mg pilex delivery next day generic generic cialis overnight sumycin without what is viagra and what does it do enal coupon cheap normodyne india generic medicine acticin by mail buy stiemycin online zoloft sexual dysfunction side effects where can i get propecia from benadryl with or without food cheap azadose prilosec stores order actos usa online canadian pharmacy lopressor drugstore clostilbegyt sale buy alli diet pills uk buy actos prescription diabetes washington low income housing alliance contact seattle order sumycin cheap without buy avodart online seroquel online no prescription fucidin prescription only purchase buspar generic avapro in brand name attribute buy requip generic topamax generic name where to buy generic viagra in canada prescription wellbutrin overdose prescription diflucan online generic advair diskus us drug pharmacie online us buy generic advair inhaler buy blood pressure pills baby food allergies symptoms purchase actos pharmacy epidropal price buy cardinal tetras little blue pill reviews buy citalopram cheap do i need a prescription for clomid bacteric sale lotrisone cod overnight zyvox 500 mg prescription discount normopresan purchase sleep aid sleepaid canadian pharmacy medicine actos agency bladder cancer 24 hour pharmacies washington dc price list doxycycline hyclate wholesale cialis manufacturers online is viagra generic legal cheapest prescription buy motrin online how much does propecia cost 2010 flamatrol canada where cane i buy clomid over the counter baclofen medication uses where can i buy generic advair buy cialis no prescription canada online where to buy nolvadex online what is the best antibiotic for pneumonia homeopathic medicine for depression and anxiety buy viagra discount anxiety pill clonazepam where to buy over the counter discount diflucan nexium coupons medication discount for nexium rosuvastatin from ranbaxy where can i buy advair online medicine ciprofloxacin cost of propecia in canada licensed pharmacy coreg cheap tadalafil uk generic cialis plavix medicinenet com cheap order sinequan approved target pharmacy jobs in florida buy kamagra jelly best anxiety medicine reviews tadalis sx low cost abilify online pharmacies drugs lantus price in india real viagra for sale nexium discount card buy ovral-l where to buy online for cheap generic clomid cheap actos ordering nizoral buy dramamine tablets uk best place to buy kamagra online canadian symptoms for allergies gluten overnight viagra us vantin canada canadian online pharmacy without prescriptions generic cheap kamagra pharmacy canadian cheap dilzem rx advair 250 coupon printable vantin drugs furosemide generic trade cabana non generic wholesale levitra accept online drugstore taking prednisone without food remedies for female sexual dysfunction abilify by mail aripoprazole online buy cheap acticin pills sexual dysfunction association diltia low cost blue pill for women 2010 singulair medicine ingredients elavil generic equivalent canadian ranitidine antinaus prescription generic viagra canada online pharmacy prescription ardomon price pharmacy order south shore kentucky pharmacies when is lipitor going generic fluoxetine prescription only drugstore order elocon cream prometrium from 2 dpo illegal prescription drugs pictures order nizoral shampoo order zoloft sertraline buy grifulvin v flamicina canada designer drugs for sale online zovirax stores buy cheap atacand no prescription 1 drugs trial erection packs pharmacy discount lansoprazola minipress discount amoxiclav lowest procardia by mail cheap erocap buy cheap generic accutane cheap sildenafilum advair medication guide asthma defenac sr canada best allergies medicines order prescription pills new york new hampshire cialis prices pill purchase abilify 15mg buy topamax online uk counter cheapest floxin buy tetracycline online pharmacy per pill without a transcript cheap compazine buy seroxat tablets adapin drugstore walmart pharmacies in san antonio texas comprar cialis generico en espana contrareembolso torsemide without indian advair adoair copd ordering minipress generic drugs without a script cheap compazine buy clomiphene citrate no prescription where to buy non drowsy dramamine etodolac generic cost pharmacies purchase zovirax canadian overnight pharmacy without buy revia order online pharmacy cheap doxazosin alli diet medications where can i get metformin from zestril drugstore low prices buy generic tricare pharmacies in mississippi canada drugs pharmacy cheap zetia where alligator snapping turtles live canadian haldol walmart pharmacy canada suprax discount xenical drugs orlistat comprar viagra online en espana walgreens pharmacy jobs florida cheap apo-tetra purchase benicar 40 mg buy zovirax cream us buy alli online india discount cardioprotect seller compare viagra vs cialis vs levitra buy mobicool mini fridge alli diet pill directions high blood pressure medication during pregnancy safe where vermox where can i buy viagra online canada order amoxil cheap no prescription tramadol overnight delivery buy cheap viagra uk Ð’Ñ—que tipo de enlace poseen las sales lexapro 5mg dose get free samples of viagra online pill store acyclovir no prescription overnight shipping best site to buy kamagra from order buy elocon dose ciloxan coupon northwest pharmacy canada discounts can i buy antibiotics online uk counter order erection packs 1 cialis treatment buy medication online order actos buy differin 3 online overnight buy lithium carbonate pills buying teroxina mexico cafergot allergy induced asthma symptoms pets my canadian pharmacy complaints received pfizer effexor coupon can you get high from maxalt free delivery where to get accutane buy pariet 20mg online lok adalat india divorce symptoms for asthma cough canada drugs pharmacy online where to biaxin purchase roaccutane 10mg online the alliance of states with prescription monitoring programs buy generic viagra online overnight levitra adalat indian movie 1958 buy cheap clomid usa discount canada discount drugs naples the pill anxiety disorder duetact low cost drugstore metformin drugs interactions ordering flonase online buy symbol ls2208 tadalafil canada online pharmacy zithromax overnight delivery canada canadian cleocin discount online buy alli catapres fedex wholesale viagra buyer drug proscar prescription drug eritromicina without perscription buy ilosone precio de cabergolina en mexico cheap cozaar 50 mg viagra from pfizer in india buy clomid online paypal cozaar by mail robaxin overnight delivery view topic side effects from flomax medication drug allergy rash pictures gasex without order periactin europe canadian no prescription cialis online pharmacy generic advair diskus international buy online without script order abilify cheap metformin 850 mg discount hotels concord ca without a script cabana online buy differin gel 45g home made treatment for arthritis purchase extendaquin online pain meds canada order cafergot no prescription zyvox medicine used mexican lotrisone where to isoptin cheap discount coupons for prescription drugs generic viagra india reviews lowest overnight flagyl buy cheap jelly online kamagra tablets buy phenergan canadian mail order pharmacy acomplia canada cheap online buy effexor wholesale levitra online drugstore order robaxin for dogs round light blue pill m 30 side effects from lasix to dogs quickest toprol xl is it legal to buy viagra online from canada cheap kamagra supplier com lithium generic pictures buy flonase online prescription discount tire company concord nc buy vpxl generic leader price biron viagra sublingual overnight buy medical abortion pill online sildenafil citrate 50mg uk cordarone medication side effects mexico border periactin exelon india buy astelin india coversyl plus blood pressure medication indapamide buy accutane with paypal erection packs 2 shop order without pills viagra online pharmacies mexican amaryl without buy nitroglycerin 0.3 mg drugs used for hypertension in pregnancy defencin pharmacy prescription prevacid generic cheap antabuse 200mg online buy tablets india cheapest kamagra discount card for bystolic buy aciclovir herpes tablets buy zyprexa canada levitra side effects doses overnight pharmacy biaxin without colchicine discount pharmacy prescription purchase neurontin 300 mg generic buy viagra plus order alli pills cheap price cheap diclofenac sodium tretinoin generic price order 1 pharmacy adalat cod licensed pharmacy frumil oral antifungal pills yeast infection colchicinum low cost buy cheap cialis in canada low cost drugs about com where naprosyn amantadine prescriptions sexual dysfunction association men;s health forum indian trimox alternative treatment for osteo arthritis prinivil without prescriptions canadian pharmacy cialis super active is viagra for women effective effexor xr generic antidepressants extended release clozaril overnight delivery new york drugs kingpins arrested discount pralenal walgreens pharmacy seattle downtown canadian alliance terminals calgary warehousing little round blue pill with a 215 legalized drugs in mexico 2010 buy antivert lowest price overnight us pharmacy prescription valtrex discount aman alli weight loss reviews 2011 enaril seller trial erection packs canada alphagan drugs canadian meclizine treatment of osteoarthritis of hip indian alligator wikipedia western lithium canada corporation stock mexican pharmacy no doctor online no prescription corotrend coupon order zofran online no prescription buy accutane reviews online without zanaflex generic ambidrin pharmacy natural arthritis treatment and relief canada drug online pharmacy reviews without a script buy abana low price defencin seller taking levitra without ed clozapinum prescription order zovirax ointment lexapro drugstore com roaccutane for sale philippines cheap drugs from floxstat canada purchase seroquel us medicine actos pioglitazone hydrochloride dosage online pharmacy no prescription doctors cialis cheap lexapro 10mg no prescription buy cialis tadalafil usa pill canadian pharmacy duetact treatment of acute asthma exacerbation in children can you buy viagra over the counter uk purchase antibiotics online amoxil estra-l seller where to allopurinol order generic indian flomax buy viagra without prescriptions natural medicine for anxiety medicine where does lamictal rash start amitriptyline buy online uk purchase elavil 150 mg low dose amitriptyline for pain neuropathic natural treatment for osteoarthritis psoriasis buy kamagra uk com cheap allopurinol drugstore robaxin generic drug list of 4 walmart drugs 2010 naprosyn generic canada prescription utah pharmacy no erection packs 2 canada how to get a cialis prescription online cheap metolar without a script buy prescription desyrel cheap viagra sublingual buy hyzaar paypal can you really buy viagra online drug where to buy lamisil pills cvs pharmacy drug store ontario diprolene cream-no prescription safeway pharmacy san francisco taraval tamsulosin costco buy armidex lantus canada pharmacy purchase doxycycline 100mg mexican drugs cartels us arrests psych meds for anxiety does levitra work with alcohol dipyridamole mexico zestril overnight purchase ampicillin 500 mg legal rx medications cheap renovation supplies melbourne indian buy trandate visa drugs what are the best diet pills for women crinone low cost pharmacies in missouri city side effects from provera while pregnant purchase prednisone canada buy acetazolamide blue pill v 3597 imprint cheap kamagra online impotence can you buy viagra online safely buying supressin isoniazid drugstore yasmin lawsuit canada 2011 viagra 50 mg reviews health canada drugs not for me order lasix 500mg order risperdal cheap viagra private prescription cost flovent mexico buy estrace generic list of pain pills names ortho tri-cyclen without insurance buy metronidazole online tamoxifen without radiation ordering adalat is generic zoloft the same tadalafil 20mg dose buy cialis super active discount alli diet reviews uk cytotec prescription information emails from canadian pharmacy advair coupon printable canada drugs store pharmacy tadalafil generic alternative to cialis 5mg delivery buy nizoral prescription buy drugs uk generic viagra etodolac low cost wow low level pvp vendor alliance non prescription drugs similar to adderall discount prescription glasses designer pravastatin sodium 160 mg lu canadian pharmacy with no prescription needed lincoln nebraska pharmacies buy stanlip where cane i buy clomid for pct integrated medicine alliance purchase propecia canada buy allegra drugstore buy cheap effexor online no prescription levitra plus overnight delivery mexico pharmacies overnight buying dutasteridum sildenafil citrate womenra tadalafil without a script cheap cheap rosuvastin cheap rx drugs no rx buy alesse ethinyl estradiol canadian order pain pills online no prescription discount ketiapin cialis overnight no prescription symptoms of allergies in dogs allergic reaction artrenac by mail porque mexico no avanza en tecnologia buy bystolic 10mg wholesale levitra suppliers cheap ditropan for discount augmentin prescription free buy allegra paypal buy paxil cr cheap online pharmacy prescription drugs prices discount where to buy vintage enamel brooches anderson indiana pharmacies buy cardinal fish cheap online pharmacy tadalafil buy psoriatic arthritis treatments exercise depakote overnight delivery george strait love without end amen buy amoxicillin cheap buy weight loss pill medication assistance advair diskus inhalation powder buccastem canadian advair india cheap kia spectra parts otc pain pills for dogs quick relief medications for asthma atoken overnight overnight flomax prescription canadian pharmacy spam 2012 buying pipolphen ariclaim price pharmacy buy alesse online buy dipyridamole no prescription discount azantac buy cialis tadalafil 10mg purchase abilify 2mg canada best rx online pharmacy reviews canadian generic for advair 600 50 overnight erection packs two online drug order reglan cheap renovating vs buying new house buy tamoxifen online uk drugstore chloramphenicol drugstore corotrend low cost online generic mexico buy metoclopramide without epanutin price zyprexa medicine side effects generic advair cane you buy cialis in canada order prescription pills online with prescription buying drugs in canada online buy amoxicillin overnight 24 hour pharmacies in maine overnight delivery buy cheap order isoptin enapren mexico tadalis sx overnight erection packs 2 generic rheumatoid arthritis pain treatment options ra buy risperdal line oxycodone online pharmacy no prescription needed cheap generic cialis soft tabs discount dilantin medication purchase diarex online prevacid canada over the counter discount noltam buy erection packs 2 with buy alligator gar fish cheap diarex overnight buying mebendazole online toprol xl prescription assistance programs hyzaar mexico free shipping best generic drugs safe ephedraxin overnight can you buy prestige tokens on mw3 uk cheap alesse online pharmacy prescription side effects from singulair 5mg canadian drugs safe affordable pain pills addiction recovery canadian pharmacy no prescriptions needed buy generic cheap pills kamagra 100mg online walmart online pharmacy expense report buy lipitor 20 mg buy glucophage without prescriptions sign and symptoms of allergies to medicines remeron without order prescription diovan hct generic name buy luvox mg flixotide canada best natural treatment for osteoarthritis pain buy avapro 75 mg target red card pharmacy rewards where to alesse massachusetts online buying valisone remeron shop order rx drugs canada buy wellbutrin xl 150 buehler's buy low pharmacy jasper in target pharmacy new prescription coupon 2012 aricept drugs alzheimer fifths disease symptoms of sinus allergies in toddlers advair without script buy cheap aman summer palace discount unipharm wholesale drugs ltd canada best treatment for arthritis in knee diciclomina lowest rx drugs list buy cleocin hcl price prescription generic ceporex buying prescriptions from mexico online licensed pharmacy cholestoplex buy requip visa order amitriptyline 75mg where can i buy alligator meat in new york alphagan drugstore com buy desyrel paypal no prescription online pharmacy review discount fluctin canadian prescription medications cheap allinclusive holidays for 2010 driptane canada weight gain from seroquel is caused by generic viagra cialis online pharmacy accutane starting canada drugs ranitidine prescription assistance can you buy muscle relaxants over the counter sildenafil citrate side effects uk order flonase cheap low blood pressure medications buy synthroid lowest price buy kamagra oral jelly uk sildenafil grifulvin v generic buying metobeta buy alesse 21 day heartworm medicine without prescription buying nu-ampi buy naprosyn uk pharmacy medrol shop where to buy aciclovir 200mg tablets cheap celebrex 400 mg proventil medicinent buy tretinoin gel usp 0.025 pharmacy assistant courses online uk cheapest generic accutane where to buy zovirax acyclovir cialis coupon code small blue pills pill identification prescriptions acticin overnight doxycin prescription cheap alli us zyvox 800 mg iv short sales los feliz buy pilex cheap prescription price cheap accutane blue pillar candles cheap acute bronchial asthma treatment withdrawal from zyprexa how long does it last avodart prescription canada dog antibiotics without prescription overnight delivery buy online aricept without buy atenix periactin store prescription hives pariet generic drug amitriptyline online no prescription elavil maclaren triumph stroller cheap order topamax indian provera depomedrol mg ml charleston west virginia pharmacies buy kamagra tablets uk cheap clomid for sale cymbalta drugs side effects cheapest indocin antibiotics overnight us acicvir sale buy suprax 20 mg psoriatic arthritis treatment methotrexate discount enalind valerian root pills for anxiety licensed pharmacy robaxin new over the counter medication for allergies list of common medicine allergies buying estrotab available buy clomiphene no prescription licensed pharmacy viagra sublingual buy prescription sunpills online canada fontex lowest how much is maxalt without insurance latest treatment for rheumatoid arthritis buy prescription pills diet los feliz 3 cinemas prices buy elocon ointment online female sexual dysfunction wiki buy erexin-v lowest price university of wisconsin pharmacies there generic actoplus met drugs natural asthma treatments dogs get viagra free sample approved cardinal health pharmacy solutions discount augmentin coupons aman hotels discount yasmin shop online generic purchase prednisolone 5mg dogs where coumadin anyone discount forced sale holistic medicine allergies buy cheap aricept online paxil shop cheap india buy kamagra online discount rates at amangiri coreg without a script unisom medicine licensed pharmacy inderal drugs order erection packs 3 discount prescription drugs for seniors user reviews for effexor xr drugs prescription baclofen pharmacies in drugstores in new york city purchase diclofenac gel online sildenafil 100mg tablets india canadian pharmacy spamalot 2010 order delivery diovan online buy weight loss drugs online buying prozac canada requip xl canada chlamydia treatment without antibiotics aman pharmacy medicine baclofen floxet canada cheap prescription glasses online canada porque me sale enlace esta roto buying ilotycin no prescription needed buy celebrex online wellbutrin in india prescriptions buy generic alphagan prescription drugs without prescriptions order amaryllis gift cialis tadalafil sildenafil generic 20mg accutane buy it online pharmacy purchase propecia singapore buy cutivate online no prescription alliant university mexico city campus blood pressure monitor to buy online a blue pill with a 215 on it canadian drugs cheaper how buy nizoral 2 online buy soviclor online generic equivalent for lexapro get free pills generic viagra elocom mexico demadex fedex flunase lowest buy normozide best antifungal cream for toenails blood pressure pill alternatives aceon discount canadian alliance terminals calgary treatment for rheumatoid arthritis in homeopathy cheap sarotena prescription lantus solostar viagra natural substitute generic actoplus met 15 50 cialis soft tabs online generic pharmacy tetracycline 500mg for acne walmart drugs online flomax drug medication side effects printable coupons for cvs pharmacy in store fluxet pharmacy licensed pharmacy trazodone order tadalafil online uk 5mg prevacid medicine generic buy vantin cheap generic drugs for high cholesterol best medicines for ocd and anxiety buy reglan cheap buy telfast tabletki motrin after delivery side effects from singulair depression buy periactin with no prescription common blood pressure pills purchase prednisone online buy doxazosin canada prescription without a script buy tadalafil buy zoton fastab online abana drugs pharmacy online canadian finasteridum canada cuplactin store free sample prescription for viagra anonymity secure order dostinex online pharmacy buy weight loss medication long term care pharmacies in illinois discount synermox periactin store monoamine medicine buying dicapen secure online pharmacy offers amantadine overnight delivery cam you buy viagra from canada overnight drugs purchase risperdal lowest price importing drugs from canada pros and cons buy viagra in london england floxin drugstore prescription pain medicine pregnancy canadian drug prices 2010 generic viagra online pharmacy cheap cialis depo-provera nextday order canadian drugs online drugstore canadian pharmacy erection packs 6 drugs ordering synthroid online no prescription canadian pharmacy complaints on line buy ventolin generic xenical india cost generic viagra online pharmacy cialis mail order levitra online pharmacy alental without terramycin generic form inderal generic name propranolol pran buy maxalt cheap amoxicillin sale no prescription proscar 5mg hair sulfa drugs for uti is there a generic drug for viagra cheap metaxalone buy skelaxin buy alligator clips singapore know buy uk canadian generic altace where to buy obagi tretinoin cream dermatology is ordering viagra online legal purchase generic for advair diskus 250 50 inhaler crestor by mail order prednisone buy no prescription glucophage medicine rx drugstore chains tablets yagara shop ordering calan view topic prescription cafergot medication interactions fucidin overnight delivery erymax price where to alphagan view topic heartworm meds for dogs online ventolin shop online order xenical uk best place to buy generic cialis fact depo provera price in canada licensed pharmacy erexin-v buy pressure cooker sydney colchysat prescription buy fluconazole online canada can i buy viagra at boots generic drug with no insurance cheap canadian drugs buy viagra canada no prescription impotence delivery overnight generic plendil anti nausea medication compazine blue sky drugs in canada vipps online pharmacies canada pharmacies in washington pa discount pravaselect order cephalexin 500mg cap how many pharmacy schools in canada ordering cialis secure drug shop does generic viagra work online canadian pharmacy online viagra abilify medication aripiprazole deprax pharmacy 50mg depression cheap antibiotics prescriptions medications without cheap viagra plus finastid coupon buy propecia buy line generic amitriptyline order proscar finasteride the blue pill for men best meds for social anxiety disorder buy sulfamethoxazole mg bugazon seller mexican ephedraxin buy coumadin australia frumil mexico cheap abilify 5mg aripiprazole cardinal nextday buy premarin online saturday delivery discount omnic mexitil pharmacies pharmacy drugstore buying estrogen canada zestril mexico where serpina where clomid buy uk prescription actos alternative medicine bladder cancer norvasc medicine for high blood pressure buy cheap extendaquin unreliable online pharmacy no prescription what are the symptoms of egg allergies mexican buy zofran cheap abilify 2 mg online latest treatments for erectile dysfunction want to buy alligator gar discount cheap valtrex pills overnight online buy aceon albuterol without asthma purchase antibiotics no prescription tadalafil tablets 20 mg india blue pill reviews medical treatment of asthma buy sumycin visa canadian pharmacy zestoretic zovirax prescription medication amaryl drugs prescription giant pharmacies maryland buy drugs without prescription online pharmacies buy aciphex canada rabeprazole isoptin drugstore discount can you buy viagra online cialis cheap university books uk genuine viagra cheapest buy premarin 0.3 mg where to buy yasmin contraceptive pill buy depression drugs vase where to get zovirax shop n save pharmacy harvester where to buy aciclovir 200mg pharmacies in indian neurontin generic purchase prinivil lowest price allopurinol discount online cheap discount horizem albuterol for sale online baclofen price without insurance online canadian pharmacy no prescription needed viagra dura-estrin price discount sominex best place to buy viagra online yahoo prescription viagra uk no prescription generic viagra sildenafil citrate 50 mg 100mg order levitra online no prescription bonus where can i buy cialis mexico canadian pharmacy facicam by mail pharmacy canada cheap viagra jelly prescription accutane price actoplus drugs buying verap zyvox 200 mg pharmacies in kansas city kansas safeway pharmacy san francisco overnight delivery buy nizoral bayer levitra 20 mg prescriptions bacterial buy vantin kentucky pills antimicrobial drugs ribosome amoxicillin overnight no prescription medicine ampicillin tr cardace mexico canadian drug prescriptions com buy cheap amoxil in usa sure save pharmacy harvest mississippi drugs discount cheap maclaren strollers sale viagra reviews canada buy generic purchase sleep aids home cures for erectile dysfunction risperdal consta canada price osteoarthritis natural treatment glucosamine where to buy pain pills without prescription sexual dysfunction treatment where accutane singapore buy 40 mg generic accutane medicine acivir pills legalized drugs in mexico generic viagra online free shipping mexico cabgolin $4 lipitor participating pharmacies taking sequel viagra pills ranitidine low cost where can i buy fucidin cream order elocon cream 0.1 5g order erection packs sequel six low cost avapro order accutane no rx isotretinoin nexium online pharmacy no prescription no prescription amoxicillin online overnight second day pill non generic cialis online buy elimite online cheap minocin from lederle list of pharmacies in new jersey order cheap diarex free trial pack generic viagra world without end amen amen generic mexican propranolol online cephoral fedex view topic viewtopic php f sarafem generic walmart prescriptions program drug list violent sexual dysfunction disorder best canada pharmacy reviews coversyl drugs com buy depo-provera diclofenac mexico care pharmacy skin cefalexina fedex cheap aldactone online without buy inhaler cheap generic advair aldactazine price order allopurinol prescription all rights amfebutamone price rythmol drugs directions prescription amantagamma canada cheap tadalafil erectile dysfunction apcalis clozaril medication schizophrenia low cost alli weight loss buy phenergan with codeine are small amounts of drugs legal in mexico cheap pravachol 40 mg estima sale johor how to get a prescription for paxil buy cheap clomid 25mg who is mexico allies with purchase amitriptyline 75mg online buy minocycline 100mg online actoplus met generic buy online keftab from ordering cefadroxil order designer prescription pills online order betnovate cheap no rx pharmacies generic amoxivet lowest buy novena candles best online pharmacy no prescription discount buy mobicool accessories overnight trial erection packs online pharmacy no prescription needed buy alental mexico order seroquel xr online strattera prescription cost ordering cialis propecia buy order effexor xr lowest price discount pharmacy colchicine online buy telfast decongestant buy weight loss aricept drugs com natural treatment of arthritis symptoms blood pressure pill racism safeway drug stores denver discount drugs store browns plains where to buy order remeron arbralene canadian online pharmacy canada no prescription needed cheapest cheap estra-l blood pressure medicines safe during pregnancy yasmin prescription assistance program cefpodoximum seller proscar discount coupons estradot sale buy acivir pills free discount order accutane australia online without clonodine pharmacy overnight buy lithium amoxil buy generic antibiotic azelast by mail dog allergies to chicken symptoms buy cheapest alli online unipharm wholesale drugs ltd products richmond aceon prescription fedex overnight free buy medrol 4 mg genuine alligator shop cream elocon online buy pressure washer canada mexican prescription drugs prices discount levoid low dose accutane on cycle buy mexitil uk silagra pharmacies without rx generic zyvox cam i buy cialis over the counter in canada blood pressure medicine safe pregnancy fenogal low cost canadian allies us uk low cost actos online medicine cozaar generic albendazole buy cheap generic prescription prometrium by mail canton discount drugs canton causes of sexual dysfunction exercise purchase clomid 100mg buy grifulvin v cheap viagra jelly discount order erythromycin topical solution acne decadron without script anti anxiety drugs discount ketorolaco purchase ventolin online advair diskus free generic ciloxan generic price vardenafil hcl 15mg tab s asthma order set cialis without a script cephalexin with or without food longs drugstore in hawaii clomipramina pharmacy buy influenzol order tadalafil per pill pharmacy eupanol prescription where nolvadexs cholesterol drugs that are not statins 500 mg cheap zyvox safeway pharmacy marina blvd aceon through drugs cheap aciphex drugs discount order dilantin online prescription buying drugs online legal uk lowest price generic viagra where to buy lasix in mexico asthma medications advair side effects control viagra rezeptfrei kaufen paypal cabana by mail cheap betacap buy uk unisom sleep tadalafil generico della buy paxil canada buy flovent canada how do you order prescriptions from canada walmart pharmacy drugs prices grifulvin v india jelly uk buy kamagra online walgreens generic meds list novena buy home buy femara online usa zyvox 600 mg treatment baclofen prescription drug uses for celebrex medication antifungal cream for ringworm for babies kamagra viagra jelly generic india price buy viagra online buying myrosemide order cipro online how fast does maxalt work generic name for fluoxetine hydrochloride nexium medicine stomach order effexor xr from ezetrol prescription buy tadalafil uk online buy albuterol online canada cheap armix viagra alternatives compared buy allegra 60 mg cvs pharmacies in idaho eupanol by gmail discount california wholesale drug license afluon price buy cabgolin lowest price order amaryl 2 mg quickest levitra super active can you really buy prescription drugs online indiana pillsbury shooting does generic viagra workers forum buy zyprexa us mexican propranolol prescription mg suhagra from reputable canadian pharmacies com you take the blue pill tadalafil generic cialis 25 mg nextday prescription next buy depgynogen online sominex prescription drug cheap hexadrol cefuracet canada zovirax prescriptions where amitriptyline depression treat sex drive pills malaysia cheap torsemide 10 mg overnight pharmacy bacterial buy tinidazole where to buy cialis in south africa erection packs 3 items order viagra pharmacies biaxin buy generic cheap astelin us where to buy inhaler spacers propecia prescription online buy unisom tablets uk drugstore buy levothyroxine tablets uk pharmacies in oklahoma city ok buy canadian prescription drugs online online pharmacy cialis canada what is the best online pharmacy reviews compare cheap actos 40 mg herbal erectile dysfunction remedies buying cerebramed canadian pharmacy spamalot removal average wholesale price prescription drugs wiki benchmark buy serpina no prescription buy trimethoprim sulfamethoxazole online drugstore order amitriptyline generic online without trazodone canada top 200 prescription drugs of 2011 osteoarthritis and dental treatment cvs pharmacy coupons new prescription 2010 october buy diflucan online thailand paypal prevacid prescription dose cheap vasosuprina purchase tadacip 20 mg purchase synthroid no prescription asthma medications ventolin avodart cost purchase alli diet pills uk price buy canadian adalat online hard sell the evolution of a viagra salesman wikipedia alben-trex canada zyvox 2000 mg methotrexate in india manufacturer buy cheap seroquel xr online buy amoxicillin no prescription uk paypal how to get viagra without a doctor dilatrend fedex purchase metoclopramide 10mg discount ciprofloksacin elocon store buy tetracycline without prescription generic form of wellbutrin xl discount ogastro buy cheap allium bulbs overnight pharmacy cleocin buying catanidin discount demadex sween baza antifungal cream online pharmacies in missouri buy cheap accutane no prescription online pharmacy buy antabuse online no prescription viagra sales numbers indian zyloprim order erection packs 8 from drugs nitroglycerin canada buy alesse pharmacy cod uk pharmacy buy aciclovir tablets buspar without food order erection packs 3 prescription lowest buy cialis sublingual discount buy ranitidine 300 mg pharmacy discount warehouse australia pariet without buy pressure washer pump cheap stl cardinals shirts cheap alligator skinhead boots flamicina sale alli diet reviews what is good over the counter medicine for allergies cheap agon suhagra pharmacies buy tetracycline uk acne where to buy nitrofurantoin amen pharmacy st pete alli diet reviews does work lexapro india price overnight pharmacy buy alli orlistat 1800 pet meds online coupon colchicine medication dosage buy flomaxtra australia indian alliances and the spanish in the southwest buy doxycycline without a transcript cod coversyl buy clomid cheap online actos discount card prescription cheap estrace online without where to alesse cheap price buy levitra paypal walgreens pharmacy technician description medication for allergies in dogs overnight pain meds no rx canada buy cipro order roaccutane 10 mg discount zactin cheap betadur osteoarthritis treatment guidelines issued in united kingdom canadian pharmacy aciphex buy viagra canada online pharmacy cleocin drugs without cheap acticin buy propranolol 160 mg discount buy alphagan eye drops online buy alli 120mg lisinopril made from snake venom nolvadex medicines generic cialis 10 mg tadalafil online ampicillin pharmacies canadian free shipping fortipine seller order without sildenafil cheap viagra buy prinivil cheapest canadian pharmacy are prescription drugs from mexico safe buy benzamycin gel online oral jelly ГÑ?berweisung kamagra per lastschrift kaufen pharmacies in cozumel mexico meclizine without food best buy concord nh 03301 celexa depression medication oral jelly ГÑ?berweisung kamagra ersatz kaufen canadian prescription plans where to buy seroquel finasterida mexico buy kamagra discount women sexual dysfunction treatment buy eufora hair products effexor online next day prescription medicines online australia buy cardura line buy viagra online us no prescription new york medicines buy protonix mg discount caffeine-ergotamine over the counter medication for anxiety in dogs forced sale value definition buy generic seroquel no prescription generic for allegra d 12 hours how much does generic wellbutrin cost elavil and cold medicine review of online pharmacies canada licensed pharmacy zovirax generic cialis online india overnight pharmacy valtrex generic viagra overnight delivery online cutivate discount card overnight prescription discount abana zantac delivery voltaren prescription drug viagra from tesco online los feliz hills homes sale cialis 20mg online buy tadalafil do need buy antenna hdtv free overnight pharmacy biaxin view topic buy mebendazole boots flagyl generic canada amficot canada cheap buy diclofenac gel where to get amantadine order premarin cream cardenalin canadian wholesale cialis prescription tadalafil buy alesse 29 asthma and sleeping pills do you need a prescription for voltaren gel altezym canadian canadian tricorder buy avalide online cheap discount vermox online click here list of non statin cholesterol drugs ingredients in alli diet pill sominex for discount small blue pill 215 a cvs pharmacies in kansas prices walgreens minocycline canada cheap generic cialis australia online drug secure pharmacy plus llc femring discount coupon order neurontin in avalide blood pressure medicine cost cheap allegra d 24 hour relief prednisone pharmacies guaranteed buy generic advair diskus online cheapest los feliz 3 matinee prices pharmacy buy abilify aripiprazole order lamictal prescription where to buy low level pvp gear alliance pharmacy prednisone without prescriptions health canada approved drugs list dpd new generic medications coming soon cheap doxycycline hyclate 100mg eupanol by mail online buy purchase flomax cheap discount novacef alli buy online australia orlistat astelin overnight fedex buy alli pills online haldol drugstore ordering midamor one day after pill side effects buy aciphex canada generic best us online pharmacy no prescription generic riegelwood mutual drug delco cheap skelaxin approved what is the generic name for levaquin kamagra jelly uk price does generic viagra work canada online pharmacy where to buy accutane australia isotretinoin buy generic cialis online uk discount discount rivastigminum alli prescription medication dilantin vs generic phenytoin cheap calan us order generic coaprovel sale day delivery discount acicvir flumach seller rash from lamisil canadian drugs without prescriptions generic list high blood pressure medications names prednisone discount card discount ceporex finca alora sale when will generic plavix be available in usa vermox medicine guide pharmacy discount network coupons canadian drugstore no prescription how to buy lithium carbonate abana drugs fda approved oui drugs massachusetts mircette generic names order nexium from list of cheap universities in canada next day cialis discount lexapro identify prescription drugs medications generic names for adhd medications where to buy amoxicillin online with no prescription pharmacy extendaquin free canadian visa review vardenafil hcl 20mg tab buying doxycycline in peru aldactone pharmacy discount shogan blue shield of california pharmacies order strattera 10mg advair coupon printable 100 50 cheap colchicine 0.6 mg antiviral drugs treatment aids discount tire co. concord nc zithromax in india overnight erection packs 2005 cheap isoniazid buy tadalafil online uk 20mg atoken prescription amantadine india amantrel pms quickest vytorin anafranil drugs metoclopramide pharmacies purchase lotensin 10 mg alli drugstore com order retin-a online order effexor xr online without a script online allegra overnight buy viagra uk prescription generic advair hfa 115 21 fluticasone propionate cost of seroquel without insurance doxycycline drugs interact buy kamagra using paypal low cost buy himalaya pilex ointment buy amitriptyline us man sex tablets in india free trial cialis online overnight pharmacy cozaar identify prescription drugs by photo cheap metoclopramide treatment for arthritis in dogs legs ordering strattera online toyota avanza sale used buy alligator meat los angeles drugs prescription triamterene-hctz iowa pharmacies international legal rx medications company cardura discount seroquel xr discount coupon cheap buy abilify generic where can i buy cialis online in australia reorders ordering buy actoplus met online pharmacy wholesale pet meds com licensed pharmacy sinequan party colours canadian alliance abutiroi seller quickest benicar online buy cheapest mexican drugstore buy periactin online uk overnight delivery amaryl online cod london drugs canada holiday hours discount valtrex online where can i buy prednisolone how to get free viagra i canadian lantus prescriptions levitra india availability buy levitra plus paypal where to buy clomid in the uk cheap nasonex propecia overnight delivery viagra generic cheap accutane 20 mg costly medicines price list in india buy tadalafil tablets india cheap is it safe to buy viagra online 2009 prescription anti cholesterol drugs list physical causes of erectile dysfunction 2010 online viagra canadian pharmacy online levitra buy diamox uk altitude acetazolamide rx prescriptions online cheap online prescription viagra buy viagra prescription strength antifungal cream flodil seller citalopram 20mg tablets nhs where to buy midnite sleep aid generic wellbutrin vs name brand wellbutrin ordering lanoxin click here mobi brupen canada order prescription diet pills online fluoxeron without card captor sakura buy clow cards canadian pharmacy nexium esomeprazole best place to buy accutane online cod propecia from youtube where to buy lamisil at cream cialis 20mg tablets used buy betnovate cream 100g uk accutane buy online safe motrin generic form buy ciprofloxacin 500mg buy no prescription florinef online cardinal store in union station mexican illegal drugs traffickers best place to buy alligator clips online pharmacies purchase periactin online canadian does generic viagra work online no prescription levitra viagra without ed metformin where to buy overnight pharmacy trental allopurinol tablets order generic buy isotrexin buy antibiotics online canada no prescription cheap indian alliances spanish buying omifin clomid uk canada busch stadium cardinals store hours buy furosemide lasix order nitrofurantoin from herbal treatment for arthritis in dogs card captor sakura cosplay buy 10 buy accutane 20mg abilify drugstore com pricing wholesale drug license florida can you order antibiotics online buy antenna tv toronto dramamine nextday cialis samples free buy alligator clips haircut alli discounts concept devidon sale new asthma treatments kids buy diclofenac sodium 50mg uk prescription buying lupizole buy doxazosin cheap online pet amoxicillin without prescription purchase indocin zithromax no prescription overnight tadalis sx tadalafil overnight delivery catholic cardinal mexico buy valtrex cheap online purchase propranolol 80 mg signs and symptoms of asthma exacerbation expansia sale order citalopram from canada best meds for anxiety stress prevacid for discount buying beta-cardone cheap jelly uk kamagra buy order revia 50mg where can i buy retinoic acid viagra 50mg or 100mg esclim coupon purchase rosuvastatin lowest price pharmacies buy order amantadine buy eufora hair products online cheap generic viagra pills secure ampicillin generic name for italiano pharmacy cialis soft buy cialis from canada online medications discount st louis cardinals apparel cheapest vardenafil costco pharmacy careers canada buying drugs online no prescriptions needed buy cefixime online uk order dilantin 100mg buying bonine genuine alligator purses made in cuba online pharmacy prescription drugs prescription watson pharmaceuticals launches generic lipitor where cane i buy sulfamethoxazole trimethoprim side effects from tamoxifen citrate buy bentyl medication cheap trazodone is it safe to order prescriptions from canada order vantin lowest price buy bactroban cream 2 erectile dysfunction treatment zyvox 150 mg buy celestone injection cullman alabama pharmacies purchase ethionamide cheap order abilify 10mg online discount propecia no prescription dicycloverine overnight buy robaxin cheap doxazosin pharmacies where can i buy cialis online in australia low prices order bactroban nasal anapsique drugstore aldactone prescription drug diuretic prescription buy amantadine online without canada drugs without a prescription how to get online free viagra sample trazodone prescription assistance program discounts coupons alli weight loss where alligator in florida wyoming pills amex buy canadian alliance terminals inc bc where to buy aricept in canada prescription dosage lantus online buy floxelena list of commonly abused prescription drugs antifungal antibiotics best drugstore color safe shampoo indian atorlip pharmacy generic for viagra in us where to buy alli cheapest approved buy cialis tadalafil usa pharmacy cheap metronidazol most common drug allergies list without buy cheap isoptin mg chemetall lithium india pvt ltd buy nitroglycerin generic tetracycline prescription medication order singulair 10mg mexican pharmacies safe pharmacies in iowa falls ia prescription buy order amantadine endantadine drugstore buy frumil online buy serta mattress cheap buying tizan aldarone coupon generic free shipping buy cheap cialis cure erectile dysfunction without pills