| 
 Safeway Stores is the fourth largest supermarket chain in the UK, with
	 over 480 stores ranging from hypermarkets to local convenience outlets.
	 Over the last couple of years Safeway has enjoyed significant growth in
	 both total revenues and profitability, triggered in part by the appointment
	 two years ago of a new chief executive and a more dynamic approach to
	 merchandising and pricing.   
 
Business background
Although Safeway is committed to using software packages for various
	 business processes, it is also prepared to develop its own systems where it
	 sees an opportunity to innovate or differentiate.  For example, Safeway was
	 the first of the UK store chains to introduce self-checkout for customers,
	 using handheld barcode scanners.  And its handheld Shelf-Edge Computing
	 system, which allows staff to check prices, monitor stock and place orders
	 whilst moving about the store, won an industry award when introduced in
	 2000. 
Although many of Safeway's existing systems must be maintained in
	 Cobol, Java is the preferred language for any new in-house development and
	 integration of interactive systems.  There are Java developers in most of
	 the application areas, and also a centrally managed Java Services Team, who
	 determine best practice and guidelines, perform research and development,
	 provide technical assistance, and act as consultants throughout a Java
	 project lifecycle. 
The management of this team became interested in Naked Objects at the
	 start of 2001.  They did not initially see Naked Objects as a development
	 approach, but rather as a way to train some of their Java developers to
	 think in more object-oriented terms.  (Many development managers have found
	 that switching to an object-oriented programming language such as Java does
	 not automatically change the way people think about systems design).  They
	 felt that more commitment to object-oriented principles would help them see
	 greater benefit from the investment in Java technology and skills.  More
	 than 30 developers received basic training in Naked Objects over the next 3
	 months - with the majority reporting that it had significantly improved
	 their understanding of object-orientation.  Moreover, the experience had
	 created considerable enthusiasm for undertaking a realistic development
	 exercise using the framework. 
Opportunity
Still under the auspices of training, a candidate project was
	 identified in the area of promotions management, known as 'deal
	 nominations'.  Safeway changed its pricing policy a couple of years ago.
	 Now, instead of attempting to maintain a policy of 'every day low pricing',
	 it competes through special promotions that offer up to 50% discounts on
	 particular food and drink lines, designed to bring more customers into the
	 store.  Each week it prints and distributes some 11 million 4-page colour
	 flyers to households in the catchment areas.  To prevent the competition
	 from matching these offers, the set of promotions is constantly being
	 changed.  Stores are grouped into clusters, and each cluster offers a
	 different package of around 40 special promotions each week.   
Implementing these promotions involves managing the supply chain to
	 cope with big increases in sales of the promoted items, communicating the
	 price changes to the EPOS systems in the stores, and printing and
	 distributing the promotional flyers, in-store banners and labels. Systems
	 exist to manage each of these activities individually, but the overall
	 planning and coordination of these activities is intensely manual, as is
	 the planning process.  Promotions managers are constantly exploring
	 combinations of special offers with the intent of attracting the maximum
	 number of shoppers who will then go on to buy regular items from the store,
	 without merely encouraging 'cherry pickers' who take the best offers and
	 nothing else.  Each special offer must be coordinated with the supplier for
	 logistics planning and, in some cases, to share the cost. 
 
Ideally, these managers needed a purpose-designed system to nominate
	 new deals, forecast sales and availability, simulate their roll-out through
	 the store clusters, and then coordinate their execution through the supply
	 chain and price coordination systems.  Previous attempts by the systems
	 department to analyze the requirements for such a system had not gone well.
	 The activity did not fit well into the strongly process-oriented
	 perspectives that are required for, say, supply chain management systems.
	 'Deal nominations' was much more of a problem-solving activity:  any
	 particular deal might start with a proposal from a supplier, or it might be
	 initiated to fill a 'hole' in a partly-assembled offering.  What was needed
	 was a system that would allow users to construct multiple offerings,
	 simulate their effect, and cut and paste them until they felt right.  Then
	 make them so! 
Approach
A team consisting of developers and business area representatives was
	 assembled and given just four weeks to design a proof-of-concept using
	 Naked Objects.  To put this into perspective, previous attempts had taken
	 much longer than that to do a paper-based requirements-gathering exercise,
	 only to be abandoned because the users were unconvinced that the resulting
	 document really captured what they needed. 
The new exercise made no use of that previous work: it started from
	 scratch.  After just a couple of hours spent discussing the dynamics of the
	 business in order to give the developers some familiarity with the domain,
	 the team got straight down to identifying the set of business objects that
	 would best model the deal nominations area.  Around twenty candidate
	 objects were suggested but by the end of the first day this had been
	 whittled down to below ten.   
By the second morning the developers were already translating the
	 successful object candidate descriptions into Java, using the Naked Objects
	 framework, drawing icons suggested by the business representatives, and
	 assembling some realistic data for Products, Stores and so forth. 
The next four weeks followed an iterative pattern.  The whole team met
	 once a week and reviewed the whole object model and the state of the
	 prototype, deciding what the priorities would be for the next iteration.
	 During the week there would be many smaller iterations.  A particularly
	 effective way of working was to have an individual business representative
	 sit down with a developer and evolve the prototype in real-time: adding new
	 attributes or associations, new sub-classes, and simple new business
	 methods.  For more complex business functionality (especially those that
	 involved searching collections of objects or navigating long chains of
	 command) the developers would work alone, or in pairs. 
Throughout this period there was almost constant demand for
	 demonstrations, both from members of the team, and from other parties that
	 had heard about the radical approach of the project and wanted to know
	 more.  The project manager took on the role of chief demonstrator,
	 recording and managing a set of demonstration scripts corresponding to
	 specific use-case scenarios.  Apart from engaging the team, the
	 demonstrations thus served the important purpose of continuously validating
	 the object model. 
Additionally, on various occasions during this exploratory period, the
	 team was asked to identify 'what-if scenarios'.  These were not
	 requirements, nor even likely future extensions.  They were purely
	 hypothetical scenarios, relating to future changes in the business
	 organization, strategy and relationships, as well as technology-driven
	 scenarios.  Although these were not explored in detail, the team was asked
	 to briefly explore what changes that new scenario might require in the
	 model.  Ideally, the answer would be that the changes would be limited to
	 just one of the object classes, or perhaps to the creation of a new class
	 that implemented an existing interface so that it could substitute for an
	 existing object in any context. 
Key business objects
Shown below are the principal business object classes identified
	 during the exploration of the deal nominations system and crudely
	 implemented in the prototype. 
 
User The user object knows the roles that a user can
	 fulfil, how to communicate with that person, and various HR-related
	 information. 
 
Product  There is one instance of product for each
	 product that Safeway stocks (there are more than 40,000). As well as
	 storing supplier data, Product holds one or more images of the product for
	 use in advertising/marketing.  The Product object could also know how to
	 interface to the supply chain systems. 
 
 
Deal  A Deal (such as a temporary discount or
	 two-for-the-price-of-one promotion) can be nominated for any product. Deals
	 are initially hypothetical whilst the impact on supply chain and revenues
	 is simulated, after which they may be formally proposed.  A Deal knows how
	 to manage its own approval process. 
 
 
Offering An Offering is typically composed of multiple
	 Deals. As well as knowing how to implement the price changes at the
	 locations it is to be applied to, the Offering should know how to produce
	 the printed promotional 'flyers' that will be distributed to local homes,
	 and the in-store promotional display materials. Offering has various
	 sub-classes. The 'Hero' offering, for example, is typically a collection of
	 heavily-discounted items that would be shown on the front page of a
	 promotional flyer. 
 
 
Cluster Store locations are managed as regional
	 clusters. Offerings are typically rotated between clusters so as to spread
	 the peak in demand for a particular product. 
 
Location A Location models a particular store or
	 sub-store such as an in-store coffee shop or a petrol filling station.  As
	 with Product, Location would know how to interface to other systems that
	 provide location-specific information or functionality. 
 
Supplier Holds supplier details and knows how to
	 communicate with the supplier, and to interface to supplier management
	 systems. 
 
Role.  Knows which object classes, and which methods
	 on those objects that someone fulfilling this role can access. 
 
Evaluation - the business perspective
All those involved in or with the exploratory project expressed delight
	 at what had been achieved in the short time.  The user representative said
	 that the mock-up had the right 'feel' - meaning that it gave them a great
	 deal of operational flexibility to nominate deals and assemble Offerings in
	 different ways, matching the reality of how they work. All commented
	 positively on the way in which Naked Objects facilitated the dialogue
	 between developers and business representatives. The latter had no
	 difficulty adopting much of the object terminology. 
At the end of the exercise the capabilities of the prototype were
	 compared to the prioritized requirements produced by the previous
	 (unsuccessful) attempt - and which had not been consulted this time.  All
	 the high priority requirements had already been addressed, and much more
	 besides.  In fact, when asked which of the prototype's features they would
	 consider to be the highest priority for implementation if the project were
	 to proceed to Specification and Delivery, the highest priority features had
	 not originally been identified as requirements at all in the first
	 exercise.  For example, an Offering object contains a number of Deals -
	 viewed as a collection of icons.  During the first couple of weeks, someone
	 had asked whether the generic icon representing a Deal could be replaced
	 with an individual photographic image representing the actual Product to be
	 discounted.  This capability was added to the Naked Objects
	 framework with the net result that any Offering could now be viewed as a crude
	 form of the colour flyer that would eventually be printed.  The
	 marketing people reported that this early visualization was very helpful in
	 evaluating the attractiveness of the offering as a whole. 
Evaluation - the IT perspective
Developers reported that they found the Naked Objects framework easier
	 to adopt than those they had previously used for developing web
	 applications.  Naked Objects allows them to concentrate on the business
	 problem, and on the disciplines of good programming, rather than simply on
	 how to use the technology.  
Prior to an introduction to Naked Objects in 2001, the newly promoted
	 Java Services Manager was "having difficulty justifying a migration to Java
	 from CICS/Cobol", to himself, his peers and the IT executive. He could
	 foresee Safeway repeating CICS/Cobol with a "nicer front end", but with no
	 significant design and cost advantage for future development,
	 maintainability and support.  Naked Objects has changed that
	 perspective. 
The Deal Nominations system is now awaiting a decision to proceed; but
	 there seems no question that when it does proceed, the Naked Objects
	 approach is the best way to implement it. 
The second project
Meanwhile, another group at Safeway had seen the Deal Nominations
	 prototype and thought that the approach could help them with another
	 difficult  business problem.  Naked Objects was initially seen as a way to
	 facilitate the modelling of requirements rather than as the eventual
	 architecture for the system.  As the exploration progressed, however, it
	 became clear that the users liked the concept very much. IT management also
	 recognized that this system made an ideal candidate for a full-blown trial
	 of the Naked Objects framework: the system offered high business value but
	 had a small user base.  
At that time, the Naked Objects framework lacked the enterprise
	 services needed to implement real systems.  However, Safeway made available
	 its best Java developer to explore possibilities.  It soon became clear
	 that the object/relational mapping required between Naked Objects and
	 Safeway's existing mainframe databases could be achieved using Enterprise
	 Java Beans (EJB) and XML.  The result was the creation of the
	 EJB Object Store. 
The Exploration phase took four weeks. After a further three weeks of
	 Specification, the Delivery phase commenced.  Only the object definitions
	 were carried forward.  All the Java code needed for the release was now
	 re-written from scratch, adopting a more rigorous approach to testing. The
	 first release was ready for user testing after 90 days, which is remarkable
	 given that this included developer training, Christmas breaks, and delays
	 caused by changes and teething problems with the framework and the
	 middleware.  Initial performance was poor.  However, this was because the
	 EJB server was operating on a separate machine to the database. When the
	 former was ported over to the mainframe, the whole system ran as fast as
	 "anything we are used to on the mainframe running under CICS". Safeway has
	 subsequently incorporated the testing  features
	 of Naked Objects and is assisting with development of new features for the
	 framework. 
 
 
 |