Thomas Ball Microsoft Research. C# 3.0C# 3.0 Visual Basic 9.0Visual Basic 9.0 OthersOthers.NET...

Post on 29-Mar-2015

225 views 2 download

Tags:

Transcript of Thomas Ball Microsoft Research. C# 3.0C# 3.0 Visual Basic 9.0Visual Basic 9.0 OthersOthers.NET...

Thomas BallMicrosoft Research

C# 3.0C# 3.0C# 3.0C# 3.0 Visual Visual Basic 9.0Basic 9.0

Visual Visual Basic 9.0Basic 9.0 OthersOthersOthersOthers

.NET Language Integrated Query.NET Language Integrated QueryLINQ LINQ

totoObjeObjectscts

LINQ LINQ toto

ObjeObjectscts

LINQ LINQ toto

DataDataSetsSets

LINQ LINQ toto

DataDataSetsSets

LINQ LINQ toto

SQLSQL

LINQ LINQ toto

SQLSQL

LINQ LINQ toto

EntitEntitiesies

LINQ LINQ toto

EntitEntitiesies

LINQ LINQ toto

XMLXML

LINQ LINQ toto

XMLXML

ObjectsObjects RelationalRelational

<book> <title/> <author/> <year/> <price/></book>

XMLXML

• Improvements to the F# research release

April 2008 Microsoft Research

refresh release

• Broadly improved VS 2008 integration• Simplifications in language and libraries

Just ReleasedSeptember 2008

CTP

• Full product-quality release• Fully stable and supported language• Aligned with future VS releases

2009Supported Release

• On the Web:• http://fsharp.net

• Books:

Contract Library

in .NET 4.0

Contract Library

in .NET 4.0

Coming soon: Tools for contracts at

string GetDescription(int x);string GetDescription(int x);

/// <param name=“x”>/// should be greater than zero/// </param>/// <returns>/// non-null string/// </returns>string GetDescription(int x);

/// <param name=“x”>/// should be greater than zero/// </param>/// <returns>/// non-null string/// </returns>string GetDescription(int x);

string s = o.GetDescription(i);… s.Length …

string s = o.GetDescription(i);… s.Length …

string GetDescription(int x) { Contract.Requires( 0 < x ); Contract.Ensures( Contract.Result<string>() != null ); …}

string GetDescription(int x) { Contract.Requires( 0 < x ); Contract.Ensures( Contract.Result<string>() != null ); …}

Design-by-Contract meets .NET!

Design-by-Contract meets .NET!

class Rational {

public Rational(int n, int d) { Contract.Requires( 0 < d ); this.N = n; this.D = d; }}

DocumentatiDocumentationon

Runtime Runtime CheckingCheckingRuntime Runtime CheckingChecking

Static Static CheckingChecking

Static Static CheckingChecking

Test Test GenerationGeneration

((PexPex))

Test Test GenerationGeneration

((PexPex))

Greater developer productivity

More reliable code

More precise downstream analysis

End-to-end integrated solutionLanguagesLibraries, frameworks, middlewareTools (testing, debugging, performance, etc.)Planning/managementTracking (features, schedule, bugs)Group coordinationDeployment, monitoring, update, etc.

Microsoft Visual Studio Team System 2008 is an integrated Application Life-cycle Management (ALM) solution comprising tools, processes, and guidance to help everyone on the team improve their skills and work more effectively together. Visual Studio Team System enables members of your team to:

Collaborate and communicate more effectively with other team members and business stakeholders. Ensure software quality using advanced quality tools at every step of the application life cycle. Gain visibility into project activity and priorities to make informed decisions based on real-time data.

In addition, over 200 Visual Studio Industry Partners offer products to support a broad range of software processes, tools, and platforms.