Knowledge

Software factory

Source 📝

373:
developed applications. Reusable assets, guidance and examples help address common scenarios and challenges and automation of common tasks allows developers to easily apply guidance in consistent ways. Software factories provide a layer of abstraction that hides application complexity and separates concerns, allowing developers to focus on different areas such as business logic, the user interface (UI) or application services without in-depth knowledge of the infrastructure or baseline services. Abstraction of common developer tasks and increased reusability of infrastructure code can help boost productivity and maintainability.
32: 435:. The goals of this approach are to "understand the software process in a production environment, determine the impact of available technologies and infuse identified/refined methods back into the development process". The approach has been to experiment with new technologies in a production environment, extract and apply experiences and data from experiments and to measure the impact with respect to cost, reliability and quality. 451:, this approach intended to create a framework to achieve a predictable, reliable, and self-improving software development process that produces software of high quality. The strategy consists of step-wise improvements in software organization, defining which processes are key in development. The software process and the software product quality are predictable because they are kept within measurable limits. 364:
architecture, this type of implementation can address design and development challenges, expose architectural decisions and mitigate risks early in the development cycle. Software factories also enable the ability to create a consistent and predictable way of developing, packaging, deploying and updating business components to enforce architectural standards independent of business logic.
438:
This approach puts a heavy emphasis on continuous improvement through understanding the relationship between certain process characteristics and product qualities. The software factory is used to collect data about strengths and weaknesses to set baselines for improvements and to collect experiences
350:
Business tasks can be simplified which can significantly increase user productivity. This is achieved through using common and consistent user interfaces that reduce the need for end-user training. Easy deployment of new and updated functionality and flexible user interfaces also allows end users to
152:
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,
381:
Applications built with software factories result in a consolidation of operational efforts. This provides easier deployment of common business elements and modules, resulting in consistent configuration management across a suite of applications. Applications can be centrally managed with pluggable
372:
Developers can use software factories to increase productivity and incur less ramp-up time. This is achieved through creating a high-quality starting point (baseline) for applications which includes code and patterns. This enables projects to begin with a higher level of maturity than traditionally
156:
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
363:
Software factories can be used by architects to design applications and systems with improved quality and consistency. This is achieved through the ability to create a partial implementation of a solution that includes only the most critical mechanisms and shared elements. Known as the baseline
331:
Using a software factory makes it easier for developers to learn and implement proven practices. Because of the integration of reusable code, developers are able to spend more time working on features that are unique to each application, reducing the likelihood of design flaws and code defects.
415:
This approach was funded under the Eureka program and called the Eureka Software Factory. Participants in this project are large European companies, computer manufacturers, software houses, research institutes and universities. The aim of this approach is to provide the technology, standards,
399:
Under this approach, software produced in the software factory is primarily used for control systems, nuclear reactors, turbines, etc. The main objectives of this approach are quality matched with productivity, ensuring that the increased costs do not weaken competitiveness. There is also the
324:
Software factories can be used to build multiple instances of a software product line (a set of applications sharing similar features and architecture), making it easier to achieve consistency. This simplifies governance and also lowers training and maintenance
153:
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.
92:
is a structured collection of related software assets that aids in producing computer software applications or software components according to specific, externally defined end-user requirements through an assembly process. A software factory applies
124:
that configures extensive tools, processes, and content using a template based on a schema to automate the development and maintenance of variants of an archetypical product by adapting, assembling, and configuring framework-based components.
390:
There are several approaches that represent contrasting views on software factory concepts, ranging from tool oriented to process oriented initiatives. The following approaches cover Japanese, European, and North American initiatives.
403:
The key in improving quality and productivity is the reuse of software. Dominant traits of the organizational design include a determined effort to make operating work routine, simple and repetitive and to standardize work processes.
132:(or the parallel in traditional manufacturing, a skilled craftsman) it is eliminated from the process at the application layer, and the software is created by assembling predefined components instead of using traditional 165:
Software factories are unique and therefore contain a unique set of assets designed to help build a specific type of application. In general, most software factories contain interrelated assets of the following types:
236:
Components that implement common functionality or mechanisms. Integration of reusable code in a software factory reduces the requirements for manually written code and encourages reuse across applications.
338:
Many application development activities can be streamlined and automated, such as reusing software assets and generating code from abstractions of the application elements and mechanisms.
407:
A representative of this approach would be Toshiba's software factory concept, denoting the company's software division and procedures as they were in 1981 and 1987 respectively.
423:. The generic software factory develops components and production environments that are part of software factories together with standards and guidance for software components. 416:
organizational support and other necessary infrastructures in order for software factories to be constructed and tailored from components marketed by independent suppliers.
332:
Applications developed using a software factory can also be verified before deployment, ensuring that factory-specific best practices were followed during development.
814: 140:, the engineering is left to creation of the components and the requirements gathering for the system. The end result of manufacturing in a software factory is a 255:
Determines whether the product is in the scope of a software factory. The fit determines whether all or some of the product is built with the software factory.
400:
additional objective of creating an environment in which design, programming, testing, installation and maintenance can be performed in a unified manner.
836: 291:
Involves creating or reusing default deployment constraints and configuring the required resources necessary to install the executables being deployed.
97:
techniques and principles to software development to mimic the benefits of traditional manufacturing. Software factories are generally involved with
264:
Defines the product requirements by outlining the differences from the product line requirements using a range of product specification mechanisms.
277: 208:
Automate procedures in How-to topics, either entirely or in specific steps. They can help developers complete routine tasks with minimal input.
20: 841: 355:. Data quality improvements reduce the need for data exchange between application parts through the ALT+TAB and copy and paste techniques. 273:
Maps the differences in requirements to differences in product line architecture and development process to produce a customized process.
420: 133: 607: 75: 53: 432: 465: 535: 520: 820: 471: 448: 551: 545: 181: 46: 40: 114: 282:
A range of mechanisms can be used to develop the implementation depending on the extent of the differences.
748: 218: 212: 57: 313:
Developing applications using a software factory can provide many benefits when compared to conventional
540: 515: 141: 121: 117: 186:
Provides an example of a realistic, finished product that the software factory helps developers build.
525: 314: 259: 191: 110: 753: 530: 431:
The experienced-based component factory is developed at the Software Engineering Laboratory at the
286: 227:
Provide information that developers can use to model applications at a higher level of abstraction.
173:
A document that categorizes and summarizes the assets used to build and maintain a system (such as
793: 721: 686: 136:. Traditional coding is left only for creating new components or services. As with traditional 648: 603: 129: 785: 758: 713: 678: 250: 295: 704:
Cusumano, Michael A. (March 1989). "The Software Factory: A Historical Interpretation".
630: 600:
Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools
579: 776:
Cusumano, Michael A. (1991). "Factory Concepts and Practices in Software Development".
268: 830: 137: 94: 725: 797: 342:
These benefits can provide value to several different teams in the following ways:
177:
documents, models, etc.) in an orderly way, and defines relationships between them.
690: 231: 98: 419:
The objective of this approach is to produce an architecture and framework for
245:
Building a product using a software factory involves the following activities:
304:, data sets, and scripts) and applying instrumentation and measurement tools. 196:
Help explain application design choices and the motivation for those choices.
789: 717: 682: 301: 464:
in 1969 with its Hitachi Software Works. Later, other companies such as
352: 762: 479: 475: 461: 490:
Basic organization and management structure (mid-1960s to early 1970s)
382:
architecture which allows operations teams to control basic services.
493:
Technology tailoring and standardization (early 1970s to early 1980s)
486:
Cusumano suggests that there are six phases for software factories:
221:
for arguments. They can be used for creating initial project items.
598:
Greenfield, Jack; Short, Keith; Cook, Steve; Kent, Stuart (2004).
656:
Proceedings of the Twentieth Information Systems Research Seminar
739:
Griss, M. L. (1993). "Software reuse: From library to factory".
174: 25: 821:
Outsourcing Without Offshoring Is Aim of ‘Software Factory’
482:
in 1976 and 1977 followed the same organizational approach.
202:
Provide procedures and instructions for completing tasks.
669:
Bratman, H.; Court, T. (1975). "The Software Factory".
647:
Aaen, Ivan; Bøttcher, Peter; Mathiassen, Lars (1997).
505:
Incremental product / variety improvement (late 1980s)
649:"The Software Factory: Contributions and Illusions" 427:Experience-based component factory (North America) 300:Involves creating or reusing test assets (such as 351:perform tasks in a way that follows the business 157:productivity, quality and evolution capability. 502:Integrated and flexible automation (mid-1980s) 499:Process refinement and extension (early 1980s) 496:Process mechanization and support (late 1970s) 8: 631:"Software Factories: Scenarios and Benefits" 593: 591: 589: 443:Mature software organization (North America) 395:Industrialized software organization (Japan) 752: 460:The first company to adopt this term was 317:approaches. These include the following: 76:Learn how and when to remove this message 39:This article includes a list of general 625: 623: 621: 619: 564: 642: 640: 574: 572: 570: 568: 817:Wipro Technologies: The Factory Model 21:Factory (object-oriented programming) 7: 421:integrated development environments 217:Pre-made application elements with 778:Annals of the History of Computing 45:it lacks sufficient corresponding 14: 837:Information technology management 411:Generic software factory (Europe) 433:NASA Goddard Space Flight Center 30: 466:System Development Corporation 439:to be reused in new projects. 1: 536:Software development process 521:Software Lifecycle Processes 16:Software development process 842:Software project management 858: 190:Architecture guidance and 120:, a software factory is a 18: 449:Capability Maturity Model 552:Model Driven Engineering 546:Domain-Specific Modeling 182:Reference implementation 128:Since coding requires a 19:Not to be confused with 815:Harvard Business Review 790:10.1109/mahc.1991.10004 718:10.1109/ms.1989.1430446 683:10.1109/c-m.1975.218953 60:more precise citations. 278:Product implementation 541:Automatic programming 516:Software Product Line 260:Product specification 142:composite application 122:software product line 118:software architecture 658:. Scandinavia, Oslo. 633:. MSDN. 20 May 2014. 582:. MSDN. 20 May 2014. 580:"Software Factories" 526:Software engineering 377:Value for operations 368:Value for developers 359:Value for architects 315:software development 111:software engineering 763:10.1147/sj.324.0548 741:IBM Systems Journal 531:Systems engineering 241:Product development 101:software creation. 346:Value for business 287:Product deployment 823:By P. J. Connolly 130:software engineer 86: 85: 78: 849: 802: 801: 773: 767: 766: 756: 736: 730: 729: 701: 695: 694: 666: 660: 659: 653: 644: 635: 634: 627: 614: 613: 595: 584: 583: 576: 386:Other approaches 251:Problem analysis 90:software factory 81: 74: 70: 67: 61: 56:this article by 47:inline citations 34: 33: 26: 857: 856: 852: 851: 850: 848: 847: 846: 827: 826: 811: 806: 805: 775: 774: 770: 738: 737: 733: 703: 702: 698: 668: 667: 663: 651: 646: 645: 638: 629: 628: 617: 610: 597: 596: 587: 578: 577: 566: 561: 512: 457: 447:Defined by the 445: 429: 413: 397: 388: 379: 370: 361: 348: 311: 296:Product testing 243: 171:Factory Schema: 163: 150: 107: 82: 71: 65: 62: 52:Please help to 51: 35: 31: 24: 17: 12: 11: 5: 855: 853: 845: 844: 839: 829: 828: 825: 824: 818: 810: 809:External links 807: 804: 803: 768: 754:10.1.1.88.2855 747:(4): 548–566. 731: 696: 661: 636: 615: 608: 585: 563: 562: 560: 557: 556: 555: 549: 543: 538: 533: 528: 523: 518: 511: 508: 507: 506: 503: 500: 497: 494: 491: 484: 483: 469: 456: 453: 444: 441: 428: 425: 412: 409: 396: 393: 387: 384: 378: 375: 369: 366: 360: 357: 347: 344: 340: 339: 333: 326: 310: 307: 306: 305: 292: 283: 274: 269:Product design 265: 256: 242: 239: 238: 237: 228: 222: 209: 203: 200:How-to topics: 197: 187: 178: 162: 159: 149: 146: 106: 103: 84: 83: 38: 36: 29: 15: 13: 10: 9: 6: 4: 3: 2: 854: 843: 840: 838: 835: 834: 832: 822: 819: 816: 813: 812: 808: 799: 795: 791: 787: 783: 779: 772: 769: 764: 760: 755: 750: 746: 742: 735: 732: 727: 723: 719: 715: 711: 707: 706:IEEE Software 700: 697: 692: 688: 684: 680: 676: 672: 665: 662: 657: 650: 643: 641: 637: 632: 626: 624: 622: 620: 616: 611: 609:0-471-20284-3 605: 601: 594: 592: 590: 586: 581: 575: 573: 571: 569: 565: 558: 553: 550: 547: 544: 542: 539: 537: 534: 532: 529: 527: 524: 522: 519: 517: 514: 513: 509: 504: 501: 498: 495: 492: 489: 488: 487: 481: 477: 473: 470: 467: 463: 459: 458: 454: 452: 450: 442: 440: 436: 434: 426: 424: 422: 417: 410: 408: 405: 401: 394: 392: 385: 383: 376: 374: 367: 365: 358: 356: 354: 345: 343: 337: 336:Productivity: 334: 330: 327: 323: 320: 319: 318: 316: 308: 303: 299: 297: 293: 290: 288: 284: 281: 279: 275: 272: 270: 266: 263: 261: 257: 254: 252: 248: 247: 246: 240: 235: 233: 232:Reusable code 229: 226: 223: 220: 216: 214: 210: 207: 204: 201: 198: 195: 193: 188: 185: 183: 179: 176: 172: 169: 168: 167: 160: 158: 154: 147: 145: 143: 139: 138:manufacturing 135: 131: 126: 123: 119: 116: 112: 104: 102: 100: 96: 95:manufacturing 91: 80: 77: 69: 59: 55: 49: 48: 42: 37: 28: 27: 22: 781: 777: 771: 744: 740: 734: 712:(2): 23–30. 709: 705: 699: 677:(5): 28–37. 674: 670: 664: 655: 599: 485: 446: 437: 430: 418: 414: 406: 402: 398: 389: 380: 371: 362: 349: 341: 335: 328: 322:Consistency: 321: 312: 294: 285: 276: 267: 258: 249: 244: 230: 224: 219:placeholders 211: 205: 199: 189: 180: 170: 164: 155: 151: 127: 108: 89: 87: 72: 63: 44: 784:(1): 3–32. 105:Description 58:introducing 831:Categories 559:References 302:test cases 225:Designers: 161:Components 115:enterprise 99:outsourced 66:March 2022 41:references 749:CiteSeerX 602:. Wiley. 213:Templates 726:18982313 671:Computer 510:See also 468:in 1975, 353:workflow 329:Quality: 309:Benefits 206:Recipes: 192:patterns 798:7733552 480:Fujitsu 476:Toshiba 462:Hitachi 455:History 148:Purpose 54:improve 796:  751:  724:  691:537648 689:  606:  325:costs. 43:, but 794:S2CID 722:S2CID 687:S2CID 652:(PDF) 554:(MDE) 548:(DSM) 604:ISBN 478:and 134:IDEs 113:and 786:doi 759:doi 714:doi 679:doi 472:NEC 175:XML 109:In 833:: 792:. 782:13 780:. 757:. 745:32 743:. 720:. 708:. 685:. 673:. 654:. 639:^ 618:^ 588:^ 567:^ 474:, 144:. 88:A 800:. 788:: 765:. 761:: 728:. 716:: 710:6 693:. 681:: 675:8 612:. 298:: 289:: 280:: 271:: 262:: 253:: 234:: 215:: 194:: 184:: 79:) 73:( 68:) 64:( 50:. 23:.

Index

Factory (object-oriented programming)
references
inline citations
improve
introducing
Learn how and when to remove this message
manufacturing
outsourced
software engineering
enterprise
software architecture
software product line
software engineer
IDEs
manufacturing
composite application
XML
Reference implementation
patterns
Templates
placeholders
Reusable code
Problem analysis
Product specification
Product design
Product implementation
Product deployment
Product testing
test cases
software development

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.