Symbian for Software Leaders Principles of Successful Smartphone Development Projects by David Wood | To software leaders in the smartphone revolution the creators of outstanding products which will yield high value to hundreds of millions of mobile users.
Part 1 Symbian in context
- 1 At the heart of the smartphone revolution
- 1.1 The phenomenon of smartphones
- 1.2 Taking advantage of the smartphone opportunity
- 1.3 The role of the smartphone operating system
- 1.4 Regarding APIs and operating systems
- 1.5 Why Symbian OS?
- 1.6 Aside: from organizers to smartphones
- 1.7 Coming to terms with Symbian OS
- 2 The big picture of a Symbian OS project
- 2.1 High-level components of a smartphone
- 2.2 Providers of integrated solutions
- 2.3 The commercial model of a smartphone project
- 2.4 Some conclusions from the smartphone commercial model
- 2.5 Typical smartphone project timescales
- 2.6 Warning regarding timescales
- 2.7 Factors influencing project timescales
- 2.8 The big picture: beyond timescales
- 3 Involving ISVs 33
- 3.1 ISV smartphone opportunity and risk
- 3.2 Beyond technical skill-sets
- 3.3 Different routes to market
- 3.4 Symbian endorsements
- 3.5 Companion Technology Program
- 3.6 Symbian Signed 42
- 4 Twenty reasons why smartphones will win
- 4.1 Two kinds of battle
- 4.2 Multitasking
- 4.3 Messaging and entertainment
- 4.4 Mobile knowledge access
- 4.5 Organizers and finance
- 4.6 Pocket consolidators
- 4.7 Social tools
- 4.8 Personal development
- 4.9 Phones win
- 4.10 Openness wins
- 5 Managing large projects
- 5.1 Smartphone projects vs. feature phone projects
- 5.2 Three approaches to large projects
- 5.3 How large projects differ from smallprojects
- 5.4 Project groupware
- 5.5 Confidentiality issues
- 5.6 Five central project documents
- 5.7 Auditing document readership
- 5.8 Processes and agility: education vs.processe
- 5.9 Problems when groupware is short-cut
- 5.10 Symbian’s use of groupware
- 6 Managing defects
- 6.1 Introduction to smartphone defect management
- 6.2 Living with defects
- 6.3 Aside: an embarrassing moment with defects
- 6.4 Defect priorities
- 6.5 The process of verifying a defect fix
- 6.6 Advanced defect investigation
- 6.7 Defect status values
- 6.8 Defect database requirements
- 6.9 The role of the project leader in managing defects
- 7 Managing configurations
- 7.1 Introduction to configuration management
- 7.2 Aside: learning about configuration management 86CONTENTS ix
- 7.3 Consequences of weak configuration management
- 7.4 Basic principles of configuration management
- 7.5 Codeline strategy – single projects
- 7.6 Codeline strategy – multiple projects
- 7.7 Beyond codeline strategy
- 8 Managing integration
- 8.1 Integration vs. creation
- 8.2 Mainlines and development codelines
- 8.3 Iterative development
- 8.4 Gate-keeping and integration tests
- 8.5 Dealing with build or test failures
- 8.6 The weekly integration cycle
- 8.7 Integration discipline
- 9 Managing interfaces
- 9.1 Knowing when components belong together
- 9.2 Limits of rebuilding source code
- 9.3 Forms of compatibility
- 9.4 The compatibility virtuous cycle
- 9.5 System compatibility board
- 9.6 Responsibilities with regard to compatibility
- 9.7 Interface access and interface status
- 9.8 Versioning
- 9.9 Future-proofing interfaces
- 10 Managing testing
- 10.1 Beyond complete testing
- 10.2 Testing in context
- 10.3 Functional tests
- 10.4 Basic Acceptance Tests
- 10.5 Specialist tests
- 10.6 Friendly User Tests
- 10.7 Mandatory tests
- 10.8 Automated tests
- 11 Managing tools
- 11.1 The need for a tools champion
- 11.2 Debuggers
- 11.3 Emulators
- 11.4 Profilers and loggers
- 11.5 Static code analysis
- 11.6 Build system
- 11.7 Distribution system
- 11.8 Miscellaneous tools
- 11.9 Dangers with tools
- 12 Managing plans and change
- 12.1 Beyond complete planning
- 12.2 Causes of change
- 12.3 Handling change requests
- 12.4 Variable task estimates
- 12.5 Practical example of agile scheduling
- 12.6 Accepting slack
- 12.7 Aggressive vs. defensive scheduling
- 12.8 Authentic vs. inauthentic scheduling
- 12.9 Beyond meeting customer requests
- 13 Managing uncertainty
- 13.1 The 80–20 rule for planning
- 13.2 Identifying the project planning hot list
- 13.3 Iterating the project plan
- 13.4 Developing features outside the agreed core
- 13.5 The 80–20 rule for task estimation
- 13.6 Typical project trouble spots
- 13.7 Pros and cons of milestone reviews
- 13.8 Dealing with milestone delays
- 13.9 Cut features not corners
- 14 Simplifying smartphone projects
- 14.1 Beyond difficulty
- 14.2 Reuse rather than reinvent
- 14.3 The benefits of frequent releases
- 14.4 Symbian’s adoption of the frequent release model
- 14.5 Use of reference designs
- 14.6 Silver bullets vs. disruption
- 15 Design goals for Symbian OS
- 15.1 The birth of EPOC32
- 15.2 Defining the EPOC RISC architecture
- 15.3 Software goals from 1995
- 15.4 Separating the engine
- 15.5 Nine passions 193CONTENTS
- 16 Designing for efficiency
- 16.1 The original electronic organizers
- 16.2 Limits of Moore’s Law thinking
- 16.3 Causes of code bloat
- 16.4 Designing algorithms
- 16.5 Understanding the compiler
- 16.6 Adopting OO
- 16.7 Selecting C++
- 16.8 Text descriptors
- 17 Designing for robustness
- 17.1 Alloc heaven
- 17.2 Expecting the unexpected
- 17.3 The perils of multitasking
- 17.4 Exception handling
- 17.5 Common mistakes in destructors
- 17.6 Seeking out failure cases
- 17.7 Attitudes towards defects
- 17.8 Protecting the smartphone vital assets
- 18 Designing for usability
- 18.1 ‘‘The operation was a success, but the patient died
- 18.2 Enchantment
- 18.3 Designing the user interface
- 18.4 Multimedia performance
- 18.5 Understanding the real competition
- 18.6 Customer orientation for developers
- 18.7 Designing panics
- 19 Designing for longevity
- 19.1 Preparing for variants
- 19.2 Be ready to fail fast
- 19.3 Prepare your own SDK
- 19.4 The value of codevelopment
- 19.5 Basic principles for reusable solutions
- 19.6 The value of architecture
- 19.7 The value of ignorance
- 20 Designing for smartphones
- 20.1 The licensing question
- 20.2 Focus on strategy
- 20.3 Smartphone heritage
- 20.4 Active objects
- 20.5 Power management
- 20.6 Beware stray signals
- 20.7 Final comments on asynchronous events
- Part 4 Human aspects of smartphone projects
- 21 The essential role of the project manager
- 21.1 Focus
- 21.2 Project manager vs. technical lead vs. product manager
- 21.3 Project review meetings
- 21.4 Commercial negotiations with third parties
- 21.5 Project manager authority
- 22 The essential role of the support network
- 22.1 Pros and cons of support consultants
- 22.2 Cultivating connections
- 22.3 Building a team out of nothing
- 22.4 Helping consultants to be effective
- 23 The essential role of renewal
- 23.1 The role of the post partum
- 23.2 Line management skills
- 23.3 Circulation of team members
- 23.4 Principles of collaboration
- 23.5 The increasing importance of software
- 23.6 A guide for software leaders
- 23.7 Symbian OS renewal
Express Your Opinions in comments
EmoticonEmoticon