Chapter 1 Introduction to OOSAD 2 Chapter one - Objective Review of Software, Systems and System thinking. Structured Vs object oriented paradigm The potential benefits of object orientation The potential drawbacks of object orientation The object oriented software process models 7/6/2021 Chapter 1 Introduction to OOSAD 3 1. What is System, System thinking?? A system is an interrelated set of business procedures (or components) used within one business unit, working together to achieve some purpose. Read about the 7 important characteristics of a system.?? Systems thinking is the ability to see organizations and information systems as systems. Systems thinking provides a framework from which to see the important relationships among information systems, the organizations they exist in, and the environment in which the organizations themselves exist. 7/6/2021 Chapter 1 Introduction to OOSAD Systems, System thinking cont’d… Important systems concepts: Decomposition- Breaking a system into smaller subsystems (Components). Modularity- This is a direct result of decomposition. It refers to dividing a system into chunks or modules of a relatively uniform size Coupling: Subsystems should be as independent as possible (Loose Coupling) Cohesion: This is the extent to which a subsystem performs a single function- separation of concern (Highly Cohesiveness) 7/6/2021 Chapter 1 Introduction to OOSAD 4 Software – Product Vs Process The product Information system Software The process System development Software engineering 7/6/2021 Chapter 1 Introduction to OOSAD 5 6 Software Cont’d… System development ultimate objectives Problem solving Supporting processes Participants and roles in system/software production Users Mangers (owners) Analysts Designers Programmers Consultants 7/6/2021 Chapter 1 Introduction to OOSAD Factors Initiating Software Development Scenarios initiating system/software development Real problem on the day-to-day task By end users Looking for effectiveness and efficiency By mangers Sensing new opportunities and technologies By technical personnel 7/6/2021 Chapter 1 Introduction to OOSAD 7 8 The Inherent Nature of Software Complexity Some software systems are not complex. These are the largely forgettable applications that are specified, constructed, maintained, and used by the same person( Amateur or Professional). This is not to say that all such systems are crude and inelegant, nor do we mean to belittle their creators. Such systems tend to have a very limited purpose and a very short life span. More interested in the challenges of developing what we will call industrial-strength software. Applications that exhibit a very rich set of behaviors Applications that maintain the integrity of hundreds of thousands of records of information while allowing concurrent updates and queries. Systems for the command and control of real-world entities, such as the routing of air or railway traffic. 7/6/2021 Chapter 1 Introduction to OOSAD Software Complexity Cont’d… Such Complex Software systems tend to have a long life span, and over time, many users come to depend on their proper functioning. In the world of industrial-strength software, we also find frameworks that simplify the creation of domain-specific applications, and programs that mimic some aspect of human intelligence. Such Systems are complex, for they are the means and artifacts of incremental and exploratory development. 7/6/2021 Chapter 1 Introduction to OOSAD 9 Distinguishing characteristic of industrialstrength software –Complex Systems Complex systems are Intensely difficult, if not impossible for the individual developer to comprehend all the subtleties of its design. The complexity of such systems exceeds the human intellectual capacity. Unfortunately, this complexity we speak of seems to be an essential property of all large software systems. We may master how to solve this complexity, but we cannot avoid. Hence, the complexity of large software is an essential property, not an accidental one. 7/6/2021 Chapter 1 Introduction to OOSAD 10 Inherent complexity derives from four elements The complexity of the problem domain competing, perhaps even contradictory requirements Arbitrary non-functional requirements( external requirements) The difficulty of managing the development process. Systems are developed with hundreds of thousands or even millions of lines of code . This amount of work demands that we use a team of developers, and ideally we use as small a team as possible. However, no matter what its size, there are always significant challenges associated with team development. Having more developers means more complex communication and hence more difficult coordination 7/6/2021 Chapter 1 Introduction to OOSAD 11 Elements of Software Complexitycont’d… The flexibility possible through software. Should I acquire the building blocks like a construction company or develop them myself? Software offers the ultimate flexibility, so it is possible for a developer to express almost any kind of abstraction by himself- seductive property of software development. In other industries, such as in construction, there are some standards about the type or size of steel used, the bricks molded etc. Few such standards exist in the software industry. As a result, software development remains a labor-intensive business. The problems of characterizing the behavior of discrete systems Discrete systems such as digital computers systems have unrollable inter-state phase that we don’t find in analog states. This could corrupt the system accidentally if proper event interaction between the different objects is not carefully crafted. 7/6/2021 Chapter 1 Introduction to OOSAD 12 13 Attributes of Complex Systems There are five common characteristics of Complex Systems. Hierarchic Structure Frequently, complexity takes the form of a hierarchy, whereby a complex system is composed of interrelated subsystems that have in turn their own subsystems, and so on, until some lowest level of elementary components is reached.( System thinking?!) The architecture of a complex system is a function of its components as well as the hierarchic relationships among these components. 7/6/2021 Chapter 1 Introduction to OOSAD Hierarchical(Canonical) form of complex systems 7/6/2021 Chapter 1 Introduction to OOSAD 14 Attributes of Complex Systems Cont’d… Relative Primitives The nature of the primitive components of a complex system is relative(subjective). The choice of what components in a system are primitive is relatively arbitrary and is largely up to the discretion of the observer of the system. What is primitive for one observer may be at a much higher level of abstraction for another. 7/6/2021 Chapter 1 Introduction to OOSAD 15 Attributes of complex systems Cont’d… Separation of Concerns Hierarchic systems are decomposable because they can be divided into identifiable parts(nearly decomposable because their parts are not completely independent). Intracomponent linkages are generally stronger than intercomponent linkages.(Loose Coupling and High Cohesion) This difference between intra- and intercomponent interactions provides a clear separation of concerns among the various parts of a system, making it possible to study each part in relative isolation. 7/6/2021 Chapter 1 Introduction to OOSAD 16 Attributes of complex systems Cont’d… Common Patterns Hierarchic systems are usually composed of only a few different kinds of subsystems in various combinations and arrangements. In other words, complex systems have common patterns. These patterns may involve the reuse of small components. 7/6/2021 Chapter 1 Introduction to OOSAD 17 Attributes of complex systems Cont’d… Stable Intermediate Forms Complex systems tend to evolve over time A complex system that works is consistently found to have evolved from a simple system that worked As systems evolve, objects that were once considered complex become the primitive objects on which more complex systems are built 7/6/2021 Chapter 1 Introduction to OOSAD 18 19 Human Capacity in Dealing with Complexity If we know what the design of complex software systems should be like, then why do we still have serious problems in successfully developing them? Humans have limited capacity for dealing with the complexity. The concept of the organized complexity of software is the issue- Object Model 7/6/2021 Chapter 1 Introduction to OOSAD 20 Software Complexity -Solution The complexity of the software systems we are asked to develop is increasing, yet there are basic limits on our ability to cope with this complexity. Hence we need a mechanism to cope with this complexity. The technique of mastering complexity has been known since ancient times: “divide et impera (divide and rule)” Hence, solution is Decomposition Two types Algorithmic -top-down structured design, and so we approach decomposition – as a simple algorithmic decomposition where in each module in the system denotes a major step in some overall process. Object-Oriented -according to the key abstractions ( concepts) in the problem domain. Rather than decomposing the problem into steps such as Get formatted update and Add checksum, we can identify objects such as Master File and Checksum, which derive directly from the vocabulary of the problem domain 7/6/2021 Chapter 1 Introduction to OOSAD OO Decomposition vs Algorithmic Decomposition Algorithmic Decomposition 7/6/2021 OO Decomposition Chapter 1 Introduction to OOSAD 21 22 Characteristics of Good Software 7/6/2021 Chapter 1 Introduction to OOSAD 23 Software Quality and the Stakeholders View Customer: solves problems at an acceptable cost in terms of money paid and resources used User: easy to learn; efficient to use; helps get the work done QUALITY SOFTWARE Developer: easy to design; easy to maintain; easy to reuse its parts 7/6/2021 Development manager: sells more and pleases customers while costing less to develop and maintain Chapter 1 Introduction to OOSAD 24 Software Failure Crisis “The "software crises" came about when people realized the major problems in software development were … caused by communication difficulties and the management of complexity” (Budd) Evidence over the years has shown that some of the most common reasons software projects fail center around poor or nonexistent communication between the key stakeholders.(Booch) 7/6/2021 Chapter 1 Introduction to OOSAD 25 7/6/2021 Chapter 1 Introduction to OOSAD 26 Software Industry Success status( 2004) How well are systems built? Total Failure 15% “Challenged” 51% Successful 34% In 1994 “Successful” was only 17%! Challenged means… Failure to meet time, budget, or critical features/requirements 7/6/2021 Chapter 1 Introduction to OOSAD 2. Structed vs OO development Approaches Structured Paradigm Structured methods for design were developed in the 1970s and 1980s and were the precursor to the UML and objectoriented design. Modeling process and data separately Suitable for small sized software Object Oriented Paradigm Things are made up of objects Objects are identified as having data and function Is a software development strategy based on the idea of building systems/software from reusable components called objects 7/6/2021 Chapter 1 Introduction to OOSAD 27 28 Structured (Paradigm)Approach The structured paradigm is a development strategy based on the concept that a system should be separated into two parts: data (modeled using a data model) and functionality (modeled using a process model). applications in which data are separate from behavior both in the design model and in the system implementation (that is, the program) Examples of structured technologies include the COBOL, BASIC and FORTRAN programming languages. Is it also possible to do structured programming with any of the modern programming language??- findout 7/6/2021 Chapter 1 Introduction to OOSAD Structured Analysis and Design Cont’d… Philosophy of structured analysis and design Analysts attempt to divide large, complex problems into smaller, more easily handled ones. “Divide and Conquer” Top-Down approach to program development Functional view of the problem. Analysts use graphics to illustrate their ideas whenever possible 7/6/2021 Chapter 1 Introduction to OOSAD 29 Structured analysis and design Cont’d… Goals of SAD Improve Quality and reduce the risk of system failure Establish concrete requirements specifications and complete requirements documentation Focus on Reliability, Flexibility, and Maintainability of system 7/6/2021 Chapter 1 Introduction to OOSAD 30 Structured analysis and design Cont’d… Elements of Structured Analysis and Design Essential Model: Model of what the system must do. Does not define how the system will accomplish its purpose. Is a combination of the environmental and behavioral model Environmental Model Defines the scope of the proposed system. Defines the boundary and interaction between the system and the outside world. Composed of: Statement of Purpose, Context Diagram, and Event List. 7/6/2021 Chapter 1 Introduction to OOSAD 31 Structured analysis and design Cont’d… Essential Model Cont’d… Behavioral Model Model of the internal behavior and data entities of the system. Models the functional requirements. Composed of Data Dictionary, Data Flow Diagram, Entity Relationship Diagram, Process Specification, and State Transition Diagram. 7/6/2021 Chapter 1 Introduction to OOSAD 32 Structured analysis and design Cont’d… Implementation Model Maps the functional requirements to the hardware and software. Determines which functions should be manual and which should be automated. Defines the Human-Computer Interface. Defines non-functional requirements. Tool: Structure Charts 7/6/2021 Chapter 1 Introduction to OOSAD 33 34 Structured analysis and design Advantages of structured analysis and design Visual, so it is easier for users/programmers to understand Makes good use of graphical tools A mature technique Simple and easy to understand and implement 7/6/2021 Chapter 1 Introduction to OOSAD Structured Analysis and Design Cont’d… Disadvantages of Structured analysis and design Not enough user-analyst interaction It depends on dividing system to sub systems but it is hard to decide when to stop decomposing 7/6/2021 Chapter 1 Introduction to OOSAD 35 36 OO Paradigm (Approach) The object-oriented (OO) paradigm (pronounced “para-dime”) is a development strategy based on the concept that systems should be built from a collection of reusable parts (components) called objects Examples of OO languages and technologies include the Smalltalk, Java, C#, and C++ programming languages and the Enterprise JavaBeans (EJB) framework. 7/6/2021 Chapter 1 Introduction to OOSAD 37 OO Paradigm Cont’d… The main concept behind the object-oriented paradigm is that Instead of defining systems as two separate parts (data and functionality), you now define systems as a collection of interacting objects. Objects do things (that is, they have functionality) and they know things(they have data). It requires a different way of thinking about decomposition – OO Decomposition as opposed to algorithmic(functional) decomposition. A bottom-up approach to program development 7/6/2021 Chapter 1 Introduction to OOSAD 38 OO Paradigm Cont’d… Benefits are Greater: Productivity Reliability Maintainability Manageability 7/6/2021 Chapter 1 Introduction to OOSAD 39 OO Paradigm Cont’d… Direct mapping of concepts in the problem domain to software units and their interfaces Viewing the world as objects is more natural since it is closer to the way humans think Objects are more stable than functions… Supports information hiding, data abstraction, and encapsulation Easily modified, extended, and maintained… if your product was designed correctly 7/6/2021 Chapter 1 Introduction to OOSAD 40 OO Paradigm Cont’d… OO Model is a “new” way of thinking about what it means to compute and how information can be structured Systems are viewed as cooperating objects that encapsulate structure and behavior in a hierarchical construction (Canonical Form) Functionality achieved by messages passing between objects. 7/6/2021 Chapter 1 Introduction to OOSAD 41 OO Paradigm Cont’d… For system/software developer in object orientation Object oriented Programming Object Oriented Analysis, design Object Oriented CASE tools 7/6/2021 Chapter 1 Introduction to OOSAD 42 Object-Oriented analysis and design Object-Oriented analysis and design is becoming popular because of its ability to thoroughly represent complex relationships, as well as represent data and data processing with a consistent notation Object-Oriented analysis and design blends analysis and design in an evolutionary process It allows you to deal with the complexity inherent in a real-world problem by focusing on the essential and interesting features of an application 7/6/2021 Chapter 1 Introduction to OOSAD 43 Object-Oriented analysis and design Cont’d… Process of progressively developing representation of a system component (or object) through the phases of analysis, design and implementation The model is abstract in the early stages As the model evolves, it becomes more and more detailed and concrete. 7/6/2021 Chapter 1 Introduction to OOSAD 44 Object-Oriented analysis and design Cont’d… Object-Oriented systems development life cycle The Object-Oriented development life cycle consists of progressively developing an object representation through three phases analysis, design, and implementation. Analysis Phase Object-oriented analysis is a popular approach that sees a system from the viewpoint of the objects themselves as they function and interact Model of the real-world application is developed showing its important properties Model specifies the functional behavior of the system independent of implementation details 7/6/2021 Chapter 1 Introduction to OOSAD 45 Object-Oriented analysis and design Cont’d… Design Phase Analysis model is refined and adapted to the environment Can be separated into two stages System design Concerned with overall system architecture Object design Implementation details are added to system design Implementation Phase Design is implemented using a programming language or database management system 7/6/2021 Chapter 1 Introduction to OOSAD Structured analysis and design vs. object oriented analysis and design Similarities Both SAD and OOAD had started off from programming techniques. Both techniques use graphical design and graphical tools to analyze and model the requirements. Both techniques provide a systematic step-by-step process for developers Both techniques focus on documentation of the requirements 7/6/2021 Chapter 1 Introduction to OOSAD 46 Structured analysis and design vs. object oriented analysis and design Differences SAD is Process-Oriented OOAD combines data and the processes OOAD encapsulates as much of the system’s data and processes into a single construct called objects, while SAD separates between them. 7/6/2021 Chapter 1 Introduction to OOSAD 47 Summary of Structured vs OO Paradigms Structured analysis treats data and processes as separate components The Environmental Model: - Statement of Purpose, Context Diagram, and Event List The Behavioural Model: - Data Flow Diagram, Process Specification, Data Dictionary, and Entity-Relationship Diagram The Implementation Model: - Structure Diagram Object-oriented (O-O) analysis, combines data and processes into objects. 7/6/2021 -The Object-Oriented development life cycle consists of progressively developing an object representation through three phases analysis, design, and implementation Chapter 1 Introduction to OOSAD 48 49 3. The OO Software Process Models Software Process: A structured set of activities required to develop a software system( product). i.e. the steps we go through to develop a software product is called a software process. We have many different software processes, but all involve the following activities. Specification – defining what the system should do; Design and implementation – defining the organization of the system and implementing the system; Verification and Validation – checking that the software does what the customer wants; Evolution – changing the system in response to changing customer needs. 7/6/2021 Chapter 1 Introduction to OOSAD 50 Software Process - Activities Real software processes are inter-leaved sequences of technical, collaborative and managerial activities with the overall goal of specifying, designing, implementing, testing(verification and validation), and maintaining a software system. The four basic software process activities: specification, development, verification and validation and evolution are organized differently in different development processes. In the waterfall model, they are organized in sequence, whereas in incremental development they are inter-leaved. 7/6/2021 Chapter 1 Introduction to OOSAD Software Process Activities Specification The process of establishing what services are required and the constraints on the system’s operation and development. Requirements Engineering Process Feasibility study Is it technically and financially feasible to build the system? ROI, product Vision, what market share are we after? Urgency of development? Requirements elicitation and analysis What do the system stakeholders require or expect from the system? Recognition that the client must be satisfied. Have checkbook. Requirements Specification Defining the requirements in detail. These are the ‘whats’ of a system!!! Requirements Validation Checking the validity of the requirements Are they feasible, testable, sufficient, necessary, consistent ... 7/6/2021 Chapter 1 Introduction to OOSAD 51 52 The Requirements Engineering Process 7/6/2021 Chapter 1 Introduction to OOSAD 53 Software Processes Activities - Software Design and Implementation The process of converting the system specification into an executable system. Software Design (inputs: specifications) Design a software structure that realizes the specification; Implementation Translate this model / structure into an executable app; Programming is the implementation of the design. The activities of design and implementation are closely related and may be inter-leaved and definitely are using many modern development processes. (more to come on this) 7/6/2021 Chapter 1 Introduction to OOSAD A General Model of the Design Process 7/6/2021 Chapter 1 Introduction to OOSAD 54 55 Software Process Activities - Software Validation Involves checking and review processes and system testing. Verification and validation (V & V) is intended to show that a system conforms to its specification and meets the requirements of the system customer. Look up the difference between verification and validation?? System testing involves executing the system with test cases that are derived from the specification of the real data to be processed by the system. Testing is the most commonly used “V & V” activity. Test First Development approach integrates testing, programing and debugging. 7/6/2021 Chapter 1 Introduction to OOSAD 56 Software Process Activities - Software Validation(2) Stages of Test Specifications and Testing 7/6/2021 Chapter 1 Introduction to OOSAD 57 Software Evolution Software is inherently flexible and can change. As requirements change through changing business circumstances, the software that supports the business must also evolve and change. Although there has been a demarcation between development and evolution (maintenance) this is increasingly irrelevant as fewer and fewer systems are completely new (greenfield engineering is rare). 7/6/2021 Chapter 1 Introduction to OOSAD 58 Systems Development Methodology Systems Development methodology is a set of comprehensive guidelines for SDLC that includes specific models, tools, and techniques. Models: are representations of an important aspect of the real world. Sometimes, the term abstraction is used because we abstract (separate out) an aspect that is of particular importance . Tools: Are software support that helps create models or other components required in the project. Integrated development environments (IDEs) include many tools to help with programming tasks. Techniques: Are collections of guidelines that helps an analyst complete an activity or task 7/6/2021 Chapter 1 Introduction to OOSAD Models, Tools, and Techniques Cont’d… Some models of system components Flowchart Data flow diagram (DFD) Entity-relationship diagram (ERD) Structure chart Use case diagram Class diagram Sequence diagram Some models used to manage the development process Gantt chart Organizational hierarchy chart Financial analysis models – Net Present Value(NPV), payback period 7/6/2021 Chapter 1 Introduction to OOSAD 59 Models, Tools and Techniques Cont’d… Examples of Tools. Project management application Drawing/graphics application Word processor/text editor Visual modeling tool Integrated development environment (IDE) Database management application Reverse-engineering tool Code generator tool 7/6/2021 Chapter 1 Introduction to OOSAD 60 Models, Tools and Techniques Cont’d… Examples of Techniques Strategic planning techniques Project management techniques User interviewing techniques Data-modeling techniques Relational database design techniques Structured programming technique Software-testing techniques Process modeling techniques Domain modeling techniques Use case modeling techniques Object-oriented programming techniques Architectural design techniques User-interface design techniques 7/6/2021 Chapter 1 Introduction to OOSAD 61 62 Methodology (Models, tools and Techniques) 7/6/2021 Chapter 1 Introduction to OOSAD 63 Software Process Model Software development life cycle (SDLC) encompasses the phases/processes that a software developer goes through when developing software. Phases: Systems Planning and Selection Systems Analysis Systems Design Systems Implementation and Operation. A software process model is an abstract representation of a software process. It presents a description of a software process from some particular SDLC Methodology perspective.(Development Paradigm Structured Vs OO) Software Process descriptions involve activities such as specifying a data model, designing a user interface, etc. and the ordering of these activities. 7/6/2021 Chapter 1 Introduction to OOSAD 64 Software Process Process descriptions may also include: Products, which are the outcomes of a process activity; Roles, which reflect the responsibilities of the people involved in the process; Pre- and post-conditions, which are statements that are true before and after a process activity has been enacted or a product produced. 7/6/2021 Chapter 1 Introduction to OOSAD Plan-driven and Agile Processes a.k.a. Heavy-Weight versus Light-Weight Models Plan-driven processes are processes where all of the process activities are planned in advance and progress is measured against this plan. Plan drives everything! Separate and distinct phases of specification and development. In Agile Processes, planning is incremental and it is easier to change the process to reflect changing customer requirements. Specification and development are interleaved In practice, most practical processes include elements of both plandriven and agile. There are no right or wrong software processes! 7/6/2021 Chapter 1 Introduction to OOSAD 65 Plan Driven vs Agile Processes Characteristics Agile Plan Driven Project is small (5–10 people). Project is large (more than 10 people). Experienced teams with a wide range of abilities and skills take part Teams include varied capabilities and skill sets. Project is an in-house project, and the team is co-located. Project is of strategic importance (e.g., an enterprise initiative); scope crosses the organization. Teams are geographically distributed and/or outsourced. System is new, with lots of unknowns. System is well understood, with a familiar scope and feature set. Requirements and environment are volatile, with high change rates. Requirements are fairly stable (low change rates) and can be determined in advance. Relationship with customer is close and collaborative. System is large and complex, with critical safety or high reliability requirements. Customer is readily available, dedicated, and co-located. Project stakeholders have a weak relationship with the development team. 7/6/2021 Chapter 1 Introduction to OOSAD 66 Plan Driven vs Agile Processes Characteristics Agile Plan Driven Rapid value and high-responsiveness are required. Focus is on strong, quantitative process improvement. High trust environment exists within the External legal concerns (e.g., contracts, liability, development teams, between the development formal certification against specific industry teams, and with the customer. standards) exist. End-user environment is flexible. Predictability and stability of process are important. Definition and management of process are important. 7/6/2021 Chapter 1 Introduction to OOSAD 67 68 Software Process Models There are hundreds of different process models to choose from The following are some Examples Waterfall, • Spiral • Rapid prototyping • Agile methods: extreme programming (XP), Scrum, RUP 7/6/2021 Chapter 1 Introduction to OOSAD Waterfall( Structured, Traditional) process 7/6/2021 Chapter 1 Introduction to OOSAD 69 70 Heavy-Weight Process Model- Waterfall. Example: The Waterfall Model 7/6/2021 Plan-driven model. Separate and distinct phases of specification and development. Heavily oriented towards documentation (documentation-intensive) Progress often measured through documentation completion and reviews (many) Lockstep approach Little chance for Change! Oftentimes discover major flaws too late. Delivered as Big Bang Still exists in spades – but modified to a degree. Chapter 1 Introduction to OOSAD 71 Waterfall Phases 7/6/2021 Chapter 1 Introduction to OOSAD 72 Waterfall Problems 7/6/2021 Chapter 1 Introduction to OOSAD Waterfall Problems Cont’d… There are separate identified phases in the waterfall model: Requirements analysis and definition System and software design Implementation and unit testing Integration and system testing Operation and maintenance The main drawback of the waterfall model is the difficulty of accommodating change after the process is underway. In principle, a phase has to be complete before moving onto the next phase. But many issues are true too, such as risk addressing. 7/6/2021 Chapter 1 Introduction to OOSAD 73 74 Waterfall Model Problems Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements. Therefore, this model is only appropriate when the requirements are wellunderstood and changes will be fairly limited during the design process. However, Few business systems have stable requirements. The waterfall model is mostly used for large systems engineering projects where a system is developed at several sites. In those circumstances, the plan-driven nature of the waterfall model helps coordinate the work. 7/6/2021 Chapter 1 Introduction to OOSAD Iterative and Incremental (Evolutionary) development It is a cyclic software development process developed in response to the weaknesses of the waterfall model. Evolutionary Developments can be Type 1: Exploratory Development: customer assisted development that evolves a product from ignorance to insight, starting from core, well understood components.(Spiral Model, Agile Methods…are examples) Type 2: Throwaway Prototyping: customer assisted development that evolves requirements from ignorance to insight by means of lightweight disposable prototypes.( Rapid Prototyping is an example) Iteration is an essential part of the current Rational Unified Process(RUP), the Dynamic Systems Development Method(DSDM), Extreme Programming(XP) and generally the agile software development. 7/6/2021 Chapter 1 Introduction to OOSAD 75 Iterative and Incremental (Evolutionary) development 7/6/2021 Chapter 1 Introduction to OOSAD 76 Boehm’s Spiral Model - heavyweight model Process is represented as a spiral rather than as a sequence of activities with backtracking. Extends waterfall model by adding iteration to explore/manage risk Each loop in the spiral represents a phase in the process. No fixed phases such as specification or design - loops in the spiral are chosen depending on what is required. Risks are explicitly assessed and resolved throughout the process. This was the motivation behind developing the Spiral Model – Risk Key idea: on each iteration, identify and solve the subproblems with the highest risk. 7/6/2021 Chapter 1 Introduction to OOSAD 77 78 Boehm’s Spiral Model of the Software Process 7/6/2021 Chapter 1 Introduction to OOSAD 79 Spiral Model- the Sectors Objective setting Specific objectives for the phase are identified. Risk assessment and reduction Risks are assessed and activities put in place to reduce the key risks. Development and validation A development model for the system is chosen which can be any of the generic models. Development takes place. Planning The project is reviewed and the next phase of the spiral is planned. 7/6/2021 Chapter 1 Introduction to OOSAD 80 Spiral Model Usage Context It is a software development process combining elements of both prototyping-in-stages and sequential waterfall models combines advantages of top-down and bottom-up concepts. is intended for large, expensive and complicated projects. Spiral model has been very influential in helping people think about iteration in software processes and introducing the risk-driven approach to development. In practice, however, the model is rarely used as published for practical software development. 7/6/2021 Chapter 1 Introduction to OOSAD 81 Rapid Prototyping - Heavyweight Model Building a scaled-down working version of the system Analysts work with users to determine the initial & basic requirements for the system. The analyst then quickly builds a prototype. When the prototype is complete, the users work with him/her & tell what they like & don’t like about it. The analyst uses this feedback improve the prototype & takes the new version back to the users This iterative process continues until the users are relatively satisfied. 7/6/2021 Chapter 1 Introduction to OOSAD Rapid Prototyping Cont’d… Advantages: Users are involved in the A&D process Captures requirements in concrete form, rather than verbal/abstract form Disadvantages 7/6/2021 Insufficient analysis User confusion of prototype and finished system Developer misunderstanding of user objectives Developer attachment to prototype Excessive development time of the prototype Expense of implementing prototyping Chapter 1 Introduction to OOSAD 82 Great Dissatisfaction with Heavy-Weight Models Delivered late, over budget, Failure to meet functional and non-functional requirements, not responsive to change, poor assessment of risk, .... Discovery of major problems late…. Thinking about Process…..Want to refine the way we develop systems Hierarchy: Successful, Challenged; Failed Few systems totally successful Many ‘challenged’ Too many failures Many famous practitioners starting at Process in more detail How can we do better? 7/6/2021 Chapter 1 Introduction to OOSAD 83 Agile Methods – lightweight Methods 7/6/2021 Chapter 1 Introduction to OOSAD 84 85 Agile Manifesto ( Agile Principles) 7/6/2021 Chapter 1 Introduction to OOSAD Different Agile Development Methodologies RUP SCRUM XP FDD DSDM Kanban Crystal 7/6/2021 Chapter 1 Introduction to OOSAD 86 87 The Unified Process(UP) The unified process (Jacobson, Booch, and Rumbaugh 1999) is a framework from which software development processes are instantiated, Two such instantiations are the Rational Unified Process(RUP) A four-phased (inception, elaboration, construction, transition), prescriptive process whose scope is software development process Is also one of the most popular realizations of the iterative approach for object-oriented development. Enterprise Unified Process (EUP) Extends RUP to make it a full-fledged IT process( beyond development) 7/6/2021 Chapter 1 Introduction to OOSAD 88 Rational Unified Process(RUP) Model Is based on the process of UML and standard OOAD. Unlike the waterfall model where phases are equated with process activities, phases in the RUP are more closely related to business rather than technical concerns. Four Phases Inception Elaboration Construction Transition These indicate the state of the system at each phase NOT the activities involved at that point in development 7/6/2021 Chapter 1 Introduction to OOSAD 89 RUP Process Perspectives The RUP recognizes that conventional process models present a single view of the process. In contrast, the RUP is normally described from three perspectives: 1. A dynamic perspective, which shows the phases of the model over time. 2. A static perspective, which shows the process activities that are enacted. 3. A practice perspective, which suggests good practices to be used during the process. 7/6/2021 Chapter 1 Introduction to OOSAD 90 Rational Unified Process(RUP)- Phases Phases (stages) of Development Inception – the initial work required to set up and agree terms for the project. Includes establishing the business case Feasibility Basic risk assessment Scope of the system to be delivered 7/6/2021 Chapter 1 Introduction to OOSAD 91 Rational Unified Process(RUP) Phases (stages) of Development Inception Elaboration – deals with putting the basic architecture of the system in place All main project risks are identified Develop an understanding of the problem domain and the system architecture. Construction Transition 7/6/2021 Chapter 1 Introduction to OOSAD 92 Rational Unified Process(RUP) Phases (stages) of Development Inception Elaboration Construction – involves bulk of work on building the system System design, programming and testing Ends with beta-release of system Transition 7/6/2021 Chapter 1 Introduction to OOSAD 93 Rational Unified Process(RUP) Phases (stages) of Development Inception Elaboration Construction Transition – process involved in transferring the system to the clients and users Deploy the system in its operating environment 7/6/2021 Chapter 1 Introduction to OOSAD Rational Unified Process(RUP) Workflows The activities implied by the stages in a traditional structured process modelling approach are referred to as Workflows in the (RUP) object-orientated approach. RUP Workflows Basic Workflows: Business modelling Requirements Analysis Design Implementation Testing Deployment Support Workflows Configuration and Change Management Project Management Environment 7/6/2021 Chapter 1 Introduction to OOSAD 94 RUP Phases and Workflows – interactions 7/6/2021 Chapter 1 Introduction to OOSAD 95 96 Schedule-oriented terms in the UP development cycle iteration inc. elaboration milestone An iteration endpoint when some significant decision or evaluation occurs. 7/6/2021 phase construction transition release increment A stable executable subset of the final product. The end of each iteration is a minor release. The difference (delta) between the releases of 2 subsequent iterations. Chapter 1 Introduction to OOSAD final production release At this point, the system is released for production use. RUP- Phases, Milestones, workflows and Iterations overtime 7/6/2021 Chapter 1 Introduction to OOSAD 97 98 The shifting focus of Iteration rounds 7/6/2021 Chapter 1 Introduction to OOSAD 99 RUP Basic Workflows Workflow Description Business modelling The business processes are modelled using business use cases Requirements Actors who interact with the system are identified and use cases are developed to model the system requirements. Analysis and design A design model is created and documented using architectural models, component models, object models, and sequence models. Implementation The components in the system are implemented and structured into implementation sub-systems. Automatic code generation from design models helps accelerate this process. Testing Testing is an iterative process that is carried out in conjunction with implementation. System testing follows the completion of the implementation. Deployment A product release is created, distributed to users, and installed in their workplace 7/6/2021 Chapter 1 Introduction to OOSAD 100 RUP Support Workflows Workflow Description Configuration and change management This supporting workflow manages changes to the system Project management This supporting workflow manages the system development Environment This workflow is concerned with making appropriate software tools available to the software development team. 7/6/2021 Chapter 1 Introduction to OOSAD Rational Unified Process(RUP) –iteration cycles Iterative Process Workflows may be carried out during any phase of the system development In each phase, a range of workflows (activities) may be carried out several times before moving on to the next phase. The concept of an iteration is pretty much the same across most software development methods. What differs is the recommended duration for each iteration. XP recommends that iterations be one or two weeks long, if possible. SCRUM specifies that all iterations (sprints) should be 30 days long. RUP recommends that iterations be two to six weeks long. 7/6/2021 Chapter 1 Introduction to OOSAD 101 Enterprise Unified Process(EUP)- Enactment of RUP – read more if interested 7/6/2021 Chapter 1 Introduction to OOSAD 102 103 OO Software development best practices The practice perspective on the RUP describes good software development practices that are recommended for use in systems development. Six fundamental best practices are recommended: Develop software iteratively. Manage requirements Explicitly Use component-based architectures(re-usable) Visually model software. Verify software quality. Control changes to software 7/6/2021 Chapter 1 Introduction to OOSAD 104 Water fountain for OO Software Development Water fountain life cycle describes the inherent iterative and incremental qualities of object-oriented development methods 7/6/2021 Chapter 1 Introduction to OOSAD 105 Process Patterns A process pattern describes a collection of general techniques, actions, and/or tasks for developing object-oriented software. Process patterns are an excellent mechanism for communicating approaches to software development that have proven to be effective in practice. Process patterns are the reusable building blocks from which your organization will develop a tailored software process that meets its exact needs. three types of process patterns Task process patterns: depicts the detailed steps to perform a specific task, such as the Technical Review and Reuse Stage process patterns: depicts the steps, which are often performed iteratively, of a single project stage(A project stage is a higher-level form of process pattern- often composed of several task process patterns) Phase process patterns: depicts the interactions between the stage process patterns for a single project phase, such as the inception and transition phases in RUP 7/6/2021 Chapter 1 Introduction to OOSAD 106 Process Patterns examples The Technical Review task process pattern describes how to organize, conduct, and follow through on the review of one or more deliverables. The stage process pattern, Program describes the iterative tasks/activities of programming( writing a code). There is more to this stage than simply writing source code: you need to understand the models, then seek out reusable artifacts to reduce your work load, then document what you are going to write, then write the code, then inspect and improve it, then test and fix it, and then finally package it. 7/6/2021 Chapter 1 Introduction to OOSAD 107 Process Patterns examples Phase Process Patterns – Construction The Construction phase effectively ends when a code/development freeze has been declared. For a code/development freeze to be official, the following deliverables must be in place (when applicable): Models (Class Model, Use-Case Model, Sequence Diagrams, …), Requirements Allocation Matrix (RAM), Source code, Master Test/QA Plan, User Documentation, Operations Documentation, Support Documentation, t he software itself, Training Plan, Release Plan, and Lessons Learned. 7/6/2021 Chapter 1 Introduction to OOSAD End of Chapter 1 7/6/2021 Chapter 1 Introduction to OOSAD 108