Skip to main content
added 26 characters in body
Source Link
Doc Brown
  • 220.3k
  • 35
  • 410
  • 623

It is quite different for the evolution of business software (e.g. ERP modules) whose task specifications are very ad hoc and those specifications form part of the large corpus of code and documentation that is specific to particular legal system (it may be small country in Eastern Europe with 2M people), to particular software suite (this suite has its specific naming conventions, specific guidelines for the building of forms and specific user interaction patterns), to particular domain (e.g. HR self-service portal and payroll calculation - very specific rules, lots of validation, etc.). So, while it can be possible to specify business software evolution tasks in short sentences, the semantic expansion of those few sentences relies heavily on esoteric documents, industry standards, legal norms of small regions and so on. Most likely the full/expanded specification of the task for the business software evolution (which can be required by novice developer which is new to particular suite and particular domain) involves very large chunks of documentation and its execution (by code synthesis) can include edits in numerous modules. 

E.g. adding new field requires synthesis to be performed in: 1) data models - entity classes; 2) business models - validation and derivation rules; 3) presentation views - right placement in the form among other fields; 4) api services - generation of new version of apis and relevant check of security/access rules.

  1. data models - entity classes;
  2. business models - validation and derivation rules;
  3. presentation views - right placement in the form among other fields;
  4. api services - generation of new version of apis and relevant check of security/access rules.

Copilot can ask us to do joint synthesis by modification of the initial task and by division this initial task/prompt into small separate tasks for the Copilot, but - apparently - the developer should feed the entire context and the previous edits to move from one such subtask to the other. So, Copilot should have some state as well and should be able to do its synthesis as part of the large, join synthesis supertask.

It is quite different for the evolution of business software (e.g. ERP modules) whose task specifications are very ad hoc and those specifications form part of the large corpus of code and documentation that is specific to particular legal system (it may be small country in Eastern Europe with 2M people), to particular software suite (this suite has its specific naming conventions, specific guidelines for the building of forms and specific user interaction patterns), to particular domain (e.g. HR self-service portal and payroll calculation - very specific rules, lots of validation, etc.). So, while it can be possible to specify business software evolution tasks in short sentences, the semantic expansion of those few sentences relies heavily on esoteric documents, industry standards, legal norms of small regions and so on. Most likely the full/expanded specification of the task for the business software evolution (which can be required by novice developer which is new to particular suite and particular domain) involves very large chunks of documentation and its execution (by code synthesis) can include edits in numerous modules. E.g. adding new field requires synthesis to be performed in: 1) data models - entity classes; 2) business models - validation and derivation rules; 3) presentation views - right placement in the form among other fields; 4) api services - generation of new version of apis and relevant check of security/access rules. Copilot can ask us to do joint synthesis by modification of the initial task and by division this initial task/prompt into small separate tasks for the Copilot, but - apparently - the developer should feed the entire context and the previous edits to move from one such subtask to the other. So, Copilot should have some state as well and should be able to do its synthesis as part of the large, join synthesis supertask.

It is quite different for the evolution of business software (e.g. ERP modules) whose task specifications are very ad hoc and those specifications form part of the large corpus of code and documentation that is specific to particular legal system (it may be small country in Eastern Europe with 2M people), to particular software suite (this suite has its specific naming conventions, specific guidelines for the building of forms and specific user interaction patterns), to particular domain (e.g. HR self-service portal and payroll calculation - very specific rules, lots of validation, etc.). So, while it can be possible to specify business software evolution tasks in short sentences, the semantic expansion of those few sentences relies heavily on esoteric documents, industry standards, legal norms of small regions and so on. Most likely the full/expanded specification of the task for the business software evolution (which can be required by novice developer which is new to particular suite and particular domain) involves very large chunks of documentation and its execution (by code synthesis) can include edits in numerous modules. 

E.g. adding new field requires synthesis to be performed in:

  1. data models - entity classes;
  2. business models - validation and derivation rules;
  3. presentation views - right placement in the form among other fields;
  4. api services - generation of new version of apis and relevant check of security/access rules.

Copilot can ask us to do joint synthesis by modification of the initial task and by division this initial task/prompt into small separate tasks for the Copilot, but - apparently - the developer should feed the entire context and the previous edits to move from one such subtask to the other. So, Copilot should have some state as well and should be able to do its synthesis as part of the large, join synthesis supertask.

Source Link
TomR
  • 1k
  • 1
  • 9
  • 18

How to use Github Copilot for business software evolution (if possible at all)?

Github Copilot got update yesterday (2023 St. Valentine) https://github.blog/2023-02-14-github-copilot-now-has-a-better-ai-model-and-new-capabilities/ but still no information for its use in the business software evolution.

AFAK Copilot is good for generating code snippets for the general problems. https://www.reddit.com/r/delphi/comments/wnhk9x/psa_github_copilot_works_with_delphi/ is one example for some esoteric language (Embarcadero Delphi Object Pascal). Copilot works good in this case, because the "interpolation among n points" is very general problem which has lot of research and textbook data and this problem can be described by few words and the standard expansion of the standard meaning of those few words (actually exact terms in some terminology) is well known both to the general public and to text corpus/language model of Codex.

It is quite different for the evolution of business software (e.g. ERP modules) whose task specifications are very ad hoc and those specifications form part of the large corpus of code and documentation that is specific to particular legal system (it may be small country in Eastern Europe with 2M people), to particular software suite (this suite has its specific naming conventions, specific guidelines for the building of forms and specific user interaction patterns), to particular domain (e.g. HR self-service portal and payroll calculation - very specific rules, lots of validation, etc.). So, while it can be possible to specify business software evolution tasks in short sentences, the semantic expansion of those few sentences relies heavily on esoteric documents, industry standards, legal norms of small regions and so on. Most likely the full/expanded specification of the task for the business software evolution (which can be required by novice developer which is new to particular suite and particular domain) involves very large chunks of documentation and its execution (by code synthesis) can include edits in numerous modules. E.g. adding new field requires synthesis to be performed in: 1) data models - entity classes; 2) business models - validation and derivation rules; 3) presentation views - right placement in the form among other fields; 4) api services - generation of new version of apis and relevant check of security/access rules. Copilot can ask us to do joint synthesis by modification of the initial task and by division this initial task/prompt into small separate tasks for the Copilot, but - apparently - the developer should feed the entire context and the previous edits to move from one such subtask to the other. So, Copilot should have some state as well and should be able to do its synthesis as part of the large, join synthesis supertask.

AFAK Copilt is able to read entire Github repository of the software suite and use its code for its synthesis tasks, but what about documentation (legal, industry, suite-specific, best practices, etc.)? Should I put all this textual information in the Github repository as well and does Copilot will be able to employ this by adopting the terms and reasoning patterns in it?

So, currently I am trying to see the opportunities of Copilot use for the evolution of the business software, but I can not come up with the good scenarios. It is almost impossible to use for the snippet generation either. E.g. I can ask the Copilot to generate snippet "generate function for the default date of disability leave", but I am almost sure that Copilot will not be able to do this because it requires scanning the legal norms.

Are there some suggestions, advices how to still use Copilot for synthesis of business code?