490 likes | 497 Views
Explore the Agile Development philosophy, learn about Agile Modeling, compare Extreme Programming and Scrum, and understand the importance of Model-Driven Architecture in enterprise-level development.
E N D
Objectives • Explain the Agile Development philosophy • List and describe the features of Agile Modeling • Compare and contrast the features of Extreme Programming and Scrum development • Explain the importance of Model-Driven Architecture on enterprise-level development • Describe frameworks and components, the process by which they are developed, and their impact on system development Object-Oriented Analysis and Design with the Unified Process
Overview • The IS discipline is dynamic and ever changing • More complex system requirements have necessitated a whole new set of tools • Radical, adaptive approaches, including Agile Development, Extreme Programming, and Scrum • Model-Driven Architecture for enterprise-level systems • Object frameworks and components to increase productivity and quality Object-Oriented Analysis and Design with the Unified Process
Software Principles and Practices • Ubiquitous computing is the current trend in our society • Using computer technology in every aspect of our lives • The effort to develop current solutions is demanding • Current trends in modeling and in processes use five important principles Object-Oriented Analysis and Design with the Unified Process
Software Principles and Practices (continued) • Abstraction • Process of extracting core principles from a set of facts or statement • Example: Metamodels describe the characteristics of another model • Models and Modeling • An abstraction of something in the real world, representing a particular set of properties Object-Oriented Analysis and Design with the Unified Process
Software Principles and Practices (continued) • Patterns • Standard solutions to a given problem or templates that can be applied to a problem • Reuse • Building standard solutions and components that can be used over and over again • Methodologies • A process - including the rules, guidelines, and techniques - that defines how systems are built Object-Oriented Analysis and Design with the Unified Process
Adaptive Approaches to Development • Allow for uncertainty • Use empirical controls • Describe processes that are variable and unpredictable • Monitor progress and make corrections on the fly • Share the following characteristics • Less emphasis on up-front analysis, design, and documentation Object-Oriented Analysis and Design with the Unified Process
Adaptive Approaches to Development (continued) • More focus on incremental development • More user involvement in project teams • Reduced detailed planning • Used for near-term work phases only • Tightly controlled schedules by fitting work into discrete time boxes • More use of small work teams that are self-organizing Object-Oriented Analysis and Design with the Unified Process
The Agile Development Philosophy and Modeling • Agile Development • A philosophy and set of guidelines for developing software in an unknown, rapidly changing environment • Requires agility - being able to change direction rapidly, even in the middle of a project • Agile Modeling • A philosophy about how to build models, some of which are formal and detailed and others sketchy and minimal Object-Oriented Analysis and Design with the Unified Process
The Agile Development Philosophy and Values • Responding to change over following a plan • An agile project is chaordic - both chaotic and ordered • Individuals and interactions over processes and tools • Working software over comprehensive documentation • Customer collaboration over contract negotiation Object-Oriented Analysis and Design with the Unified Process
Figure 14-1 Adaptive methodologies using Agile Modeling Object-Oriented Analysis and Design with the Unified Process
Agile Modeling Principles • AM is about doing the right kind of modeling at the right level of detail for the right purposes • Use models as a means to an end instead of building models as end deliverables • Does not dictate which models to build or how formal to make those models • Has basic principles to express attitude that developers should have as they develop software (Figure 14-2) Object-Oriented Analysis and Design with the Unified Process
Figure 14-2 Agile Modeling principles Object-Oriented Analysis and Design with the Unified Process
The heart of AM is in its modeling practices, which give the practitioner specific modeling techniques Figure 14-3 Agile Modeling practices Object-Oriented Analysis and Design with the Unified Process
Extreme Programming • An adaptive, agile development methodology created in the mid-1990s • Extreme programming • Takes proven industry best practices and focuses on them intensely • Combines those best practices (in their intense form) in a new way to produce a result that is greater than the sum of the parts Object-Oriented Analysis and Design with the Unified Process
XP Core Values • Communication • In open, frequent verbal discussions • Simplicity • In designing and implementing solutions • Feedback • On functionality, requirements, designs, and code • Courage • In facing choices such as throwing away bad code or standing up to a too-tight schedule Object-Oriented Analysis and Design with the Unified Process
Figure 14-4 XP core values and practices Object-Oriented Analysis and Design with the Unified Process
Some XP Practices • Planning • Users develop a set of stories to describe what the system needs to do • Testing • Tests are written before solutions are implemented • Pair programming • Two programmers work together on designing, coding, and testing Object-Oriented Analysis and Design with the Unified Process
Some XP Practices (continued) • Refactoring • Improving code without changing what it does • Owning the code collectively • Anyone can modify any piece of code • Continuous integration • Small pieces of code are integrated into the system daily or more often • System metaphor • Guides members towards a vision of the system Object-Oriented Analysis and Design with the Unified Process
XP Project Activities • System-level activities • Occur once during each development project • Involve creating user stories to planning releases • Release-level activities • Cycle multiple times - once for each release • Are developed and tested in a period of no more than a few weeks or months • Iteration-level activities • Code and test a specific functional subset in a few days or weeks Object-Oriented Analysis and Design with the Unified Process
Figure 14-5 The XP development approach Object-Oriented Analysis and Design with the Unified Process
Scrum • A quick, adaptive, and self-organizing development methodology • Named after rugby’s system for getting an out-of-play ball into play • Responds to a current situation as rapidly and positively as possible • A truly empirical process control approach to developing software Object-Oriented Analysis and Design with the Unified Process
Figure 14-6 Scrum software development process Object-Oriented Analysis and Design with the Unified Process
Scrum Philosophy • Responsive to a highly changing, dynamic environment • Focuses primarily on the team level • Team exerts total control over its own organization and work processes • Uses a product backlog as the basic control mechanism • Prioritized list of user requirements used to choose work to be done during a Scrum project Object-Oriented Analysis and Design with the Unified Process
Scrum Organization • Product owner • The client stakeholder for whom a system is being built • Maintains the product backlog list • Scrum master • Person in charge of a Scrum project • Scrum team or teams • Small group of developers • Set their own goals and distribute work among themselves Object-Oriented Analysis and Design with the Unified Process
Scrum Practices • Sprint • The basic work process in Scrum • A time-controlled miniproject • Firm 30-day time box with a specific goal or deliverable • Parts of a sprint • Begins with a one-day planning session • A short daily Scrum meeting to report progress • Ends with a final half-day review Object-Oriented Analysis and Design with the Unified Process
Project Management and Methodologies • Project time management • Smaller scope and focused on each iteration • Realistic work schedules • Project scope management • Users and clients are responsible for the scope • Scope control consists of controlling the number of iterations • Project cost management • More difficult to predict because of unknowns Object-Oriented Analysis and Design with the Unified Process
Project Management and Methodologies (continued) • Project communication management • Critical because of open verbal communication and collaborative work • Project quality management • Continual testing and refactoring must be scheduled • Project risk management • High-risk aspects addresses in early iterations Object-Oriented Analysis and Design with the Unified Process
Project Management and Methodologies (continued) • Project human resource management • Teams organize themselves • Project procurement management • Integrating purchased elements into the overall project • Verifying quality or components • Satisfying contractual commitments Object-Oriented Analysis and Design with the Unified Process
Model-Driven Architecture - Generalizing Solutions • Model-Driven Architecture (MDA) is an OMG (Object Management Group) initiative • Built on the principles of abstraction, modeling, reuse and patterns • Provides companies with a framework to identify and classify all system development work being done in an enterprise • MDA extracts current systems features and information and combines them into a platform independent model (PIM) Object-Oriented Analysis and Design with the Unified Process
Figure 14-7 Software development and MDA Object-Oriented Analysis and Design with the Unified Process
Model-driven Architecture (continued) • Platform-independent model (PIM) • Describes system characteristics are not specific to any deployment diagram • Uses UML • Platform-specific model (PSM) • Describes system characteristics that include deployment platform requirements • A set of standard transformations by the OMG move a PSM to a PIM Object-Oriented Analysis and Design with the Unified Process
Figure 14-8 Metamodels and transitions between PIM, PSM, and code Object-Oriented Analysis and Design with the Unified Process
Object Frameworks • A set of classes that are designed to be reused in a variety of programs • The classes within an object framework are called foundation classes • Can be organized into one or more inheritance hierarchies • Application-specific classes can be derived from existing foundation classes Object-Oriented Analysis and Design with the Unified Process
Object Framework Types • User-interface classes • Commonly used objects within a GUI • Generic data structure classes • Linked lists, binary trees, etc., and related processing operations • Relational database interface classes • Classes to create and perform operations on tables • Classes specific to an application area • For use in a specific industry or application type Object-Oriented Analysis and Design with the Unified Process
Impact on Design and Implementation • Frameworks must be chosen early in the project • Systems design must conform to specific assumptions about application program structure and operation that the framework imposes • Design and development personnel must be trained to use a framework effectively • Multiple frameworks may be required, necessitating early compatibility and integration testing Object-Oriented Analysis and Design with the Unified Process
Components • Software modules that are fully assembled and ready to use • Reusable packages of executable code • Has well-defined interfaces to connect it to clients or other components • Public interface and encapsulated implementation • Standardized and interchangeable • Updating a single component does not require relinking, recompiling, and redistributing an entire application Object-Oriented Analysis and Design with the Unified Process
Component Standards and Infrastructure • Interoperability of components requires standards to be developed and readily available • Components may also require standard support infrastructure • Software components have more flexibility when they can rely on standard infrastructure services to find other components • Networking standards are required for components in different locations Object-Oriented Analysis and Design with the Unified Process
CORBA and COM+ • CORBA (Common Object Request Broker Architecture) is a standard for software component connection and interaction developed by the OMG • An object request broker (ORB) provides component directory and communication services • The Internet Inter-ORB Protocol (IIOP) is used to communicate among objects and ORBs • Component Object Model Plus (COM+) is a standard for software component connection and interaction developed by Microsoft Object-Oriented Analysis and Design with the Unified Process
Enterprise JavaBeans • Part of the Java programming language’s extensive object framework (JDK) • A JavaBean that can execute on a server and communicate with clients and other components using CORBA • A JavaBean implements the required component methods and follows the required naming conventions of the JavaBean standard • Platform independent Object-Oriented Analysis and Design with the Unified Process
SOAP and .NET • Simple Object Access Protocol (SOAP) is a standard for component communication over the Internet using HTTP and XML • An open standard • Does not have the infrastructure requirements or proprietary technology of CORBA and COM+ • Adopted by Microsoft as the basis of its .NET distributed software platform • Used for Web services Object-Oriented Analysis and Design with the Unified Process
Figure 14-10 Component communication using SOAP Object-Oriented Analysis and Design with the Unified Process
Components and the Development Life Cycle • Component purchase and reuse is a viable approach to speeding completion of a system • Purchased components can form all or part of a newly developed or reimplemented system • Components can be designed in-house and deployed in a newly developed or reimplemented system Object-Oriented Analysis and Design with the Unified Process
Using Purchased Components - Implications • Standards and support software of purchased components must become part of the technical requirements definition • A component’s technical support requirements restrict the options considered during software architectural design Object-Oriented Analysis and Design with the Unified Process
Using Purchased Components - Implications (continued) • Hardware and system software providing component services must be acquired, installed, and configured before testing begins • Components and their support infrastructure must be maintained after system deployment Object-Oriented Analysis and Design with the Unified Process
Monitoring System Performance • Examine component-based designs to estimate network traffic patterns and demands on computer hardware • Examine existing server capacity and network infrastructure to determine their ability to accommodate communication among components • Upgrade network and server capacity prior to development and testing Object-Oriented Analysis and Design with the Unified Process
Monitoring System Performance (continued) • Test system performance during development and make any necessary adjustments • Continuously monitor system performance after deployment to detect emerging problems • Redeploy components, upgrade server capacity, and upgrade network capacity to reflect changing conditions Object-Oriented Analysis and Design with the Unified Process
Summary • Adaptive development methodologies • Agile Modeling and Agile Development • Flexibility in an unpredictable business world • Extreme Programming • Tests are written first • Programmers work in pairs • Scrum • Defines a specific goal that can be completed within four weeks Object-Oriented Analysis and Design with the Unified Process
Summary (continued) • Model-Driven Architecture (MDA) • Provides techniques for large organizations to integrate all software and all software development across the entire enterprise • Software reuse is a fundamental approach to rapid development • Object frameworks provide a means of reusing existing software through inheritance • Components are units of reusable executable code that behave as distributed objects Object-Oriented Analysis and Design with the Unified Process