All of these may be categorized in one or many of the following :
Organizing a software house is 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 time zone 8 hours ahead or behind the development team, who fix software bugs found by the testers.
A professional software house normally consists of at least three dedicated sub-teams :
In bigger software houses, greater specialization is employed, and quite often there are also:
The manager of a software house is usually called the Head Of Development (HOD), 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:
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.
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 different departments and units.
Each stage ideally takes 30% of the total time, with the remaining 10% in reserve.
At each stage a different group plays a key role, however each type of role must be involved throughout the whole development process:
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.
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 houses will sometimes use less formalized approaches, such as the Joel Test : 12 steps to better code 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:
VideoIQ Integrates with Software House to Deliver Its Award Winning Cameras and Encoders to Software House Customers.
Jun 07, 2011; VideoIQ, Inc. has collaborated with Software House, part of Tyco Security Products, to integrate the capabilities of VideoIQ's...