1 Lecture 5 Introduction to Software Engineering Overview What is Software Engineering Software Engineering Issues Waterfall Model Waterfall Model.
Published byModified over 4 years ago
Presentation on theme: "1 Lecture 5 Introduction to Software Engineering Overview What is Software Engineering Software Engineering Issues Waterfall Model Waterfall Model."— 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