42

Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework
Page 2: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Thomas Leung & Jonathan TongMicrosoft ServicesMicrosoft Hong KongSession Code: DEV383

Page 3: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Agenda

Framework & Architecture

Practical Architecture

Case Study 1

Case Study 2

Q&A

Page 4: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework
Page 5: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

What exactly is a “Framework”?

A set of ideas, principles, agreements, or rules that provides the basis or outline for something intended to be more fully developed at a later stage (e.g. - providing a framework for next week's discussions)

A Software Framework is a re-usable design for a software system (or subsystem). A software framework may include support programs, code libraries, a scripting language, or other software to help develop and glue together the different components of a software project. Various parts of the framework may be exposed through an Application Programming Interface (API). [from Wikipedia]

Page 6: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

What exactly is an “Architecture”?

Architecture is the activity of designing and constructing buildings and other physical structures by a person or a machine, primarily to provide socially purposeful shelter. [From Wikipedia]

From a software perspective, an Architecture is a design (or “blueprint”) of an application system, which may leverage one or more Frameworks. An Enterprise Architecture is an even higher level design that attempts to encompass multiple application system under a common overall design.

Page 7: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

What comes first? Architecture or Framework(s)?

May depend on maturity of current organization:

• Do Frameworks already exist?

• Is a Partial or Full Architecture in place today?

• Are application building blocks in use today?

Architecture can be created without Frameworks in existence. However, the existence of well defined Frameworks can greatly enhance and simplify architecture and design.

Architecture can identify and drive the need for Frameworks. Therefore, it may be appropriate to develop and evolve

Architecture and Frameworks in parallel.

Page 8: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Why create and leverage Frameworks?

Simplifies common programming tasks (provide high level building blocks that programmers can leverage).

Enforces consistency and standards. All developers call the same framework API for application services.

May insulate applications from many changes that can be encompassed at the Framework level instead.

Page 9: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

What types of functions may be best placed in Frameworks?

Caching Events (special handling) Security

Codes Exception Handling Session/State

Collections Globalization Storage Virtualization

Data Access Messaging Threading

Data and Work Flow Object Pooling Utilities

Diagnostics/Logging Remoting Transaction Demarcation

Doc. Management Resource Allocation Web Services

…and much more!

Page 10: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Example of a single Framework API from a functionality standpoint (logging)

SNMPFlat FileIDataSourceSMTPEvent LogMSMQ

Transport TramsportTransport Event Log Transport

Filter

Formatter Formatter Formatter

Transport Transport

Formatter Formatter

Filter Filter Filter Filter

Pre-Process Handlers

Formatter

Filter

Post-Process Handlers

Note: a lot of functionality can be exposed in a simple way

Page 11: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Question for You

Page 12: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

An Application Architecture

Framework:WCF, WF, WPF,

AJAX, SilverLight,

Entity Framework, Enterprise Library, etc

Page 13: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

An Enterprise Architecture

Page 14: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework
Page 15: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Start with Contoso Cash Flow

0

10

20

30

40

50

60

70

2008 2009 2010 2011 2012

$ (

In M

illi

on

s)

Revenue

Expenses• Failure of mortgage-

backed securities

• Nosedive of lenders, financial institutions and markets.

• Government Intervention & bailouts

Page 16: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Practical Architecture

Driving alignment between business and IT is more important than ever

Recession delivers unparalleled opportunities for innovation

Page 17: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Four Forces of Practical Architecture

0

10

20

30

40

50

60

70

2008 2009 2010 2011 2012

Do

llar

s

Revenue

Expenses

Page 18: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Driving Effective Architecture -Some best practices

Page 19: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Business Goals:

Maintain focus on the business

Use well-known patterns

Deliver “value-up” in small, rapid iterations

Value Up

Page 20: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

User Goals:

Stay focused on users—ultimately they decide the fate of any IT project.

Intensify customer connected engineering Customer Advisory Board, Stories / Scenarios, Prioritization, Feedback (continuous communication)

Grow trust & build relationships

Constantly amaze! (set user expectation)

Page 21: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Technology Goals:

System performance depends on how parts interact, not on how they work separately

Taking a holistic approach can be more effective than addressing each subsystem individually

Page 23: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Practical Projects: Creating Near-Term Efficiencies

Priority Area Metric Project

Optimize Current Infrastructure

Reduce cost per GB or DB

Data Warehousing

Reduce cost per server(s)

Server Consolidation

Reduce Friction Between Business Processes

Reduce number of steps

Process Integration

Increasetransactions per hour

ProcessOptimization

Page 24: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Optimize Current Infrastructure

Optimize Infrastructure Architecture

Automate data management

Virtualize and consolidate

Enable quicker response to changing business needs

Page 25: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Practical Projects: Help All Users Increase Productivity

Priority Area Metric Project

Deliver User-Focused Applications

Increase user satisfaction

Multi-Channel apps

Reduce time/cost per interaction

Wrapper legacy systems

Connect People and Teams

Increase output/reduce latency

Simplify collaboration

Increase software quality, productivity

Improved ALM

Page 26: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Deliver User-Focused Applications

Consider multi-channel architectures that support a range of presentation layers

Architecture Journal 10

Composite Application Guidance for WPF and Silverlight

Customer Care Framework

Codeplex: Managed Services Engine

Abstract complexity by wrapping existing systems—mainframes, SAP, etc.

Page 27: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Practical Projects: Find New Opportunities To Grow the Business

Priority Area Metric Project

Increase Customer Focus

Increase quality and usefulness

Data Integration

Increase accuracy and timeliness

Reporting and analytics

Improve OperationsInsight

Provide accurate and relevant KPIs

Performance Management

Increased visibility into processes

Business Activity Monitoring

Page 28: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Improve Business Insight

Improve customer focus: Create a single view of the customer

Improve customer insight with self-service reporting and analysis capabilities

Increase operations insight withKPIs, scorecards, dashboards and BAM

Read: Smart Business Intelligence Solutions with SQL Server 2008

Page 29: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Practical Architecture At-A-GlanceBusiness Goals Technology Goals User Goals

Maintain focus on the business

Take an agile approach

Use well-knownpatterns

Infra Apps ToolsIntensify user-centricity

Grow trust and build relationships

Constantly amaze!

Force Priority Area Metric Project

Optimization of Current Infrastructure

Reduce cost per GB or DB Data Warehousing

Reduce cost per server(s) Server Consolidation

Reduce Friction Between Business Processes

Reduce number of steps Process Integration

Increase transactions per hour Process Optimization

Increase Customer FocusIncreased quality and usefulness Data Integration

Increased accuracy and timeliness Reporting and Analytics

Improve operations insightProvide accurate and relevant KPIs Performance Management

Increased visibility into processes Business Activity Monitoring

Deliver User-Focused applications

Increase user satisfaction Multi-channel applications

Reduce time/cost per interaction Wrapper existing systems

Connect People and TeamsIncrease output/reduce latency Simplify collaboration

Increase developer productivity Improved ALM

Page 30: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework
Page 31: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Technology Considerations and Focus

ConsiderationsDomain Driven Design vsData Centric Design

O/RM Tools – NHibernate vsEntity Framework

Design and plan for technology roadmap

FocusMinimize changes due to technological evolution and user requirements

Layered architecture and layer isolation

Maintainability, Testability, and Supportability

Page 32: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Application Architecture

Page 33: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Technology Mapping• Windows Presentation Foundation (WPF)

• Pattern - Model-View-ViewModel (MVVM)Presentation Layer

• Windows Communication Foundation (WCF)

• Pattern - Remote Façade, Data Transfer Object Services Layer

• Domain objects

• Pattern - Domain ModelBusiness Layer

• O/RM Tools – NHibernate -> Entity Framework

• Pattern – RepositoryData (Access) Layer

• Local report generation on client sideReporting Layer

• WCF + BizTalk Server (ESB)Integration Layer

Page 34: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework
Page 35: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Technology Considerations and Focus

ConsiderationsPorting of code and business logic from legacy system

Support online and offline capability

Support both rich client and web based application

FocusTime to Market

Extensibility and Maintainability

Support country specific infrastructure

Page 36: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Application Architecture

Page 37: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Technology Mapping• Win Form + ASP.NET Web Form

• Pattern - Model-View-Controller (MVC)Presentation Layer

• Business entity objects

• Pattern – Table ModuleBusiness Layer

• Custom DAL + .NET Data Provider Framework

• Pattern – RepositoryData (Access) Layer

• SQL Server CE for standalone app (offline mode)

• SQL Server for web architecture (online mode)Data Store

• Local report generation on client sideReporting Layer

• WCF - integration with non-Microsoft platformServices Layer

Page 38: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework
Page 39: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Microsoft ServicesEnterprise Services Portfolio

TechnicalConsultingServices

TechnicalSupportServices

StrategyConsultingServices

Enterprise Strategy ConsultingIT Planning

Platform Value Realization

Enterprise-wide Architecture

Business Architecture

Program Planning & Management

Microsoft Consulting ServicesAssessment & Review Services

Planning, Architecture & Design Services

Operations Consulting

Customized Engagements

Microsoft Services Premier SupportDirect Support Relationship

Preventative Services

Problem Resolution Support

Knowledge Transfer and Workshops

Page 40: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

http://microsoft.com/technet

Resources for IT Professionals

http://microsoft.com/msdn

Resources for Developers

www.microsoft.com/learning

Microsoft Certification & Training Resources

Resources

Page 41: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

Complete an

evaluation on

CommNet and

enter to win!

Page 42: Session Code: DEV383download.microsoft.com/documents/hk/technet/techdays2009/DEV383.pdfA Software Framework is a re-usable design for a software system (or subsystem). A software framework

© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS,

IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.