460 likes | 736 Vues
Chapter 14 Current Trends in System Development. Chapter 17 Systems Analysis and Design in a Changing World, 3 rd Edition. Rapid Application Development. RAD is overused and poorly understood Software developers claim they do, but cannot precisely define Equated with tools and techniques
E N D
Chapter 14Current Trends in System Development Chapter 17 Systems Analysis and Design in a Changing World, 3rd Edition
Rapid Application Development • RAD is overused and poorly understood • Software developers claim they do, but cannot precisely define • Equated with tools and techniques • Prototyping, fourth-generation programming languages, CASE tools • Object-oriented analysis, design, and development • Tool vendors and methodologies claim RAD • Competing and confusing claims
Reasons for Slow Development • Rework • Using the wrong software • Not meeting minimum quality standards • Shifting requirements and project changes • Changes to design and construction • Improper tools and techniques for project • Reduces quality, increases development time
What is RAD? • Collection of development approaches, techniques, tools, and technologies • RAD proven to shorten development schedules • No universal RAD approach shortens every project schedule • No technique, tools or technology fits perfectly • Key is identifying overall development approach and matching set of techniques, tools, techniques most suitable to approach and specific project
RAD in Perspective • Conventional SDLC approach typically sequential • Completely define requirements before design • Make major design decisions before implementation • Systems were simple, development tools were primitive, hardware was expensive and slow • Project characteristics determine approach • Iterative approaches better for large project and/or uncertain requirements
Development Approach as a Function of Project Characteristics
Prototyping Approach to Development • Discovery prototype • Used in analysis or early design • Uncover or refine system requirements • Can be thrown away • Developmental prototype • Not thrown away • Part of iterative development until final system complete
System Development Based on Developmental Prototypes Planning Analysis Architectural Design Analysis & Design Construction Testing & Evaluation Additional Implementation
When to Use a Prototyping Approach • When to use: • Requirements cannot be fully specified outside of architectural or detailed design • Technical feasibility unknown or uncertain • Development tools powerful enough to create functional system • When not to use: • System is non-interactive or internally complex • Strict security or performance requirements exist
Prototyping Tool Requirements • Development speed • Flexibility and power • Techniques and capabilities • WYSIWYG (what you see is what you get) • Generation of complete programs, program skeletons, or database schemas from diagrams • Rapid customization of software libraries or components • Error-checking and debugging capabilities
Project Conditions Determine Prototyping Tools • Suitability for technical environment in which system will be deployed • Ability to implement all system requirements • Ability to interface with software developed with other tools • Object-oriented, component-based, and Web service technologies and standards make software interoperability more achievable.
Spiral Approach to Development • Iterative development approach • Each iteration may include combination of planning, analysis, design, or development steps • More radical departure from traditional development than prototyping development
Steps in the Spiral Development Approach • Criteria for feature selection for each prototype • User priorities • Uncertain requirements • Function reuse • Implementation risk • Break into categories • “Must have”, “Should have”, “Nice to have” • Complete high priorities earlier to reduce risk
Benefits and Risks of Spiral Development • Benefits • High parallelism • High user involvement • Gradual resource commitment • Frequent product delivery • Risks • Management difficulties and design complexity • More potential for rework
eXtreme Programming (XP) • Rapid development approach • Focused on creating user stories, delivering releases of system, and quickly testing • Developed by Kent Beck in mid-1990’s • Borrows heavily on earlier development approaches such as prototyping, object-oriented development, and pair programming
XP Principles and Techniques • Continuous automated testing • Continuous integration • Heavy user involvement • Team programming or pair programming • Specific attention to human interactions and limitations
Comparison of Traditional, Spiral, and XP Development
When to Use XP • Small development teams (12 or less) • Talented development personnel with broad range of skills • Limited scope of projects • Stand-alone • New systems • Minimal interfaces to legacy system • Extensive use of high-quality OO development and testing tools
The Unified Process • Comprehensive development approach • Originally developed by Jacobsen, Booch, and Rumbaugh in late 1990s • Dominant approach for developing software with OO models and tools • Adopts iteration from prototyping and spiral development approaches • Exclusive reliance on OO models, tools, and techniques
How the UP Organizes Software Development • UP’s SDLC includes four high-level activities: • Inception– similar to project planning • Elaboration– defining requirements in more detail and concentrate on analysis, design, construction for high risk and complex activities • Construction– complete programming, testing, and installation for lower-risk and simpler activities • Transition– test and deploy entire production system
Iterations and Disciplines • Timeboxing - organizing a complex task or project into series of equal-length time intervals • More effective when iterations are relatively short and each iteration produces concrete result • Frequent testing, immediate user feedback, motivation, and greater accomplishment • Disciplines include business modeling, requirements, design, implementation, and project management
When to Use the Unified Process • Benefits and risks mirror spiral development • Major obstacles to adopt UP include: • Complex project management (compared to sequential development) required • Need to adopt OO models, tools, techniques throughout project • UP’s formal steps, well-defined roles, attention to model building and validation makes UP preferred approach for large-scale development
Rapid Development Techniques • Collection of guidelines used to help an analyst complete system development activities or tasks • Risk management • Joint application design (JAD) • Tool-based development • Software reuse • Object frameworks
Risk Management • Systematic process of identifying and mitigating software development risks • Most risks can be identified if specific attention is directed to them • Risks appear, disappear, increase, and decrease as development process proceeds • Small risks should be monitored and large risks mitigated • Every project should use risk management
Major Categories of Development Schedule Risk
Steps in Risk Management Identify project risks Estimate risk outcomes & probabilities Prioritize risks Develop & implement mitigation strategies Project completed
Joint Application Design • Effective technique for quickly defining system requirements • Shortens development time by including all key decision makers • Can be incorporated into any development approach • Well suited to iterative development approaches
Tool-Based Development • Chooses tool(s) that best match system requirements • Do not develop any requirements not easily implemented with selected tool (s) • Applies generic 80/20 or 90/10 rule - resources best used to construct system that satisfies 80% or 90% of requirements most easily implemented • System limited by tool • No tool works for all development approaches
Software Reuse • Mechanism that allows software used for one purpose to be reused for another • Can shorten development schedule • Possible time savings must also consider • Effort required to identify reusable software • Effort required for modification • Extent to which software must be repackaged
Comparison of Various OO Code Reuse Methods
Object Frameworks • Set of foundation classes specifically designed to be reused in wide variety of programs or systems • User-interface classes • Generic data structure classes • Relational database interface classes • Classes specific to an application area • Programmers modify class attributes and methods for requirements of specific applications
Impact of Object Frameworks on Design • Frameworks must be chosen before detailed design begins • System must conform to specific assumptions about application program structure and operation that framework imposes • Development personnel must be trained on frameworks • Multiple frameworks might be required • Early compatibility and integration testing
Components • Standardized and interchangeable software module that is fully assembled and ready to use • Well-defined interfaces to connect component to clients or other components • Components are reusable packages of executable code • Structured design and object frameworks are methods of reusing source code
Component Standards and Infrastructure • Interoperability of components requires standards • Common Object Request Broker Architecture (CORBA) • Component Object Model Plus (COM+) • Enterprise JavaBean (EJB) • Simple Object Access Protocol (SOAP) and .NET • Web services
Components and the Development Life Cycle • Purchased components can form part or all of system • Components provide one model for designing and deploying systems • Component issues • Internally developed components • Object-oriented techniques • Designing components for reuse
Activities Added to SDLC Phases when Components are Purchased
Components and System Performance • Examine component-based designs to estimate network traffic patterns • Examine existing server capacity and network infrastructure to determine communication ability • Upgrade network and server prior to development • Test system performance and make adjustments • Continuously monitor system performance • Redeploy components, upgrade server capacity, and upgrade network to reflect changed conditions
Summary • Rapid application development (RAD) has goal of speeding application development • RAD techniques include risk management, joint application design, tool-based design, and software reuse • RAD approaches include prototyping, eXtreme programming, spiral development, the Unified Process • RAD tools include object frameworks and components and supporting infrastructure
Summary (continued) • Developer must examine project characteristics to determine which RAD concepts are likely to speed development • Software reuse and inheritance • Providing a library of reusable source code • Can be quickly adapted to new application requirements and operating environment • Components are units of reusable executable code that can be plugged into applications