1 Lecture 5 Introduction to Software Engineering Overview  What is Software Engineering  Software Engineering Issues  Waterfall Model  Waterfall Model.

Slides:



Advertisements
Similar presentations
The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
Advertisements

Lecture # 2 : Process Models
Object-Oriented Software Development CS 3331 Fall 2009.
Multimedia Specification Design and Production 2013 / Semester 1 / week 7 Lecturer: Dr. Nikos Gazepidis
COMP 121 Week 7: Object-Oriented Design and Efficiency of Algorithms.
CS3773 Software Engineering Lecture 01 Introduction.
Algorithms and Problem Solving-1 Algorithms and Problem Solving.
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
ICS 201- Introduction to Software Engineering. How important is Software? Billions spent annually on software. Billions spent annually on software. Is.
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
Analysis Stage (Phase I) The goal: understanding the customer's requirements for a software system. n involves technical staff working with customers n.
Software Engineering For Beginners. General Information Lecturer, Patricia O’Byrne, office K115A. –
Chapter 1 Principles of Programming and Software Engineering.
Software Engineering For Beginners. General Information Lecturer, Patricia O’Byrne. – Times: –See noticeboard outside.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Introductory case study. 2 The problem The most difficult part of any design project is understanding the task you are attempting You have been contacted.
Software Engineering Case Study Slide 1 Introductory case study.
Chapter 1 The Systems Development Environment
Chapter 17 – Object- Oriented Design. Chapter Goals To learn about the software life cycle To learn about the software life cycle To learn how to discover.
DCT 1123 PROBLEM SOLVING & ALGORITHMS INTRODUCTION TO PROGRAMMING.
Introduction To System Analysis and design
The Systems Development Environment. Learning Objectives Define information systems analysis and design. Describe the different types of information systems.
The Software Development Life Cycle: An Overview
1 Introduction Chapter 1. 2 Key Ideas Many failed systems were abandoned because analysts tried to build wonderful systems without understanding the organization.
Quality Assurance ITEC Rick Price. Expectations This course is not purely a lecture course – Classroom participation is a large portion – Everyone.
COMP 121 Week 7: Object-Oriented Design and Efficiency of Algorithms.
Understand Application Lifecycle Management
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Big Java Chapter 12. Software Process - Waterfall Analysis Design Implementation Testing Deployment Does not work well when rigidly applied! established.
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
Introduction To System Analysis and Design
Software Design Deriving a solution which satisfies software requirements.
Review: Cohesion and Coupling, Mutable, Inheritance Screen Layouts Software methodologies – Extreme Programming Object-Oriented Design – CRC Cards - UML.
1 Systems Analysis and Design in a Changing World, Thursday, January 18, 2007.
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
1 Software Development Software Engineering is the study of the techniques and theory that support the development of high-quality software The focus is.
Modeling system requirements. Purpose of Models Models help an analyst clarify and refine a design. Models help simplify the complexity of information.
The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
Systems Analysis and Design in a Changing World, Fourth Edition
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved COS240 O-O Languages AUBG,
CIS 112 Exam Review. Exam Content 100 questions valued at 1 point each 100 questions valued at 1 point each 100 points total 100 points total 10 each.
CS251 – Software Engineering Lecture 9: Software Design Slides by Mohammad El-Ramly, PhD
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
Chapter 17 – Object- Oriented Design. Chapter Goals To learn about the software life cycle To learn about the software life cycle To learn how to discover.
Data Structures Using C++ 2E
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Chapter 2 Object-Oriented Paradigm Overview. Getting Acquainted with the Class Project Read the requirements specification carefully Make note of any.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Topic 4 - Database Design Unit 1 – Database Analysis and Design Advanced Higher Information Systems St Kentigern’s Academy.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Your Interactive Guide to the Digital World Discovering Computers 2012 Chapter 12 Exploring Information System Development.
CSCI 383 Object-Oriented Programming & Design Lecture 7 Martin van Bommel.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
 System Requirement Specification and System Planning.
Software Development Life Cycle. The Software Life Cycle  Encompasses all activities from initial analysis until end of work  Formal process for software.
Advanced Software Engineering Dr. Cheng
Chapter 2 Object-Oriented Paradigm Overview
Chapter 1: Introduction to Systems Analysis and Design
Object-Oriented Software Engineering Using UML, Patterns, and Java,
Unified Modeling Language
About the Presentations
Introduction to Software Engineering
Object-Oriented Analysis
Software life cycle models
Chapter 1: Introduction to Systems Analysis and Design
Algorithms and Problem Solving
Software Design Methodologies and Testing
Chapter 1: Introduction to Systems Analysis and Design
Presentation transcript:

1 Lecture 5 Introduction to Software Engineering Overview  What is Software Engineering  Software Engineering Issues  Waterfall Model  Waterfall Model with Iterations  Requirements Analysis  Prototype  Requirements Analysis and Specification  Software Design  Object- Oriented Software Development  CRC & UML 

2 Lecture 5 A systematic approach to the analysis, design, implementation and maintenance of large scale software. It often involves the use of CASE (Computer Aided Software Engineering) to help with one or more phases of the software life-cycle, including the systematic analysis, design, implementation and maintenance of software. Software engineering covers not only the technical aspects of building software systems, but also management issues, such as directing programming teams, scheduling, and budgeting.. The field of software engineering is concerned with two areas:improving the reliability of software and increasing the productivity of software developers. Software engineering started as a way to overcome the software crisis by application of sound engineering principles to the development of software. One of these principles is the use of the software life cycle. Which is modeled after the engineering product lifecycle What is Software Engineering ?

3 Lecture 5 Software Engineering Issues  Software Engineering deals with designing, building and maintaining large software systems.  In software engineering we study the techniques and methods needed to develop and manage good software systems.  Issues that software engineering deals with:  How to build good Software Systems: methodologies, tools and techniques  How to specify software( Requirements def. And specification, modeling, formal specification)  How to measure the quality of software : software metrics  How to test software system(validation and verification)  How to manage software systems(management, project planning, cost estimation, maintenance, configuration management, Quality assurance)  Well-engineered software:  Maintainable, correct, user friendly, understandable, reliable, verifiable  reusable, robust, maintainable, portable, timely, efficient, interoperable  A software development process is: a structured set of activities required to develop a software system

4 Lecture 5 Waterfall Model The waterfall model describes phases in the software life cycle:suggests that each phase should complete before the next one starts. However, in practice, that is not realistic.

5 Lecture 5 Software Life Cycle 1-Analysis phase: Decide what the project is supposed to accomplish; you do not think about how the program will accomplish its tasks. The output of the analysis phase is a requirements document, 2-Design phase: you develop a plan for how you will implement the system.. When you use object-oriented design, you decide what classes you need and what their most important methods are. The output of this phase is a description of the classes and methods with a diagram. By spending time on a good design, the total time spent on a programming project is lowered 3-the implementation phase: you write and compile program code to implement the classes and methods that were discovered in the design phase 4-Testing phase: you run tests to verify that the program works correctly. The output of this phase is a report describing the tests that you carried out and their results 5-Deployment phase: the users of the program install it and use it

6 Lecture 5 Waterfall Model with Iterations  The drawback of the waterfall model is the difficulty of accommodating change after the process is underway. Having some level of iteration is clearly necessary.

7 Lecture 5 The software engineering life cycle begins with a study of the requirements for a new software product.Software engineer must understand the problem the user needs.The of the requirements analysis phase is to discover what the user wants. The result of this phase is the requirements specification. The requirements specification document should be unambiguous, clear, consistent, and non redundant. It can be written in a natural a language such as English, using pictures and diagrams The easiest way to discover requirements is to talk with the people who will use the system. Another way is to examine the existing forms, reports, and software that the people are using now. These can help with development of requirements. Requirements Analysis

8 Lecture 5 A prototype consists of a user interface along with just enough of the rest of the program to look like a finished product. When you develop a prototype, you need to get it running very quickly --- usually with a matter of days. It should work well enough to give the user some feel for the features of the final product. A prototype shouldn’t be used as a requirement specification because a prototype isn’t a good legal contract if there is dispute about the delivered product. Also this makes maintenance more difficult. A prototype shouldn’t be expanded into the final product. Prototype

9 Lecture 5 Software Design  Deriving a solution that satisfies software requirements.  Stages of design:  Problem understanding: look at the problem from different angles to discover the design requirements.  Identify one or more solutions: evaluate possible solutions and choose the most appropriate depending on the designer's experience and available resources.  Describe solution abstractions: use graphical, formal or other descriptive notations to describe the components of the design.  Repeat process for each identified abstraction until the design is expressed in primitive terms suitable for implementation.

10 Lecture 5 Object Oriented Design  The main activities in the Object-oriented design are:  Identification of objects, their attributes and services.  Finding the relationships between Objects in terms of associations and hierarchies  Determine on how should objects should interact ( in terms of massage passing) so that functional requirements are achieved.  Getting concrete about Object interface(methods).

11 Lecture 5 Object- Oriented Software Development Object-oriented software development is quit different form the traditional water fall model. The analysis and design phase tend to be intermixed instead of being separate, sequential activities. That involve in 1- Discover classes 2- Determine the behavior of each class 3- Describe the relationships between the classes

12 Lecture 5 1- Discover classes: A simple rule for finding classes is to look for nouns in the task description. For example, suppose your job is to print an invoice. Obvious classes that come to mind are Invoice, Item, and Customer. Object- Oriented Software Development(cont.)

13 Lecture 5 Object- Oriented Software Development(cont.) 2-Determine the behavior of each class: you need to find out what methods each object needs to carry out to solve the programming problem. A simple rule for finding these methods is to look for verbs in the task description, and then match the verbs to the appropriate objects for example, in the invoice program, some class needs to compute the amount due An excellent way to carry out this task is the use of CRC(Classes, Responsibilities, Collaborators). For example, suppose you decide that an invoice should compute the amount due, Then you write compute amount due on an index card with the title Invoice.

14 Lecture 5 CRC cards(Classes, Responsibilities, Collaborators) 3- Relationships between classes Use UML( Unified Modeling Language) to record class relationships, attributes, and methods. Some of these relations -inheritance(“is”), aggregation(“has”), and dependency(“uses”)

15 Lecture 5 UML uses _______> and arrow with an open triangle pointing to the superclass. In the UML notation aggregation is denoted by a line with a diamond. The diamond is placed toward the aggregating class an is – a and a has-a Compartments for attributes and Methods UML(Unified Modeling Language ) Dependency relationship The invoice depend on customer Invoice has items Inheritance car is a vehicle Aggregation Car has Tire