Software factory
According to Greenfield and Short, software factory is "a software product line that configures extensive tools, processes, and content using a software factory template based on a software factory schema to automate the development and maintenance of variants of an archetypical product by adapting, assembling, and configuring framework-based components." [1]
Contents |
[edit] Description
In software engineering and enterprise software architecture, a software factory is an organizational structure that specializes in producing computer software applications or software components according to specific, externally-defined end-user requirements through an assembly process. A software factory applies manufacturing techniques and principles to Software Development to mimic the benefits of traditional manufacturing. Software factories are generally involved with outsourced software creation. See also outsourcing.
Since coding requires a software engineer, (or the parallel in traditional manufacturing, a skilled craftsman) it is eliminated from the process at the application layer, the software is created by assembling predefined components instead of using traditional IDE's[clarification needed]. See also composite application. Traditional coding, is left only for creating new components or services. Like traditional manufacturing, the engineering is left to the creation of the components and the requirements gathering for the system. A composite application is the end result of manufacturing in a software factory.
[edit] History
- The first company to adopt this term was Hitachi in 1969 with its Hitachi Software Works. Later, other companies such as System Development Corporation in 1975, NEC, Toshiba and Fujitsu in 1976 and 1977 followed the same organizational approach.[2]
- Software factory–based application development addresses the problem of traditional application development where applications are developed and delivered without taking advantage of the knowledge gained and the assets produced from developing similar applications. Many approaches, such as training, documentation, and frameworks, are used to address this problem; however, using these approaches to consistently apply the valuable knowledge previously gained during development of multiple applications can be an inefficient and error-prone process.
- Software factories address this problem by encoding proven practices for developing a specific style of application within a package of integrated guidance that is easy for project teams to adopt. Developing applications using a suitable software factory can provide many benefits, such as improved productivity, quality and evolution capability.
[edit] References
- ^ Jack Greenfield, Keith Short , Steve Cook, Stuart Kent, Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools, ISBN 0-471-20284-3
- ^ Ivan Aaen, Peter Bøttcher & Lars Mathiassen, The Software Factory: Contributions and Illusions. In: Proceedings of the Twentieth Information Systems Research Seminar in Scandinavia, Oslo, 1997.
- Jack Greenfield, Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools (Microsoft, 2004)
- Jack Greenfield, Keith Short, Software Factories: Assembling Applications with Patterns, Models,Frameworks and Tools In: OOPSLA’03, October 26–30, 2003, Anaheim, California, USA.
[edit] See also
- Software Factory (Microsoft .NET)
- Software Product Line
- Software Lifecycle Processes
- Software engineering
- Systems engineering
- Software development process
- Factorette
- Automatic programming
- Domain-Specific Modeling (DSM)
- Model Driven Engineering (MDE)
[edit] External links
- Harvard Business Review Wipro Technologies: The Factory Model
- Outsourcing Without Offshoring Is Aim of ‘Software Factory’ By P. J. Connolly