Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 1, Introduction to Software Engineering

Similar presentations


Presentation on theme: "Chapter 1, Introduction to Software Engineering"— Presentation transcript:

1 Chapter 1, Introduction to Software Engineering

2 Software Engineering Software systems are complex 1968 Definition:
3 Software systems are complex Impossible to understand by a single person Many projects are never finished: "vaporware" The problem is arbitrary complexity 1968 Definition: Software Engineering means the construction of quality software with a limited budget and a given deadline 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 4 2

3 Course format A Single Semester Course
4 A Single Semester Course Lectures: Theoretical foundations and background Project: Learn how to apply them in practice Lectures and Project work are interleaved Everybody will participate in a software project 5 3

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

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

6 How can we accomplish this?
Course Projects Internet Ordering System Internet Sales Tracking System You will organize into groups of 3 Each group will be assigned a project Details will be revealed once the groups are formed Course project will be done in 3 stages Requirements elicitation Analysis and design Implementation 6 8

7 Assumptions and Requirements for this Class
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 required courses (Programming III, Data Structures) or You have practical experience with maintaining or developing a large software system

8 Textbooks Textbook Optional Readings
Bernd Bruegge and Allen Dutoit, Object-Oriented Software Engineering: Conquering Complex and Changing Systems, Prentice Hall, 2000. Optional Readings Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Design Patterns, Addison-Wesley, 1996, ISBN Ivar Jacobson, M. Christerson, P. Jonsson, G. Övergaard, "Object-Oriented Software Engineering" , Addison Wesley, 1992 Grady Booch, "Object-Oriented Design with Applications", Benjamin Cummings, 1991. James Rumbaugh, M. Blaha, W. Premerlani, F. Eddy, W. Lorensen, Object-Oriented Modeling and Design, Prentice Hall, 1991 43 41

9 Ground Rules Attendance:
Attendance and class participation is required Every project team member is responsible for the whole project Grading: Midterm exam 30% Final exam 30% Group project 40% Requirements document 30% Design document 40% System implementation 30%

10 Project Each team must:
Submit a bi-weekly activity log Submit a Requirement Analysis Document Submit an Object Design Document Demonstrate the entire running program Each of the above also require a 15 minutes in class presentation Every team member is responsible for the entire project

11 What is Software Engineering
Software Engineering is the construction of quality software with a limited budget and a given deadline How about change? Software Engineering is 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

12 Why Software Engineering
Software Systems are complex: Impossible to understand by a single person Many projects are never finished The problem being solved is arbitrarily complex Software Systems are subject to constant change

13 What are the activities?
Modeling An abstract representation of a system that allows the software engineer to answer questions about the system Models allow visualizing and understanding systems that are too large too complex too expensive for direct experimentation or do not even exist in the real world Problem Solving Find a solution with incomplete knowledge and limited resources Formulate the problem Analyze the problem Search for solutions Select an appropriate solution Specify the solution

14 What are the activities?
Knowledge Acquisition software Engineer must acquire problem domain knowledge required to develop the target system is nonlinear Rationale Management Justification of decisions issues that were addressed alternatives that were considered decisions that were made to resolve the issues the criteria that were used to guide decisions the underlying debates

15 Concepts A project’s purpose is to develop a software system
A project is composed of a number of activities An activity is composed of a number of tasks A task consumes resources and produces a work product work product: a system a Model a document resource: time equipment personnel

16 Concepts -- UML Project Activity * Task * WorkProduct is produced by *
consumes Resources * System Participant Document Model Time Equipment

17 Development Activities
Requirement Elicitation Analysis System Design Object Design Implementation

18 Requirement Elicitation
Define the purpose of the system Describe the system in terms of actors and use cases Actors: External entities that interact with the system Use Cases: Sequences of events that describe all possible actions between actors and the system

19 Analysis Produce a model of the system that is:
Correct Complete Consistent Unambiguous Realistic Verifiable Transform use cases into object model

20 System Design Define the design goals
Decompose the system into smaller subsystems Select strategies for building the system

21 Object Design Precisely describe object and system interfaces
Select off-the shelf components Restructure the object model to attain design goals: Extensibility Understandability Performance optimization Result: Detailed object model

22 Implementation Translate the object model into source code
Implement the attributes and methods of each object Integrate all the objects

23 Managerial Aspects Communication Rationale Management Testing
Discover as many faults as possible and repair them before the delivery Software Configuration Management Monitor and control changes Software Project Management Budgeting Hiring Tracking progress, etc. Software life cycle modeling

24 Summary Find the class website Read Chapter 1 Form your teams


Download ppt "Chapter 1, Introduction to Software Engineering"

Similar presentations


Ads by Google