1 / 27

Software Recycling In “Skilltree” Technology Introduction

Software Recycling In “Skilltree” Technology Introduction. Version 3 (preview 1) by Avner Ben 25 August 2011. Contents : The challenge of Software Recycling The “Skill-driven” solution The “Skill-driven ” process. 1. The challenge of Software Recycling.

berne
Download Presentation

Software Recycling In “Skilltree” Technology Introduction

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software RecyclingIn“Skilltree” Technology Introduction Version 3 (preview 1) by Avner Ben 25 August 2011

  2. Contents: • The challenge of Software Recycling • The “Skill-driven” solution • The “Skill-driven” process

  3. 1. The challenge of Software Recycling

  4. Software Recycling - Product Scope • Services • Deliverables • Expectations from client • Means

  5. Software Recycling - Product Scope • Services: • To extract the designfrom the code of a software product. • To refactor and improve the code of the current product. • To re-designthenext generation product. • Deliverables • Client side • Means

  6. Software Recycling - Product Scope • Services • Deliverables: • A Designdatabase. • Browse online. • Print design documents. • Improve design. • Generate code starters. • Documentationin code. • Both Human and machine readable. • A CriticalDesign Review document. • Client side • Means

  7. Software Recycling - Product Scope • Services • Deliverables • Client side: • Domain expertise • Programming skills. • Means

  8. Software Recycling - Product Scope • Services • Deliverables • Expectations from client • Means: • Proprietary method – “Skill-driven” Design. • Formal language – “Skilltree” VHLL. • Automated tool – uses the Skilltree compiler engine.

  9. Software recycling opportunities • 1. Salvage “legacy” code. • Mine priceless hidden problem/solution domain knowledge. • 2. Understand provided infrastructure. • (Such as “open source”.) • 3. Facilitate design review. • Evaluate the big picture, then dive into detail. • Find design errors, reducing “bugs”. • 4. Promoterisk management. • Mine the necessary data about size and complexity.

  10. Software recycling Benefits • Assess the requirements • Get an extra pair of eyes…

  11. Software recycling Benefits • 1. Assess the requirements: • Those really implemented vs. those requested. • Common reasons for loss of fidelity: • Problem domain clarified during implementation. • Market demands changed during implementation. • Novel technology evaluated through tangibles. • Improvised in response to urgent demand. 2. Get an extra pair of eyes…

  12. Software recycling Benefits 1. Assess the requirements: • 2. Get an extra pair of eyes… …that no Human has! • Discover a treasure of knowledge, which only borders on the professional consensus: • Problems that eventually occur. • Solutions in unexpected ways. • Re-design “from scratch”, and you pay the price of re-learning!

  13. The Competition 1. Documentation generation technology • Print volumes of unsolicited trivial detail for no one to read. 2. “C.A.S.E.” technology (“Computer-Aided Software Engineering”). • Visual language for countless programmatic detail, • Obscuring the requirements. • An evolutionary dead end? • With us since the 1990’s. • So far, has not lived up to expectation. • Rejected by the market at large: • Purchased but seldom used seriously, • Except for niche applications.

  14. 2. The “Skill-driven”Solution

  15. The Skill-driven Premises • The job requires two skills (which are complementary): • Automation • Alone will not do! • The code was notwrittenby machines. • The code is subject to Human intuition and idiosyncrasy. • Human intelligence • Alone will not do! • Cannot cope with size and complexity of even the smallest commercial product. • The job is dull, detail-plagued – impractical!

  16. The Skill-driven Premises Programmatic detail – out of design limits! • The challenge of “full-cycle” engineering: • Find the golden road to… • Allow machine readability, • Be detail-complete • Yet, • Leaving the code readable, • maintainable!

  17. The Genuine Challenge Given the dichotomy: automationvs.Human: • What does each of these functionscontribute? • How do they interact profitably? • What not to expect (from each)!

  18. The “Skill-Driven” Approach This software recycling proposal is… Aservice • Rather than Do-It-Yourself kit! • Responsibility of Third-party team, involving user personnel. Based upon… • Robustmethodology. • “Skill-Driven” design. • Proprietaryproduct: • “Skilltree” VHLL* compiler and viewer. • Design extraction/insertion tool (Skilltree extension). * “Very High-Level Language” - roughly, machine-readable object-oriented Pseudocode.

  19. 3. The “Skill-driven”Process

  20. The Skill-driven Process Layout the project. Given project scope, source files, coding and documentation convention, produce the reverse-engineering configuration file, preliminary version. Parse source files. Given source files and configuration, fine-tune configuration and produce first-generation documented source files, copying original program structure and adding default skill-driven documentation, using original documentation where available and generated documentation elsewhere. Edit in-code documentation. Iterate on improving original copied/generated in-code doc, counting on programming convention, domain knowledge and common sense. Validate resulting design base. Further edit in-code documentation for concise design. Analyze reconstructed design. Given various graphic and textual views of the design and knowing design architectures, patterns and idioms, criticize the current architecture (as reconstructed). Implement next-generation product. Given concise requirements, elaborate on the reverse-engineered design base, giving design for the next generation product. Then, produce documented code starters , add missing programmatic detail, make implementation decisions , compile, test and deploy next generation product.

  21. Sample Artifact Sequence 1. Source code (excerpt) boolDecisionMaker::findOut(const State&aState){ boolisStable=aState.isStable(); if(isStable) currentDecision.setStability(true); 2. Automatically-documented code 3. Documented code, manually edited 4. Skilltree design base 5. Automatic design view 6. Generated code starter

  22. Sample Artifact Sequence 1. Source code 2. Automatically-documented code // to find out 5172 // - Input: (formal) a State // - Output: (formal) a Boolean // - Use Case: Finding out 5172 boolDecisionMaker::findOut(const State&aState) { // Message: “to tell if is stable 3265” boolisStable=aState.isStable(); // Message, Option: “to set stability 3266” if(isStable) currentDecision.setStability(true); 3. Documented code, manually edited 4. Skilltree design base 5. Automatic design view 6. Generated code starter

  23. Sample Artifact Sequence 1. Source code 2. Automatically-documented code 3. Documented code, manually edited // to find out about State // - Input: (formal) State to find out about // - Output: (formal) decision // - Use Case: Finding out about State boolDecisionMaker::findOut(const State&aState) { // Message: to tell if State is stable boolisStable=aState.isStable(); // Message, Option: to set stability for Decision if(isStable) currentDecision.setStability(true); 4. Skilltree design base 5. Automatic design view 6. Generated code starter

  24. Sample Artifact Sequence 1. Source code 2. Automatically-documented code 3. Documented code, manually edited 4.Skilltree design base (excerpt) • ENTITY Decision Maker • SKILL to find out about State • INPUT(FORMAL) State to find out about • OUTPUT(FORMAL) decision • IMPLEMENTATION Method • SIGNATUREfindOut(aState:const State&):bool • USE CASE Finding out about State • SKILLTREE to find out about State • ACTOR Manager • SKILLTREE to tell if State is stable (BYState) • SKILLTREE(OPTION): to set stability for Decision (BY Decision) 5. Automatic design view 6. Generated code starter

  25. Sample Artifact Sequence 1. Source code 2. Automatically-documented code 3. Documented code, manually edited 4. Skilltree design base 5. Automatic design view (sample, “Sequence Diagram”) 6. Generated code starter

  26. Sample Artifact Sequence 1. Source code 2. Automatically-documented code 3. Documented code, manually edited 4. Skilltree design base 5. Automatic design view 6. Generated code starter • // to find out about State. • // - Input: (FORMAL) State to find out about. • // - Output: (FORMAL) Decision. • // - Use Case: Finding out about State. • boolDecisionMaker::findOut(const State&aState) { • // Message: "to tell if State is stable" • aBool = aState.isStable(); • // Message, OPTION: “to set stability for Decision” • if(/* unknown condition */) { • aDecision.setStability(); • } • }

  27. Thank you for your attention!

More Related