NetInverse Developers Blog

November 2, 2009
Category: Software Product Lines — Tags: — admin @ 11:19 pm
Software product lines

Software product lines

Software product lines, or software product line development, refers to software engineering methods, tools and techniques for creating a collection of similar software systems from a shared set of software assets using a common means of production. 

  • Software Product Lines Carnegie Mellon Software Engineering Institute Web Site
  • Software Products Lines Community Web Site and Discussion Forums
  • July 20, 2009
    Category: Agile — Tags: , , — admin @ 11:06 pm

    Net Objectives delivers Public Courses in all best practices of effective software development. Delivered in convenient, central locations, our courses are designed to help you and your team maximize the business value returned from your engineering efforts in software development and maintenance.

    Net Objectives Public Courses are delivered throughout the country. Use the below schedule to sort Courses by Course Name, Date, City or State.

    http://www.netobjectives.com/courses/

    July 8, 2009
    Category: SQL — Tags: — admin @ 10:25 pm

    Useful SQL Queries

    Showing the plan hash values:

    SELECT s.execution_count
          ,s.query_hash
          ,s.query_plan_hash
          ,t.text
    FROM   sys.dm_exec_query_stats s
           CROSS APPLY sys.dm_exec_sql_text(s.plan_handle) t

    Showing execution plans in the procedure cache:

    SELECT * FROM sys.dm_exec_cached_plans

    Showing fragmentation:

    SELECT  s.avg_fragmentation_in_percent
           ,s.fragment_count
           ,s.page_count
           ,s.avg_page_space_used_in_percent
           ,s.record_count
           ,avg_record_size_in_bytes
    FROM    sys.dm_db_index_physical_stats(DB_ID('AdventureWorks2008'),
                                           OBJECT_ID(N'dbo.t1'), NULL, NULL,
                                           'Sampled') AS s
    

    Show SQL memory usages:

    CACHESTORE_OBJCP: These are compiled plans for stored procedures, functions and triggers.
    CACHESTORE_SQLCP: These are cached SQL statements or batches that aren’t in stored procedures, functions and triggers. This includes any dynamic SQL or raw SELECT statements sent to the server.

    SELECT * FROM sys.dm_exec_cached_plans
    
    SELECT * FROM sys.dm_os_memory_cache_clock_hands
    WHERE TYPE IN ('CACHESTORE_SQLCP','CACHESTORE_OBJCP')
    ORDER BY removed_all_rounds_count desc 
    
    SELECT TOP 512
    	st.text,
    	cp.cacheobjtype,
    	cp.objtype,
    	cp.refcounts,
    	cp.usecounts,
    	cp.size_in_bytes,
    	cp.bucketid,
    	cp.plan_handle
    FROM sys.dm_exec_cached_plans as cp
    CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) as st
    WHERE cp.cacheobjtype = 'Compiled Plan' AND cp.objtype = 'Prepared'
    ORDER BY cp.usecounts desc
    
    SELECT  TOP 10
    	LEFT([name], 20) as [name],
    	LEFT([type], 20) as [type],
    	[single_pages_kb] + [multi_pages_kb] AS cache_kb,
    	[entries_count]
    FROM sys.dm_os_memory_cache_counters
    ORDER BY single_pages_kb + multi_pages_kb DESC
    
    SELECT TOP 10 type,
    	(sum(single_pages_kb) + sum(multi_pages_kb)) as 'Total Pages(KB)',
    	sum(single_pages_kb) as 'Single Pages(KB)',
    	sum(multi_pages_kb) as 'Multi Pages(KB)',
    	sum(virtual_memory_reserved_kb) as 'VM Reserved(KB)',
    	sum(virtual_memory_committed_kb) as 'VM Committed(KB)',
    	sum(awe_allocated_kb) as 'AWE Allocated(KB)',
    	sum(shared_memory_reserved_kb) as 'Shared Memory Reserved(KB)',
    	sum(shared_memory_committed_kb) as 'Shared Memory Committed(KB)'
    FROM sys.dm_os_memory_clerks
    GROUP BY type
    ORDER BY sum(single_pages_kb) + sum(multi_pages_kb) desc
    

    SQL Performance Tips

    Top SQL Server 2005 Performance Issues for OLTP Applications: http://www.microsoft.com/technet/prodtechnol/sql/bestpractice/oltp-performance-issues.mspx
    Troubleshooting Performance Problems in SQL Server 2005: http://technet.microsoft.com/en-us/library/cc966540.aspx
    Batch Compilation, Recompilation, and Plan Caching Issues in SQL Server 2005: http://www.microsoft.com/technet/prodtechnol/sql/2005/recomp.mspx

    June 20, 2009
    Category: .Net, Agile — Tags: , , — admin @ 12:11 am

    Pragmatic programmers use feedback to drive their development and personal processes. The most valuable feedback you can get while coding comes from unit testing. Now in it’s second edition, Pragmatic Unit Testing in C# with NUnit, 2nd Ed. will show you how to do software unit testing, of course, but more importantly will show you what to test.

    About this book

    New for the Second Edition:

    • Updated for NUnit 2.4 (C#, .NET 2.0, Visual Studio 2005, and Mono)
    • More NUnit assert methods
    • New String and Collection assertion support
    • Better support for multiple-platform development (Mono and .NET)
    • Higher-level setup and teardown fixtures
    • …and more!

    Without good tests in place, coding can become a frustrating game of “whack-a-mole.” That’s the carnival game where the player strikes at a mechanical mole; it retreats and another mole pops up on the opposite side of the field. The moles pop up and down so fast that you end up flailing your mallet helplessly as the moles continue to pop up where you least expect them. You need automated testing and regression testing to keep the moles from popping up.

    You don’t test a bridge by driving a single car over it right down the middle lane on a clear, calm day. Yet many programmers approach testing that same way—one pass right down the middle and they call it “tested.” Pragmatic programmers can do better than that!

    With this book, you will:

    • Write better code, faster
    • Discover the best hiding places where C# bugs breed
    • Learn how to think of all the things that could go wrong
    • Test pieces of code without using the whole .NET project
    • Use NUnit to simplify your C# test code
    • Test effectively with the whole team

    Real software unit testing will make your life easier. It will make your software design and architecture better and drastically reduce the amount of time you spend debugging you .NET code.

    June 18, 2009
    Category: .Net — Tags: , — admin @ 11:21 pm

    Igor Ostrovsky’s LINQ Tips:

    Check out Igor’s site.

    June 7, 2009
    Category: Agile — Tags: , — admin @ 9:20 pm

    Hi, I’ve got some exciting news for everyone as most of this announcement involves resources or courses available on line.
    We also have free events on both sides of the country. I’ve written several blogs recently, as well as done a podcast, so
    some good information no matter where you are. We’re also offering another Lean Online course in another few weeks which, of
    course, is also available everywhere. In Bellevue, we’re offering a new course which incorporates Lean practices into our Scrum Master
    course – we call it Lean Scrum Master Certification by Net Objectives. While this is being offered in Bellevue, we’d love to offer it elsewhere
    if there is enough interest. We also have free events in Washington, DC, Hampton Roads, VA, and Bellevue, WA, as well as upcoming courses
    in both Washington and South Carolina. In addition to all of this, I’ve started a fun new thing based on Janice Hagy’s Indexed concept.
    Finally, we have some great discounts on SQE’s Better Software Conference coming up next week – please look for us if you’re there as several of us will be.

    Recent Blogs and a podcast
    Since the Lean Kanban conference in Miami, I’ve had a significant number of insights into how to incorporate Lean into Agile methods as well as increased my understanding of why Scrum teams have difficulties. I discuss many of these on our blog page. The most recent blogs and podcasts are:

    • What is the Difference Between First Generation Agile (XP/Scrum) and Lean/Kanban?
    • Redefining Lean (a podcast)
    • Challenging Why (not if) Scrum Fails
    • Lean Kanban 2009 – Wow!

    If you want to learn more about Lean or if you are having troubles getting Scrum to scale, you should find these of interest.

    Second offering of Lean On-Line Course June 29-August 3
    We got a lot of positive feedback about our Lean-Online Course we recently offered. We are offering it again at for only $395 ($345 if you register by June 10th and an even bigger discount if you had registered for the first one but weren’t able to attend – see the Yahoo discussion group for details). This includes a CD with all of the sessions (sent to you after the course) plus additional material that will be sent to you after the course (add $20 if outside of the United States). More and more people are recognizing that an understanding of Lean principles is essential if you want to make your enterprise agile. Scaling Agility can be difficult. It is important to start out with a vision for the entire organization that you want to become more effective. Lean provides this understanding.

    New Course Lean Scrum Master Certification by Net Objectives in Bellevue, July 27th
    We’ve been doing Scrum training (team, Scrum Master and Product Owner) for almost 9 years now. All of these courses have been done within the context of Lean, providing a better base for companies doing Scrum across more than just a couple of teams. This new course incorporates Lean practices of setting up a work-flow, directly managing work-in-process, coordinating development and test groups as well giving insights into how to coordinate multiple teams. This approach represents a significant advance of Scrum – having it both work within the context of Lean and now taking advantage of Lean practices to kick-start your teams’ progress. If your company is having difficulties getting started with Scrum, see how an integration of Lean with Scrum can accelerate the process.

    This course is open to those who already have taken one of our Scrum courses (Implementing Scrum for your Team or Scrum Master Certification), a Scrum Alliance CSM course, or have been practicing Scrum for 6 months. Bottom line - you must already understand Scrum prior to attending. This is one reason our Scrum training is tops. It is unfortunate that most people attending a Scrum Alliance CSM course are going there to learn what Scrum is. This makes it difficult to cover what being a Scrum Master is as well. This course requires knowing Scrum so the full day can be focused on the Scrum Master role. Ron Jeffries, a senior CST of the Scrum Alliance agrees that more than two days of training is needed when he explains why he offers 3-day Scrum courses – “The traditional CSM course is only two days. That’s not enough time to cover the things a ScrumMaster needs to know to help their team be successful.” This course represents that necessary, third day.

    Other Courses in Bellevue, WA and Columbia, SC
    Implementing Lean-Agile for Your Team, Columbia, SC, June 9-10. Learn how to do Scrum within the context of Lean principles. We’re offering this course at a one-time high discount from our normal pricing to introduce ourselves into the area.

    Design Patterns for Agile Developers, Bellevue, WA, July 7-9. Improve your programming skills and learn to design sustainable code in an Agile environment. Taught by the award winning author of Emergent Design – Scott Bain.

    Free events around the States
    The Washington, DC Lean-Agile Open, the afternoon of June 5. Business track on Enterprise Driven Software Development and Technical track on Acceptance Test-Driven Development followed by an open space to discuss your issues with our experts.

    The Hampton Roads, VA, Lean-Agile Open, the afternoon of June 22. Business track on Enterprise Driven Software Development and Technical track on Acceptance Test-Driven Development followed by an open space to discuss your issues with our experts.

    Sustainable Test-Driven Development, evening of July 1, Bellevue, WA. Learn what Test-Driven Development is and why it is important to do it.

    The Daily Index
    This is just a new fun way of communicating. Check it out.

    SQE’s Better Software Conference Next week in Las Vegas!
    We have a variety of discounts available - some too good to mention in a public email (really!). If you have an interest in attending, please send an email to mike.shalloway@netobjectives.com Please make sure you to mention the company you work for.

    I hope you found this informative. Please let me know if there is anything we can do to help you.

    Alan Shalloway
    CEO, Sr. Consultant
    Net Objectives. Achieving Enterprise Agility
    425-269-8991

    May 30, 2009
    Category: .Net — Tags: , — admin @ 11:23 pm

    Microsoft just released Beta 1 versions of Visual Studio 2010 and .NET 4.0, which contain its new support for parallel programming. The v1 of Parallel Extensions for .Net is part of .Net 4.0.

    Parallel Extensions includes task and data parallelism, and tools for building concurrent and parallel applications. This is a sine qua non feature considering the increasing occurrence of multiple core processors, because the chips aren’t getting faster, they’re just adding more cores.

    May 10, 2009
    Category: Agile, Architecture, Design Pattern — Tags: — admin @ 8:59 pm
    1. On the criteria to be used in decomposing systems into modules – David Parnas
    2. A Note On Distributed Computing – Jim Waldo, Geoff Wyant, Ann Wollrath, Sam Kendall
    3. The Next 700 Programming Languages – P. J. Landin
    4. Can Programming Be Liberated from the von Neumann Style? – John Backus
    5. Reflections on Trusting Trust – Ken Thompson
    6. Lisp: Good News, Bad News, How to Win Big – Richard Gabriel
    7. An experimental evaluation of the assumption of independence in multiversion programming – John Knight and Nancy Leveson
    8. Arguments and Results – James Noble
    9. A Laboratory For Teaching Object-Oriented Thinking – Kent Beck, Ward Cunningham
    10. Programming as an Experience: the inspiration for Self – David Ungar, Randall B. Smith

    by Michael Feathers. You can read the original post here.

    May 2, 2009
    Category: Debugging — Tags: , , — admin @ 12:37 am

    When you debug the code, very oftern you need to deal with memory and registers. It would be beneficial to understand the eight general-purpose registers in the x86 processor family. Each register has a unique purpose and has special instructions and opcodes which make fulfilling this purpose more convenient or efficient. The registers and their uses are shown briefly below:

    • EAX - Accumulator register.
    • EDX - The data register is the an extension to the accumulator. It is most useful for storing data related to the accumulator’s current calculation.
    • ECX - The count register.
    • EDI - Every loop must store its result somewhere, and the destination index points to that place. With a single-byte STOS instruction to write data out of the accumulator, this register makes data operations much more size-efficient.
    • ESI - In loops that process data, the source index holds the location of the input data stream. Like the destination index, ESI had a convenient one-byte instruction for loading data out of memory into the accumulator.
    • ESP - ESP is the stack pointer. Its value is required by PUSH, POP, CALL, and RET instructions.
    • EBP - In functions that store parameters or variables on the stack, the base pointer holds the location of the current stack frame. In other situations, however, EBP is a free data-storage register.
    • EBX - In 16-bit mode, the base register was useful as a pointer. Now it is completely free for extra storage space.
    Category: CLR — Tags: , , , , — admin @ 12:23 am

    Precode

    In .Net v2.x Precode is used to do the similar thing like Prepad.

    Prepad

    In .Net v1.x MethodDesc has a Prepad which contains code to call Prestub (before jitting) or jitted code.

    typedef struct MethodDesc {
    #ifdef _DEBUG
    
        LPCSTR         m_pszDebugMethodName;
        LPSTR          m_pszDebugClassName;
        LPSTR          m_pszDebugMethodSignature;
        PVOID          m_pDebugEEClass;
        PVOID          m_pDebugMethodTable;
    
    #ifdef STRESS_HEAP
        PVOID          m_GcCover;
    #else
        DWORD_PTR       m_DebugAlignPad;
    #endif
    
        unsigned short  m_iPrestubCalls;
        unsigned short  m_iSharedSlots;
        unsigned short  m_iDirectCalls;
    
        unsigned short  m_DebugAlignPad2;
    #endif
    
        DWORD_PTR      m_CodeOrIL;         // pointer to code
        WORD           m_wSlotNumber;      // entry in VTable
        WORD           m_wFlags;           // IL vs native, static vs instance ...
    } MethodDesc;
    

    When you use SOS command !dumpmd, if IsJitted is “yes,” you can run !U on the m_CodeOrIL pointer to see a disassembly of the JITTED code.

    Prestub

    In a CLR MethodTable, a method points to a Prestub or Jitted code. Prestub traps first calls on methods so it can JIT generate native code for them.

    « Newer PostsOlder Posts »

    ©2009 NetInverse. All rights reserved. Powered by WordPress