Featured Whitepapers
- Forrester Research: Optimizing Globally Distributed Software Development Using Subversion
- An Integrated Approach to Requirements and Quality Management
- Continuous Testing With ElectricCommander
- Agile CMMI at a Large Investment Bank
- Realize Effective Distributed Development Via a Virtual Software Factory
- Build & Deployment Automation for the Lean Economy
Upcoming & Recent Webcasts
- A New Kind of Engineering
- Managing Change in Rugged COTS Systems Development
- Keeping Control of Costs and Schedules When Requirements Change
- Three Simple Things that Will Help You Adopt Agile in Your Enterprise
- Customer speak: Teams, Insights, Results with Quality Driven Software
- Build & Deployment Automation for the Lean Economy
Product and Project SCM |
| Print | |
| Written by Brad Appleton, Robert Cowham, and Steve Berczuk |
| Monday, 18 August 2008 11:25 |
Products and Projects - before we get into any SCM discussions, we need to classify these beasts - what are their distinguishing marks?!The Lean Development Mailing Listhad a pertinent discussion on this. Mary Poppendieck commented: Products are development efforts that are (usually) funded incrementally. They start with a concept and end with a product launch. Along the way, they are funded incrementally as they progress through stages such as feasibility, test market, commercialization, etc. [...] Products are also expected to have a long and useful life over which timeframe they are generally expected to undergo constant improvement. Projects, on the other hand, due to their contract origins, tend to be fully funded at the beginning of the project. This front-end loaded funding tends to drive the people providing the funds to ask for scope and schedule plans, which are then treated as commitments - after all - the funds are committed, so they want to know what they will get for the money. In addition, on-going change after the "end" of a project is generally regarded as bad. Alan Shalloway contributed: Lean extends some other agile methods (e.g., Scrum, XP) which are project centric. Products are about something the company offers to its customers (internal for IT products) while projects are about building the product. Thus good products will grow, mature and continue to add value to the customer in different ways and may spawn multiple projects. Many companies have more waste in their project selection process than in their project building process. They will spend 1 - 2 years deciding whether to approve a project. Once they have selected a project to build, Scrum and XP can be put into place. However, what they really could use to help them is the understanding of waste that Lean provides. Waste includes delay, task-switching, hand- offs and other things which don't show up on an accountants balance sheet. Value stream maps are incredibly useful tools in this area. Internal vs. External Then we have the difference between internal and external products: External products (or systems or applications) are things that we sell in order to generate revenue. The more customers we have to support (even on different versions/platforms), the more revenue we generate in return. Internal products (or systems or applications) are pure operating cost and do not directly generate revenue. The more customers we have to support (especially on different versions/platforms) the more it costs us to spend time, money and effort on activities that are not revenue generating. The people and time we spend on them means less money spent on revenue-generating activities. We only do it because we think we are getting productivity and/or cost-savings (e.g., over not having the tool/applications) in return, and we still want to minimize it. Internal apps also generally have a harder time justifying their existence/value to the business and their impact on the bottom-line (which might well be similar to justifying "CM" :-) Also, there is a HUGE difference between delivering to customers who don't live in your own backyard and aren't part of the same organizational culture and politics. There are typically extra layers of "customer care/service" between development engineers and direct customers/users, and the internal customers also have a lot more visibility and transparency and "closeness" into what is going on. Even more interesting is the notion of "consultants" who are hired strictly for the duration of a project (regardless of if it is internal or external) and how much that motivates and rewards them to think and act in the best interests of the "product" and not just of the one or two projects that they will be around for. It is easier to "come in", and hack something together fast, and get a group up and running and impress management and "ride off into the sunset". But the poor folks who are stuck with the internal support and maintenance of the ill-structured, un-factored, poor-quality code are the ones that the company may end up spending a LOT more money for in the long-run. Just because we are picking on "consultants" here, doesn't mean that organisations doing it all themselves don't suffer from similar problems. We have seen short term "project thinking" within a large programme of internal development - the teams came together, delivered the projects and then were disbanded (due to internal charging models) without paying much attention to the long- term maintenance requirements. Deployment Models There are many possible models of deployment which can apply, particularly to products:
Architecture/SCM/Organization With the above definition, we can review some of the SCM considerations as to the difference between Products and Projects. We have spoken often about how many release engineering issues can be addressed by a balance of Architecture, Organizational approach, and SCM Strategy. Also using the above definitions, we can consider project SCM needs to be a subset of product SCM. Product Development tends to have release lines - potentially multiple independent projects under development at the same time. As Laura Wingerd discusses in Chapter 7 of her O'Reilly Book (Channeling the Flow of Change): The Ace Engineering story illustrates typical problems of the software life cycle:
The ITIL Service View Many organisations undertake a variety of internal projects which deliver new or enhanced applications or systems into live usage within the organisation. A typical new system (or Product), delivered as part of a project might follow a lifecycle and branching model shown below. ![]() Figure 1 - This is for new development which starts within the project and is promoted through to live.
From an ITIL viewpoint, the Service Transition phase (e.g. into Live usage) is very important and one of the key measurements is the ongoing documentation and support processes to allow the system to be cost effectively maintained in the future. This recognises the reality that the initial development of most systems is 30% or less of the overall life time of a system. As mentioned above, project teams who are measured only with regard to successful delivery of their project and ride off into the sunset looking for the next project, can leave considerable maintenance problems behind them. We have seen this plenty of times as a significant problem for organisations. And yet this model is still very common. Enhancement Projects Many internal projects are actually enhancing already existing products, so the branching patterns should really be represented as starting from existing state and delivering back a changed (enhanced, we hope) version: ![]() Branching structure showing "promotion" of code and baseline points. Note that this version starts with original baseline being the current application in Live use.
Multiple Parallel Projects as Part of a Product or Release Then we get to the case where there are potentially multiple projects or programmes, each of which is delivering particular enhancements. These multiple projects may overlap in some way and both be changing a particular System (system Y below) which will then need to be integrated. ![]() Figure 3 - Lifecycle of multiple project development. This shows multiple projects or programmes in development with their code being integrated for a particular release (e.g. 6.10) which occurs during system test. Prior to this point the projects are relatively independent of each other. The individual solutions may be concurrently updating the same application (Y in the example above) - integration and merging of the changes is done at the point of Systems Integration and Test. The diagram omits the detail of the Stage 1 (dev) branches. Also omitted are changes which may need to flow back to the projects as a result of problems during integration.
A very common model here is to have regular release cycles (e.g. several per year), where multiple projects are integrated and delivered into live usage as part of a global release. In the IT Process Institute Change Configuration and Release Performance Study the most important two findings are:
To this point, we have been discussing general SCM implications more than Agile in particular, so now let us consider some Agile impacts. Iterative Development - Releasing Frequently Iterative development is not restricted to Agile methods, and yet is a core part of Agile development. If you release frequently, you get better at it - you look for automation and don't ignore the many little details that can otherwise trip you up. TDD and Test Frameworks This is becoming increasingly common practice and one of its main benefits is that a good set of automated tests provides a safety net for future changes. They also act as documentation for the system, and documentation that is more likely to be maintained along with the code. There are still challenges in terms of finding the right level of automated test frameworks. Initial work focussed on unit test suites during development. More progress is being made in automating tests later on in the cycle - integration and acceptance tests, as well as unit tests. This can, of course, be particularly challenging for systems which have many external interfaces. Conclusion Projects and Products are different, and yet related beasts, and yet how important is the difference?. As Mary Poppendieck reminds us:
Brad Appleton is an enterprise SCM/ALM solution architect for a Fortune 100 technology company. He is co-author of Software Configuration Management Patterns: Effective Teamwork, Practical Integration, the "Agile SCM" column in CMCrossroads.com's CM Journal, and a former section editor for The C++ Report. Since 1987, Brad has extensive experience using, developing, and supporting SCM environments for teams of all shapes and sizes. He holds an M.S. in Software Engineering and a B.S. in Computer Science and Mathematics. You can reach Brad by email at brad@bradapp.net Robert Cowham has been in software development for over 20 years in roles ranging from programming to project management. He continues his involvement in development projects but spends most of his time on SCM Consultancy and Training. He is the Chair of the Configuration Management Specialist Group of the British Computer Society, has a BSc in Computer Science from Edinburgh University and is a Chartered Engineer (CEng MBCS CITP). You can contact him at rc@vaccaperna.co.uk Steve Berczuk is a Technical Lead for an Agile Software Development consulting company. He has been developing software applications since 1989, often as part of geographically distributed teams. In addition to developing software he helps teams use Software Configuration Management effectively in their development process. Steve is co-author of the book Software Configuration Management Patterns: Effective Teamwork, Practical Integration and a Certified ScrumMaster. He has an M.S. in Operations Research from Stanford University and an S.B. in Electrical Engineering from MIT. You can contact him at steve@berczuk.com
Set as favorite
Bookmark
Email this
Hits: 3307 Trackback(0)Comments (0)
|
| Last Updated on Friday, 24 July 2009 14:56 |

Products and Projects - before we get into any SCM discussions, we need to classify these beasts - what are their distinguishing marks?!



