For faster navigation, this Iframe is preloading the Wikiwand page for Software company.

Software company

This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: "Software company" – news · newspapers · books · scholar · JSTOR (December 2007) (Learn how and when to remove this template message) This article is written like a personal reflection, personal essay, or argumentative essay that states a Wikipedia editor's personal feelings or presents an original argument about a topic. Please help improve it by rewriting it in an encyclopedic style. (May 2014) (Learn how and when to remove this template message) (Learn how and when to remove this template message)

A software company is a company whose primary products are various forms of software, software technology, distribution, and software product development.[1] They make up the software industry.

Types

There are a number of different types of software companies:

All of these may be categorized in one or many of the following:[2]

  • contractual - when the software company is contracted to deliver some particular software from outside (software outsourcing)
  • product development - when it produces ready to use, packaged software; Commercial off-the-shelf

Common roles in a software company

Organizing a software company is a very specialized type of management skill, where experienced persons can turn the organizational problem into a unique benefit. For example, having sub-teams spread in different time zones may allow a 24-hour company working day, if the teams, systems, and procedures are well established. A good example is the test team in a time zone 8 hours ahead or behind the development team, who fix software bugs found by the testers.

A professional software company normally consists of at least three dedicated sub-teams :

In bigger software companies, greater specialization is employed, and quite often there are also:

Structure

The manager of a software company is usually called the Head Of Development (HOD),[3] and reports to the stakeholders. He or she leads the sub-teams directly or via the managers/leaders depending on the size of the organization. Usually teams of up to 10 person are the most operational. In bigger organizations, there are in general two models of the hierarchy:

Typical structure of a software company
Typical structure of a software company

All the teams are fully independent and they work separately on the different projects. The structure is quite simple and all the employees reports to one person, what make the situation quite clear however it is not a good solution in terms of knowledge exchange and optimal usage of human resources.

Matrix structure
Matrix structure

In this model there are dedicated managers/leaders for each main specialization, "renting" their people for particular projects led by product/project managers, who formally or informally buy the people and pay for their time. This leads to each private employee having two bosses – the product/project manager and the specialized "resource" manager. On one hand it optimizes the usage of human resources, on the other hand it may give rise to conflicts about which one manager has priority in the structure.

There are also a number of variants of these structures, and a number of organizations have this structure spread and split within various departments and units.

Methodologies

Software companies may use a number of various methodologies to produce the code. These can include:

There are also some methodologies which combine both, such as the spiral model, Rational Unified Process (RUP)[8] or MSF.[9]

Product life cycle

Regardless of the methodology used, the product life cycle always consists of at least three stages:

  • Design – including both the business and technical specification
  • Coding – the development itself
  • Testing – the quality management

Each stage ideally takes 30% of the total time, with the remaining 10% in reserve.

The UML sequence diagram of interaction between these groups may look like:

The general interaction between the four main groups
The general interaction between the four main groups

At each stage a different group plays a key role, however each type of role must be involved throughout the whole development process:

  • Analysts, after completing the business specification, manage the changing business situation to minimize the possibility of change over time. They also support both programmers and testers during the whole development process to ensure that the final product fulfills the business needs specified at the start. The process ideally puts business analysts as the key players during final delivery of the solution to the customer, as they are best placed to provide the best business layer.
  • Programmers do the technical specification during the design phase, which is why they are called programmers/designers, and during testing time they fix bugs.
  • Testers complete the test scenarios during the design phase, and evaluate them during the coding phase

Systems and procedures

software companies possess various systems and procedures implemented and working internally across all the sub-teams. These include:

Business analysts

Programmers

Testers

Project/product managers

There are also Application Lifecycle Management (ALM), which embed some of these functionalities in one package and are used across the groups. They are delivered from various vendors like Borland, ECM or Compuware.

Efficiency audits

Well-established software companies typically have some way of measuring their own efficiency. This is usually done by defining the set of key performance indicators (KPI), such as

  • The average number of bugs done by the developer per unit of time or source lines of code
  • The number of bugs found by tester per test cycle
  • The average number of test cycles until Zero Bug Bounce (ZBB)
  • The average time of test cycle
  • Estimated time of task comparing to the real time of the task (exactitude of planning)
  • Number of corrections to the baseline

A number of organizations are focused on reaching the optimum level of the Capability Maturity Model (CMM), where "optimum" does not necessarily mean the highest. There are also other systems such as Carnegie-Mellon University's SEMA, or particular ISO standards. Small software companies will sometimes use less formalized approaches. Each organization works out its own style, which lies somewhere between total technocracy (where all is defined by numbers) and total anarchy (where there are no numbers at all). Whichever way the organization goes, they consider the pyramid describing the cost and risk of introducing change to already-begun development processes:

pyramid showing risk and time cost of change
pyramid showing risk and time cost of change

See also

References

  1. ^ "What is a Software Company Today?". RedMonk. 2014. Retrieved June 2, 2017.
  2. ^ Software Process: Principles, Methodology, and Technology Author: Jean Claude Derniame, Badara Ali Kaba, David Wastell p.166
  3. ^ Greenlit: Developing Factual/Reality TV Ideas from Concept to Pitch p.12
  4. ^ Managing successful projects with PRINCE2
  5. ^ A User's Manual to the PMBOK Guide
  6. ^ Planning extreme programming
  7. ^ Agile Project Management with Scrum
  8. ^ The rational unified process made easy: a practitioner's guide to the RUP
  9. ^ Microsoft Solutions Framework (MSF): A Pocket Guide
{{bottomLinkPreText}} {{bottomLinkText}}
Software company
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Wikiwand 2.0 is here 🎉! We've made some exciting updates - No worries, you can always revert later on