For a RUP project team to adopt AUP and AM techniques,10–11 it must overcome common developer misconceptions about RUP as well as several cultural barriers common in organizations that instantiate RUP. The team needed to start thinking outside of the current UML-centric nature of RUP.
To do this, the team tried and mostly succeeded in the following eight goals.
First, they detached from the phrase “use-case driven.” Use cases, elaborated by developers (playing also the business analyst role) weren’t sufficient to drive the team to the final product. Use cases are good for documenting behavioral requirements, but that was only a part of the functional-requirements picture and a smaller part of the total requirements picture. Use cases aren’t the best for documenting business rules, user interface requirements, constraints, or nonfunctional requirements. This is why RUP includes a supplementary specification to contain all these other things.
Second, they acknowledged that there are more modeling artifacts than those that UML offers. AM’s multiple-models principle reminds developers that we have many modeling artifacts at our disposal, such as change cases, user stories, business rules, UML activity diagrams, UML class diagrams, data models, and external interface specifications. Many people perceive that RUP is simply a process for using UML. However, RUP recognizes that a wide range of models is needed to explore the complexities of modern software, and recent versions include data modeling and user interface design activities that are currently outside UML’s scope. Third, they recognized that RUP isn’t inherently documentation-centric. RUP clarifies that only the required artifacts must be developed; however, many software professionals often neglect this. The team had to question every model that RUP suggests to determine the ones it needed for the project. It found AM’s “travel light” and “model with a purpose” principles beneficial, as well as the “update only when it hurts” and “discard temporary models” practices.
Fourth, they created an agreed-upon process-based perspective for both developers and project stakeholders. Managers often tend toward prescriptive software processes such as RUP. Developers, on the other hand, tend toward agile techniques such as Extreme Programming and AM on the basis of the techniques’ perceived focus on building software. Because management is the decision-making authority, many developers find themselves in a situation where
management has chosen RUP and forces them to follow it. Fortunately, RUP is flexible and can be tailored to be reasonably agile. Still, developers and project stakeholders must agree on the extent of the tailoring.
Fifth, they successfully implemented the core disciplines of iterative and incremental development. Experienced modelers might have difficulty modeling AM practices such as “model in small increments,” “iterate to another artifact,” and “create several models in parallel.” Traditional modeling techniques often promote a single-
artifact approach, such as use-case modeling or user-interface prototyping sessions, and a BDUF/BMUF approach in which you model everything in detail before coding. Although in theory, focusing on one artifact at a time should have enabled the modelers to get it right quickly, practice shows this isn’t the case. Instead of use-case modeling sessions, the team tried to run requirements-
modeling sessions in which they worked on use cases, class responsibility collaborator cards, business rules, and user interface prototypes simultaneously. Similarly, they held analysis sessions where use-case modeling, sequence diagramming, UI prototyping, and class modeling made sense. They also held design sessions on class modeling, state modeling, data modeling, component modeling, UI prototyping, and even developing business code.
Sixth, they complied with the rule of simplicity. Simplicity is a fundamental value of AUP and AM in particular, promoting several critical principles that dramatically improved the effectiveness of our modeling efforts. Instead of specifying everything possible, we created sequence diagrams that were just good enough to depict the likely functionality of the automation of the daily tasks, and began coding from there. Agile modelers assume that programmers can figure out the details during development and therefore focus on issues that might not be so obvious. By keeping the models simple, the team worked faster while creating something of actual value to the programmers—models that focused on critical issues.
Seventh, they staffed the project with personnel who can contribute in both modeling and development. Many organizations have separate positions for modelers, motivating their staff to focus on specialties—a practice that in our experience reduces agility. Although RUP states clearly that individual developers can and should take multiple roles on a project, in general, most organizations adopting RUP don’t follow this advice. They tend to introduce positions along the lines of the process’s modeling roles—for example, requirements analyst, system analyst, UI designer, database designer—and therefore label people with unique roles, going against the advice of both RUP and AUP. People whose only job on a software project is to produce models tend to overmodel things for two reasons. First, they naturally want to do a good job. Second, there’s a hand-off and therefore greater motivation to add more detail to the model, detail that likely wouldn’t be needed if the people developing models also wrote the code.
Finally, they adapted AM’s principle of honest, open communication. Development teams are usually reluctant to follow the “display models publicly” practice with people external to the team, often because they’re afraid of what another political faction in the organization would do with that information. They initially hesitated to communicate the models to stakeholders outside the development team owing to anticipated criticism. Fortunately, this criticism never materialized. As soon
For a RUP project team to adopt AUP and AM techniques,10–11 it must overcome common developer misconceptions about RUP as well as several cultural barriers common in organizations that instantiate RUP. The team needed to start thinking outside of the current UML-centric nature of RUP.
To do this, the team tried and mostly succeeded in the following eight goals.
First, they detached from the phrase “use-case driven.” Use cases, elaborated by developers (playing also the business analyst role) weren’t sufficient to drive the team to the final product. Use cases are good for documenting behavioral requirements, but that was only a part of the functional-requirements picture and a smaller part of the total requirements picture. Use cases aren’t the best for documenting business rules, user interface requirements, constraints, or nonfunctional requirements. This is why RUP includes a supplementary specification to contain all these other things.
Second, they acknowledged that there are more modeling artifacts than those that UML offers. AM’s multiple-models principle reminds developers that we have many modeling artifacts at our disposal, such as change cases, user stories, business rules, UML activity diagrams, UML class diagrams, data models, and external interface specifications. Many people perceive that RUP is simply a process for using UML. However, RUP recognizes that a wide range of models is needed to explore the complexities of modern software, and recent versions include data modeling and user interface design activities that are currently outside UML’s scope. Third, they recognized that RUP isn’t inherently documentation-centric. RUP clarifies that only the required artifacts must be developed; however, many software professionals often neglect this. The team had to question every model that RUP suggests to determine the ones it needed for the project. It found AM’s “travel light” and “model with a purpose” principles beneficial, as well as the “update only when it hurts” and “discard temporary models” practices.
Fourth, they created an agreed-upon process-based perspective for both developers and project stakeholders. Managers often tend toward prescriptive software processes such as RUP. Developers, on the other hand, tend toward agile techniques such as Extreme Programming and AM on the basis of the techniques’ perceived focus on building software. Because management is the decision-making authority, many developers find themselves in a situation where
management has chosen RUP and forces them to follow it. Fortunately, RUP is flexible and can be tailored to be reasonably agile. Still, developers and project stakeholders must agree on the extent of the tailoring.
Fifth, they successfully implemented the core disciplines of iterative and incremental development. Experienced modelers might have difficulty modeling AM practices such as “model in small increments,” “iterate to another artifact,” and “create several models in parallel.” Traditional modeling techniques often promote a single-
artifact approach, such as use-case modeling or user-interface prototyping sessions, and a BDUF/BMUF approach in which you model everything in detail before coding. Although in theory, focusing on one artifact at a time should have enabled the modelers to get it right quickly, practice shows this isn’t the case. Instead of use-case modeling sessions, the team tried to run requirements-
modeling sessions in which they worked on use cases, class responsibility collaborator cards, business rules, and user interface prototypes simultaneously. Similarly, they held analysis sessions where use-case modeling, sequence diagramming, UI prototyping, and class modeling made sense. They also held design sessions on class modeling, state modeling, data modeling, component modeling, UI prototyping, and even developing business code.
Sixth, they complied with the rule of simplicity. Simplicity is a fundamental value of AUP and AM in particular, promoting several critical principles that dramatically improved the effectiveness of our modeling efforts. Instead of specifying everything possible, we created sequence diagrams that were just good enough to depict the likely functionality of the automation of the daily tasks, and began coding from there. Agile modelers assume that programmers can figure out the details during development and therefore focus on issues that might not be so obvious. By keeping the models simple, the team worked faster while creating something of actual value to the programmers—models that focused on critical issues.
Seventh, they staffed the project with personnel who can contribute in both modeling and development. Many organizations have separate positions for modelers, motivating their staff to focus on specialties—a practice that in our experience reduces agility. Although RUP states clearly that individual developers can and should take multiple roles on a project, in general, most organizations adopting RUP don’t follow this advice. They tend to introduce positions along the lines of the process’s modeling roles—for example, requirements analyst, system analyst, UI designer, database designer—and therefore label people with unique roles, going against the advice of both RUP and AUP. People whose only job on a software project is to produce models tend to overmodel things for two reasons. First, they naturally want to do a good job. Second, there’s a hand-off and therefore greater motivation to add more detail to the model, detail that likely wouldn’t be needed if the people developing models also wrote the code.
Finally, they adapted AM’s principle of honest, open communication. Development teams are usually reluctant to follow the “display models publicly” practice with people external to the team, often because they’re afraid of what another political faction in the organization would do with that information. They initially hesitated to communicate the models to stakeholders outside the development team owing to anticipated criticism. Fortunately, this criticism never materialized. As soon
การแปล กรุณารอสักครู่..