Presentation is loading. Please wait.

Presentation is loading. Please wait.

Life cycle Application Generation Peter Bell Chief Technology Officer SystemsForge Peter Bell Chief Technology Officer SystemsForge.

Similar presentations


Presentation on theme: "Life cycle Application Generation Peter Bell Chief Technology Officer SystemsForge Peter Bell Chief Technology Officer SystemsForge."— Presentation transcript:

1 Life cycle Application Generation Peter Bell Chief Technology Officer SystemsForge pbell@systemsforge.com Peter Bell Chief Technology Officer SystemsForge pbell@systemsforge.com

2 Overview Introducing SystemsForge Lifecycle Solutions Core Concepts Anatomy of a Generator Outstanding Problems

3 Where We Fit Five types of features Rocket Science Lab experiment (non-functional) New to me With a twist - sweet spot == 80% Here we go again...

4 What we do Generate custom web apps CMS, E-comm, Newsletter, etc. Unique: Insurance portal, SPLs, etc. “With a twist” Retail: $5,000 - $50,000 Wholesale providers (usually under $5,000)

5 Resellers Marketing/design Selling to SMB’s Them: Project management, data entry, support Us: Code, tools, deployment

6 State of Play 80 clients 4 active resellers Profitable Soft launch this summer “Finishing up”

7 What We’re Not Vendor Experts Usual

8 Business Drivers Build Anything Change Everything Rapid Process 80/20 Non technical roles

9 Lifecycle Solution Quote Specify Generate Manage Deploy Must optimize ALL

10 Quote Priced features Configure for free Discovery fee if complex (if possible!) Customization heuristics (per object) Named variability (includes only x)

11 Specify Features and configurators Requirements output => DSL input Agile Fixed Price Reduce (our) cost of most iterations

12 Generate Layered SPL - iterative approach Choose (feature model) Configure (decision support) Customize (DSLs) Extend (just add code)

13 Choose - Feature Model N-Features Parent Essential, optional, requires one

14 What IS A Feature? 1..n statements Essential/optional Config questions/mappings Question specific guidance

15 Configure Select optional Decision Support Answer: 0..n questions, 0..n statements

16 Customize (DSLs) Overload or add statements Issue: capturing customizations Intent Driven Design

17 Business intent Roles (and objectives) Essential tasks Interfaces and actions Infer object model Non non-functional specs

18 Extend (Just Add Code) Passive generation Protected areas Mixins/Partial Classes Subclass Events AOP

19 Generate Layered SPL - iterative approach Choose (feature model) Configure (decision support) Customize (DSLs) Extend (just add code)

20 Domain Specific Languages Three types of languages Abstract grammar vs. concrete syntax In language vs. external DSL

21 Three Types of Language Declaritive: What to do (requirements) Templating: Where to put (layout) Scripting: How to do (imperative)

22 Declaritive User @FullName: Name: Optional @Email: Email: Required @Password: Password: Required SELECT FullName FROM tbl_User Where UserID = 7

23 Templating #Title# $#Price#

24 Scripting For (Count = 1; Count lte listlen(ObjectDependencyList); Count=Count+1) { // Get current object name LoopObjectName = ListGetAt(ObjectDependencyList, Count); If (LoopObjectName NEQ "LightWire") { // Prepend it with ObjectName LoopObjectName=ListAppend(arguments.ObjectName,LoopObjectName,"|"); // Add it to the new object dependency list TempObjectDependencyList=ListAppend(TempObjectDependencyList,LoopObjectName) };

25 Three Types of Language Declaritive: Statement level reuse Templating: Simplify for designers Scripting: Use to implement

26 Abstract vs. Concrete grammar vs. Syntax WHAT say vs. HOW say Objects.User.Title = “User”; Objects.User.Attribute.Name = “FirstName”; FirstName User @FirstName Boxes and Arrows

27 In-Language vs. External DSL In Language: API, Language extension Easy to create No validation Can use core language External: XML/custom file Store in database Harder to create Validation Can limit language

28 Anatomy of a Generator Grammar Metadata Templates Iterator Orchestrator Extensions

29 Grammar Context free Concepts 0..n Attributes (optional or required) 0..n Relationships (0/1..1/n) BNF, API, DTD/Schema Example...

30 Grammar Object Name:string:required @Parent:Object 0..1 @Property 1..n @Relationship 0..n Property Name:string:required @DataType 1..1 Relationship Title:string DataType Name:string:required SQLDataType:enum:required

31 Metadata Scripting XML Custom Syntax Databased

32 Templates Generating n-Getters: Template: > > Velocity - XSLT - CF Template Generate a File

33 Templates

34 Iterator One DAO per business object One template per screen In general: one file per instance of concept Need filter support Generate n-Files

35 Orchestrator Metadata (get(“ObjectList”)) Template (ObjectDAO.cft) Iterator (Object: All) File name (#ObjectName#DAO.cfc) Generate m-Collections of n-Files

36 Anatomy of a Generator Grammar Metadata Templates Iterator Orchestrator Extensions

37 Framework vs. Code Gen Not either/or Language features Intellectual property Performance Can refactor...

38 Problems Outstanding Handling “dark matter” Evolving DSLs (versioning, refactoring) Pretty pictures(!) Peter Bell http://www.pbell.com Email: pbell@systemsforge.comom SystemsForge http:http://www.systemsforge.com

39 Object Model Objects: Attributes: Relationships Objects and Attributes: Content @LiveDate: Optional: Datetime: 1/1/2000 @KillDate: Optional: Datetime: 1/1/3000 @Status: Required: Status: approved Page: extends Content @Title: Required: Title Article: extends Content @Content: Optional: HTML Relationships: Page: Article: optional: multiple Article: Page: required: single

40 Object Model (2) Custom Data Types LiveDate @Transform: Date @Validate: IsDate @Field: DatePicker @Display: AsDate Status @Validate: IsDate @Field: Dropdown @List: StatusList Content @Transform: SafeHTML @Field: WYIWYG

41 Interface Model Screens: Actions: Steps Screens BaseList @Type=List @Paging = Yes @DefaultRecordsPerPage = 50 @RecordsPerPageList = 10,25,50,all ArticleAdminList extends BaseList @Type=List @AttributeList: Title,Status @OrderByAttributes: Title,Status @DefaultOrderBy: Title


Download ppt "Life cycle Application Generation Peter Bell Chief Technology Officer SystemsForge Peter Bell Chief Technology Officer SystemsForge."

Similar presentations


Ads by Google