Software Automation and the Value Chain: Cost Drivers

The Takeaway: Automation can help lower the costs associated with your software project, resulting in more value and a price advantage in the marketplace

A key component in analyzing the value chain of your project/enterprise is investigating the cost drivers in the value chain. Meaning, your relative cost position (RCP) in the market is the sum total of the cost of performing all the activities in the value chain. The lower the cost of performing activities, if all organizations in the market perform roughly the same activities, the more value can be realized (not to say that decreasing costs always results in more value), and a possible price advantage can result.

Envisioning each activity in producing your software as a cost driver shows us several things:

  1. Where the resources go

    When you start to break down the total effort required to produce your software, you start to see every activity as a step that should add value to the product. Value is “the reflection of the price a firm’s product commands and the units it can sell” (Porter, Competitive Advantage, p.38). The difference between the total cost drivers and the total value of the product is the margin. Examining the cost drivers in your software project reveals what people on the project team spend time on and where the organization spends money.

  2. Over time, which efforts increase and decrease in cost

    Real value can start to be obtained when you look at your project in a longitudinal way. Certainly, there is worth in looking at cost drivers at a specific moment in time, but, as I’ve learned from analyzing software projects, analysis of trends over time can reveal information static analyses cannot. For example, have you implemented a new feature in the past six months, and, since then, the cost of your development has increased? Maybe that’s due to the development team having to go back and correct defects in the system introduced by this new feature. If this feature is adding value over and above its cost, maybe it’s worth keeping. If it doesn’t add value to your application, it may be something you’ll want to review and remove.

  3. Which activities provide the most value

    Each activity in the production of your software comes at a cost, whether it’s  money, time, or both. Using open-source software, for example, may not include an up-front cost, but may involve spending more time in the beginning getting the tools set up. Whatever the costs are, hopefully these tasks all create value in the software. Examining the cost drivers in the software lifecycle can show you exactly where the value is created, and which activities produce the most value.

  4. Which activities can be cut back while still delivering value

    Often, there are tasks where the amount of resources spent can be decreased without negatively affecting the value produced by those tasks. Additionally, there may be tasks that can be cut back or removed completely without affecting the amount of value created in the value chain. This is where efficiency gains are made.

  5. Which activities can be increased to increase value

Sometimes using more resources on certain tasks can result in even more value being produced. Is there a new tool or process you can utilize that, ultimately, creates a more usable or valuable application?

Software automation can be an integral part of value creation for your organization. Automation provides several benefits:

  • It allows an organization to utilize its resources more effectively. For example, automation can be scheduled to run after the close of business each day. Utilizing tools like Selenium and the Selenium Grid, an automation team can set up their grid to run automated tests on the manual quality assurance team’s computers when the QA team is not in the office, getting more use out of otherwise-unused machines, and also freeing up the manual QA team to perform other duties during working hours.
  • Automation teams can reduce the complexity and costs of coordination between connected activities in the value chain. Automation can be set up to, for example, check the status of a development environment for build failures, and notify the right team member if something isn’t set up correctly. No need for the project team to start working on a development environment, only to find out, one at a time, that there’s a defect preventing the team from working on the application, then deciding how to move forward from there.
  • Automation can be timed effectively to produce valuable data. Most software build systems can trigger an automated testing package, so that, when a new build is started, testing can be an automatic part of the build process, testing the new build for failures as soon as possible.

In the next article, we’ll look at cost drivers individually, and how automation impacts each of them in order to produce value and increase the margin of your software application.

UI Automation With C# and Selenium: Adding Packages

The Takeaway: Installing the right packages from the start makes everything else a lost easier.

So far, we’ve created a blank solution with a few projects and added that solution to a repository. Now we need to install the right packages so that when we start coding some tests, everything will be in place and we won’t need to go back and figure out what we’re missing. For our automation, we’ll start out with the following packages:

  • Selenium
  • NUnit
  1. In your automation solution (which you can find the previous post for here), Navigate to Tools > NuGet Package Manager > Manage NuGet Packages for Solution

    Visual Studio - Manage NuGet Packages
    Visual Studio – Manage NuGet Packages
  2. Select the Browse option and search for Selenium 

    Visual Studio - Selenium NuGet Packages
    Visual Studio – Selenium NuGet Packages
  3. For each package Selenium. WebDriver and Selenium.Support, select the package. Notice that the project where our tests live is the only option available installing this package. Remember, since the framework is a Shared Project, there’s no DLL file created for that project, but the files required for the tests will be automatically included when the test project is built 

    Visual Studio - Packages Install in the Test Project
    Visual Studio – Packages Install in the Test Project
  4. Select the Test project (UI Tests in the example above) and select the Install Button 

    Visual Studio - Installing Packages
    Visual Studio – Installing Packages
  5. You’ll probably need to confirm the install of each package as well 

    Visual Studio - Review Package Install
    Visual Studio – Review Package Install
  6. After both the Selenium.WebDriver and Selenium.Support packages are installed, search for and install the NUnit and NUnit .Console packages as well 
    Visual Studio - Installing Nunit Packages
    Visual Studio – Installing NUnit Packages

    Once the NUnit packages are installed, you can select the Installed link and see that several NUnitpackagaes were installed. These packages will be the basis for our framework and tests, but we’ll add more as we progress.