Concord Mfg’s Software Manufacturing principles bring together several key software development paradigms.
- Deliver working software using short development cycles. Tests insure that changes do not break previous work. Agile and Test-Driven development support the first principle of Software Manufacturing.
- Separate data handling from business logic from user interface using service oriented architecture.
- Declare structures and logic so that changes can be made by knowledgable users without affecting the entire application. Declare workflow, business logic, validation, user interface, and the data schema.
- Generate code that ties together these declarations.
These principles are followed using the following:
The agile software development methods used at Concord Mfg minimize risk by developing software in short time boxes, called iterations, which typically last one to four weeks. Each iteration is like a miniature software project of its own, and includes all of the tasks necessary to release the mini-increment of new functionality: planning, requirements analysis, design, coding, testing, and documentation. While an iteration may not add enough functionality to warrant releasing the product, an agile software project intends to be capable of releasing new software at the end of every iteration. At the end of each iteration, the team reevaluates project priorities.
The goal of each iteration is to provide working functionality that can be shown and measured.
The Agile Manifesto values:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Concord Mfg practices SCRUM, which significantly increases productivity and reduces time to benefits while facilitating adaptive, empirical systems development.
Service Oriented Architecture
Service Oriented Architecture uses loosely coupled software services to support the requirements of the business processes and software users. In an SOA environment, resources on a network are made available as independent services that can be accessed without knowledge of their underlying platform implementation.
This means that the implementation of the data store activities and business rules are separated from the user interface. This has several advantages:
- The user interface can change and grow based on the needs of the organization.
- The workflow can be described declaratively and can be changed by knowledgeable users when conditions change.
- The business rules are described declaratively and are described by business analysts rather than an involved developer activity.
The key is independent services with defined interfaces which can be called to perform their tasks in a standard way, without the service having pre-knowledge of the calling application, and without the application having or needing knowledge of how the service actually performs its tasks.
Service oriented architecture allows for deployment through Software as a Service.
Test Driven Development
Test-driven development can help to build software better and faster. It offers more than just simple validation of correctness, but can also drive the design of a program. By focusing on the test cases first, one must imagine how the functionality will be used by clients (in this case, the test cases). Therefore, the programmer is only concerned with the interface and not the implementation.
Test-driven development gives rapid feedback. By using test-driven development we are able to verify that during refactoring that we did not introduce any unexpected errors.
It is goal of each Concord Mfg project to deliver the maximum configuration for the client Rather than create dependencies that tie business logic and configuration into code, Software Manufacturing provides for maximum configuration by using declarative programming techniques. The idea is to empower users to grow and maintain their own product. One technique used is declarative programming.
Concord Mfg projects provide a set of configurable properties for your application. These include:
- Business rules
- Communications protocols
Knowledgeable users can then configure the software to fit changing business needs.
This focus on describing the properties of the desired solution (the what), leaving unspecified the actual algorithm that should be used to find that solution (the how).
Concord Mfg uses declarative programming languages such as SQL, XSLT. XML is often used to hold the application-specific declarations.
Code Generation Using Software Factories
Code generation is used to produce programs in some automatic manner, reducing the need for human programmers to write code manually. Code generation is the same technique that takes the code written by programmers and turns it into code run by the computer.
Concord Mfg takes this one level higher and generates the code that would normally be repetitively written by programmers. The code is generated from a higher level and provides the common code used by all applications, thus saving time with coding errors and debugging. In addition, the technique provides for the enforcement of the standards that are selected for a particular project.