Download presentation
Presentation is loading. Please wait.
Published bySandra Tucker Modified over 9 years ago
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.