object software development core activities processes requirements design engineering construction testing debugging deployment maintenance paradigms and models agile cleanroom incremental prototyping spiral v model waterfall methodologies and frameworks asd devops dad dsdm fdd iid kanban lean sd less mdd msf psp rad rup safe scrum semat tsp up xp supporting disciplines configuration management documentation software quality assurance sqa project management user experience practices atdd bdd cco ci cd ddd pp standup tdd tools compiler debugger profiler gui designer modeling ide build automation release automation infrastructure as code testing standards and bodies of knowledge babok cmmi ieee standards iso 9001 isoiec standards pmbok swebok itil glossaries artificial intelligence computer science electrical and electronics engineering vte objectoriented analysis and design ooad is a popular technical approach for analyzing and designing an application system or business by applying objectoriented programming as well as using visual modeling throughout the development life cycles to foster better stakeholder communication and product quality according to the popular guide unified process ooad in modern software engineering is best conducted in an iterative and incremental way iteration by iteration the outputs of ooad activities analysis models for ooa and design models for ood respectively will be refined and evolve continuously driven by key factors like risks and business value history in the early days of objectoriented technology before the mid1990s there were many different competing methodologies for software development and objectoriented modeling often tied to specific computer aided software engineering case tool vendors no standard notations consistent terms and process guides were the major concerns at the time which degraded communication efficiency and lengthened learning curves some of the wellknown early objectoriented methodologies were from and inspired by gurus such as grady booch james rumbaugh ivar jacobson the three amigos robert martin peter coad sally shlaer stephen mellor and rebecca wirfsbrock in 1994 the three amigos of rational software started working together to develop the unified modeling language uml later together with philippe kruchten and walker royce eldest son of winston royce they have led a successful mission to merge their own methodologies omt oose and booch method with various insights and experiences from other industry leaders into the rational unified process rup a comprehensive iterative and incremental process guide and framework for learning industry best practices of software development and project management since then the unified process family has become probably the most popular methodology and reference model for objectoriented analysis and design overview the software life cycle is typically divided up into stages going from abstract descriptions of the problem to designs then to code and testing and finally to deployment the earliest stages of this process are analysis and design the analysis phase is also often called requirements acquisition the waterfall model ooad is conducted in an iterative and incremental manner as formulated by the unified process in some approaches to software developmentknown collectively as waterfall modelsthe boundaries between each stage are meant to be fairly rigid and sequential the term waterfall was coined for such methodologies to signify that progress went sequentially in one direction only ie once analysis was complete then and only then was design begun and it was rare and considered a source of error when a design issue required a change in the analysis model or when a coding issue required a change in design the alternative to waterfall models are iterative models this distinction was popularized by barry boehm in a very influential paper on his spiral model for iterative software development with iterative models it is possible to do work in various stages of the model in parallel so for example it is possibleand not seen as a source of errorto work on analysis design and even code all on the same day and to have issues from one stage impact issues from another the emphasis on iterative models is that software development is a knowledgeintensive process and that things like analysis cant really be completely understood without understanding design issues that coding issues can affect design that testing can yield information about how the code or even the design should be modified etc although it is possible to do objectoriented development using a waterfall model in practice most objectoriented systems are developed with an iterative approach as a result in objectoriented processes analysis and design are often considered at the same time the objectoriented paradigm emphasizes modularity and reusability the goal of an objectoriented approach is to satisfy the open closed principle a module is open if it supports extension if the module provides standardized ways to add new behaviors or describe new states in the objectoriented paradigm this is often accomplished by creating a new subclass of an existing class a module is closed if it has a well defined stable interface that all other modules must use and that limits the interaction and potential errors that can be introduced into one module by changes in another in the objectoriented paradigm this is accomplished by defining methods that invoke services on objects methods can be either public or private ie certain behaviors that are unique to the object are not exposed to other objects this reduces a source of many common errors in computer programming the software life cycle is typically divided up into stages going from abstract descriptions of the problem to designs then to code and testing and finally to deployment the earliest stages of this process are analysis and design the distinction between analysis and design is often described as what vs how in analysis developers work with users and domain experts to define what the system is supposed to do implementation details are supposed to be mostly or totally depending on the particular method ignored at this phase the goal of the analysis phase is to create a functional model of the system regardless of constraints such as appropriate technology in objectoriented analysis this is typically done via use cases and abstract definitions of the most important objects the subsequent design phase refines the analysis model and makes the needed technology and other implementation choices in objectoriented design the emphasis is on describing the various objects their data behavior and interactions the design model should have all the details required so that programmers can implement the design in code objectoriented analysis the purpose of any analysis activity in the software lifecycle is to create a model of the systems functional requirements that is independent of implementation constraints the main difference between objectoriented analysis and other forms of analysis is that by the objectoriented approach we organize requirements around objects which integrate both behaviors processes and states data modeled after real world objects that the system interacts with in other or traditional analysis methodologies the two aspects processes and data are considered separately for example data may be modeled by er diagrams and behaviors by flow charts or structure charts the primary tasks in objectoriented analysis ooa are find the objects organize the objects describe how the objects interact define the behavior of the objects define the internals of the objects common models used in ooa are use cases and object models use cases describe scenarios for standard domain functions that the system must accomplish object models describe the names class relations eg circle is a subclass of shape operations and properties of the main objects userinterface mockups or prototypes can also be created to help understanding objectoriented design during objectoriented design ood a developer applies implementation constraints to the conceptual model produced in objectoriented analysis such constraints could include the hardware and software platforms the performance requirements persistent storage and transaction usability of the system and limitations imposed by budgets and time concepts in the analysis model which is technology independent are mapped onto implementing classes and interfaces resulting in a model of the solution domain ie a detailed description of how the system is to be built on concrete technologies important topics during ood also include the design of software architectures by applying architectural patterns and design patterns with objectoriented design principles objectoriented modeling objectoriented modeling oom is a common approach to modeling applications systems and business domains by using the objectoriented paradigm throughout the entire development life cycles oom is a main technique heavily used by both ood and ooa activities in modern software engineering objectoriented modeling typically divides into two aspects of work the modeling of dynamic behaviors like business processes and use cases and the modeling of static structures like classes and components ooa and ood are the two distinct abstract levels ie the analysis level and the design level during oom the unified modeling language uml and sysml are the two popular international standard languages used for objectoriented modeling the benefits of oom are efficient and effective communication users typically have difficulties in understanding comprehensive documents and programming language codes well visual model diagrams can be more understandable and can allow users and stakeholders to give developers feedback on the appropriate requirements and structure of the system a key goal of the objectoriented approach is to decrease the semantic gap between the system and the real world and to have the system be constructed using terminology that is almost the same as the stakeholders use in everyday business objectoriented modeling is an essential tool to facilitate this useful and stable abstraction modeling helps coding a goal of most modern software methodologies is to first address what questions and then address how questions ie first determine the functionality the system is to provide without consideration of implementation constraints and then consider how to make specific solutions to these abstract requirements and refine them into detailed designs and codes by constraints such as technology and budget objectoriented modeling enables this by producing abstract and accessible descriptions of both system requirements and designs ie models that define their essential structures and behaviors like processes and objects which are important and valuable development assets with higher abstraction levels above concrete and complex source code atlas transformation language atl classresponsibilitycollaboration card crc cards domain specific language dsl domaindriven design domainspecific modelling dsm metaobject facility mof metamodeling modeldriven engineering mde modelbased testing mbt object modeling language objectoriented modeling objectoriented programming objectoriented user interface qvt shlaermellor software analysis pattern storydriven modeling unified modeling language uml xml metadata interchange xmi grady booch objectoriented analysis and design with applications 3rd edition httpwwwinformitcomstoreproductaspxisbn020189551x addisonwesley 2007 rebecca wirfsbrock brian wilkerson lauren wiener designing object oriented software prentice hall 1990 a theory of objectoriented design the buildingblocks of ood and notations for representing them with focus on design patterns martin fowler analysis patterns reusable object models addisonwesley 1997 bertrand meyer objectoriented software construction prentice hall 1997 craig larman applying uml and patterns introduction to ooad iterative development prentice hall ptr 3rd ed 2005mnnmnnnn setrag khoshafian object orientation ulrich norbisrath albert zndorf ruben jubeh story driven modeling amazon createspace p333 2013 isbn9781483949253 wikiversity has learning resources about object oriented software design article objectoriented analysis and design with uml and rup an overview also about crc cards applying uml object oriented analysis design tutorial ooad uml resource website and forums object oriented analysis design with uml software requirement analysis using uml article by dhiraj shetty article objectoriented analysis in the real world vteunified modeling languageactors organizations object management group uml partners persons grady booch ivar jacobson james rumbaugh conceptsobject oriented objectoriented programming objectoriented analysis and design objectoriented modeling structure actor attribute artifact class component interface object package profile diagram behavior activity event message method state use case relationships association composition dependency generalization or inheritance extensibility profile stereotype other multiplicity diagramsstructure class component composite structure deployment object package behaviour activity state machine use case interaction communications sequence interaction overview timing derived languages systems modeling language sysml uml exchange format uxf xml metadata interchange xmi executable uml xuml other topics glossary of uml terms rational unified process list of unified modeling language tools object modeling in color 