Software Factory

"A software factory is a software product line that configures expandable tools, processes and content with a software factory template based on a software factory scheme in order to automate the development and maintenance of variants of an archetypal product, by adapting, assembling and configuring framework-based components.

- Application performance monitoring
- Monitoring and alarm management
- Software as a service / cloud service
- Container based deployment
- Render engine and executable models
- DSMLs
- Automated test
- Continuous integration / continuous delivery
- Version control
- Security by design
- Agile
- Cloud infrastructure (SaaS)

What is a software factory?

Software development is a complex commitment. For dominating in the digital age companies should respond to market changes by quickly developing and delivering appropriate software solutions.
When we speak about software development, you probably think of waterfall approach or ones that are more modern like DevOps-based. Now there is a more modern and mature approach to software development calls software factory.
What is s software factory? In fact, a software factory is an application of manufacturing principles to the software development lifecycle. The heart of the common model of software development is code-test-deploy cycle and the software factory is a major transformation and shift from this model. A software factory relies on decreasing the amount of routine works for developers to help them concentrate on more valuable works within the organization.
The concept of Software factory is not new and has been around since the 1960s when Hitachi pioneered the concept with Hitachi Software Works. However today this industrialization of software development is standard for leading software companies. 

Pazila Software Factory

Pazila’s software factory is founded on some basic principles that form its processes, structures, tools and methodologies.

Automation is one of the main aspects of our software factory. That is a prerequisite for agility, reacting fast to market changes, and innovation. Pazila has automated CI/CD pipelines and through integrating them with associated DevOps methodologies enhances the speed and quality of build, test, release and deploy of software.

Pazila uses micro-services. Micro-service is an architectural style that divides software into small, lightweight, independent, and manageable parts or services. It is in fact a distributed software development architecture.

One of the main assets of Pazila software factory is its intellectual capital. With focusing on developing and managing these assets in both domain and product engineering layers, Pazila tries to have a knowledge management mechanism, which helps its developers to concentrate more on innovation and new features rather than routine works.

Part of the valuable assets of this factory is Domain-Specific Modeling Languages (DSMLs). They refer to modeling languages in specific domains that allow users to deal with those domains directly. In fact, Model-Driven Engineering (MDE) with a closer look at the problem domain than the implementation domain alleviates the complexity of platforms..

Pazila Software Factory Players

Pazila has three players that each manage some assets. An asset describes components, libraries, frameworks, documentation, how-to’s, etc., that are used to build the work products for a player.

Pazila master

Pazila master has the main assets of Pazila called Pazila core assets. First is Core microservices that enable developers to develop their applications based on independent parts or services that can be changed, deleted, or updated easily. One another asset of Pazila master is code generator which main goal of that is decreasing routine works. Eliminating routine works benefits are decreasing cost and time of development and reducing the probability of human error. There are some scripts for CI/CD design and implementation. Domain-specific modeling languages, Pazila studio, and Core micro-frontends are some other core assets of Pazila.

Pazila developer

The second actor of Pazila software factory is Pazila developer. This actor is in the product-engineering layer. As mentioned before product engineering layer of a software factory is about customizing products for customers. Pazila developer manages Pazila custom assets including configuration, Product microservices, and product micro frontends.

Pazila man

The third actor is Pazila man who has a customer-facing role in the platform and directly deals with customer requirements. In fact, this player performs further customization for a customer product. Main assets that are managed by Pazila man include user-designed component and Pazila editors.