|
2 | 2 |
|
3 | 3 | # What is CodeFactory? |
4 | 4 |
|
5 | | -In the simplest terms, CodeFactory is a real time software factory that is triggered from inside Visual Studio during the design and construction of software. |
6 | | -CodeFactory allows for development staff to automate repetitive development tasks that take up developer’s time. |
7 | | - |
8 | | -## What is a Real Time Software Factory? |
9 | | -A real time software factory is automation that can be triggered when ever requested and replace only target content within the solution. |
10 | | -By not requiring complete regeneration of the entire file or process, you can do continuous real time management through automation. |
11 | | - |
12 | | -## What Can I Automate? |
13 | | -Anything you base on a set of demonstrated repeatable steps can be turned into an automation. |
14 | | -The following are the basic criteria for automation. |
15 | | - |
16 | | -### Data Sources |
17 | | -How information is collected and provided to the automation process to execute. |
18 | | -The following are common data sources used in automation: |
19 | | - |
20 | | -#### CodeFactory Data Models |
21 | | -CodeFactory provided data about the Visual Studio environment. The following are the common types of models CodeFactory provides: |
22 | | - - Solution Data |
23 | | - - Project Data |
24 | | - - Project Folder Data |
25 | | - - Project File Data |
26 | | - - Full C# Source Code Models from Code Files |
27 | | - |
28 | | -#### Collection of Information from the Developer |
29 | | -A number of times we may need to get information directly from the developer in order for the automation to execute correctly. |
30 | | -CodeFactory provides direct access to creating custom user interface screens that display information as if they were Visual Studio dialogs. |
31 | | - |
32 | | -#### Usage of 3rd Party Libraries |
33 | | - |
34 | | -CodeFactory allows direct access to the entire .NET framework, this allows for automation to use other third-party libraries to gather information. |
35 | | -The following are some common examples of usage scenarios for collecting data: |
36 | | - - Third party library to parse HTML files |
37 | | - - Third party library to read in a target file format (markdown, yaml, json) |
38 | | - - ADO.NET calls to a database to read out information used in the automation process |
39 | | - |
40 | | -### Automation Logic |
41 | | -CodeFactory uses an event driven model for processing automation requests from Visual Studio. |
42 | | -These events are called "commands" and once commands are executed the automation logic is managed directly in the native .NET framework C# programming language. |
43 | | -Your logic is directly executed to run the expected functionality to build the output identified from the data you provided. |
44 | | - |
45 | | -Part of the automation process is providing common helper-based functionality to handle common automation Tasks. |
46 | | -CodeFactory has a number of helpers built into the SDK to help with common activities found inside code automation. |
47 | | - |
48 | | -### Automation Formatting |
49 | | -A key part of any software factory automation is formatting the final data into a target format expected to be added back into your project or solution in Visual Studio. |
50 | | -CodeFactory provides direct access to the T4 templating engine hosted inside Visual Studio. This allows you to build up formatted output regardless of the target language or format needed. |
51 | | - |
52 | | -### Automation Output |
53 | | -The final step in any automation process is output of the process itself. The following are common outputs from CodeFactory: |
54 | | - |
55 | | -#### Document Creation with Content |
56 | | -CodeFactory allows for the creation of a new document either at the project level or the solution level. During the creation of the document the content is directly added at time of creation. |
57 | | - |
58 | | -#### Positional Based Content Management |
59 | | -CodeFactory provides access to solution and project documents and allows you to update the content of documents based on the position within the document. This includes the following scenarios: |
60 | | - - Remove content by position |
61 | | - - Replace content by position |
62 | | - - Add content before position |
63 | | - - Add content after position |
64 | | - |
65 | | -#### C# Artifact Based Content Management |
66 | | -CodeFactory give you direct access to update content within C# code files. This includes the following scenarios: |
67 | | - - Add content in the beginning of a class, structure, or interface definition |
68 | | - - Add content at the end of a class, structure, or interface definition. |
69 | | - - Add a class, structure, or interface to a code file |
70 | | - - Remove a class, structure, or interface to a code file |
71 | | - - Remove a member (field, property, event, or method) |
72 | | - - Replace a member (field, property, event, or method) with updated content. |
73 | | - - Add content before a member (field, property, event, or method) |
74 | | - - Add content after a member (field, property, event, or method) |
| 5 | +CodeFactory is real time software delivery tool that natively runs inside of Visual Studio. The focus of CodeFactory is to increase the delivery velocity of applications being built new or uplift of projects to other technologies. |
| 6 | + |
| 7 | +## Automation of Construction Delivery Patterns |
| 8 | +One of the core goals of CodeFactory is to use application source code within the application as a data model. |
| 9 | +This is a similar concept to ORM mapping based tools. |
| 10 | + |
| 11 | +This allows for the implementation of development patterns to auto generate common application code developers have to build by hand. The following are common usage scenarios, but by no means the only scenarios in use. |
| 12 | + |
| 13 | +- Bounds checking in methods |
| 14 | +- Implementation of exception handling logic |
| 15 | +- Implementation of standard logging |
| 16 | +- Automation of dependency injection |
| 17 | +- Auto creation of different application layers based on common data models that can now be identified directly from application source code |
| 18 | +- Auto generation of data access layers based on different technologies that fit the need of a target delivery pattern |
| 19 | +- Auto generation of validation logic based on application source code data |
| 20 | +- Auto generation and mapping of logic between service technolgoies and consumers |
| 21 | + |
| 22 | +## Automation of Technology Transformation |
| 23 | +Due to the design of CodeFactories SDK the tooling is very helpful in transformation of existing functionality of application to be lifted into new technology implementation. The following are common usage scenarios for technology transformation, like about these are not the only scenarios for usage. |
| 24 | + |
| 25 | +- Read ORM based data classes and transform into POCO's or to other ORM based implementations |
| 26 | +- Read data classes and generate interface definitions for all classes |
| 27 | +- Read markup languages and use adapters to transform markup from one implementation into another (Example WebForms to Blazor) |
| 28 | +- Read markup languages and update UI implmentation frameworks from one implementation to another (Example Modern UI to BootStrap) |
| 29 | +- Lift and shift of application logic from one platform to another (Example map logic from .net framework to .net standard) |
| 30 | +- Migration Mapping of logic from one system to another (Example using UI dialogs to select where logic comes from and where it goes in a new system) |
| 31 | + |
| 32 | +## Designed for Different Delivery Approaches |
| 33 | +The CodeFactory tool directly integrates into the Solution Explorer in Visual Studio. This provides flexibility to the delivery team on when to use automation and how that automation should be triggered. The following are a few examples, like the others above not the only approaches that can be taken. |
| 34 | + |
| 35 | +### Contract Driven Approach |
| 36 | +Interfaces are defined and automation triggers when interfaces need to be implemented. Allowing for a interface based design of the system and the core shell of the entire delivery driven by interface implementations. |
| 37 | + |
| 38 | +### UI Driven Approach |
| 39 | +User Interface dialogs are triggered and questions are asked which generates the impementation of new or uplift of application logic. |
| 40 | + |
| 41 | +### Event Driven Approach |
| 42 | +Changes in markup files or .net application code files like c# will trigger the option to execute automation logic to complete the implementation of logic. |
| 43 | + |
| 44 | +### Rebuild Approach |
| 45 | +Logic is run that will rebuild the definition of a target artifact. This is a common approach with ORM based tools. |
| 46 | + |
| 47 | +### Hybrid Approach |
| 48 | +This is the most common which uses a number of the above approaches together to meet a development teams delivery needs. |
| 49 | + |
| 50 | +## Zero Touch Delivery Tool |
| 51 | +CodeFactory runs inside of visual studio itself. Which means it acts more like a behind the scene compiler. |
| 52 | +CodeFactory is a design time tool and has no application runtime capabilties. |
| 53 | +This means there is no application libraries or technologies that have to be included inside the application you are delivering. |
| 54 | +Any artificates that are generated by CodeFactory appear to be standard developer hand written code. |
| 55 | + |
| 56 | +## Designed to Build Team Customized Delivery |
| 57 | +CodeFactory is a team delivery tool, which means there is no one size fits all delivery process. Its a SDK style platform that simplifies the design of automation to be taken advantage of by delivery teams. |
| 58 | +CodeFactory releases a standard set of automation libraries fully implemented. |
| 59 | +The goal of these libraries is to provide standard guidance scenarios. |
| 60 | +Alot of teams will want to extend and change the guidance. Which is exactly what this tool is designed for. |
| 61 | + |
| 62 | +The following are the core tooling capabilities of CodeFactory |
| 63 | +### Solution and Project Management |
| 64 | +Direct access to the solution and project system hosted in visual studio. This will include access and partial management of the following items. |
| 65 | + |
| 66 | +- Solution |
| 67 | +- Solution Folders |
| 68 | +- Projects |
| 69 | +- Project Folders |
| 70 | +- Project Documents |
| 71 | +- C# Source Code Files |
| 72 | + |
| 73 | +### Document Management |
| 74 | +Direct access to any document that is hosted in the solution this will include the following. |
| 75 | + |
| 76 | + - Read of all content from any document in the solution |
| 77 | + - Replace all content in a document |
| 78 | + - Add/remove/replace content at target locations within the document |
| 79 | + - Add new documents |
| 80 | + - Remove documents |
| 81 | +### C# Source Code Model Generation |
| 82 | +CodeFactory builds real time data models of C# code files. The models provide access to the following information |
| 83 | + |
| 84 | + - Using statements |
| 85 | + - Namespace definitions |
| 86 | + - Attributes |
| 87 | + - Classes |
| 88 | + - Interfaces |
| 89 | + - Structures |
| 90 | + - Delegates |
| 91 | + - Fields |
| 92 | + - Methods |
| 93 | + - Properties |
| 94 | + - Events |
| 95 | + - Type definitions |
| 96 | + - Access to the body of classes, interfaces, structures |
| 97 | + - Access to the body of methods, properties, events |
| 98 | + - Source code management that include replace, add before, add after, delete on all member objects |
| 99 | + - Source code management that include replace, add before, add after, delete, beginning, end of all classes,structures, interfaces |
| 100 | + |
| 101 | +### Source Formatting |
| 102 | +CodeFactory provides support for formatting of source code regardless of target langauges. This includes the following |
| 103 | + |
| 104 | + - T4 integration to support the use of T4 formatting files to emite the target source code to be generated |
| 105 | + - Source formatter an internal code factory formatter that provides granular source editing |
| 106 | + |
| 107 | +### User Interface Management |
| 108 | +CodeFactory integrates natively into the Visual Studio IDE. Allowing people to build their own custom dialog windows that display as native windows inside of visual studio. |
| 109 | + |
| 110 | + |
| 111 | +## Build Using .Net Technologies for Fast Adoption |
| 112 | +CodeFactory was designed to author automation using the C# programing language. All of code factory technologies are written using .net framework libraries. |
| 113 | + |
| 114 | +(Note: This is a current limitation of the Visual Studio development environment. As Microsoft provide .net core integration into visual studio code factory will update at that time) |
| 115 | + |
| 116 | +CodeFactories SDK provides a common set of tools for delivery teams to quickly extend and author their own automation for application delivery. |
| 117 | + |
0 commit comments