Object Oriented Software Engineering - SE-Unit-1 PDF

Document Details

Uploaded by Deleted User

PES University

Dr. Premalatha H M

Tags

software engineering object-oriented programming software computer science

Summary

This document is a lecture on object-oriented software engineering, providing an overview of different software types, characteristics, and application domains. It details various aspects of software engineering from a high-level perspective, discussing hardware and software characteristics, software application domains, and other topics.

Full Transcript

OBJECT ORIENTED SOFTWARE ENGINEERING Dr. Premalatha H M Department of Computer Applications OBJECT ORIENTED SOFTWARE ENGINEERING Unit 1: The Software Process Dr. Premalatha H M Department of Computer Applications OBJECT ORIENTED SOFTWARE ENGINEERING Software and Software Engineering… In gene...

OBJECT ORIENTED SOFTWARE ENGINEERING Dr. Premalatha H M Department of Computer Applications OBJECT ORIENTED SOFTWARE ENGINEERING Unit 1: The Software Process Dr. Premalatha H M Department of Computer Applications OBJECT ORIENTED SOFTWARE ENGINEERING Software and Software Engineering… In general we can define software as Software is a product, that software professionals build and then support over the long term. Software engineering encompasses a process, a collection of methods (practice) and an array of tools that allow professionals to build high-quality computer software. OBJECT ORIENTED SOFTWARE ENGINEERING Nature of Software Software performs- Dual role Software as a product Transforms information - produces, manages, acquires, modifies, displays, or transmits information. Delivers computing potential of hardware and networks. Software as a vehicle for delivering a product Supports or directly provides system functionality. Controls other programs (operating system). Effective communications (networking software). Helps in building other software (software tools & environments). OBJECT ORIENTED SOFTWARE ENGINEERING Software and Software Engineering… What is Software ? IEEE definition of Software: Software is: (1) Instructions (computer programs) that when executed provide desired features, function, and performance; (2)Data structures that enable the programs to adequately manipulate information and (3)Documentation that describes the operation and use of the programs OBJECT ORIENTED SOFTWARE ENGINEERING Software … Types of Software Product Software products may be developed for a particular customer or may be developed for a general market. That is, a Software products may be Generic - Developed to be sold to a range of different customers e.g. PC software such as Excel or Word. Customized - Developed for a single customer according to his/her specification OBJECT ORIENTED SOFTWARE ENGINEERING Software Characteristics Characteristics of Software are: Hardware Software  Manufactured  Developed/ engineered  wear out  deteriorate  Built using components  Custom built  Relatively simple  Complex OBJECT ORIENTED SOFTWARE ENGINEERING Software Application Domain There are various software application domains, like: 1) System software 2) Application software 3) Engineering / scientific software 4) Embedded software 5) Product line software 6) Web applications 7) Artificial intelligence software OBJECT ORIENTED SOFTWARE ENGINEERING Software Application Domain… 1. System Software System software is a collection of programs written to service other programs. Ex. Compilers, operating system, drivers etc. OBJECT ORIENTED SOFTWARE ENGINEERING Software Application Domain… … 2. Application Software Application software consists of standalone programs that solve a specific business need. Application software is used to control the business function in real-time. For Eg: Transaction processing, real-time manufacturing process control Microsoft suite of products (Office, Excel, Word, PowerPoint, Outlook, etc.) Internet browsers like Firefox, Safari, and Chrome. OBJECT ORIENTED SOFTWARE ENGINEERING Software Application Domain… 3. Engineering/Scientific Software Characterized by "number crunching" algorithms. Applications range from astronomy to volcanology, automotive stress analysis to space shuttle orbital dynamics, and molecular biology to automated manufacturing. Ex. Computer Aided Design (CAD), System Simulation etc. OBJECT ORIENTED SOFTWARE ENGINEERING Software Application Domain… 4. Embedded Software It resides within a product or system and is used to implement and control features and functions for the end user and for the system itself. Embedded software can perform limited and intended functions. Ex. keypad control for a microwave oven. OBJECT ORIENTED SOFTWARE ENGINEERING Software Application Domain… 5. Product line software Software product line development, refers to software engineering methods, tools and techniques for creating a collection of similar software systems from a shared set of software assets using a common means of production. Ex. Word processing, spreadsheet, Computer Graphics, multimedia, etc. A cosmetic company selling a high-priced product line of makeup (that might include foundation, eyeliner, mascara, and lipstick) under one of its well-known brands might launch a product line under the same brand name with lower price. OBJECT ORIENTED SOFTWARE ENGINEERING Software Application Domain… 6. Web Application Web apps can be little more than a set of linked hypertext files. It is evolving into sophisticated computing environments that not only provide standalone features, functions but also integrated with corporate database and business applications. Eg: e-commerce application, Online shopping, video and photo editing, file conversion, file scanning, Google Docs etc. OBJECT ORIENTED SOFTWARE ENGINEERING Software Application Domain… 7. Artificial Intelligence Software AI software makes use of non-numerical algorithms to solve complex problems that are not amenable to computation or straightforward analysis. Ex. Robotics, Google Assistant, google AI power predictions (google maps), plagiarism checkers, Rides sharing app (uber), game playing, etc. OBJECT ORIENTED SOFTWARE ENGINEERING Software Application Domain… Software Applications – new categories Open world computing—pervasive, distributed computing. Ubiquitous computing—wireless networks Netsourcing (pay as you use)—the Web as a computing engine Open source—”free” source code open to the computing community (a blessing, but also a potential curse!) Also … Data mining Grid computing Cognitive machines Software for nanotechnologies OBJECT ORIENTED SOFTWARE ENGINEERING Software Application Domain… Software Applications – new categories Open world computing—pervasive, distributed computing eg: Linux (operating system), Eclipse (development tools framework), Apache (HTTP server), Globus (grid computing), and Mozilla (Web browser). Ubiquitous computing—wireless networks NEST (which is now owned by Google) , Apple Watch or Fitbit. Smart speakers like Amazon Echo, Google Assistant or Apple HomePod. Self Driving Cars, Smart Bulbs, Smart Locks. OBJECT ORIENTED SOFTWARE ENGINEERING Software Application Domain… Software Applications – new categories Netsourcing (pay as you use)—the Web as a computing engine For Eg: e-mail/collaboration tools like Microsoft Exchange, Lotus Notes, Netscape Messenger Open source—”free” source code open to the computing community For eg: Firefox—a Web browser that competes with Internet Explorer OpenOffice—a competitor to Microsoft Office Gimp—a graphic tool with features found in Photoshop, etc. OBJECT ORIENTED SOFTWARE ENGINEERING Software Engineering Dr. Premalatha H M Department of Computer Applications OBJECT ORIENTED SOFTWARE ENGINEERING Software Engineering The IEEE definition: Software Engineering: (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1). OBJECT ORIENTED SOFTWARE ENGINEERING Software Engineering Layers Software Engineering is a layered Technology THANK YOU Dr. Premalatha H M Department of Computer Applications [email protected] +91 80 6666 3333 Extn 224 OBJECT ORIENTED SOFTWARE ENGINEERING The Software Process Dr. Premalatha H M Department of Computer Applications OBJECT ORIENTED SOFTWARE ENGINEERING The Software Process A process is a collection of activities, actions and tasks that are performed when some work product is to be created. An activity try towards achieving the broad objective regardless of specific domain. Ex: communication with stakeholders – gathering requirements from different categories of users (need not be all technically knowledgable) OBJECT ORIENTED SOFTWARE ENGINEERING The Software Process… An action encompasses a set of tasks that produce a major work product. Ex—Building an architectural design model – which includes various set of tasks in it. A task focuses on a small, but well-defined objective that produces a tangible outcome Ex--conducting a unit test – which includes micro level testing OBJECT ORIENTED SOFTWARE ENGINEERING The Generic Process Model THANK YOU Dr. Premalatha H M Department of Computer Applications [email protected] +91 80 6666 3333 Extn 224 OBJECT ORIENTED SOFTWARE ENGINEERING Process Framework Dr. Premalatha H M Department of Computer Applications OBJECT ORIENTED SOFTWARE ENGINEERING The Software Process Framework… A process framework establishes the foundation for a complete software engineering process by identifying a small number of framework activities that are applicable to all software projects and a set of umbrella activities that are applicable across the entire software process. OBJECT ORIENTED SOFTWARE ENGINEERING The Framework Activities A generic process framework for software engineering encompasses five activities: 1. Communication 2. Planning 3. Modeling Analysis of requirements, Design 4. Construction Code generation Testing 5. Deployment OBJECT ORIENTED SOFTWARE ENGINEERING The Framework Activities… 1. Communication Before any technical work can commence, it is important to communicate and collaborate with the customer. The intent is to understand stakeholders’ objectives about the project. To gather requirements that helps to define software features and functions. OBJECT ORIENTED SOFTWARE ENGINEERING The Framework Activities… 2. Planning Any complicated journey can be simplified if a map exists. In software project the planning activity creates a “map” that helps to guide the team, makes the journey. The map—called a software project plan—defines the software engineering work by describing the technical tasks to be conducted, the risks that are likely, the resources that will be required, the work products to be produced, and a work schedule. OBJECT ORIENTED SOFTWARE ENGINEERING The Framework Activities… 3. Modeling Create a “sketch” of the thing so that one can understand the big picture. In other sectors, a landscaper, a bridge builder, an aeronautical engineer, a carpenter, or an architect, is the one who perform this (modeling) activity. Here, a software engineer does the same thing by creating models to better understand software requirements, and the design that will achieve those requirements. OBJECT ORIENTED SOFTWARE ENGINEERING The Framework Activities… 4. Construction This activity combines code generation and testing - that is required to uncover errors in the code OBJECT ORIENTED SOFTWARE ENGINEERING The Framework Activities… 5. Deployment The software is delivered to the customer who evaluates the delivered product and provides feedback based on the evaluation. THANK YOU Dr. Premalatha H M Department of Computer Applications [email protected] +91 80 6666 3333 Extn 224 OBJECT ORIENTED SOFTWARE ENGINEERING Umbrella Activities Dr. Premalatha H M Department of Computer Applications OBJECT ORIENTED SOFTWARE ENGINEERING The Umbrella Activities … Umbrella Activities Umbrella activities occur throughout the software process and focus primarily on project management, tracking, and control. OBJECT ORIENTED SOFTWARE ENGINEERING The Umbrella Activities… Typical umbrella activities are: 1. Software project tracking and control. 2. Risk management. 3. Software quality assurance. 4. Technical reviews. 5. Measurement. 6. Software configuration management. 7. Reusability management. 8. Work product preparation and production. OBJECT ORIENTED SOFTWARE ENGINEERING The Umbrella Activities… 1.Software project tracking and control— Allows the software team to assess progress against the project plan and take any necessary action to maintain the schedule. 2.Risk management— Assesses risks that may affect the outcome of the project or the quality of the product. 3. Software quality assurance— Defines and conducts the activities required to ensure software quality. OBJECT ORIENTED SOFTWARE ENGINEERING The Umbrella Activities… 4.Technical reviews— assesses software engineering work products in an effort to uncover and remove errors before they are propagated to the next activity. 5.Measurement— defines and collects process, project, and product measures that assist the team in delivering software that meets stakeholders needs. 6. Software configuration management— manages the effects of change throughout the software process OBJECT ORIENTED SOFTWARE ENGINEERING The Umbrella Activities… 7.Reusability management— defines criteria for work product reuse (including software components) and establishes mechanisms to achieve reusable components. 8.Work product preparation and production— encompasses the activities required to create work products such as models, documents, logs, forms, and lists. THANK YOU Dr. Premalatha H M Department of Computer Applications [email protected] +91 80 6666 3333 Extn 224 OBJECT ORIENTED SOFTWARE ENGINEERING The Process Flow Dr. Premalatha H M Department of Computer Applications OBJECT ORIENTED SOFTWARE ENGINEERING The Process Flow Process flow—describes how the framework activities, actions and tasks that occur within each framework and these activity are organized with respect to sequence and time. A process flow may be of four types 1. Linear process flow 2. Iterative process flow 3. Evolutionary process flow 4. Parallel process flow OBJECT ORIENTED SOFTWARE ENGINEERING The Process Flow… 1. Linear Process Flow A linear process flow executes each of the five framework activities in sequence OBJECT ORIENTED SOFTWARE ENGINEERING The Process Model… 2. Iterative Process Flow An iterative process flow repeats one or more of the activities before proceeding to the next. OBJECT ORIENTED SOFTWARE ENGINEERING The Process Model… 3. Evolutionary Process Flow An evolutionary process flow executes the activities in a “circular” manner. Each circle pass through the five activities, which leads to a more complete version of the software OBJECT ORIENTED SOFTWARE ENGINEERING The Software Process Framework… 4. Parallel Process Flow A parallel process flow executes one or more activities in parallel with other activities THANK YOU Dr. Premalatha H M Department of Computer Applications [email protected] +91 80 6666 3333 Extn 224 OBJECT ORIENTED SOFTWARE ENGINEERING The Process Models Dr. Premalatha H M Department of Computer Applications OBJECT ORIENTED SOFTWARE ENGINEERING The Prescriptive Process Model Prescriptive process models includes an orderly approach to software engineering Organize framework activities in certain order. Software engineer choose process framework that includes activities like; Communication, Planning, Modeling, Construction, Deployment. OBJECT ORIENTED SOFTWARE ENGINEERING The Prescriptive Process Model… Each elements are inter-related to one another (called workflow). Prescriptive models are also known as “Traditional models”. OBJECT ORIENTED SOFTWARE ENGINEERING Traditional models The Prescriptive models are: 1. The Waterfall Model. 2. The V-Model. 3. Incremental Process Model. 4. Evolutionary Process Models Prototyping Spiral Model 5. The Unified Process Model OBJECT ORIENTED SOFTWARE ENGINEERING 1. Waterfall Model The waterfall model, sometimes called the classic life cycle. Suggests a systematic sequential approach to software development. It begins with customer specification of requirements and progresses through planning, modeling, construction, deployment. OBJECT ORIENTED SOFTWARE ENGINEERING Waterfall Model Design - OBJECT ORIENTED SOFTWARE ENGINEERING Waterfall Model… Waterfall approach was first SDLC Model to be used widely in Software Engineering to ensure success of the project. In "The Waterfall" approach, the whole process of software development is divided into separate phases. In this Waterfall model, typically, the outcome of one phase acts as the input for the next phase sequentially. The following illustration is a representation of the different phases of the Waterfall Model OBJECT ORIENTED SOFTWARE ENGINEERING Waterfall Model… The sequential phases in Waterfall model are − Requirement Gathering and analysis − All possible requirements of the system to be developed, are captured in this phase and documented in a requirements specification document. System Design − The requirements specification from first phase are studied in this phase and the system design is prepared. This system design helps in specifying hardware and system requirements and helps in defining the overall system architecture. OBJECT ORIENTED SOFTWARE ENGINEERING Waterfall Model… Implementation − With inputs from the system design, the system is first developed in small programs called units, which are integrated in the next phase. Each unit is developed and tested for its functionality, which is referred to as Unit Testing. Integration and Testing − All the units developed in the implementation phase are integrated into a system after testing of each unit. Post integration the entire system is tested for any faults and failures. OBJECT ORIENTED SOFTWARE ENGINEERING Waterfall Model… Deployment of system − Once the functional and non- functional testing is done; the product is deployed in the customer environment or released into the market. Maintenance − There are some issues which come up in the client environment. To fix those issues, patches are released. Also to enhance the product some better versions are released. Maintenance is done to deliver these changes in the customer environment. OBJECT ORIENTED SOFTWARE ENGINEERING Waterfall Model… All these phases are cascaded to each other in which progress is seen as flowing steadily downwards (like a waterfall) through these phases. The next phase is started only after the defined set of goals are achieved for previous phase and it is signed off, so the name "Waterfall Model". In this model, phases do not overlap and no backtracking possible. OBJECT ORIENTED SOFTWARE ENGINEERING Waterfall Model Applications Every software developed is different and requires a suitable SDLC approach to be followed based on the internal and external factors. Some situations where the use of Waterfall model is most appropriate are − Requirements are very well documented, clear and fixed. Product definition is stable. Technology is understood and is not dynamic. There are no ambiguous requirements. Ample resources with required expertise are available to support the product. The project is short. OBJECT ORIENTED SOFTWARE ENGINEERING Advantages of Waterfall Model Some of the major advantages of the Waterfall Model are as follows − Simple and easy to understand and also to use. Easy to manage. Due to the rigidity of the model each phase has specific deliverables and a review process. Phases are processed and completed one at a time. Works well for smaller projects where requirements are very well understood. Clearly defined stages. Well understood milestones. Easy to arrange tasks. Process and results are well documented. OBJECT ORIENTED SOFTWARE ENGINEERING Limitations of Waterfall Model The major disadvantages of the Waterfall Model are as follows − No working software is produced until late during the life cycle. High amounts of risk and uncertainty. Not a good model for complex and object-oriented projects. Poor model for long and ongoing projects. Not suitable for the projects where requirements are at a moderate to high risk of changing. So, risk and uncertainty is high with this process model. OBJECT ORIENTED SOFTWARE ENGINEERING Limitations of Waterfall Model… It is difficult to measure progress within stages. Cannot accommodate changing requirements. Adjusting scope during the life cycle can end a project. Integration is done as a "big-bang. at the very end, which doesn't allow identifying any technological or business bottleneck or challenges early. THANK YOU Dr. Premalatha H M Department of Computer Applications [email protected] +91 80 6666 3333 Extn 224 OBJECT ORIENTED SOFTWARE ENGINEERING The V-Model Dr. Premalatha H M Department of Computer Applications OBJECT ORIENTED SOFTWARE ENGINEERING 2. The V-Model There is no fundamental difference between the waterfall model and the V- model. The V-model provides a way of visualizing how verification and validation actions are applied to earlier engineering work. The major drawback of waterfall model is we move to the next stage only when the previous one is finished and there was no chance to go back if something is found wrong in later stages. V-Model provides means of testing of software at each stage in reverse manner. OBJECT ORIENTED SOFTWARE ENGINEERING The V-Model OBJECT ORIENTED SOFTWARE ENGINEERING The V-Model A variation in the representation of the waterfall model is called the V-model. At every stage, test plans and test cases are created to verify and validate the product according to the requirements of that stage. For example, in requirements gathering stage the testing team prepares all the test cases in correspondence to the requirements. Later, when the product is developed and is ready for testing, test cases of this stage verify the software against its validity towards requirements at this stage OBJECT ORIENTED SOFTWARE ENGINEERING The V-Model This makes both verification and validation go in parallel. This model is also known as verification and validation model. From the fig, As a software team moves down the left side of the V, basic problem requirements are refined into progressively more detailed form OBJECT ORIENTED SOFTWARE ENGINEERING The V-Model Once code has been generated the team moves up the right side of the V, essentially performing a series of tests (Quality assurance actions) that validate each of the models created. V- model provides a way of visualizing how verification & validation actions are applied to earlier engineering work. OBJECT ORIENTED SOFTWARE ENGINEERING The V-Model Applications This model is used in the medical development field, as it is strictly a disciplined domain. The following pointers are some of the most suitable scenarios to use the V-Model application. Requirements are well defined, clearly documented and fixed. Product definition is stable. Technology is not dynamic and is well understood by the project team. There are no ambiguous or undefined requirements. The project is short. OBJECT ORIENTED SOFTWARE ENGINEERING Advantages of V-Model The advantages of the V-Model method are as follows − This is a highly-disciplined model and Phases are completed one at a time. Works well for smaller projects where requirements are very well understood. Simple and easy to understand and use. Easy to manage due to the rigidity of the model. Each phase has specific deliverables and a review process. OBJECT ORIENTED SOFTWARE ENGINEERING Disadvantages of V-Model The disadvantages of the V-Model method are as follows − High risk and uncertainty. Not a good model for complex and object-oriented projects. Poor model for long and ongoing projects. Not suitable for the projects where requirements are at a moderate to high risk of changing. Once an application is in the testing stage, it is difficult to go back and change a functionality. No working software is produced until late during the life cycle. THANK YOU Dr. Premalatha H M Department of Computer Applications [email protected] +91 80 6666 3333 Extn 224 OBJECT ORIENTED SOFTWARE ENGINEERING Incremental Model Dr. Premalatha H M Department of Computer Applications OBJECT ORIENTED SOFTWARE ENGINEERING 3. Incremental Model The incremental model delivers a series of releases, called increments. Rather than deliver the system as a single delivery, the development and delivery is broken down into increments with each increment delivering part of the required functionality OBJECT ORIENTED SOFTWARE ENGINEERING 3. Incremental Model… First Increment is often core product: Includes basic requirement, Many supplementary features (known & unknown) remain undelivered. A plan of next increment is prepared Modifications of the first increment, Additional features of the first increment OBJECT ORIENTED SOFTWARE ENGINEERING 3. Incremental Model… It is particularly useful when enough staffing is not available for the whole project. Increment can be planned to manage technical risks. Incremental model focus more on delivery of operation product with each increment. OBJECT ORIENTED SOFTWARE ENGINEERING 3. Incremental Model C- Communication P - Planning M – Modeling C - Construction D - Deployment Delivers software in small but usable pieces, each piece builds on pieces already delivered OBJECT ORIENTED SOFTWARE ENGINEERING 3. Incremental Model For example: word-processing software developed→4 increments 1st increment→ Deliver basic file management, editing, and document production functions. 2nd increment→ More sophisticated editing and document production capabilities. 3rd increment→ Spelling and grammar checking. 4th increment→ Advanced page layout capability. OBJECT ORIENTED SOFTWARE ENGINEERING Advantages of Incremental Model Using this model some working functionality can be developed quickly and early in the life cycle. Results are obtained early and periodically. Parallel development can be planned. Progress can be measured. Risks are identified and resolved during iteration. Easier to manage risk - High risk part is done first. i,e., Risk analysis is better. It is suited for large and mission-critical projects OBJECT ORIENTED SOFTWARE ENGINEERING Disadvantages of Incremental Model In this model more resources and management attention is required. System architecture or design issues may arise because not all requirements are gathered in the beginning of the entire life cycle. Defining increments may require definition of the complete system. It is not suitable for smaller projects. Highly skilled resources are required for risk analysis. THANK YOU Dr. Premalatha H M Department of Computer Applications [email protected] +91 80 6666 3333 Extn 224 OBJECT ORIENTED SOFTWARE ENGINEERING Evolutionary Process Model Dr. Premalatha H M Department of Computer Applications OBJECT ORIENTED SOFTWARE ENGINEERING 4. Evolutionary Process Model Evolutionary Models are iterative. Produce an increasingly more complete version of the software with each iteration. Here the product evolves over time. Evolutionary models are: (i) Prototyping (ii) Spiral Model OBJECT ORIENTED SOFTWARE ENGINEERING 4. Evolutionary Process Model (i) Prototyping Prototyping is defined as the process of developing a working replication of a product or system that has to be engineered. It offers a small scale facsimile of the end product and is used for obtaining customer feedback. OBJECT ORIENTED SOFTWARE ENGINEERING 4. Evolutionary Process Model… That is, in this model, a prototype of the end product is first developed, tested and refined as per customer feedback repeatedly till a final acceptable prototype is achieved which forms the basis for developing the final product. OBJECT ORIENTED SOFTWARE ENGINEERING 4. Evolutionary Process Model… Prototyping start with communication, between a customer and software engineer to define overall objective, identify requirements and make a boundary. Moving ahead, quick planning and modeling occurs Quick design leads to prototype construction. OBJECT ORIENTED SOFTWARE ENGINEERING 4. Evolutionary Process Model… Prototype is deployed and evaluated by the customer/user. Feedback from customer/end user will refine requirements and that is how iteration occurs during prototype to satisfy the needs of the customer. OBJECT ORIENTED SOFTWARE ENGINEERING 4. Evolutionary Process Model-The Prototyping Paradigm OBJECT ORIENTED SOFTWARE ENGINEERING 4. Evolutionary Process Model-The Prototype Model OBJECT ORIENTED SOFTWARE ENGINEERING 4. Evolutionary Process Model… Advantages: Reduced time and costs Improved and increased user involvement Disadvantages Insufficient analysis User’s confusion of prototype and finished system Developer’s misunderstanding of user objectives Developer’s attachment towards prototype Excessive prototype development time. Expense of implementing prototyping OBJECT ORIENTED SOFTWARE ENGINEERING 4. Evolutionary Process Model… (ii) Spiral Model Main characteristics Iterative. Prototype-oriented. Starts with planning and ends with customer evaluation. Low risk. OBJECT ORIENTED SOFTWARE ENGINEERING 4. Evolutionary Process Model - (ii) Spiral Model The spiral model is similar to the incremental model, with more emphasis placed on risk analysis. The spiral model can be adapted to apply throughout the entire life cycle of an application, from concept development to maintenance. Spiral models uses prototyping as a risk reduction mechanism but, more important, enables the developer to apply the prototyping approach at each stage in the evolution of the product. OBJECT ORIENTED SOFTWARE ENGINEERING 4. Evolutionary Process Model - (ii) Spiral Model… It maintains the systematic stepwise approach suggested by the classic life cycle (i.e, waterfall) but also incorporates it into an iterative framework activity (prototype approach). OBJECT ORIENTED SOFTWARE ENGINEERING 4. Evolutionary Process Model - (ii) Spiral Model… Spiral areas are: Planning Getting requirements Project planning (based on initial requirements.) Project planning (based on customer evaluation.) Risk analysis Cost/Benefit and threats/opportunities analysis Based on initial requirements and later on customer feedback Engineering Preview it Do it Customer evaluation OBJECT ORIENTED SOFTWARE ENGINEERING 4. Evolutionary Process Model - (ii) Spiral Model…. OBJECT ORIENTED SOFTWARE ENGINEERING 4. Evolutionary Process Model - (ii) Spiral Model… Each phase of Spiral Model is divided into four quadrants as (shown in the previous slide). The functions of these four quadrants are: 1. Planning:- Objectives determination and identify alternative solutions. Requirements are gathered from the customers and the objectives are identified, elaborated and analyzed at the start of every phase. Then alternative solutions possible for the phase are proposed in this quadrant. OBJECT ORIENTED SOFTWARE ENGINEERING 4. Evolutionary Process Model - (ii) Spiral Model… 2. Risk Analysis:- Identify and resolve Risks. During the second quadrant all the possible solutions are evaluated to select the best possible solution. Then the risks associated with that solution is identified and the risks are resolved using the best possible strategy. At the end of this quadrant, Prototype is built for the best possible solution. OBJECT ORIENTED SOFTWARE ENGINEERING 4. Evolutionary Process Model - (ii) Spiral Model… 3. Engineering :- Develop next version of the Product. During the third quadrant, the identified features are developed and verified through testing. At the end of the third quadrant, the next version of the software is available. 4. Customer Evaluation:- Review and plan for the next Phase. In the fourth quadrant, the Customers evaluate the so far developed version of the software. In the end, planning for the next phase is started. OBJECT ORIENTED SOFTWARE ENGINEERING Advantages of Spiral Model… 1. Risk Handling: High amount of risk analysis hence, avoidance of Risk is enhanced. 2. Good for large and mission-critical (complex) projects. 3. Strong approval and documentation control. 4. Flexibility in Requirements: Additional Functionality can be added at a later date. 5. Customer satisfaction: Software is produced early in the software life cycle. OBJECT ORIENTED SOFTWARE ENGINEERING Disadvantages of Spiral Model… 1. Expensive: Can be a costly model to use. 2. To perform Risk analysis, it requires highly specific expertise. 3. Doesn’t work well for smaller projects. 4. Too much dependable on Risk Analysis: Project’s success is highly dependent on the risk analysis phase. 5. Difficulty in time management: As the number of phases is unknown at the start of the project, so time estimation is very difficult THANK YOU Dr. Premalatha H M Department of Computer Applications [email protected] +91 80 6666 3333 Extn 224 OBJECT ORIENTED SOFTWARE ENGINEERING Unified Process Model Dr. Premalatha H M Department of Computer Applications OBJECT ORIENTED SOFTWARE ENGINEERING 5. The Unified Process Model Background: 1990--Many object-oriented analysis and design methods were proposed. They eventually worked together on a unified method, called the Unified Modeling Language (UML) UML is a robust notation for the modeling and development of object-oriented systems. UML became an industry standard in 1997. However, UML does not provide the process framework, only the necessary technology for object-oriented development. OBJECT ORIENTED SOFTWARE ENGINEERING 5. The Unified Process Model… Booch, Jacobson, and Rumbaugh later developed the unified process, which is a framework for object-oriented software engineering using UML Draws on the best features and characteristics of conventional software process models. Emphasizes the important role of software architecture. Consists of a process flow that is iterative and incremental, thereby providing an evolutionary feel OBJECT ORIENTED SOFTWARE ENGINEERING 5. The Unified Process Model… Unified Process — a “use-case driven, architecture-centric, iterative and incremental” software process closely aligned with the Unified Modeling Language (UML). It implements many of the best principles of agile software development. OBJECT ORIENTED SOFTWARE ENGINEERING 5. The Rational Unified Process Model… The Rational Unified Process® is a Software Engineering Process. It provides a disciplined approach in assigning tasks and responsibilities in development process within an organization. Its goal is to ensure the production of high-quality software that meets the needs of its end-users, within a predictable schedule and budget. OBJECT ORIENTED SOFTWARE ENGINEERING 5. The Unified Process Model… The phases of Unified Process are: 1. The Inception phase 2. The Elaboration phase 3. The Construction phase 4. The Transition phase 5. The Production phase OBJECT ORIENTED SOFTWARE ENGINEERING The Phases of Unified Process Model… OBJECT ORIENTED SOFTWARE ENGINEERING The Unified Process Model… Advantages: Well-documented and complete methodology. Open and Public. Training readily available. Changing Requirements. Reduced Integration Time and Effort. Higher Level of Re-use Disadvantages: Process is too complex. Does not capture the sociological aspects of software development. THANK YOU Dr. Premalatha H M Department of Computer Applications [email protected] +91 80 6666 3333 Extn 224 OBJECT ORIENTED SOFTWARE ENGINEERING Agility and Process Dr. Premalatha H M Department of Computer Applications OBJECT ORIENTED SOFTWARE ENGINEERING Introduction to Agile Software Development… What is Agile ? Agile combines a philosophy and a set of development guidelines. The philosophy encourages customer satisfaction and early incremental delivery of software, Small but highly motivated project teams, informal methods, minimal software engineering work products, and overall development simplicity. OBJECT ORIENTED SOFTWARE ENGINEERING Agile Software Development The development guidelines more focus on Delivery over analysis and design , Active and continuous communication between developers and customers. OBJECT ORIENTED SOFTWARE ENGINEERING Agile Software Development… What is Agility ? Effective (rapid and adaptive) response to change. Effective communication among all stakeholders. Drawing the customer onto the team. Organizing a team so that it is in control of the work performed. Yielding … Rapid, incremental delivery of software. OBJECT ORIENTED SOFTWARE ENGINEERING Agile Software Development… Agility is dynamic, content specific, aggressively change embracing, and growth oriented. OBJECT ORIENTED SOFTWARE ENGINEERING Agile Principles 1. Customer Satisfaction − Highest priority is given to satisfy the requirements of customers through early and continuous delivery of valuable software. 2. Welcome Change − Changes are inevitable during software development. Ever-changing requirements should be welcome, even late in the development phase. Agile processes should work to increase customers' competitive advantage. 3. Deliver a Working Software − Deliver a working software frequently, ranging from a few weeks to a few months, considering shorter time-scale. OBJECT ORIENTED SOFTWARE ENGINEERING Agile Principles 4.Collaboration − Business people and developers must work together during the entire life of a project. 5.Motivation − Projects should be built around motivated individuals. Provide an environment to support individual team members and trust them so as to make them feel responsible to get the job done. 6.Face-to-face Conversation − Face-to-face conversation is the most efficient and effective method of conveying information to and within a development team. 7. Measure the Progress as per the Working Software − Working software is the key and it should be the primary measure of progress OBJECT ORIENTED SOFTWARE ENGINEERING Agile Principles 8.Maintain Constant Pace − Agile processes aim towards sustainable development. The business, the developers, and the users should be able to maintain a constant pace with the project. 9.Monitoring − Pay regular attention to technical excellence and good design to enhance agility. 10.Simplicity − Keep things simple and use simple terms to measure the work that is not completed. OBJECT ORIENTED SOFTWARE ENGINEERING Agile Principles… 11. Self-organized Teams − An agile team should be self- organized and should not depend heavily on other teams because the best architectures, requirements, and designs emerge from self-organized teams. 12. Review the Work Regularly − Review the work done at regular intervals so that the team can reflect on how to become more effective and adjust its behavior accordingly. THANK YOU Dr. Premalatha H M Department of Computer Applications [email protected] +91 80 6666 3333 Extn 224 OBJECT ORIENTED SOFTWARE ENGINEERING SCRUM - Agile methodology Dr. Premalatha H M Department of Computer Applications OBJECT ORIENTED SOFTWARE ENGINEERING SCRUM Originally proposed by Schwaber and Beedle. “Scrum is a framework for developing complex products and systems. It is grounded in empirical process and control theory. Scrum employs an iterative and incremental approach to optimize predictability & control risk” – Ken Schwaber. OBJECT ORIENTED SOFTWARE ENGINEERING SCRUM characteristics Scrum—distinguishing features Development work is partitioned into “packets”. Testing and documentation are on-going as the product is constructed. Work occurs in “sprints” and is derived from a “backlog” of existing requirements. Meetings are very short and sometimes conducted without chairs. A team facilitator, called a Scrum master, leads the meeting and assesses the responses from each person. “demos” are delivered to the customer with the time- box allocated OBJECT ORIENTED SOFTWARE ENGINEERING More details about SCRUM Scrum incorporates a set of process patterns that emphasize project priorities, compartmentalized work units, communication, and frequent customer feedback. OBJECT ORIENTED SOFTWARE ENGINEERING SCRUM Scrum roles There are 3 Roles : 1. Product Owner 2. Team (development team) 3. Scrum Master OBJECT ORIENTED SOFTWARE ENGINEERING SCRUM… 1. Product Owner: A Scrum Product Owner is accountable for maximizing the value of the product resulting from the work of the Scrum Team. How this is done may vary widely across organizations, Scrum Teams, and individuals. The Product Owner is a person, but not a committee. The Product Owner may represent the needs of many stakeholders in the Product Backlog. Those wanting to change the Product Backlog can do so by trying to convince the Product Owner. OBJECT ORIENTED SOFTWARE ENGINEERING SCRUM… Product Owner… The Product Owner is also accountable for effective Product Backlog management, which includes: Developing and explicitly communicating the Product goal Creating and clearly communicating Product Backlog items Ordering Product Backlog items Ensuring that the Product Backlog is transparent, visible and understood. OBJECT ORIENTED SOFTWARE ENGINEERING SCRUM… 2. Development team The Development Team decides how to accomplish the work set forth by the Product Owner. Development Teams are structured and empowered to organize and manage their own work. Development teams have the following characteristics: They are self-organizing. No one (not even the ScrumMaster) tells the development team how to turn Product Backlog into Increments of potentially releasable functionality; Development teams are cross-functional, with all the skills as a team necessary to create a product Increment; OBJECT ORIENTED SOFTWARE ENGINEERING SCRUM… Development team… Scrum recognizes no titles for development team members, regardless of the work being performed by the person; Scrum recognizes no sub-teams in the development team, regardless of domains that need to be addressed like testing, architecture, operations, or business analysis; ​Individual development team members may have specialized skills and areas of focus, but accountability belongs to the development team as a whole. OBJECT ORIENTED SOFTWARE ENGINEERING SCRUM… 3. Scrum master: Scrum master serves the team ( helping them remove any and all impediments that surface), Protects the team ( from any outside disruption or interference) and Teaches & guides the team - use of scrum He also train both team and product owner about values and principles of scrum. OBJECT ORIENTED SOFTWARE ENGINEERING SCRUM Some of the keywords used in Scrum Product Backlog—A prioritized list of project requirements, the product manager assesses the backlog and updates priorities as required. Sprints—consist of work units that are required to achieve each requirements defined in the backlog that must be fit into a predefined time-box(typically 30 days). Changes are not introduced during the sprint. Hence, the sprint allows team members to work in a short-term, but stable environment OBJECT ORIENTED SOFTWARE ENGINEERING SCRUM Daily Scrum Meeting: The Daily Scrum is the key inspect and adapt meeting during a Sprint. During the Sprint execution , the scrum Team meets every day, for Daily Scrum meeting and inspects the progress and ensures communication flow inside the Team. It is a short (15 minutes) meeting. Time box: 15 Minutes Attendees: Scrum Master, Product Owner(Optional) and Scrum development team OBJECT ORIENTED SOFTWARE ENGINEERING SCRUM Daily scrum meeting is held at the same time at same place each day. During the meeting, each Team member explains: What have I accomplished since the last meeting? What am I going to do before the next meeting? What obstacles are in my way? OBJECT ORIENTED SOFTWARE ENGINEERING SCRUM Sprint backlog: The Sprint Backlog is the set of Product Backlog items selected for the Sprint, plus a plan for delivering the product Increment and realizing the Sprint Goal. The Sprint Backlog is a forecast by the Team about what functionality will be made available in the next Increment and the work needed to deliver that functionality as a working product Increment OBJECT ORIENTED SOFTWARE ENGINEERING SCRUM The Sprint Backlog is a plan with enough detail that can be understood but the Team to track in the Daily Scrum. The Team modifies the Sprint Backlog throughout the Sprint. Backlog emerges during the Sprint. This emergence occurs as the Team works through the plan and learns more about the work needed to achieve the Sprint Goal. OBJECT ORIENTED SOFTWARE ENGINEERING SCRUM process in detail Dr. Premalatha H M Department of Computer Applications OBJECT ORIENTED SOFTWARE ENGINEERING SCRUM Overview OBJECT ORIENTED SOFTWARE ENGINEERING SCRUM process in detail O OBJECT ORIENTED SOFTWARE ENGINEERING SCRUM process in detail Scrum principles are consistent with the agile manifesto and are used to guide development activities within a process that incorporates the following framework activities: requirements, analysis, design, evolution, and delivery. Within each framework activity, work tasks take place in a relatively short time-boxed4 period called a sprint. The work conducted within a sprint (the number of sprints required for each framework activity will vary depending on size of the product and its complexity) is adapted to the problem at hand and is defined and often modified in real time by the Scrum team OBJECT ORIENTED SOFTWARE ENGINEERING SCRUM Summary…. OBJECT ORIENTED SOFTWARE ENGINEERING Agile Software Development… Other Agile Frameworks include: 1. Extreme Programming 2. Kanban 3. DevOps THANK YOU Dr. Premalatha H M Department of Computer Applications [email protected] +91 80 6666 3333 Extn 224 OBJECT ORIENTED SOFTWARE ENGINEERING Extreme Programming (XP) Dr. Premalatha H M Department of Computer Applications OBJECT ORIENTED SOFTWARE ENGINEERING 1. Extreme Programming (XP) XP is the most prominent Agile Software development method. Prescribes a set of daily stakeholder practices. “Extreme” levels of practicing leads to more responsive software. Changes are more realistic, natural, inescapable. OBJECT ORIENTED SOFTWARE ENGINEERING 1. Extreme Programming (XP) XP Values A set of five values that establish a foundation for all work performed as part of XP— 1. Communication, 2. Simplicity, 3. Feedback, 4. Courage, and 5. Respect Each of these values is used as a driver for specific XP activities, actions, and tasks. OBJECT ORIENTED SOFTWARE ENGINEERING 1. Extreme Programming (XP) XP Process The most widely used agile process, originally proposed by Kent Beck. Extreme Programming uses an object-oriented approach. Encompasses a set of rules and practices that occur within the context of four framework activities: planning, design, coding, and testing. OBJECT ORIENTED SOFTWARE ENGINEERING 1. Extreme Programming (XP) - XP Process OBJECT ORIENTED SOFTWARE ENGINEERING 1. Extreme Programming (XP) – XP Process 1. XP Planning: The planning activity begins with listening , Listening leads to the creation of a set of “stories” that describe required output, features, and functionality for software to be built. Begins with the creation of “user stories”. Agile team assesses each story and assigns a cost. Stories are grouped for a deliverable increment. A commitment is made on delivery date. After the first increment “project velocity” is used to help define subsequent delivery dates for other increments. OBJECT ORIENTED SOFTWARE ENGINEERING 1. Extreme Programming (XP) – XP Process… 2. XP Design: Encourage the use of CRC cards as an effective mechanism for thinking about the software in an object-oriented context. CRC (class-responsibility-collaborator) cards identify and organize the object-oriented classes that are relevant to the current software increment. OBJECT ORIENTED SOFTWARE ENGINEERING 1. Extreme Programming (XP) – XP Process… 2. XP Design… OBJECT ORIENTED SOFTWARE ENGINEERING 1. Extreme Programming (XP) – XP Process… 2. XP Design… For difficult design problems, XP suggests the creation of “spike solutions”—a design prototype. A spike solution is a very simple program to explore potential solution. Difficult design should be modeled using prototype. OBJECT ORIENTED SOFTWARE ENGINEERING 1. Extreme Programming (XP) 3. XP Coding: Recommends the construction of a unit test for a story before coding commences. This helps developer to better focus on what must be implemented to pass the test. Encourages “pair programming”. This provides a mechanism for real time problem solving, real time quality assurance as it is created. As pair programmers complete their work, the code they develop is integrated with the work of other. All unit tests are executed daily OBJECT ORIENTED SOFTWARE ENGINEERING 1. Extreme Programming (XP) 3. XP Coding… XP encourages “refactoring”—an iterative refinement of the internal program design. Refactoring is a process of changing a software system in such a way that it does not alter the external behavior of the code, yet improves the internal structure. OBJECT ORIENTED SOFTWARE ENGINEERING 1. Extreme Programming (XP) 4. XP Testing: All unit tests are executed daily. “Acceptance tests” are defined by the customer and executed to assess customer visible functionality. XP acceptance tests, also called customer tests, are specified by the customer and focus on overall system features and functionality that are visible and reviewable by the customer. THANK YOU Dr. Premalatha H M Department of Computer Applications [email protected] +91 80 6666 3333 Extn 224 OBJECT ORIENTED SOFTWARE ENGINEERING Kanban Dr. Premalatha H M and Ms. Archana A Department of Computer Applications OBJECT ORIENTED SOFTWARE ENGINEERING Kanban The Kanban method is a lean methodology that describes methods for improving any process or workflow. Kanban is focused on change management and service delivery. Change management defines the process through which a requested change is integrated into a software-based system. Service delivery is encouraged by focusing on understanding customer needs and expectations. The team members manage the work and are given the freedom to organize themselves to complete it. Policies evolve as needed to improve outcomes. OBJECT ORIENTED SOFTWARE ENGINEERING Kanban The Kanban approach is a popular agile software development methodology that focuses on continuous improvement, flexibility, and enhanced workflow. It emphasizes visualizing the entire project workflow on a Kanban board, which helps teams track progress, identify bottlenecks, and make data-driven decisions to optimize their processes. OBJECT ORIENTED SOFTWARE ENGINEERING Kanban Fig: Kanban board OBJECT ORIENTED SOFTWARE ENGINEERING Kanban Kanban originated at Toyota as a set of industrial engineering practices and was adapted to software development by David Anderson in 1950. Kanban core practices are as follows: 1. Visualize Work: Represent work items as cards or tickets on a Kanban board, moving them through columns that represent different stages of the workflow. 2. Limit Work-in-Progress (WIP): Set limits on the number of tasks that can be in each stage to prevent overburdening and maintain focus. OBJECT ORIENTED SOFTWARE ENGINEERING Kanban Manage Flow: Optimize the movement of work through the workflow by identifying and removing bottlenecks. Make Policies Explicit: Clearly define and document policies that govern the workflow, such as WIP limits and prioritization rules. Continuous Improvement: Regularly review and refine the Kanban system based on feedback and data analysis. OBJECT ORIENTED SOFTWARE ENGINEERING Kanban Key Elements of Kanban Implementation: Kanban Board: A physical or digital board that visually represents the workflow, typically divided into columns like "To Do," "Doing," "In Review," and "Done." Kanban Cards: Cards represent individual tasks or work items, containing information like task description, priority, and due date. WIP Limits: Maximum number of tasks allowed in each stage of the workflow, preventing overburdening and ensuring focus. Swimlanes: Optional horizontal divisions on the Kanban board to represent different categories of work, such as by feature or team.. OBJECT ORIENTED SOFTWARE ENGINEERING Basic principles of Kanban 1) Visualize work: Represent tasks on a board to provide a clear view of the workflow. 2) Limit work-in-progress (WIP): Set limits on the number of tasks in progress to avoid overloading team members and ensure focus and quality. 3) Manage flow: Track and optimize the flow of tasks through various stages of completion. 4) Make process policies explicit: Clearly define and communicate how tasks are managed and moved through the workflow. 5) Implement feedback loops: Regularly review and adjust processes based on feedback to improve efficiency. 6) Improve collaboratively, evolve experimentally: Use data and collective insights to continuously improve workflows and processes. OBJECT ORIENTED SOFTWARE ENGINEERING Kanban The team meetings for Kanban are like those in the Scrum framework. If Kanban is being introduced to an existing project, not all items will start in the backlog column. Developers need to place their cards in the team process column by asking themselves: Where are they now? Where did they come from? Where are they going? OBJECT ORIENTED SOFTWARE ENGINEERING Kanban The basis of the daily Kanban standup meeting is a task called “walking the board.” Leadership of this meeting rotates daily. The team members identify any items missing from the board that are being worked on and add them to the board. The team tries to advance any items they can do to “done.” The goal is to advance the high business value items first. The team looks at the flow and tries to identify any impediments to completion by looking at workload and risks OBJECT ORIENTED SOFTWARE ENGINEERING Kanban During the weekly retrospective meeting, process measurements are examined. The team considers where process improvements may be needed and proposes changes to be implemented. Kanban can easily be combined with other agile development practices to add a little more process discipline. THANK YOU Dr. Premalatha H M Department of Computer Science [email protected] +91 80 6666 3333 Extn 224 OBJECT ORIENTED SOFTWARE ENGINEERING DevOps Dr.Premalatha H M & Ms. Archana A Department of Computer Applications OBJECT ORIENTED SOFTWARE ENGINEERING DevOps DevOps, at its core, is a philosophy that aims to bridge the gap between software development (Dev) and IT operations (Ops) teams. It is a set of practices, tools, and cultural changes that foster collaboration, automation, and continuous improvement throughout the entire software development lifecycle. OBJECT ORIENTED SOFTWARE ENGINEERING DevOps Working of DevOps: consider an example Imagine a bakery: Traditionally (without DevOps): The bakers (Dev) create new recipes and bake delicious treats. But getting those treats to the customers (production) is a separate process handled by the delivery team (Ops). Communication is limited, leading to delays, confusion, and sometimes even stale treats reaching the customers. With DevOps: The bakers and delivery team work together. They share recipes, understand each other's challenges, and automate tasks like mixing ingredients and packaging. This allows them to rapidly experiment with new recipes, identify issues early, and deliver fresh treats to customers faster and more reliably.. OBJECT ORIENTED SOFTWARE ENGINEERING DevOps DevOps was created by Patrick DeBois to combine Development and Operations. DevOps attempts to apply agile and lean development principles across the entire software supply chain. Figure (next slide) presents an overview of the DevOps workflow. OBJECT ORIENTED SOFTWARE ENGINEERING DevOps DevOps OBJECT ORIENTED SOFTWARE ENGINEERING DevOps DevOps OBJECT ORIENTED SOFTWARE ENGINEERING DevOps The DevOps approach involves several stages that loop continuously until the desired product exists: Continuous development. Software deliverables are broken down and developed in multiple sprints with the increments delivered to the quality assurance members of the development team for testing Continuous testing. Automated testing tools are used to help team members test multiple code increments at the same time to ensure they are free of defects prior to integration OBJECT ORIENTED SOFTWARE ENGINEERING DevOps Continuous integration. The code pieces with new functionality are added to the existing code and to the run-time environment and then checked to ensure there are no errors after deployment. Continuous deployment. At this stage the integrated code is deployed (installed) to the production environment, which might include multiple sites globally that need to be prepared to receive the new functionality. Continuous monitoring. Operations staff who are members of the development team help to improve software quality by monitoring its performance in the production environment and proactively looking for possible problems before users find them OBJECT ORIENTED SOFTWARE ENGINEERING DevOps Key DevOps principles: Automation: Repetitive tasks like infrastructure provisioning, testing, and deployment are automated, freeing up time for more creative and strategic work. Continuous integration and continuous delivery (CI/CD): Changes are integrated and deployed frequently, allowing for faster feedback and quicker fixes. Shared responsibility: Both Dev and Ops teams take ownership of the entire software lifecycle, from development to production. Monitoring and feedback: Continuous monitoring and feedback loops help identify and address issues quickly. OBJECT ORIENTED SOFTWARE ENGINEERING DevOps Benefits of DevOps: Faster software delivery: Get new features and updates to customers quicker. Improved quality: Catch and fix bugs early in the development process. Increased reliability: Fewer production issues and downtime. Better team collaboration: Improved communication and shared goals between Dev and Ops. Note: Remember, DevOps is not just a set of tools, it's a cultural shift. It requires a change in mindset and collaboration to truly reap its benefits. THANK YOU Dr. Premalatha H M Department of Computer Science [email protected] +91 80 6666 3333 Extn 224 OBJECT ORIENTED SOFTWARE ENGINEERING Review of Object Orientation Dr. Premalatha H M Department of Computer Applications OBJECT ORIENTED SOFTWARE ENGINEERING Review of Object Orientation OBJECT ORIENTED SOFTWARE ENGINEERING Aspects of object orientations are Object Orientation Polymorphi Classification Inheritance sm OBJECT ORIENTED SOFTWARE ENGINEERING Introduction to Object Orientation OO approach include the following aspects or characteristics 1. Identity & Classification 2. Inheritance 3. polymorphism Identity: Data is quantized into discrete, distinguishable entities called objects. Each object has its own inherent identity. Ex: PC, Bicycle, File in a file system, Scheduling policy in a multiprocessing operation OBJECT ORIENTED SOFTWARE ENGINEERING 1. Classification It means that objects with same data structure(attributes) and behaviour(operations) are grouped into a class. For Example: OBJECT ORIENTED SOFTWARE ENGINEERING 2. Inheritance Inheritance: is sharing of attributes and operations among classes based on a hierarchical relationship. Ex: Scrolling window & Fixed window are sub classes of Window class. OBJECT ORIENTED SOFTWARE ENGINEERING 2. Inheritance… Elements at the same level of the hierarchy should be at the same level of abstraction OBJECT ORIENTED SOFTWARE ENGINEERING 3. Polymorphism It means that the same operation may behave differently for different classes. For example, in Chess game move operation behaves differently for different pawns OBJECT ORIENTED SOFTWARE ENGINEERING Object Oriented Methodology The methodology has following stages System Conception- Conceive an application and formulating the tentative requirement (generating an idea) Analysis – Domain Analysis, System Analysis System Design – overall architecture of system Class design- Detailed design where data structure and algorithms are optimized Implementation - coding OBJECT ORIENTED SOFTWARE ENGINEERING Object Oriented Themes ✓ Abstraction ✓ Encapsulation ✓ Combining data and behaviour ✓ Sharing ✓ Emphasis on essence of object OBJECT ORIENTED SOFTWARE ENGINEERING 1. Abstraction This means focusing on what an object is and does, before deciding how it should be implemented OBJECT ORIENTED SOFTWARE ENGINEERING 2. Encapsulation Encapsulation means information hiding. It consists of separating the external aspects of an object, which are accessible to other objects, from internal implementation details of the object, which are hidden from other objects. It prevents program from becoming so interdependent that a small change has massive ripple effect. It gives the ability to combine data structure and behavior in a single entity OBJECT ORIENTED SOFTWARE ENGINEERING 3. Combining Data and Behaviour The burden of calling code for data execution and operations separately can be minimized by combining data properties and behavioral properties of an entity together. In object oriented program data structure and procedure is defined in single class definition. OBJECT ORIENTED SOFTWARE ENGINEERING 4. Sharing Object Oriented technologies promote sharing at different levels. Inheritance of both data structure and behavior lets subclasses share common code. This sharing via inheritance is one of the main advantages of Object Oriented languages. Object Oriented Development not only lets you share information within an application but also offers the prospect of reusing designs and code on future projects. OBJECT ORIENTED SOFTWARE ENGINEERING 5. Emphasis on essence of object Object Oriented Technology stresses what an object is, rather than how it is used. The uses of an object depend on the details of the application and often change during development. THANK YOU Dr. Premalatha H M Department of Computer Applications [email protected] +91 80 6666 3333 Extn 224

Use Quizgecko on...
Browser
Browser