100 likes | 214 Vues
This chapter explores the intricate methodologies involved in project management, drawing parallels between mountaineering expeditions and software development. Key decisions in both fields, such as defining project goals, selecting tools, and team organization, are crucial for success. The discussion includes the challenges of adhering to plans, the importance of adaptability when faced with obstacles, and how methodologies guide project execution. By analyzing these components, the chapter offers insights into fostering flexibility, maintaining communication, and ensuring effective process management for achieving project outcomes.
E N D
Outline • A Mountaineering Example • Project Context • Goals, Environment, Methods, Tools, Methodology • Methodology Issues • Planning, Design Reuse, Modeling, Process, Control & Monitoring, Redefinition • Methodology Spectrum • Royce’s Methodology based on the unified process • Extreme Programming • Methodological Heuristics
Key Decisions in an Expedition • A leader has to answer several key questions to create a successful expedition • What mountain should be climbed? • What process should be used? • What types of tools should be used? • Who should be member of the team? • Does the expedition need a leader? • Different answers to these questions lead to different styles
Key Decisions in an Software Project • Project goals • Schedule • Cost • Project organization • Software life cycle Model • Tools • Methods • Team members
If the Project Goal cannot be achieved A project goal is too ambitious or the original goal is simply wrong. Continuing is not an option. • Option 1: Ask for more resources or a revised schedule. • Not really an option, because there is no more money and the schedule is fixed. • Option 2: Admit the problem and turn the project into a “successful failure”: • Do a thorough analysis to understand what went wrong. • Focus on the failure to determine lessons learned. • Try to recycle the work that has been achieved so far for another project. • Option 3: Revise the project goal • Turn the current project status into the goal. • Sometimes the revised project goal is actually as good or better than the originally envisioned
Methodology Issues • Methodologies provide guidance, general principles and strategies for selecting methods and tools in a given project environment. • The key questions for which methodologies typically provide guidance include: • How much involvement of the customer? • How much planning? • How much reuse? • How much modeling? • How much process? • How much control and modeling? Roycevs.XP
Use Case Model System Model Object Model Dynamic Model class... class... class... Source Code Analysis, System Design Object Design - Carl enters the store - He buys a car toy. .... Scenario are Model Transformations Forward Engineering: Source code is generated from the system model (Ideal: „0 % manual coding“, Component-Based Software Engineering) Reverse Engineering: The system model is reconstructed from existing source code (legacy systems) Refactoring: The source code is transformed according to refactoring rules (program transformation) Textual scenarios generate external models
Stories class... class... class... Refactoring: The source code is transformed according to refactoring rules (program transformation) Source Code XP User Stories generate source code
Methodology Do’s and Do Not’s • Try to train the client. • Train the developers about the process • Try to find a dedicated lab for all the developers • Think carefully about how to maintain the infrastructure • Use version control as an integration tool • Make sure to have resources to deal with iteration overlaps • Make sure to allow informal communication
Methodological Heuristics • Be prepared to change the system • Functional requirements can change during a project when the client becomes more experienced • Technological change can occur any time • Be prepared to change the organization • Move from hierarchical organization to participatory management when project participants are becoming capable of making decisions • Be prepared to change the process • Move from activity-oriented to entity-oriented during a project when beginners become experienced developers • Shorten client decision time • Train the client • Build trust • Learn the right lessons and nothing more