This project is read-only.

Introducing "Type-Surface" Development

Type-Surface Development involves designing code as opposed to writing it.

With type-surface development,  you create an application initially through assembling typed abstractions called "type surfaces", as opposed to traditional coding by instantiating objects and writing code logic against those objects.  The design process doesn't necessarily do away with coding, at the same time provides much of the foundation for which to insert custom code logic - logic that focuses primarily on business rules, as opposed to the mundane wiring of common elements found in every application.

Type-surface development is not a beginner's design technology.  It does not result in spaghetti code, reams of meta-data XML, or guess work UI's based directly off of the database schema.  It does not involve usage of a code workflow designer meant for novice users.   It results in professionally generated code, well-commented and adhering to de facto coding standards.  Code is not hidden away in binaries and made available to further enhance to achieve the desired results.  The code generation results in an N-tiered solution, automatically wiring together the Data Layer, Business Rules Layer, Domain Services Layer, DTO's, local Data Services, the View Models, and their associated views accessible via a Unity IoC container.   It also results in the creation of automated unit and integration tests.  This methodology allows the developer to do what he/she does best, which is to solve business problems instead of doing repetitive tasks.

Type Surfaces

Project Description

This project involves the creation of a cloud-based application builder, with outputs including the following types of apps:

• Basic web site with content management features via web parts.
• Advanced web applications following a tiered architecture using Domain Services, Entity Framework, and SQL backend.
• Silverlight applications (including mobile) with RIA services and the above.

All application types will use the MVVM (model, view, view-model) design pattern.  (NOTE!!! Considering MVC3 and Razor - tell me your thoughts)

Immediate features will include the following:

• A Silverlight-based designer to allow for creation of an application, its model, its view model, and the corresponding views all hooked together.
• Models will be accessible via a TreeView.
• Another TreeView will allow for the creation of a site map to represent the views, its controls, and its navigation layout.
• Drag and drop capability from the Model TreeView to the site map views will allow for automated creation of the corresponding View-Models attached to the views, the UI bindings, and the queries to the Model.
• Designers for the various controls on the view, including TreeViews, GridViews, Data Forms, Search Lists, Reports, etc.
• LINQ query designers.
• LINQ queries generated for all Model access from the ViewModels.
• Validation designers.
• Code generation using CodeModel and T4 templates.

Summary

Solution Framework will provide the ability to fast track a software development project with primary focus on corporate web sites and shrink-wrap software products. The tool would, however, suite the needs of any smaller projects, eliminating much of the plumbing work common to most software development efforts. In fact, earlier developed aspects of the Solution Framework application will be used to create the remaining functional features of the product.

The system will support proven SDLC methodologies and best practices and patterns. The system will target as its primary user a technically perceptive business analyst that can take goals and objects, requirements, use cases, and process flows and turn that into functional screens and reports.  It will however serve the needs of developers and architects of all levels of skill.

Project Background

Mind Chemistry Inc. is in need of a web application and product software. The requirements and design of these applications have been developed and documented. The web site itself involves over 120 pages and a back end database of about 287 tables. The web site integrates with SharePoint, Commerce Server, BizTalk, and Microsoft Dynamics. The product software is estimated to take around seven work years to complete. Several venture capitalist organizations and private investors have keen interest in the outcomes of these projects. Due to time and budget constraints, the solution decided upon is not to create the software from scratch however to create another project as “open-source” referred to by the code name “Solution Framework”. Solution Framework will be used to develop the other fore-mentioned products as well as related subsidiary products, including as a specialized social networking site and development tools for an IT consulting firm developing custom software for third party clients.

Project Definition

The project involves creating a "rich-client-based" application builder. The end-result application will reside on the hosting site however can be developed via the rich client. Wizards and designers will be available to the end-user to create the following:

  • Application Structure
  • Database (via Domain Model)
  • Queries (via LINQ) and Validation designers
  • Site Map and User Interface
  • A Visual Studio Solution that is accessible and maintainable via TFS
  • Continuous Integration
  • A compilable, runnable web application on the hosting site.
  • Other features such as unit and integration tests, content management, and deployment workflow (develop, test, production)

Goals/Objectives

1.     Reduce the time required to develop a web-based application.
2.     Provide a web-based interface in which no Visual Studio is required locally to create a basic web application.
3.     For advanced applications, provide a boiler-plate project which can be further customized by an end user or developer
4.     Allow a developer to open solutions, make modifications, and check back into the core via TFS.
5.     Prevent developer modifications from being overwritten by further customizations done via the rich client.
6.     Provide the basic wiring of a web application that is typically repetitive such as the following:

       ●  Creation of solutions, projects, IIS configurations, directory structures, common layers and tiers,
           standard design patterns and practices, common files, assemblies, etc.
       ●  Automatic creation of site maps, menus, submenus, tabs, quick links, etc. via user specified navigation
       ●  Wiring together of forms and pages based on user specified navigation.
       ●  Wiring of forms to domain model sources.
       ●  Automatic creation of view models
       ●  Wiring of UI elements to domain model objects and sources via bindings to a view-model.

7.     Allow an end-user (non-developer) to create and customize basic pages, navigation, and content items.
8.     Avoid overlap as much as possible with already existing Microsoft technologies.


Future goals:

1.     Content management and approval workflow
2.     Multi-environment deployment
3.     In-place code modifications
4.     Support of SDM documents
5.     Full product life-cycle support
6.     Screen prototyping and wire framing
7.     User documentation and help authoring and support

Cost/Benefit Assessment

The cost benefit is the reduced time and cost required to develop and maintain a web application. Estimated cost reduction of 75% of overall cost. Also, being a cloud-based application, reduces cost of required hardware, software licensing, installation and maintenance costs, cost of development tools, etc.

End Product - Risks

Will Microsoft come out with something like this soon?  Probably.  We can’t wait.

Project Progress

Yes, multiple phases are going on at once.  Want it sooner?  .. Get involved!

image

Last edited Nov 7, 2011 at 4:32 AM by dezrtluver, version 46