CS551 - Lecture 1 1 CS551 Advanced Software Engineering Yugi Lee STB #555 (816) 235-5932...

28
CS551 - Lecture 1 1 CS551 Advanced Software Engineering Yugi Lee STB #555 (816) 235-5932 [email protected] www.cstp.umkc.edu/~yugi

Transcript of CS551 - Lecture 1 1 CS551 Advanced Software Engineering Yugi Lee STB #555 (816) 235-5932...

CS551 - Lecture 11

CS551Advanced Software Engineering

Yugi Lee

STB #555(816) 235-5932

[email protected]

www.cstp.umkc.edu/~yugi

2CS551 - Lecture 1

General stuff

• Class: M/W 12:30-1:45, FH460 • Office hours:

– Yugi Lee: M/W 1:45-2:45 or by appointment

• TA: Venkatavaradhan (Santhosh) Panchapagesam – Email: [email protected]

3CS551 - Lecture 1

Course information

• www.cstp.umkc.edu/~yugi

• Lecture notes will be available in advance

• Mailing List [email protected]– information will be distributed via the mailing list (e.g.

announcements, corrections etc.)

• Prerequisites CS451 (Software Engineering) Object-Oriented programming language (Java, C++)

4CS551 - Lecture 1

Textbooks

Required: Engineering Distributed Objects, Wolfgang Emmerich, John Wiley

& Sons, LTD, 2000

Additional readings Objects, Components, and Frameworks with UML; the catalysis

approach, Desmond f. D'souza and Alan Cameron Wills, Addison-Wesley,1999

Component Software: beyond Object-oriented programming, Clemens Szyperski, Addison-Wesley, 1999

Technical Papers

5CS551 - Lecture 1

Assessment

• Group Project 50% Projects 1 - 4 42% Presentation/Final package 8%

• Individual Work 50%– Midterm Exam: 10%

– Final Exam: 20%

– Quizzes: 20%

Both components must be passed in order to pass the course.

6CS551 - Lecture 1

Group Projects

• Teams of Maximum 2 members• Each team will develop a component of some system. • The overall assignment will be split into several steps that

will be marked individually. Project 1 (12%): Technical skill building Project 2 (7%): Project proposal Project 3 (8%): System design Project4 (15%): System implementation & documentation Presentation and final package (8%)

7CS551 - Lecture 1

Group Projects

• Building system followed by component-based design and programming

• Each project group will construct a component of the system.

• Incremental outcomes going through Object-Oriented software lifecycle, such as requirement analysis and design, implementing, testing, and integration.

• Object-Oriented Specification/Design (UML/ROSE), Design patterns, styles, Object Framework building using Java, XML and CORBA/COM/EJB.

8CS551 - Lecture 1

Exams

• Weekly Quizzes (20%)

• Tentative Exam Schedule:– October 8 Midterm exam (10%)– December Final exam (20%)

• Some selected students can pursue a research track. Research papers can be replaced with class examination.

9CS551 - Lecture 1

Several reasons you should take this course...

You can have a comprehensive picture of software development process

You can have hands-on experiences on component oriented development.

• You will obtain the skill on UML, XML, CORBA/COM/EJB, and tools (Rose etc).,

• You will have object-oriented programming (Java).• You will get a reasonable grade when you completed

all the class requirements.

10CS551 - Lecture 1

However…

This course requires heavy load of work.

• Class survey (1999)– Compute the average time spent for cs451 related activities

(hrs/week): average 3hrs/day• Individual work 12 hrs.

• Project Related work 12 hrs.

– designing/coding/learning skills

– meeting & communication

– updating web-materials

11CS551 - Lecture 1

However…

What would you suggest to next year's students?– Don't take many more 400 level or above classes while taking

this one.

– Pick out a class to drop, join the witness protection program so that your friends and family cannot find you, and constantly remind yourself it will be over in sixteen weeks.

– Don't take this class with more than 6 other credits, too much work, unable to do well.

– STUDY!!!– Keep up with the text to avoid pileup of readings.

12CS551 - Lecture 1

Today’s Software Systems?

• A software environment (i.e., Internet) is evolving rapidly and software requirements and technologies are also evolving very rapidly.

• Some requirements and characteristics of the current system can be determined as comparability, heterogeneity, scalability, openness, security and distribution.

• Are you ready for this? It is necessary to understand the current trend of software systems and to identify the technologies and requirements for the system development.

13CS551 - Lecture 1

Real World Example: Hong Kong TelecomReal World Example: Hong Kong Telecom

• Video-on-demand: provide subscribers with facilities to download videos from HK TK servers to low-cost Web-TVs.

• currently 90,000 users.

• Built using distributed object-technology.

• Video-on-demand: provide subscribers with facilities to download videos from HK TK servers to low-cost Web-TVs.

• currently 90,000 users.

• Built using distributed object-technology.

14CS551 - Lecture 1

Requirements

• Hardware:

– Clients: Web-TV

– Servers: RISC processor

• Operating System Heterogeneity :

– Clients: Java OS

– Servers: UNIX

• Programming Language Heterogeneity:

– Clients: Java

– Servers: C++

• Communication across Network

– How to transmit complex data structures across the Internet?

• Scale

– Scaling from initially several hundred to currently 90,000 users

• Security

– Secure Payment

– Authentication

15CS551 - Lecture 1

TradingWorkstation

TradingWorkstation

AuthorisationServices

AuthorisationServices

Host ServicesHost Services

Customer Information

Services

Customer Information

Services

Product DatabaseServices

Product DatabaseServices

MarketingServices

MarketingServices

Another Example:IT Infrastructure of UBS

16CS551 - Lecture 1

A Brief History of ObjectsA Brief History of Objects

Simula-67Information Hiding

Smalltalk

C++Eiffel

Java

CORBACOM

OOAD

UML

Sun ONC

DCE

Programming LanguagesDistributed Systems Software Engineering

Time

1970

1980

1990

DCOM

17CS551 - Lecture 1

Why Software Engineering?

...to get away from ad hoc and unpredictable software development towards a systematic, understood one...

18CS551 - Lecture 1

Component-Based Software Engineering?

• An emerging concept called "a component-based software" appears to be a solution for the development of software system.

• The component-based software engineering focuses on the entities (objects) developed and the components intended from their inception to be used within a framework in which they are placed in containers and combined with other components.

19CS551 - Lecture 1

Goals of this Course

• To study the development of component-based software systems (with hands-on experience)

• To introduce the concept of software component, including its relationship to the object-oriented programming paradigm.

• To learn how to specify and design, using UML, the basic building blocks present in component frameworks, including events, properties, introspection and reflection, persistence, and packaging.

20CS551 - Lecture 1

Goals of this Course

• To introduce/compare/evaluate different component frameworks, including XML, Enterprise Java Beans (EJB), COM and CORBA.

• To give students hands-on experience in programming components using Java, XML and component development environments (CORBA, COM, EJB).

• To achieve an understanding of how components work in a distributed computing environment.

21CS551 - Lecture 1

Requirements for this Course

Critical Reading/Thinking: Students are required to read and assimilate

information from the readings beyond the material covered in class.

Throughout the semester, papers and chapters of the texts will be read and discussed.

• Discovery (Self-guided) Learning: The course and group project will require independent research and programming, and students are expected to be able to demonstrate ability of this kind.

22CS551 - Lecture 1

Requirements for this Course

Analytical Writing/Presentation: Students are asked to think critically and reason

about information presented in the textbooks or papers.

This critical evaluation requires that students offer their own understanding of the significance of what students have learned. Students should be able to present their knowledge to the public.

23CS551 - Lecture 1

Contents of Lecture

• Topic 1: Today's Software Systems What's a current trend of Software Systems?

Distributed System? Examples of Distributed Systems New Software Requirements The Evolution of Object Technology

24CS551 - Lecture 1

Contents of Lecture

• Topic 2: Component-based Development What is Object? Component? What is Object-oriented SE? Component-

oriented SE? Frameworks, Patterns, Software Architecture,

and Components Designing for reuse Connections, events, and late binding

25CS551 - Lecture 1

Contents of Lecture

• Topic 3: Principles of Object-Oriented Middleware

Computer Networks Types of Middleware Object-Oriented Middleware Developing with Object-Oriented Middleware

• Topic 4: Alternative Component Architectures The Microsoft Approach: COM, and DCOM The OMG Approach: CORBA and OMA The Sun Approach: JAVA RMI, and EJB

26CS551 - Lecture 1

Contents of Lecture

• Topic 5: Object Oriented Modeling Modeling with Objects Static Models: Object Attributes and Invariant Behavior Models: Object Types and Operations Interaction Models: Use Cases, Actions,

Collaboration UML for Distributed Objects A Meta-Model for Distributed Objects Local versus Distributed Objects

27CS551 - Lecture 1

Contents of Lecture

• Topic 6: Factoring Models and Designs Abstraction, Refinement Package Composing models and specifications Model Framework and Template Package

• Topic 7: Component-based Programming The Microsoft Approach: ActiveX, COM, and DCOM The OMG Approach: CORBA, OMA The Sun Approach: JAVA RMI, and Enterprise Java

Beans

28CS551 - Lecture 1

Contents of Lecture

• Topic 8: Advanced Topics in Middleware Heterogeneity Dynamic Object Requests Advanced Communication between Distributed

Objects Locating Distributed Objects and Persistence Distributed Object Transactions and Security