Software factory
Encyclopedia
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 . 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.
Software engineering
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...
and enterprise
Enterprise architecture
An enterprise architecture is a rigorous description of the structure of an enterprise, which comprises enterprise components , the externally visible properties of those components, and the relationships between them...
software architecture
Software architecture
The software architecture of a system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both...
, 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
Outsourcing
Outsourcing is the process of contracting a business function to someone else.-Overview:The term outsourcing is used inconsistently but usually involves the contracting out of a business function - commonly one previously performed in-house - to an external provider...
.
Since coding requires a software engineer
Software engineer
A software engineer is an engineer who applies the principles of software engineering to the design, development, testing, and evaluation of the software and systems that make computers or anything containing software, such as computer chips, work.- Overview :...
, (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 . See also composite application
Composite application
In computing, the term composite application expresses a perspective of software engineering that defines an application built by combining multiple existing functions into a new application. The technical concept can be compared to mashups...
. Traditional coding, is left only for creating new components or services. Like traditional manufacturing
Manufacturing
Manufacturing is the use of machines, tools and labor to produce goods for use or sale. The term may refer to a range of human activity, from handicraft to high tech, but is most commonly applied to industrial production, in which raw materials are transformed into finished goods on a large scale...
, 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.
Implementations
- 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.
- 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.
See also
- Software Factory (Microsoft .NET)Software Factory (Microsoft .NET)A software factory is a collection of software for creating specific types of software. A software factory may include processes, templates, Integrated development environment configurations and views. The type of software a factory may produce is defined when the factory is created...
- Software Lifecycle Processes
- Software engineeringSoftware engineeringSoftware Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...
- Systems engineeringSystems engineeringSystems engineering is an interdisciplinary field of engineering that focuses on how complex engineering projects should be designed and managed over the life cycle of the project. Issues such as logistics, the coordination of different teams, and automatic control of machinery become more...
- Software development processSoftware development processA software development process, also known as a software development life cycle , is a structure imposed on the development of a software product. Similar terms include software life cycle and software process. It is often considered a subset of systems development life cycle...
- FactoretteFactoretteA factorette is an informal term used to describe a unit of composability of a larger Software factory. A factorette is a Software factory.A factorette is used as a contextual term to describe a software factory that extends another software factory....
- Automatic programmingAutomatic programmingIn computer science, the term automatic programming identifies a type of computer programming in which some mechanism generates a computer program to allow human programmers to write the code at a higher abstraction level....
- Domain-Specific ModelingDomain-Specific ModelingDomain-specific modeling is a software engineering methodology for designing and developing systems, such as computer software. It involves systematic use of a domain-specific language to represent the various facets of a system...
(DSM) - Model Driven Engineering (MDE)
External links
- Harvard Business Review Wipro Technologies: The Factory Model
- Outsourcing Without Offshoring Is Aim of ‘Software Factory’ By P. J. Connolly