- Software house
A software house is a company whose primary products are composed of
software , i.e.,computer program s.Types of software houses
There are a number of different types of software houses:
*Large and well-known companies such asMicrosoft ,Oracle Corporation , HP,Adobe Systems ,Apple Inc. andRed Hat
*Companies producing specializedCommercial off-the-shelf (COTS) software, such asPanorama ,Hyperion ,Siebel Systems
*Companies producing software components, such asDeveloper Express ,Dundas ,ComponentOne
*Application Service Provider s, such asSalesForce
*Companies focused on deliveringbespoke software solutions for vertical industries or particular geographical regionsAll of these may be categorized in one or many of the following [ [http://books.google.com/books?id=YH5oXL8CK28C&pg=PA166&dq=%22Software+house%22&ei=ZBeZR-aSGJ6SzQSKrslm&hl=pl&sig=9Esi8xgjMK4p1nSldRM8IJat0vg Software Process: Principles, Methodology, and Technology Author: Jean Claude Derniame, Badara Ali Kaba, David Wastell p.166] ] :
* in-house - the target is to deliver software for internal purposes (for the other departments)
* contractual - when the software house is contracted to deliver some particular software from outside (softwareoutsourcing )
* product development - when it produces ready to use, packaged software;Commercial off-the-shelf Common roles in a software house
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 fixsoftware bug s found by the testers.A professional software house normally consists of at least three dedicated sub-teams :
*business analyst s who define the business needs of the market
*software designer s/programmer s who creates the technical specification and next do a coding
*software tester s who are responsible for the whole process ofquality management In bigger software houses, greater specialization is employed, and quite often there are also:
*
technical writer s who write all the documentation such asuser guide s
*release specialists who are responsible for building the whole product andsoftware versioning
*graphic designer s who are particularly important in thegaming industry and elsewhere. They are normally responsible for the design of thegraphical user interface .
*maintenance engineers who are behind two, three or more lines of support
*consultants responsible for making the solution operational, especially if some specialist knowledge is necessary. Examples of this include: buildingmultidimensional cube s inbusiness intelligence software , integrating with existing solutions, and implementing business scenarios inBusiness Process Management software.The cons:
*people are not focused so much on the specialization
*each person must be very flexible and have the ability to play each role (not each person is willing to do that)
*the approach is possible just for smaller, less formalized organizationsThe pros:
*each person has full knowledge about the full production cycle
*people are doing various tasks what makes especially young people excited about their work
* there is a very good possibility to manage the work load especially in crisis situations like "all hands on pump"Structure of software house
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.
Methodologies
Software house may use a number of various methodologies to produce the code. These can include:
*thewaterfall model , including project management methodologies likePRINCE2 orPMBoK
*agile software development , such asExtreme Programming andSCRUM There are also some methodologies which combine both, such as the
spiral model ,RUP orMSF .Product life cycle in software house
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 managementEach 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: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 phaseSystems and procedures
Well-run software houses possess various systems and procedures implemented and working internally across all the sub-teams. These include:
Business Analysts
*Modeling tools like
Sparx Enterprise Architect orIBM Rational Rose Programmers
*
Version Control System s andsoftware versioning procedures
*Code analysis tool s andcoding standard s, validated manually or automatically
*Deployment mechanismsTesters
*
Bug tracking system s
*Test automation tools
*Performance and stress test toolsProject/Product managers
*
Enterprise Project Management (EPM) systems and procedures
*Product Portfolio Management (PPM)
*Change management systems and proceduresThere 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 likeBorland ,ECM orCompuware .Audit of software house efficiency
Well-established software houses typically have some way of measuring their own efficiency. This is usually done by defining the set of
key performance indicator s (KPI), such as
*The average number of bugs done by the developer per unit of time orsource lines of code
*The number of bugs found by tester per test cycle
*The average number of test cycles until [http://blogs.technet.com/victor.pearson/archive/2005/12/01/415400.aspx 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 baselineA 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 asCarnegie-Mellon University 's [http://www.sei.cmu.edu/sema/welcome.html SEMA] , or particular ISO standards. Small software houses will sometimes use less formalized approaches, such as the [http://www.joelonsoftware.com/articles/fog0000000043.html 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:References
Wikimedia Foundation. 2010.