6. enable value delivery – agility
Pla
n +
Business
Product Owners
all other
Stakeholders
Developers
Testers
Develop + Test
REQUIREMENTS
Backlog
Monitor + Learn
Operations
Release
7. enable value delivery – quality
Pla
n
REQUIREMENTS
Backlog
Monitor + Learn
All Stakeholders
Developers
Testers
Develop + Test
Operations
Release
8. enable value delivery – scale
Pla
n
REQUIREMENTS
Backlog
Monitor + Learn
All Stakeholders
Developers
Testers
Develop + Test
Operations
Release
Today, Enterprises are facing the challenge of rapid growth in technology and data, a proliferation of platforms and devices, and an insatiable demand for users and consumers to be ‘connected’ at all times. according to the World Internet Users Statistics, 2/3 of the global population were connected to the internet through 10B devices in 2012. This will double to 20B by 2016.Gartner predicts that by 2016, 65% of the global workforce will own a smart phone and 40% will be a mobile worker. IDC predicts data volume to grow 10x every 5 years.These new disruptive technology trends are changing everything from customers’ habits to how business applications need to operate. Every company is now a software company and think of software a mission critical enabler of their value priorities. They think of IT as a value provider vs. just being a cost center. So IT must enable new reach and brand differentiation opportunities for their business by taking advantage of these developments. A comprehensive evolution strategy is required to keep applications modern and relevant to the business, and to both existing and new customers.For example, Gartner predicts IT spending for Cloud Services will double to $210B by 2016, up from the $105B in 2012.
Summarize pillars of Modern Business App development:Modern Apps need to: Click#1 – Span across multiple devices, to reach new and existing customers – your customers (internal and external) have already embraced new devices and mobility, they’re expecting to accomplish their business & life goals using both professional and personal devicesAccording to IDC, 1/3 of employees are already accessing business information on their own personal devices. IT needs to allow the mix of many tools, languages and platforms – allowing developers to have a choice Click#2 - Manage data at scale efficiently and reliably -As devices and users increase, so are the data produced and consumed. Applications need to increase capabilities to manage increased volume of data from multiple sources, an increased variety of data (such as non-relational or unstructured data), with greater speed to keep low response time. They also need to improve their reliability. Click#3 -Be cloud enabled,MB Apps need to be capable of running in the Cloud or using Cloud services.Their development, testing, build and deployment should also be enabled to take place in cloud as well as on-premises both on-premises and in cloud. Cloud services can help in reducing time to market, costs, and risks – allowing focus to remain on key competencies and core business Click#4 - Apply all of the above while enabling delivery of value to the BusinessEnterprises need to move faster through the development lifecycle than in the past, with a higher sense of urgency and with real time decision making in order to deliver software to realize the new opportunities Recognize the need to transform their organization to modern ALM practices, adopting an agile and iterative Build, Measure, and Learn cadence in driving their business forward, withshorter cycle timessmaller, cross-functional teams, with less specializationcontinuous cadence of value deliveryTight integration and alignment between business and ITClose collaboration within teams and with their communityNow let’s look at modern Application Lifecycle Management practices that support these needs for developing Modern Business Apps…
Eric Reis, “The Lean Startup”To transform to thefaster, continuous cadence of value delivery, an enterprise needs to adopt modern ALM practices. They need to : adopt agility while delivering with quality. These practices will extend throughout the full development lifecycle - from plan, through develop (including test), to release and operate in production.scale to meet larger volume and variety of data, while sustaining application performance and reliability with integrated DevOps processesContinuous learning needs to occur throughout, to continually refine and improve both the development process and the applications being delivered. By employing integrated development and operational tools, an organization will be enabled to operate in continuous Build, Measure, and Learn cycles.
As with any transformation in an organization – it involves 3 areas:PeopleProcessToolsAnd there are really 3 options to manage the transformation:Click#1 - Doing nothing is always an available option. However, none of today’s winning companies are following this one, actually quite the contrary as even most conservative and “late movers” companies such as government agencies are actually embracing this transformation to meet citizen demands Click#2 - Starting from scratch is unrealistic. Your company will lose so much time and money to start using totally new processes, tools and products, in order to start an agile method of application development. ‘Reinventing the wheel’ is never a genius innovation. Use what already exists, and what you’re familiar with to actually make progress and grow your business.Click#3 - Adopting modern ALM means stepping up to how successful business is done today. ALM isn’t just a toolset, it’s a mindset. And you can start transforming at your own pace. For example, integrate your current application development methods, even if waterfall, CMMI or other, with VS Agile Planning to create a backlog and priorities. Start connecting and empowering teams with the help of our ‘collaboration’ tools, that speed the iteration and feedback processes, in order to ensure that your business is continuously delivering value. Then gradually transform your other development practices. Keep things flexible, so you continuously create and refine a business agility that works for you. .
[Click#1]People– Team barriers and boundaries must be removed and replaced with a collaborative culture, with all stakeholders held accountable for success. IT must become a real business partner, and align with the business in defining vision and goals, setting priorities, and in planning and execution of development. Close collaboration between all stakeholders will result in broader understanding by the whole team, accelerating decision making, and enabling faster acceptance testing. Improved collaboration between the Development and Operations teams must also extend to when the application is released to production. This ‘last mile’ of the lifecycle is often neglected, but with Modern Apps, it is essential to speed resolution of any production problems to avoid potential loss of revenue, increased support costs and loss of user satisfaction and confidence. By continually monitoring, diagnosing and resolving production issues, the development team is continuously learning and refining the application and the deployment process – enabling the ‘pipeline’ to be agile and sustain faster release cycles. Process – Meet enterprise where they are at - maybe they are currently using waterfall, CMMI or other custom methodologies. Overlay agile practices on top of the existing processes, without the disruption and potential risks of dramatic change to all phases of the lifecycle. For example, start with agile planning, creating a prioritized Backlog, or Flow (Kanban). Then gradually integrate agile practices into other lifecycle activity of development,test and releasing to production.Pockets of developers or testers may already exist in Enterprise and doing agile development successfully – no need to disrupt this, instead adopt and broaden agile processes around them!Tools – [Click#2]Visibility and traceability of all work is essential to agility, so it’s key to have a fully integrated set of tools that support all roles engaged throughout the development lifecycle.Using familiar, role-tailored tools for the cross-functional team members will expedite and ease their adoption of ALM and reduce the need to introduce an expensive change management process to get it off the ground.[Click#3]Planning ToolsCreate and Manage a Backlog of Prioritized Requirements at the Project and Portfolio levelsManage Iterations, Deliverables, Tasks, Resources and Capacity for current and upcoming IterationsFamiliar Office components such as Word or PowerPoint can be used to define requirementsDevelopment and Testing Tools[Click#4]Use development tools that enable agile development through collaborative team experiences. For example, the ‘Team Room’ feature is a real time,collaborative chat work space that provides contextual and relevant team notifications[Click#5]Use automated tools for Dev and Test activities, such as code analysis, automated testing, automatic creation of test steps, related bugs and test cases, to expedite development and testing.[Click#6]Extensibility - Flexibility and extensibility that allows integration with best-of-breed tools, other code repositories (with GITHub) and existing investments.Developers may already be using the Visual Studio IDE, or TEE can be used with other familiar IDE such as Eclipse;Hybrid IT capable - meet demands of hybrid app development workloads spanning on-premises and/or cloud app investments[Click#7]Automated ServicesUse automated services for BuildsTest lab management automation services reduce the cycle times required to stand up and release test environments for verification testing, systems integration testing, user acceptance testing, stress testing Release Management Tools: Automate deployments, provisioning of Cloud Servers, execution of tests etc.Other:Employ tools that can capture the voice of the customer, and make this feedback visible to all team members, so that appropriate responsive action can be taken. Examples - ‘UserVoice’, Twitter feeds and other social media.[Click#8]Note: Continuous learning needs to occur throughout, to continually refine and improve both the development, delivery and operation of applications. By employing integrated development and operational tools, an organization will be enabled to operate in continuous Build, Measure, and Learn cycles.
People– All stakeholder roles are accountable for the quality of the application being developedClose collaboration will result in common understanding and agreement on priorities, to speed up acceptance testing and defect resolution, and provide a channel for providing and integrating feedback. Development and Operations teams need to work closely to enable faster delivery schedules, integrate their activities to help resolve production issues quickly, and identify any future improvements for performance and reliability.Process – Transform from Quality Assurance to Quality Enablement, where quality practices shift from release gate keeping to enabling agility in software and value delivery. Conventional Quality Assurance (QA) practices won’t scale to meet the agility and continuous delivery demands of modern business applications. When applied in any SDLC methodology they will result in increased cycle times and high rework costs, due to sequential and late engagement of cross-functional stakeholders - commonly resulting in late detection of unmet requirements. The cycles times to resolve unmet requirements can increase exponentially throughout the lifecycle. Instead, Quality Enablement practices account for quality at each phase of the lifecycle, minimize the risk of rework in later phases, and reduce the higher costs of such rework. Quality enablement emphasizes full lifecycle practices to: [CLICK #1] [CLICK #1] Acceptance test planning : practices to define actionable requirements that can be used to generate testable acceptance criteria. The notion here is that all stakeholder requirements (functional and non-functional) be expressed as testable acceptance criteria, which when fulfilled will result in software that meets its objectives[CLICK #2] Continuous acceptance testing : practices to continuously test software against the defined acceptance criteria as it is being developed, using the appropriate tools, and by the appropriate stakeholder functions (product owners, developers, testers, users). Continuous acceptance testing helps prevent late detection of unmet requirements and reduces rework costs.Quality enablement practices extend into the operations phases of the app lifecycle and include: [CLICK #3] Performance and Availability Diagnostics : having access to information and tools that allow the Operations and development teams to monitor application health, and diagnose and fix any issues quickly, is critical to sustaining performance and reliability of Modern Apps. [CLICK #4] Integrated incident management: practices to resolve production incidents with an emphasis on increasing MTTD (meant time to defects) and lowering MTTR (mean time to repair) [CLICK #5] Continuous learning and improvement : Analyzing quantitative and qualitative data from customer usage in production helps the team to make informed decisions on the next set of investments, and to evolve to improve application performance and reliability through continuous learning. Tools – A fully integrated set of lifecycle tools that provides visibility into the quality being built-in, and traceability of all work and defects. For example, through use of the Team dashboard and powerful bug reporting. Also, insights into application performance and reliability once the application is in production. Role tailored tools to engage cross-functional team members in continuous quality practices For Acceptance Test Planning - define actionable requirements using familiar tools such as Word and PowerPoint, then generate acceptance criteria and test plans For Continuous acceptance testing – Feedback Manager - get early and frequent User feedbackBuild -> deploy -> test automation services to continuously integrate and validate build quality Dev ToolsTools that enable code quality and collaborative team experience – Team Room, Code Review, Code Analysis, Code Lens, Code Information Indicators, Duplicated Code, Gated Check-ins, Continuous Integration, Auto Build, etc. Test ToolsTest Case Management with Microsoft Test Manager for manual, automated and ad-hoc exploratory testing. Code Coverage, Performance TestingLoad Testing as a serviceExtensive Bug reporting to monitor where quality is at, and how it is improvingTest lab management automation services to reduce the cycle times in standing up and releasing test environments needed to continuously execute tests of varying intents (build verification testing, systems integration testing, user acceptance testing, stress testing) Release Management ToolsInRelease ensures deployments are done the same way from the same binaries - so when application is deployed to production, the deployment procedure has already been tested over and over, minimizing risks of errorInRelease leverages existing tests for execution and can trigger test data creation via built-in actions and toolsInRelease controls if and when deployments go into environments, monitors progress and provides notifications throughout the release processDiagnostic ToolsGet 360 degree view to application’s health with relevant metrics to help you detect issues in production with Application Insights.Check service availability through global service monitoringAutomatic Alerts whenever your application is not responding according to your thresholds.Application Insights provide with out of box dashboards that help detect issues in production before your customer knows. Uncover the root cause of production issues and determine if the problem is your code,or your dependenciesIntegrated Incident Management ToolsSystem Center allows operations to monitor application in production and flag any issues that need attention from developers. Operations creates TFS work items and assigns them to developers, ensuring that communication flows quickly and easily between the two teams. The ops team can collect data and attach it to work items for use by the dev teamContinuous learning and improvementIdentify systemic issues and trends affecting application and infrastructure healthLearn from usage data to make informed decisions based on qualitative and quantitative data Use this data to prioritize new features, bug fixes and future strategic direction
Enabling value delivery through ‘Scale’ is really about the integration and collaboration of Development and Operations teams. or as it is more commonly known - ‘DevOps’. ‘DevOps’ is sometimes referred to as ‘agile for Operations’, but it is an undertaking that requires teams to be looking at the full lifecycle investment. Once the team has successfully adopted agile and quality enablement practices to accelerate the construction phase and increase the frequency of deployments, then the next evolutionary step is to ensure the application’s performance and reliability in production is as expected. And when it isn’t, then problems can be diagnosed and fixed quickly. [CLICK #1] People – Improved collaboration between the Development and Operations teams must extend to when the application is released to production. They need to work closely to enable the faster, frequent delivery schedules that will result from adopting agile practices ‘upstream’ in the planning, develop and test phasesThis ‘last mile’ of the lifecycle is often neglected, but with Modern Apps, it is essential to speed resolution of any production problems to avoid potential loss of revenue, increased support costs and loss of user satisfaction and confidence. The team needs to know of any issues before the application users do!By continually monitoring, diagnosing and resolving production issues, the development team is continuously learning and refining the application and the deployment process – enabling the whole application development ‘pipeline’ to be agile and accommodate faster and more frequent release cycles, while sustaining and improving the application’s performance and reliability. Process – [CLICK #2] As frequency of delivery shifts from long release cycles to monthly, daily or even several times each day, then the release management process needs to be agile to support this. It needs to be automated for efficiency and reliability, without adding unnecessary risks.The release pipeline needs to be visible and provide traceability, to set customer expectations about when features or fixes go live.With modern apps, it is critical to reduce the frequency of production failure and the time it takes to detect and repair issues. [CLICK #3] When an application is not performing, or is not available, as expected, then the Development Team needs to determine why quickly. They need access to information and tools that provide actionable diagnostics of the issue and where the problem lies. Is it code – or some other dependency?[CLICK #4]Incident management workflows need to be integrated between the development and operations teams and their support systems. Production incidents from System Center can be assigned to the Development team in Visual Studio for investigation and resolution. As developers work through the issues, then TFS keeps operations informed of the status. The dev team can also use TFS to request information, logs and other diagnostic data from operations. [CLICK #5]Continuous learning and improvement - Identify systemic issues and trends affecting application and infrastructure healthLearn from usage data to make informed decisions based on qualitative and quantitative data Use this data to prioritize new features, bug fixes and future strategic directionTools – Release ManagementInRelease does 3 main things…automates deployments directly from TFS to all the environments, including production. Part of the deployment procedure may include things like taking back-ups, generating test data, provisioning Servers on Azure or executing your automated tests. Basically everything you need to start working on a given stage. ensuresdeployments are done the same way from the same binaries - so when application is deployed to production, the deployment procedure has already been tested over and over, minimizing risks of errorleverages existing tests for execution and can trigger test data creation via built-in actions and toolscontrols if and when deployments go into environments, monitors progress and provides notifications throughout the release processDiagnostic ToolsGet 360 degree view to application’s health with relevant metrics to help you detect issues in production with Application Insights.Check service availability through global service monitoringAutomatic Alerts whenever your application is not responding according to your thresholds.Application Insights provide with out of box dashboards that help detect issues in production before your customer knows. Uncover the root cause of production issues and determine if the problem is your code,or your dependenciesIntegrated Incident Management ToolsSystem Center allows operations to monitor application in production and flag any issues that need attention from developers. Operations creates TFS work items and assigns them to developers, ensuring that communication flows quickly and easily between the two teams. The ops team can collect data and attach it to work items for use by the dev team.
To summarize, three key metrics that are critical to an organization’s ability to enable value delivery with agility and quality. the flow of business value must be measured and improved. Understanding what provides business value, and delivering those features on a sustained, regular cadence is key. having the ability to identify and remove bottlenecks to shorten cycle times for delivering those business values. It’s not enough to simply deliver regularly, but also efficiently. identify and reduce sources of rework, such as bugs, incorrectly specified features, etc.