Välkommen till Sommarkollo 2007 2006. VISUAL STUDIO 2008.

Slides:



Advertisements
Similar presentations
Svetlin Nakov Director Training and Consulting Activities National Academy for Software Development (NASD) ASP.NET 3.5 New Features.
Advertisements

The Microsoft Technical Roadshow 2007 Language Enhancements and LINQ Daniel Moth Developer & Platform Group Microsoft Ltd
.NET 3.5 SP1 New features Enhancements Visual Studio 2008 SP1 New features Enhancements Additional features/enhancements.
Microsoft SharePoint 2010 technology for Developers
Designing, Deploying and Managing Workflow in SharePoint Sites Steve Heaney Product Development Manager OBS
Michael Pizzo Software Architect Data Programmability Microsoft Corporation.
FIRST LOOK AT “ORCAS” Scott Guthrie General Manager.NET Developer Platform.
DEV306 LINQ (Language Integrated Query)
Live from Redmond: WebCast Conquering XML with Visual Basic 9 Amanda Silver Lead Program Manager Visual Basic Level: Starts Easy, Finishes Advanced.
Name SuPeng. .NET Framework & Visual Studio Roadmap.NET Framework 3.5 overview Visual Studio design goals Lap around new features.
1 Visual Studio 2008 Fons Sonnemans (Trainer) Reflection IT
DEV392: Extending SharePoint Products And Technologies Through Web Parts And ASP.NET Clint Covington, Program Manager Data And Developer Services - Office.
ASP.NET 3.5 New Features. 2 Agenda What's New in.NET Framework 3.5? Visual Studio 2008 Enhancements LINQ (Language Integrated Query) New ASP.NET Server.
C# 3.0 & LINQ Raimond Brookman – IT Architect
LinqToSharePoint SandBoxed Solution Shakir Majeed Khan
Originally founded in 1985 as Rock Financial by Dan Gilbert Grew to one of the largest independent mortgage banks in the country 1998 IPO 1999 Launched.
Building a Complete Web Application Using ASP.NET 3.5 & Visual Studio 2008 (Part 1 of 2) Jeff King Program Manager Microsoft Corporation
Creating and Running Your First C# Program Svetlin Nakov Telerik Corporation
A tour of new features introducing LINQ. Agenda of LINQ Presentation We have features for every step of the way LINQ Fundamentals Anonymous Functions/Lambda.
Discover, Master, InfluenceSlide 1 SQL Server Compact Edition and the Entity Framework Rob Sanders Readify.
Virtual techdays INDIA │ august 2010 Building ASP.NET applications using SQL Server Compact Chaitanya Solapurkar │ Partner Technical Consultant,
Aptech Borivali(West) Hefin Dsouza. Agenda  What is.NET and What is Visual Studio? .NET Framework 3.5 Overview.  Visual Studio 2008 Enhancements. 
Beth Massi Program Manager Visual Studio Community.
Powerful, modern desktops enable next generation applications Hardware acceleration brings real-time lighting, texturing and rendering Visual.
A tour of Visual Studio 2008 and the.NET Framework v3.5 Daniel Moth Developer & Platform Group Microsoft
Developing for the Microsoft Office System Jay Schmelzer Group Program Manager – Visual Studio.
Create with SharePoint 2010 Jen Dodd Sr. Solutions Consultant
Windows.Net Programming Series Preview. Course Schedule CourseDate Microsoft.Net Fundamentals 01/13/2014 Microsoft Windows/Web Fundamentals 01/20/2014.
LINQ Programming in C# LINQ CSE Prof. Roger Crawfis.
Creating Business Workflow Using SharePoint Designer 2007 Presented by Tarek Ghazali IT Technical Specialist Microsoft SQL Server MVP Microsoft SQL Server.
Architecture Of ASP.NET. What is ASP?  Server-side scripting technology.  Files containing HTML and scripting code.  Access via HTTP requests.  Scripting.
Eric Vogel Software Developer A.J. Boggs & Company.
NOTE: To change the image on this slide, select the picture and delete it. Then click the Pictures icon in the placeholder to insert your own image. WEB.
Creating and Running Your First C# Program Svetlin Nakov Telerik Corporation
Lesley Bross, August 29, 2010 ArcGIS 10 add-in glossary.
Microsoft Confidential Office as a Development Platform Tim Heuer
Smart Clients: What’s New In Orcas? Saurabh Pant Program Manager UI Fx and Services Team
Introducing Reporting Services for SQL Server 2005.
Virtual techdays INDIA │ Nov 2010 Developing Office Biz Application using WPF on Windows 7 Sarang Datye │ Sr. Consultant, Microsoft Sridhar Poduri.
Todd Kitta  Covenant Technology Partners  Professional Windows Workflow Foundation.
DEV363 Smart Client: Getting the Most out of Windows Forms and WPF Brad Abrams Group Program Manager.NET Framework Team
Introduction to LINQ Lecture # 19 August Introduction How do you interrogate/manipulate data? What if you could do the work in a type-safe," string-free.
Лектор: Борислава Палева. Galin Iliev MCT, MCPD, MCSD.NET LINQ to XML.
LINQ and C# 3.0 Mads Torgersen Program Manager for the C# Language Microsoft Corporation.
LINQ: It’s Not Your Father’s Data Access Denny Boynton Anheuser-Busch Companies.
The.NET Language Integrated Query Project Anders Hejlsberg TLN306 Technical Fellow Microsoft Corporation.
Tony Goodhew Product Planner DEV328.
Lesson 2 What is ASP.NET? What is ASP.NET? What is Web Matrix? What is Web Matrix? What are the features of Web Matrix? What are the features of Web Matrix?
Office Business Applications Workshop Defining Business Process and Workflows.
Introduction to VSTS Introduction to Visual Studio 2008 Development Edition Understanding code complexity using Code Metrics.
Name Microsoft Student Partner Overview of the Visual Studio 2005 Express Products.
C# 2.0 and Future Directions Anders Hejlsberg Technical Fellow Microsoft Corporation.
C#: Future Directions in Language Innovation Anders Hejlsberg TLN307 Technical Fellow Microsoft Corporation.
Satisfy Your Technical Curiosity C# 3.0 Raj Pai Group Program Manager Microsoft Corporation
Olaf Feldkamp Developer Platform Advisor Microsoft Switzerland blogs.msdn.com/swiss_dpe_team.
Microsoft Visual Studio 2005 Tools for the Office System: Building Office Solutions Using Visual Studio 2005 Tools for Office Andrew Coates Developer Evangelist.
Ken Casada Developer Evangelist Microsoft Switzerland
Sergiy Baydachnyy Developer Evangelist Microsoft Corporation.
Integrating and Extending Workflow 8 AA301 Carl Sykes Ed Heaney.
Exploring Networked Data and Data Stores Lesson 3.
Building Complete Web Application Using ASP.NET 3.5 & Visual Studio 2008 Omar Khan Group Program Manager Visual Studio.
Introduction ITEC 420.
Introducing the Microsoft® .NET Framework
DotNetSpider Editor Hefin Dsouza
.NET Framework 2.0 .NET Framework 3.0 .NET Framework 3.5
Beyond the BDC\BCS Model
Visual Studio Tools for Office 2005
Visual Studio “Orcas” & .NET Framework v3.5
Visual Studio 2008 Mike Taulty Developer & Platform Group
Visual Studio 2008.
Presentation transcript:

Välkommen till Sommarkollo

VISUAL STUDIO 2008

Agenda  Target vista &.NET 3.0  Handle Data  Microsoft Office  New Web Experience  ALM

Wanna’ see a movie?  Friday the 6’th   Kista Centrum  100 seats for free

Visual Studio ”Orcas” JScript IntelliSense WPF and WCF visual designers “My” support for.NET Framework 3.0 VSTS support for device development VSTO for 2007 Office system Language-integrated query (LINQ) Windows Vista debugging & profiling MFC for Windows Vista Office Ribbon controls Load Test Modeler Full AJAX support Diagnostics support for WCF applications Test-driven profiling Tools for DB Pros Support for distributed teams VB, XAML,and XML Refactoring

Framework Multitargeting  Choose which Framework version to target when building an application .NET Framework 2.0 (Whidbey) .NET Framework 3.0 (Vista) .NET Framework 3.5 (Orcas)  VS IDE only shows feature appropriate for your selected target version  Toolbox, Add New Item, Add Reference, Add Web Reference, Intellisense, etc

Framework Multitargeting

.NET Fx 2.0.NET Fx 2.0 Update.NET Fx 2.0 Update.NET Fx 2.0 Update.NET Fx 3.0 Update.NET Fx 3.0 Update.NET Fx 3.5 Whidbey Vista Orcas time Version = Assembly references + compilers No new CLR runtime Framework Multitargeting

 Framework 2.0 – no framework 3.0 required  Raw Vista Box – no Framework 3.5  Enhanced scenarios – LINQ, AJAX, full framework 3.5  Easy upgrade for current VS2005 Developers  Not available in Express SKUs Multi-targeting Scenarios

Target vista &.NET 3.0

Target Vista – C++  Prepare for UAC – User Account Control  Embed manifest through property in project  Leverage new controls  Task Dialog  Command Link  Split Button  Network Address  Sys Link  Use Aero style and appearance in your applications 

 Visual Designer for WPF creates a seamless designer/developer workflow with Expression Blend  XAML-based editing directly in the IDE  Changes reflected in the designer in realtime  Control extensibility  Project templates, debugger & deployment support  Side-by-side support for Winforms  ElementHost in Toolbox  ClickOnce deployment support for WPF apps Windows Presentation Foundation

 Autohost for the hosting of WCF services  WSDL test client allows message injection (beta 2)  Hosting Wizard eases migration of services  New WCF Project templates include both the Autohost and Test Client into an out-of-the-box F5 experience  Simple item template for adding WCF services to an existing Project Windows Communication & Windows Workflow Foundation

 Activities to consume WCF services  Function similarly to the InvokeWebService activity available today  Hosting extensions to expose WF workflows as WCF services  Messaging activities (send, receive)  A workflow hosting environment to handle instantiation and message routing

Mobile Development  Works side-by-side with Visual Studio 2005  In-box support for Windows Mobile 5.0 SDKs  Unit Testing Integration with Visual Studio Team System  Security Aware IDE  Device Emulator 3.0

Create unit tests for device applications using the VSTS Unit Test infrastructure

Ability to target multiple versions of the.NET Compact Framework runtime

Device Security Manager makes it easy to deal with complex device security settings Better understand current device security settings Easy to change the device into a specific security setting to test application under different security profiles

Device emulator offers the ability to emulate new hardware peripherals Device emulator emulating Windows Embedded CE 6.0 operating system

Emulating a low battery scenario. This feature is very helpful for device developers to see how their application will behave in a low battery scenario on a real device

Core Language Enhancements

Extension Methods namespace MyStuff { public static class Extensions { public static string Concatenate(this IEnumerable strings, string separator) {…} } using MyStuff; string[] names = new string[] { "Axel", "Mia", "Niels" }; string s = names.Concatenate(", "); Extension method Brings extensions into scope obj.Foo(x, y)  XXX.Foo(obj, x, y) IntelliSense!

Object Initializers public class Point { private int x, y; public int X { get { return x; } set { x = value; } } public int Y { get { return y; } set { y = value; } } } Point a = new Point { X = 0, Y = 1 }; Point a = new Point(); a.X = 0; a.Y = 1; Field or property assignments

Collection Initializers List numbers = new List { 1, 10, 100 }; Must implement IEnumerable List numbers = new List (); numbers.Add(1); numbers.Add(10); numbers.Add(100); Must have public Add method Dictionary spellings = new Dictionary { { 0, "Zero" }, { 1, "One" }, { 2, "Two" }, { 3, "Three" } }; Add can take more than one parameter

IEnumerable phoneListQuery = from c in customers where c.State == "WA" select new Contact { Name = c.Name, Phone = c.Phone }; Anonymous Types public class Contact { public string Name; public string Phone; } +

var phoneListQuery = from c in customers where c.State == "WA" select new { Name = c.Name, Phone = c.Phone }; Anonymous Types class XXX { public string Name; public string Phone; } IEnumerable foreach (var entry in phoneListQuery) { Console.WriteLine(entry.Name); Console.WriteLine(entry.Phone); } XXX

Expression Trees Code as Data Predicate test = c => c.State == "WA"; Predicate test = new Predicate (XXX); private static bool XXX(Customer c) { return c.State == "WA"; } public delegate bool Predicate (T item);

Expression Trees Code as Data Expression > test = c => c.State == "WA"; public delegate bool Predicate (T item); ParameterExpression c = Expression.Parameter(typeof(Customer), "c"); Expression expr = Expression.Equal( Expression.Property(c, typeof(Customer).GetProperty("State")), Expression.Constant("WA") ); Expression > test = Expression.Lambda >(expr, c);

Automatic properties public class Product { public string Name; public decimal Price; }

Automatic properties public class Product { string name; decimal price; public string Name { get { return name; } set { name = value; } } public decimal Price { get { return price; } set { price = value; } }

Automatic properties public class Product { public string Name { get; set; } public decimal Price { get; set; } } private string □; public string Name { get { return □; } set { □ = value; } } Must have both get and set

C# 3.0 Language Innovations var contacts = from c in customers where c.State == "WA" select new { c.Name, c.Phone }; var contacts = customers.Where(c => c.State == "WA").Select(c => new { c.Name, c.Phone }); Extension methods Lambda expressions Query expressions Object initializers Anonymous types Local variable type inference

Handle Data

Problem: Data != Objects

The LINQ Project Objects XML.NET Language Integrated Query C# 3.0VB 9.0Others… Relational LINQ to Objects LINQ to SQL LINQ to XML LINQ to Entities LINQ to DataSets

LINQ Operators RestrictionWhere ProjectionSelect, SelectMany OrderingOrderBy, ThenBy GroupingGroupBy JoinsJoin, GroupJoin QuantifiersAny, All PartitioningTake, Skip, TakeWhile, SkipWhile SetsDistinct, Union, Intersect, Except ElementsFirst, Last, Single, ElementAt AggregationCount, Sum, Min, Max, Average ConversionToArray, ToList, ToDictionary CastingOfType, Cast

SqlConnection c = new SqlConnection(…); c.Open(); SqlCommand cmd = new c.Name, c.Phone FROM Customers c WHERE c.City ); " London " ); DataReader dr = c.Execute(cmd); while (dr.Read()) { string name = dr.GetString(0); string phone = dr.GetString(1); DateTime date = dr.GetDateTime(2); } dr.Close(); Data Access In APIs Today

Data Access with LINQ public class Customer { public int Id; public string Name; public string City; public string Phone; } GridView1.DataSource = from customer in db.Customers where customer.City == " London" select customer; GridView1.DataBind();

LINQ Architecture Objects XMLRelational LINQ enabled data sources LINQ enabled ADO.NET

LINQ Basics  Query Operators can be used against any.NET collection (IEnumerable )  Built-in examples: Select, Where, GroupBy, Join, etc.  Extensibility model supports adding/replacing them  Query Expressions can operate on information sources and apply query operators against them to return IEnumerable sequences

Searching/Sorting an Array string [] cities = { “Auckland”, “Oslo”, “Sydney”, “Seattle”, “Paris”, “Los Angeles” }; IEnumerable places = from city in cities where city.Length > 5 orderby city descending select city; GridView1.DataSource = places; GridView1.DataBind();

Projections  Sometimes you want to modify or transform the data you return from a query  LINQ enables powerful “data shaping” scenarios using projections  Can optionally be used in conjunction with new “anonymous type” compiler support

Projections w/ Anonymous Types List cities = CityUtilityHelper.GetCities(); var places = from city in cities where city.DistanceFromSeattle > 1000 select new { City = city.Name, Country = city.Country, DistanceInKm = city.DistanceFromSeattle * 1.61 }; GridView1.DataSource = places; GridView1.DataBind();

Projections w/ Anonymous Types

LINQ for SQL  Maps.NET classes to relational SQL data  Translates LINQ queries to SQL execution  Supports change tracking for insert, update, delete operations  Built on top of ADO.NET and integrates with connection-pooling and transactions

LINQ for SQL Basics public partial class Product { public int ProductID; public string ProductName; public Nullable SupplierID; public Nullable CategoryID; } public class NorthwindDataContext : DataContext { public Table Products; } NorthwindDataContext db = new NorthwindDataContext(); DataList1.DataSource = from product in db.Products where product.UnitsInStock > 0 select product; DataList1.DataBind();

PK/FX Relationships in Database Products TableSuppliers Table Categories Table

Associations in the O-R Designer

Code Associations in Model public partial class Product { public int ProductID; public string ProductName; public Nullable SupplierID; public Nullable CategoryID; public Supplier Supplier; public Category Category; } public partial class Supplier { public int SupplierID; public string CompanyName; public EntitySet Products; } public partial class Category { public int CategoryID; public EntitySet Products; }

Programming XML today… XmlDocument doc = new XmlDocument(); XmlElement contacts = doc.CreateElement("contacts"); foreach (Customer c in customers) if (c.Country == "USA") { XmlElement e = doc.CreateElement("contact"); XmlElement name = doc.CreateElement("name"); name.InnerText = c.CompanyName; e.AppendChild(name); XmlElement phone = doc.CreateElement("phone"); phone.InnerText = c.Phone; e.AppendChild(phone); contacts.AppendChild(e); } doc.AppendChild(contacts); Great Lakes Food (503) … Imperative model Document centric No integrated queries Memory intensive

LINQ to XML XElement contacts = new XElement("contacts", from c in customers where c.Country == "USA" select new XElement("contact", new XElement("name", c.CompanyName), new XElement("phone", c.Phone) ) ); Declarative model Element-centric Integrated queries Smaller and faster

ADO.NET vNext  Data as Objects  The Entity Data Model (EDM), which allows developers to model data at a higher level of abstraction  Client-views/mapping engine to map to and from store schemas  Full query support over EDM schemas using Entity SQL and LINQ  Open provider model that allows other stores to plug into the ADO.NET Entity Framework  Data Integration to core languages  Language-Integrated Query (LINQ)  LINQ to Entities: formulate queries using LINQ against your EDM schemas  LINQ to DataSet: the DataSet with full query capabilities  LINQ queries can go against one or more DataTable objects

ADO.NET Entity Framework (1/2)  "Client Views" map existing relational schema to a rich conceptual entity model  Conceptual entity model exposes concepts that make sense to your application  Different apps may have different views of the same data  Application and storage schemas may evolve independently  Exposed as an "Entity Client" ADO.NET Data Provider  Common, familiar ADO.NET Programming pattern Compatible with existing applications/tools  Canonical Entity SQL “eSQL” used to query Conceptual Model  Supports 3rd party ADO.NET Data Providers

ADO.NET Entity Framework (2/2)  Entities presented as CLR Objects  Work with higher level "ObjectContext" Tracks object identity, changes  Query through Entity SQL or LINQ queries  Entity Data Model Designer  Integrated into the Orcas IDE  Create entities from scratch or generate EDM models from an existing database  Easily consume existing EDM models

Sync Services for ADO.NET  Simplifying the Client “Golden Nugget”  Application works against a local data cache and periodically synchronizes with the server  Experience unchanged on lost connectivity  “Want local caching, but can’t spend time getting the basics right”  All the heavy lifting handled by the Framework  “Want to leverage/extend your my ADO.NET knowledge”  “Want to build real world N tier Application”  Sync via services with pluggable proxy/service  Server Data Components can use any ADO.net Provider  Application supports Occasionally Connected Scenarios

Sync Component Architecture Data Forms SyncAgent Data Access Work against local database Sync keeps the local and remote stores in sync Can push changes directly or via services SyncTable SyncAdaptercommands SyncAdapter ServerSyncProvider DBCommand SQL Server Compact Edition 3.5 Transport Service ServiceProxy Client SyncProvider SyncGroup Server DB

Guidance for LINQ to Relational Data  LINQ to SQL  Emphasis on rapid application development  Direct mapping to Microsoft SQL Server family of databases  Available in Orcas  LINQ to Entities  Focus on enterprise-grade data scenarios  Flexible mapping to relational data  Access to Microsoft SQL Server family and other databases through ADO.NET provider model  Available in first half of 2008 CTP’s and Betas on top of Orcas releases through 2007

Microsoft Office

Visual Studio Tools for Office - “Orcas”  Strategic platform infrastructure based on.NET 3.0 & Managed Add-In Foundation (MAF)  Highly-streamlined developer experience  New designers: ribbon, custom task pane, Outlook form region  ClickOnce deployment and security  Document-level solutions  Word, Excel, InfoPath: 2003 onwards  Managed controls on the document surface  Doc-level Actions Pane  ServerDocument – manipulate documents without automating Office  Word content control support

Visual Studio Tools for Office - “Orcas”  Application-level add-Ins  Application domain isolation  Remote updateability  All 2007 Office system apps  App-level custom task pane  Ribbon customization  Support for legacy “Shared Add-ins”

Workflow without VS2008  Create workflow in Visual Studio 2005  Author the feature definition file  Add GUID  Add title  Add description  Add manifest location  Author workflow template definition file  Add GUID  Add name  Add description  Compile the workflow files into a.NET assembly  Sign the assembly  Add key file  Design the actual workflow, add code etc. (This is the “real” developer task)  Install assembly into the Global Assembly Cache  Extract public key token  Add key token to workflow template definition file  Deploy feature definition file to SharePoint file system  Deploy workflow definition file to SharePoint file system  Reset Internet Information Services  Press F5  Attach to WPW3.exe process  Associate workflow with document library

Workflow with VS2008  Create workflow in Visual Studio Tools for Office “Orcas”  Design the actual workflow, add code etc. (This is the “real” developer task)  Press F5

New Web Experience

“Orcas” Web Tools Objectives  Address top customer issues in VS 2005  Reduce cost and increase effectiveness of Web UI design  Enabling developers & designers to program "AJAX-style" interactive web user interfaces  Programming model and design experience around language/data access (LINQ)  Best tool for the Vista platform (WCF, IIS7)

Design Surface  WYSIWYG layout  CSS editing experience  CSS Properties Window  Direct Style Application  Style Management Tool Windows  WYSIWYG Positioning Support  Split View  Nested Master Pages Support

Design Surface

Enabling AJAX for Developers Goals  Enable highly interactive AJAX Web apps  Retain the ease of the ASP.NET model  Powerful tools for AJAX client development Key Features  Jscript IntelliSense and Editor Support  Jscript Debugging Support

JScript Editor Support  Intellisense experience for JScript  Better Jscript language IntelliSense Type inferencing, Script library includes  IntelliSense against ASP.NET AJAX class model  IntelliSense against Web service proxies ASMX and WCF Services ASP.NET Services (e.g. Membership, Roles, Profile)  Rich editor support  Syntax validation (squiggles)  Formatting and colorization

JScript Debugging  IE Developer Improvements  Switch to enable script debugging  HTTP trace in developer toolbar  Visual Studio improvements  Move Script Explorer to Solution Explorer Breakpoints in ASPX map to rendered HTML Filter properties, methods, events in watch window

XML IDE support and Tools  XSLT Debugger  Enables Input Data Breakpoints allowing the user to break the execution of the style-sheet whenever a certain node in input document is hit.  IDE  Improves the experience a user has when working with an XML Schema in textual and graphical mode at the same time

ALM

Visual Studio Team System  New scenarios  Improved Development Productivity Code metrics, ‘hotpathing’, base-lining  Load Testing Enhancements Improved load modeling, reporting, graphing  Continuous Integration Build Queuing, Queue Management, Drop Management  Version Control Enhancements  Lower adoption blockers  TFS Deployment & Administration  Migration Toolkit

Metric: Class Coupling # of Dependencies Between Types

Metric: Class Inheritance # of Base Types

Metric: Lines of Code # of Executing Lines of Code static class Program { #region Application Entry Point /// /// The main entry point for the application. /// [STAThread] static void Main(string[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Workflow(args); } #endregion #region Static Methods /// Primary workflow for the application. /// Command line arguments. private static void Workflow(string[] cmdargs) { // Collect the list of command line arguments List args = new List (cmdargs); // Show usage syntax if the user so asks if (UseArg(args, "/?")) { ShowAbout(); return; }

Metric: Cyclomatic Complexity # of Branches , bool ParseCommandLine(string[] args) { if (args.Length == 0) ShowHelp(); return; for (int i = 0; i < args.Length; i++) switch (args[i]) { case "/?" : ShowHelp(); return false; case "/input" : if (args.Length > i && File.Exists(args[i + 1])) InputFile = args[i++]; break; case "/c" : Colapse = true; break; } return true; }

Metric: Maintainability Index  Overall indication of complexity by aggregation of several factors [Carnegie 1]  Lines of Code  Cyclomatic Complexity  Computational Complexity [Halstead 1]  Used on the Windows Code Base [Halstead 1] Halstead, Maurice H. Elements of Software Science, Operating, and Programming Systems Series Volume 7. New York, NY: Elsevier, Maintainability Index = * log 2 (Halstead Volume) * (Cyclomatic Complexity) * log 2 (Lines of Code) [Carnegie 1] Carnegie Mellon University, Software Engineering Institute, Maintainability Index Technique for Measuring Program Maintainability,

Resources  Web    Blogs     