The document discusses key questions in object-oriented analysis and design (OOAD) such as how to identify classes, attributes, behaviors and how objects should interact. It also discusses the importance of properly allocating responsibilities to software components. The document notes that assigning responsibilities is a critical ability in OOAD and is something that must be done when creating UML diagrams or programming. It influences the robustness, maintainability and reusability of software.
The document discusses key questions in object-oriented analysis and design (OOAD) such as how to identify classes, attributes, behaviors and how objects should interact. It also discusses the importance of properly allocating responsibilities to software components. The document notes that assigning responsibilities is a critical ability in OOAD and is something that must be done when creating UML diagrams or programming. It influences the robustness, maintainability and reusability of software.
The document discusses key questions in object-oriented analysis and design (OOAD) such as how to identify classes, attributes, behaviors and how objects should interact. It also discusses the importance of properly allocating responsibilities to software components. The document notes that assigning responsibilities is a critical ability in OOAD and is something that must be done when creating UML diagrams or programming. It influences the robustness, maintainability and reusability of software.
The document discusses key questions in object-oriented analysis and design (OOAD) such as how to identify classes, attributes, behaviors and how objects should interact. It also discusses the importance of properly allocating responsibilities to software components. The document notes that assigning responsibilities is a critical ability in OOAD and is something that must be done when creating UML diagrams or programming. It influences the robustness, maintainability and reusability of software.
Download as PPTX, PDF, TXT or read online from Scribd
Download as pptx, pdf, or txt
You are on page 1of 28
Critical Questions of OOAD
• How to identify classes, its attributes and behaviors?
• How should responsibilities be allocated to the classes of objects? • How should objects interact? • What classes should do what? • Defining software objects and how they collaborate to fulfills the requirements?
• * Design patterns are named as problem solution
formulas that codify exemplary design principles. A more Critical Question • A critical and fundamental ability in OOAD is to skillfully assign responsibilities to software components. • Why? Answer • It is one activity that must be performed either: – To draw a UML diagram – Programming (coding) • Strongly influences the following of a software: – Robustness – Maintainability – Reusability What is Analysis and Design? • Analysis emphasizes on investigation of the problem and requirements than a solution. • Analysis can be described as: – Requirements Analysis (requirements investigations) – Object analysis (investigation of the domain objects) Design? • Emphasizes a conceptual solution that fulfills the requirements rather than its implementations. e.g. description of a database schema etc. In Short • Analysis: • do the right, things • Design: • do the things, right. So what is OOA&D? • Objects based analysis & design of the software that is under consideration for development • During OOA, Emphasis on finding and describing the objects or concepts (entities) from the problem domain. E.g. in Library Information system, some of the concepts/entities include Book, Library and Patron. • During OOD, Emphasis on defining software objects and how they collaborate to fulfills the requirements. E.g. in above example, a Book software object may have a title attribute and getChapter method. (see diagram on next slide) For example: Library System UML • Stands for Unified Modeling Language • A language for specifying, visualizing, constructing and documenting the artifacts of software systems as well as for business modeling and other non-software systems. • Started by the efforts of Grady Booch and Jim Rumbaugh in 1994 • Adopted in 1997 as a standard by OMG (Object Management Group) Difference b/w informal and a formal software development approaches:
Informal Approach Formal Approach
Building, Deploying and UP or RUP based approach, an
Maintaining iterative development What is UP and RUP? • UP stands for Unified Process. Its an iterative process. It combines commonly accepted best practices such as an iterative life cycle and risk-driven development into a cohesive or organized and well-documented description. UP is how to do and how to learn OOA/D. • RUP stands for Rational Unified Process. It is a detailed refinement of the UP. It has also been widely adopted professionally. • Rational means balanced, sensible, realistic, reasonable etc. UP or RUP • UP promotes several best practices but one stands above the others is iterative development. • In iterative approach, development is organized into a series of short, fixed length, mini-projects called iterations. • An iterative life cycle is based on the successive enlargement and refinement of a system through multiple iterations with cyclic feedback and adaption as a core drivers to converge (join) upon a suitable system. • Early iterative process ideas were known as spiral and evolutionary developments. Some additional best practices and key concepts in the UP include: • Tackle high-risk and high-value issues in early iterations continuously engage users for evaluation, feedback, and requirements • Build a cohesive (organized), core architecture in early iterations • Continuously verify quality; test early, often, and realistically • Apply use cases • Model software visually (with the UML) • Carefully manage requirements • Practice change request and configuration management Iterative Development Some points to be noted… • The output of an iteration is not an experimental or prototype. Rather the output is a production-grade subset of the final system. • Each iteration tackles new requirements and incrementally extends the system. • An iteration may occasionally revisit existing software and improve it. • Promotes early feedbacks. Importance of early feedback? • Its worth is its weight in gold. • Provides crucial practical insight and an opportunity to modify or adapt understanding of requirements and design. • End users have a chance to quickly see a practical system and say “Yes that’s what I asked for, but now I try it what I really want is something slightly different”. This “yes… but” process is not a sign of failure rather helps: • 1. to provide a skillful way to make progress of the software. • To discover what is of real value to the stakeholder. Iterative feedback and adaptation leads towards the desired system. The requirements and design instability lowers over time. Benefits of Iterative Development • Early rather than late mitigation (justification) of high risks (technical, requirements, objectives, usability, and so forth) • Early visible progress • Early feedback, user engagement, and adaptation, leading to a refined sys tem that more closely meets the real needs of the stakeholders • Managed complexity; the team is not overwhelmed by "analysis paralysis" or very long and complex steps • The learning within an iteration can be methodically used to improve the development process itself, iteration by iteration Iteration Length and Timeboxing • The UP (and experienced iterative developers) recommends an iteration length between two and six weeks. Central ideas in iterative development: • Small steps, rapid feedback, and adaptation. • Much less than two weeks: it is difficult to complete sufficient work to get meaningful throughput and feedback. • Much more than six or eight weeks: the complexity becomes rather overwhelming or crushing and feedback is delayed. • A very long iteration: misses the point of iterative development. Short is good. A key idea is that iterations are time-boxed, or fixed in length • Reasons for time-boxing: • First, Parkinson's law. Parkinson observed that "Work expands so as to fill the time available for its completion" [Parkinson58]. Distant or fuzzy completion dates (for example, six months away), exacerbate this effect • Second, prioritization and decisiveness. • Third, team satisfaction. • Fourth, stakeholder confidence. For example The successful replacement in the 1990s of the Canadian air traffic control system was developed with an iterative lifecycle and other UP practices. It involved 150 programmers and was organized into six-month iterations.2 But note that even in the case of an overall six- month project iteration, a subsystem team of 10 or 20 developers can break down their work into a series of six one-month iterations. The UP Phases and Schedule-Oriented Terms • A UP project organizes the work and iterations across four major phases: • 1. Inception— approximate vision, business case, scope, vague estimates. It is not a requirements phase rather, it is a kind of feasibility phase, where just enough investigation is done to support a decision to continue or stop. • 2. Elaboration—refined vision, iterative implementation of the core architecture, resolution of high risks, identification of most requirements and scope, more realistic estimates. It is not the requirements or design phase; rather, it is a phase where the core architecture is iteratively implemented, and high risk issues are mitigated. • 3. Construction—iterative implementation of the remaining lower risk and easier elements, and preparation for deployment. • 4. Transition—beta tests, deployment. Schedule-oriented terms in the UP The UP Disciplines (was Workflows)
• The UP describes work activities, such as
writing a use case, within disciplines Informally, a discipline is a set of activities in one subject area, such as the activities within requirements analysis. In the UP, an artifact is the general term for any work product: code, Web graphics, database schema, text documents, diagrams, models, and so on. Three Major Disciplines of UP 1. Business Modeling—When developing a single application, this includes domain object modeling. When engaged in large-scale business analysis or business process reengineering, this includes dynamic modeling of the business processes across the entire enterprise. 2. Requirements—Requirements analysis for an application, such as writing use cases and identifying non-functional requirements. 3. Design—All aspects of design, including the overall architecture, objects, databases, networking etc. Longer List of UP Disciplines Remember! • In UP, Implementation means software development and building the system, not deployment. • The Environment discipline refers to establishing the tools and customizing the process for the project—that is, setting up the tool and process environment. Sample UP Phases