Showing posts with label Software Development. Show all posts
Showing posts with label Software Development. Show all posts

Tuesday, February 14, 2017

Software Issues and their Impact

Describe at least two software issues (open-source, upgrades, software bugs, copyrights/licenses, global support) and how these issues impact users and organizations.

Two issues that immediately caught my attention were software bugs and freeware/open-source software.

Software defects prevent software from accomplishing what it was designed to do. These defects can result in performance issues, data loss or data integrity issues, or incompatibilities. Software defects are an inevitable part of development. No software will ship one-hundred percent bug-free. The wide range of different combinations of applications, hardware, et cetera can lead to defects being discovered that would otherwise not be. Software bugs can be a source of many problems for companies as they could result in loss data, lost productivity, and increased costs to fix or work around these defects.

Software defects often go hand-in-hand with upgrades. Software upgrades have benefits and drawbacks. The most immediate benefit to upgrading is the ability to use the latest features and newest technology. On the other hand, users may need to learn a new way of working or navigating the software, especially in the case of Windows 8. Upgrading to any new version right away can also expose the user to defects that the manufacturer might not have found. Many companies have policies in place that delay upgrading until the software manufacturer releases a service pack or "point-one" version of the software.

Freeware, free software, and open-source software can be a source of confusion to many end users. Freeware is software that is distributed at no cost. However, users may be – and often are – bound by licensing restrictions, such as not being able to use the software for commercial or "for-profit" purposes. Such licensing restrictions often discourage businesses from using this software, no matter how beneficial it might be.

Open-source software, as its name implies, is software that is distributed along with its source code. This allows users to study or modify the code. Users can also redistribute the code or companies can use part of the code in its own software, as specified in the BSD and MIT licenses. Open-source software is typically distributed for free or at minimal cost. However, open-source software may not come with support guarantees and can carry a higher total cost of ownership (TCO). Additionally, some open-source software – typically Linux-based software – is not available or not compatible with Microsoft Windows. I should point out that open-source software is not always governed by the GNU General Public License (GPL). There are other licensing schemas available, such as the BSD license and the MIT license, which I mentioned above.

Free software – also called libre software – is software than can be studied, modified, and used without the typical licensing restrictions. Free software is typically licensed under the GNU General Public License (GPL). The biggest drawback to using the GPL is the licensing itself. If a software company includes GPL-licensed code in a software product, that company is legally bound to license their software product under the GPL. In some cases, simply including a copy of GPL-licensed code on the same media – even if it is not part of their software – may result in legal issues. This restriction alone can discourage companies from using free software.

Saturday, February 4, 2017

Make or Buy?

What are some advantages and disadvantages of purchasing versus developing software?

The main advantage to purchasing software versus developing it is the cost savings to design, develop, and test the software. If a company – or a consumer – purchases software, there is a reasonable expectation that it has been tested and functions the way the developer intends. However, this is not always the case. Conversely, no pre-packaged software ever does what every user wants. As a result, users have to change settings, add customization options, or resort to purchasing additional software to accomplish their goals.

Developing software has its advantages, too. If a company develops its software in-house, it can be sure the software meets expectations. One unexpected advantage is if the software benefits the company – and could benefit a company's customers – the company may be able to sell that software and realize an additional profit.

Another advantage to companies developing their own software is the concept of "dogfooding," where companies use their own product in production to demonstrate its capabilities.

As an aside, I think free and open-source software have an advantage over proprietary software when it comes to companies developing their own software. Companies can reap the benefits of having pre-packaged software, which saves on the development and design costs, and customize that software to fit their business processes.

What is important to include in the contract with a software developer?

Some important things to include in the contract with the software developer include:

  1. Service and support – If my software does not function correctly under certain circumstances, or there is a bug discovered, what are the developer’s responsibilities? Should they make a fix available at no cost? What is the ideal response time for any support issues? How soon can I expect a resolution to any support issues? What would be the developer’s responsibility if any data loss or data integrity issues result through use of the software? What is considered an “inappropriate” use of the software or what would violate any licensing agreements?
  2. Training – Will the software developer provide training or make any training available to the end users? Is the documentation on how the product is intended to function?
  3. User Acceptance Testing or Trial periods – Does the software developer offer a trial of their software?
  4. Is the software secure? It’s almost impossible to guarantee complete security as there will always be defects in the software and improvements in hacking methods. But does the developer respond to security concerns in a timely manner? Has the developer knowingly released the software with security issues?
  5. How much does the software cost? This would include up-front and maintenance costs over the life of the software.