Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 1, Introduction to Software Engineering.

Slides:



Advertisements
Similar presentations
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.
Advertisements

Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 12, Software Life Cycle.
Computer Science Department
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 1 Software Engineering September 12, 2001 Capturing.
Object-Oriented Software Development CS 3331 Fall 2009.
CS487 Software Engineering Omar Aldawud
Using UML, Patterns, and Java Object-Oriented Software Engineering 15. Software Life Cycle.
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Karolina Muszyńska Based on:
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 Example of a Problem Statement: Introduction into.
Using UML, Patterns, and Java Object-Oriented Software Engineering Royce’s Methodology Chapter 16, Royce’ Methodology.
Introduction To System Analysis and Design
SE curriculum in CC2001 made by IEEE and ACM: Overview and Ideas for Our Work Katerina Zdravkova Institute of Informatics
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
Software Engineering About the Course Software Engineering Qutaibah Malluhi Computer Science and Engineering Department Qatar University.
Sept. 4, 2003CS WPI1 CS 509 Design of Software Systems Fuller Labs, Room 311 Thursday Evenings 6 - 9pm Instructor: Diane Kramer.
Creating Architectural Descriptions. Outline Standardizing architectural descriptions: The IEEE has published, “Recommended Practice for Architectural.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
Chapter 3: The Project Management Process Groups
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 3, Project Organization and Communication.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
1 CMPT 275 Software Engineering Requirements Analysis Process Janice Regan,
January 28, 2014CS410 – Software Engineering Lecture #1: Introduction 1 Welcome to CS 410 – Introduction to Software Engineering Spring 2014 Instructor:
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.
S/W Project Management
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 Introduction to Software Engineering CEN 4010.
CSI315 Web Applications and Technology Overview of Systems Development (342)
Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 1, Introduction to Software Engineering.
Conquering Complex and Changing Systems Object-Oriented Software Engineering Art for Chapter 11, Project Management.
Chapter 2 The process Process, Methods, and Tools
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 1: Introduction.
-Nikhil Bhatia 28 th October What is RUP? Central Elements of RUP Project Lifecycle Phases Six Engineering Disciplines Three Supporting Disciplines.
1 Chapter 2 The Process. 2 Process  What is it?  Who does it?  Why is it important?  What are the steps?  What is the work product?  How to ensure.
Demystifying the Business Analysis Body of Knowledge Central Iowa IIBA Chapter December 7, 2005.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Instructor: Peter Clarke
CEN rd Lecture CEN 4021 Software Engineering II Instructor: Masoud Sadjadi Phases of Software.
Software Requirements Engineering CSE 305 Lecture-2.
Chapter 10 Information Systems Analysis and Design
Introduction To System Analysis and Design
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 4, Requirements Elicitation.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
1 Introduction to Software Engineering Lecture 1.
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
L6-S1 UML Overview 2003 SJSU -- CmpE Advanced Object-Oriented Analysis & Design Dr. M.E. Fayad, Professor Computer Engineering Department, Room #283I College.
Systems Analysis and Design in a Changing World, Fourth Edition
Object-Oriented Software Engineering using Java, Patterns &UML. Presented by: E.S. Mbokane Department of System Development Faculty of ICT Tshwane University.
Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 1 Software Engineering November 7, 2001 Project.
CEN First Lecture CEN 4010 Introduction to Software Engineering Instructor: Masoud Sadjadi
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
Using UML, Patterns, and Java Object-Oriented Software Engineering Art for Chapter 1, Introduction to Software Engineering.
Modelling the Process and Life Cycle. The Meaning of Process A process: a series of steps involving activities, constrains, and resources that produce.
UML - Development Process 1 Software Development Process Using UML.
It is the fuel of modern life Business are run Government rule Scientists Industries Education However, building and maintaining software is hard and getting.
21/1/ Analysis - Model of real-world situation - What ? System Design - Overall architecture (sub-systems) Object Design - Refinement of Design.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
COP st Lecture August 29, 2005 COP 4009 Component-Based Software Engineering Fall 2005 Instructor: Masoud Sadjadi
Introduction to Software Engineering 1. Software Engineering Failures – Complexity – Change 2. What is Software Engineering? – Using engineering approaches.
Review of Definitions Software life cycle: –Set of activities and their relationships to each other to support the development of a software system Software.
Software Engineering – Fall 2015 (CSC 4350/6350) TR. 5:30 pm – 7:15 pm Rao Casturi 09/01/2015
Bernd Bruegge and Allen Dutoit Requirements Process The requirements process consists of two activities: Requirements Elicitation: Definition of the system.
Advanced Software Engineering Dr. Cheng
Review of last class Software Engineering Modeling Problem Solving
Object-Oriented Software Engineering Using UML, Patterns, and Java,
IEEE Std 1074: Standard for Software Lifecycle
Introduction to Software Engineering
CEN 5011 Advanced Software Engineering
Chapter 1, Introduction to Software Engineering
Software Development Process Using UML Recap
Presentation transcript:

Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 1, Introduction to Software Engineering

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 2 Course format  A Single Semester Course  Lectures: Theoretical foundations and background  Project: Learn how to apply them in practice  Lectures and Project work are interleaved  Labs and Assignments complement lectures and the team project  A Single Project Course  Everybody is working on the same project  Cheating Rule for CS3013  You cheat if you do not acknowledge the contribution made by others.

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 3 Lecture Overview  Introduction  Objectives of Course  Project  e-Textbook System Problem Statement  Top Level Design  Syllabus  Introduction of People  Administrative Matters  Software Engineering Overview  A UML class model of software engineering  Activities  Ticket distributor example

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 4 Objectives of this course  Acquire technical knowledge  Understand difference between program and software product  Be able to reconstruct the analysis and design of an existing software system  Be able to design and implement a subsystem that will be part of a larger system  Acquire managerial knowledge  produce a high quality software system within budget & time  while dealing with complexity and change

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 5 Emphasis is on team-work  Participate in collaborative design  Work as a member of a project team, assuming various roles  Create and follow a project and test plan  Create the full range of documents associated with a software product  Complete a project on time

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 6 How can we accomplish this?  Course Project  e-Textbook: online used textbook auction web site  The 4 R’s:  Real Problem: University students want an easy way to find used textbooks to buy as well as a way to auction off their own used textbooks (that they no longer need)  Real Client: You  Real Data: All textbooks purchased for courses at UNB and Saint Thomas  Real Deadline: April 12, 2001

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 7 Assumptions and Requirements for this Class  Assumption:  You are proficient in a programming language (Java preferred), but have no experience in analysis or design of a system  You have access to a Web Browser  Course Homepage:  Requirements:  You have taken the prerequisite course CS2013 Software Engineering I  or  You have practical experience with maintaining or developing a large software system

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 8 Project Goals  Attempt to produce a web site with the e-Textbook auction site functionality  Implementation of three major processes:  Handling registration of used textbooks for auction.  Carrying out (in a secure fashion) the bidding process for textbooks.  Keeping track of all registered users of the e-Textbook site.  Demonstration of a conceptual prototype

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 9 Bidder Auction a Textbook Seller Notification of Sale Add User Internet Administrator Add Textbook Basic Software Architecture for e-Textbook Project

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 10 Teams  e-Textbook will be developed in a team-based approach  Each team will do the same e-Textbook project  You will be member of one team of four to six people  Teams will normally meet at least once per week during the lab session  Team selection is done by project management and will be announced in class, Tuesday, January 16.  Teams will be formed so that all team members have common lab times  If you wish to be part of the same team, please assign one person to send me a suggested team list by

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 11 Acceptance Milestone  The acceptance criteria are established in a dialog with the client during the requirements analysis phase  The e-Textbook system will be delivered with the following artifacts on a CD-ROM  Requirements Analysis Document  System Design Document  Object Design Document  Test Manual  Source Code Depot

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 12 If you need help  Questions about Passwords, Logging into the network, Accessing the Home page:  UNB Computing Services help desk , room HD-11  Questions about getting into the ITD414 lab  Troy Cabel , room  Jeff Geddes , room  Questions about the Course  Brad Nickerson , room  office hours Wednesdays, 11:30 a.m. t o 12:30, Fridays 3:30 to 5:00 p.m.

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 13 Software Engineering  Software systems are complex  Impossible to understand by a single person  Many projects are never finished: "vaporware"  The problem is arbitrary complexity  Definitions  The establishment and use of sound engineering principles (methods) in order to obtain economically software that is reliable and works on real machines (Bauer, F. L. Software Engineering. Information Processing 71., 1972).  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) (IEEE Std ).IEEE Std  Software engineering is the computer science discipline concerned with developing large applications. Software engineering covers not only the technical aspects of building software systems, but also management issues, such as directing programming teams, scheduling, and budgeting (WebReference Webopaedia ).WebReference Webopaedia  Our definition:  Software Engineering means the construction of quality software with a limited budget and a given deadline in the context of constant change  Emphasis is on both, on software and on engineering

Activities  Modeling  Problem-solving  Knowledge Acquisition  Rationale Driven  Helps software engineers understand implications of change

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 15 Modeling  Focusing relevant details at each development stage  A model is an abstract representation of a system for answering questions about the system  Real world system: a set of phenomena  Problem model: a set of interdependent concepts describing those aspects of the real world relevant to the problem under consideration.  Model of problem domain vs. model of solution domain  OO methods: Problem D. model + Solution D. model 1Objects and relationships in problem domain 2Object and relationships in solution domain (extension from 1)  Software Development: identify and describe a system as a set of models to address the end user’s problem.

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 16

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 17 Problem Solving  Software engineering is an engineering activity  Rely on empirical methods to evaluate the benefits of different alternatives represented as models  The engineering method: 1. Formulate the problem (requirements elicitation and 2. Analyze the problem analysis) 3. Search for solutions (system design and 4. Decide on the appropriate solution object design) 5. Specify the solution (implementation)  Activities: experimentation, pattern reuse, incremental evolution, reviews of problem and solution models

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 18 Knowledge Acquisition  In modeling application and solution domains  Data collection  Information organization  Knowledge formalization  Non-linear knowledge acquisition  Single piece of data can invalidate complete models  Linear software development process  Waterfall model  Non-linear software process  Risk-based development –develop higher risks first  Issue-based development –develop all issues in parallel

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 19 Rationale Driven  Rationale of the system  The context and rationale in which each design decision was made  To be captured and understood by software engineer  Represents a set of issue models with larger amount of information than the solution models  Not explicit (without explicitly evaluating different alternatives)  Enables software engineers to understand the implication of a proposed change when revising a decision.  Rationale management

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 20 Software Engineering Concepts  Participants and Roles  Role  a set of responsibilities  associated with a set of tasks  assigned to a participant  typical roles: end user, client, developer, project manager  Participant  any persons involved in the project  plays certain role(s)  Systems and Models  System: the underlying reality  example: ticket distributor for a train  Model: any abstraction of the reality  example: requirement, analysis, design, implementation models

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 21 Figure 1-1. Software engineering concepts, depicted as a UML class diagram (OMG, 1998). consumes Activity WorkProductResourcesTask Equipment Time ParticipantDocument Model System is produced by * * ** Project

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 22  Work Products  Artifact produced during development  Internal work product  for the project’s internal consumption  any artifact not in the contract or requested by the client  example: test plan  Deliverable  for the client  defined prior to the start of the project and specified in the contract.  Activities, Tasks, and Resources  Activity or phases: a set of tasks for a special purpose such as requirement elicitation  Task: an atomic unit of work in terms of management, to be assigned to a developer.  Resources: assets to be used to accomplish work.

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 23  Goals, Requirements and Constraints  Goals  a high level principle to guide the project  define the attributes of the system that are important  primary goal and other goals of a project  conflicting goals  Functional requirements  area of functionality that the system must support (e.g. provide the user with a paper copy of the ticketing information)  Nonfunctional requirements  operation of the system (e.g. response back to user in less than one second 99% of the time)  examples: performance, reliability, security  Constraints  interface with an existing computer system

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 24  Notations, Methods, and Methodologies  Notation  a graphical or textual set of rules for representing a model  Example: UML for OO modeling, Z for system specification using sets  Method  A repeatable technique for solving a specific problem  Example: sorting algorithm, version control  Methodology  a collection of methods for solving a class of problems  decompose software process into activities  examples: Unified software development process, Object Modeling Technique (OMT), Catalysis.

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 25 Software Engineering Development Activities  Requirement elicitation (Client and Developer)  The client and developers define the purpose of the system  Result: description of actors and use cases for functional requirement  Example Use case name:PurchaseOneWayTicket Participating actor:Initialized by Traveler Entry condition:1. Traveler stands in front of the ticket distributor at a station Flow of events:2. Traveler selects the source and destination stations 3. TicketDistributor display the price of the ticket 4. Traveler inserts sufficient money 5. TicketDistributor issues the ticket and returns change Exit condition:6. Traveler holds a valid ticket and the change Special requirements:If the transaction is not completed after 1 minute of inactivity, TicketDistributor returns all inserted money

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 26  Nonfunctional requirements  Reliability: The ticket distributor should be available to traveler at least 95% of the time  Performance: The ticket distributor should provide feedback to the traveler within a second after the transaction has been selected.  Analysis (Developer)  produce a model of the system that is correct, complete, consistent, unambiguous, realistic, and verifiable.  transform the use cases into an object model that completely describes the system  discover ambiguities and inconsistencies

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 27 Figure 1-3. An object model for the ticket distributor (UML class diagram). In the PurchaseOneWayTicket use case, a Traveler initiates a transaction that will result in a Ticket. A Ticket is valid only for a specified Zone. During the Transaction, the system tracks the Balance due by counting the Coins and Bills inserted. results in valid for amount paid Coin BillZoneBalanceTicketTransaction

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 28  System Design (Developer)  define the design goals  decompose the system into smaller subsystems that can be realized by individual teams.  Select strategies for building the system  results:  strategy descriptions  subsystem decomposition  deployment diagram  Object Design (developer)  define custom objects to bridge the gap between the analysis model and the system design platform  Implementation  translate the object model into source code

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 29 Figure 1-4. A subsystem decomposition for the TicketDistributor (UML class diagram, folders represent subsystems, dashed lines represent dependencies). The Traveler Interface subsystem is responsible for collecting input from the Traveler and providing feedback (e.g., display ticket price, returning change). The Local Tariff subsystem computes the price of different tickets based on a local database. The Central Tariff subsystem, located on a central computer, maintains a reference copy of the tariff database. An Updater subsystem is responsible for updating the local databases at each TicketDistributor through a network when ticket prices change. Traveler InterfaceUpdaterLocal TariffCentral Tariff

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 30 Managing Software Development  Communication  exchange models and documents  report the status of work products  provide feedback on the quality of work products  raise and negotiate issues  communicate decisions  common convention and tool based  Rationale management  the problem addressed  alternatives considered  evaluation criteria used  debate, consensus, and decision  difficulty: update and maintenance

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 31  Testing  find differences between the system and its models by execution with sample data  Unit testing  compare the object design model with each object and subsystem  Integration testing  compare the integrated subsystems with the system design  System testing  compare the system with the requirement model by running typical and exception cases

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 32  Software Configuration Management  the process that monitors and controls changes in work products  Example changes  requirement changes –client new feature –development new/improved understanding  platform changes –new technology available  system changes –fault and repair  enable developer to track changes  configuration items to be individually revised  versions for evolution of configuration items and roll back  enable developers to control change  define baselines  assess and approve increments from the baselines

UNB CS3013 Software Engineering II lectures adapted from Bernd Bruegge & Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems 33  Project management  oversight activities to ensure  the delivery of a high-quality system on time and within budget  plan and budget the project during negotiation with the client  hire developers and organize them into teams  monitor the status of the project  intervene when deviations occur  Software life Cycle  A general model of the software development process