© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 311 3 Software technologies Dictionary –“techno-” art, skill, craft –“-logy” method,

Slides:



Advertisements
Similar presentations
Configuration management
Advertisements

Configuration management
2 Software life span models Stages through which software goes, from conception to death Stages may be very different Software = product –stages are similar.
CIS-74 Computer Software Quality Assurance Systematic Software Testing Chapter 1: An Overview of the Testing Process.
© 2005 by Prentice Hall Appendix 2 Automated Tools for Systems Development Modern Systems Analysis and Design Fourth Edition Jeffrey A. Hoffer Joey F.
Ch 12: Object-Oriented Analysis
1 Postdelivery Maintenance Xiaojun Qi. 2 Why Postdelivery Maintenance Is Necessary Corrective maintenance: To correct residual faults –Analysis, design,
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 1 Software Prototyping l Rapid software development.
Rossella Lau Lecture 8, DCO10105, Semester B, DCO10105 Object-Oriented Programming and Design  Lecture 8: Polymorphism & C++ pointer  Inheritance.
Transaction Processing IS698 Min Song. 2 What is a Transaction?  When an event in the real world changes the state of the enterprise, a transaction is.
Applied Software Project Management Andrew Stellman & Jennifer Greene Applied Software Project Management Applied Software.
C++ fundamentals.
Shallow Versus Deep Copy and Pointers Shallow copy: when two or more pointers of the same types point to the same memory – They point to the same data.
© 2005 by Prentice Hall Appendix 2 Automated Tools for Systems Development Modern Systems Analysis and Design Fourth Edition Jeffrey A. Hoffer Joey F.
Unified Modeling Language
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 1 Software Prototyping l Rapid software development to validate requirements l.
Programming Languages and Paradigms Object-Oriented Programming.
Appendix 2 Automated Tools for Systems Development © 2006 ITT Educational Services Inc. SE350 System Analysis for Software Engineers: Unit 2 Slide 1.
C++ Object Oriented 1. Class and Object The main purpose of C++ programming is to add object orientation to the C programming language and classes are.
Pointer Data Type and Pointer Variables
Learners Support Publications Pointers, Virtual Functions and Polymorphism.
Chapter 15 – Inheritance, Virtual Functions, and Polymorphism
11 1 Object oriented DB (not in book) Database Systems: Design, Implementation, & Management, 6 th Edition, Rob & Coronel Learning objectives: What.
GENERAL CONCEPTS OF OOPS INTRODUCTION With rapidly changing world and highly competitive and versatile nature of industry, the operations are becoming.
MT311 Java Application Development and Programming Languages Li Tak Sing( 李德成 )
CSE 332: C++ templates This Week C++ Templates –Another form of polymorphism (interface based) –Let you plug different types into reusable code Assigned.
CONCEPTS OF OBJECT ORIENTED PROGRAMMING. Topics To Be Discussed………………………. Objects Classes Data Abstraction and Encapsulation Inheritance Polymorphism.
Static and Dynamic Behavior CMPS Power of OOP Derives from the ability of objects to change their behavior dynamically at run time. Static – refers.
1 Chapter 2 (Cont.) The BA’s Perspective on Object Orientation.
Configuration Management (CM)
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 1 Software Prototyping l Rapid software development to validate requirements.
© 2007 by Prentice Hall 1 Introduction to databases.
8 Actualization Programmers implement the new functionality –according to change request The process of actualization varies –depends on the size of the.
System models l Abstract descriptions of systems whose requirements are being analysed.
Software Engineering, 8th edition Chapter 8 1 Courtesy: ©Ian Somerville 2006 April 06 th, 2009 Lecture # 13 System models.
C# F 1 CSC 298 Object Oriented Programming (Part 1)
© 2012 Václav Rajlich Software Engineering: The Current Practice Ch Software models Software is complex –often more than what people can handle –not.
Chapter 12: Pointers, Classes, Virtual Functions, and Abstract Classes.
1 What is OO Design? OO Design is a process of invention, where developers create the abstractions necessary to meet the system’s requirements OO Design.
C++ Programming Basic Learning Prepared By The Smartpath Information systems
Chapter 10 Inheritance and Polymorphism
Unified Modeling Language. Object Oriented Methods ► What are object-oriented (OO) methods?  OO methods provide a set of techniques for analyzing, decomposing,
C++ Lecture 1 Friday, 4 July History of C++ l Built on top of C l C was developed in early 70s from B and BCPL l Object oriented programming paradigm.
1. 2 Preface In the time since the 1986 edition of this book, the world of compiler design has changed significantly 3.
Introduction to c++ programming - object oriented programming concepts - Structured Vs OOP. Classes and objects - class definition - Objects - class scope.
11 Chapter 11 Object-Oriented Databases Database Systems: Design, Implementation, and Management 4th Edition Peter Rob & Carlos Coronel.
The Hype Cycle. The five stages in Gartner's interpretation of the Hype Cycle. 1. "Technology Trigger" is the first phase of a hype cycle. This could.
CPS Inheritance and the Yahtzee program l In version of Yahtzee given previously, scorecard.h held information about every score-card entry, e.g.,
Polymorphism, Virtual Methods and Interfaces Version 1.1.
© 2012 Václav Rajlich Software Engineering: The Current Practice Ch Conclusion of software change The last phase of software change The activities.
UML – What’s all the Fuss about? Simon Horwith CTO Etrilogy Ltd.
Presented by Ted Higgins, SQL Server DBA An Introduction to Object – Oriented Programming.
History of Online Education Remote Learning Computer Revolution of the early 80’s Multimedia becomes mainstream Mid 1990’s brings the Internet E-Learning.
Chapter 12: Pointers, Classes, Virtual Functions, Abstract Classes, and Lists.
8 Actualization Programmers implement the new functionality –according to change request The process of actualization varies –depends on the size of the.
Inheritance Modern object-oriented (OO) programming languages provide 3 capabilities: encapsulation inheritance polymorphism which can improve the design,
Appendix 2 Automated Tools for Systems Development
Unified Modeling Language
LECTURE 2: Software Configuration Management
Andy Wang Object Oriented Programming in C++ COP 3330
Console and GUI Programs
CS & CS Capstone Project & Software Development Project
Chapter 12: Pointers, Classes, Virtual Functions, and Abstract Classes
Software Engineering System Modeling Chapter 5 (Part 1) Dr.Doaa Sami
Copyright 2007 Oxford Consulting, Ltd
Software Engineering System Modeling Chapter 5 (Part 1) Dr.Doaa Sami
Chapter 7 Using SQL in Applications
Today’s Objectives 10-Jul-2006 Announcements Quiz #3
Agenda Software development (SD) & Software development methodologies (SDM) Orthogonal views of the software OOSD Methodology Why an Object Orientation?
Chapter 11 Class Inheritance
Presentation transcript:

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch Software technologies Dictionary –“techno-” art, skill, craft –“-logy” method, system

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 322 History In its history, software engineering changed not only the paradigms, but also technologies Fortran 2 + punched cards –technology of the past Swing/Java –technology of the present Services oriented architectures (SOA) –possible technology of the future Technologies used by software are accidental properties

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 333 Technology success Does the technology address important issue? Is research and development completed? Are there substantial residual problems? –“show stoppers”? Are market forces behind the technology? Only then, other measures may play a role productivity, usability, other properties

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 344 Technology issues Some people call technologies “paradigms –confusing overuse of the word paradigm Reengineering from one technology to another is often hard Technology and culture –technology can be dead for cultural reasons.

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 355 Software technology portfolio Programming languages and compilers Databases GUI Software environments –programmer activities –tools Version Control System Testing technologies...

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 366 What language we would use if C did not exist? obol Pasal Basi ++...

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 37 Compilers and linkers Linker … Source file 1Source file 2Source file N Object file 1Object file 2Object file N … Compiler Libraries Executable file

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 38 Version Control System 8

Diff and Merge Diff produces a patch file that identifies what changes the programmer made in the file –Compares the modified file X against the original file Merge takes original file and a patch file –merges the changes into the old file and thus creates the new file. © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 39

Check out and commit A programmer checks out the latest version of file X Makes all necessary changes Then commits the modified file X to the repository © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 310

Commit The commit is usually done with a help of tool diff and merge –diff produces a patch that identifies what changes the programmer made in the file by comparing the modified file X against the original file in the repository –tool merge then merges the changes into the old file and thus creates the new file © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 311

Conflict Programmer A and programmer B update the same file X in parallel Programmer B changes something in the file X that the first programmer A changed also Version control system does not allow the second programmer B to commit © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 312

Resolution of conflict Programmer B –undoes some changes in order to stay away from the areas that programmer A changed –checks out the version that was modified by programmer A and makes the changes in this modified file again –convinces programmer A to undo the changes which stand in the way of the changes done by programmer B © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 313

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 314 Object oriented technology Classes Objects 14 class Customer { // methods public open_account(); public deposit(int deposit_amount); public withdraw(int withdrawal_amount); // attributes protected String name; protected String address; protected int account_number; protected int balance = 0; } Customer jacob, joseph;

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 315 OO code Customer jacob, joseph; jacob.open_account(); jacob.deposit(100); jacob.withdraw(10);

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 316 Coding conventions CamelCase firstCustomerWithdrawal Under_line first_customer_withdrawal

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 317 Part-of relationship Composite vs. component –inventory and register are parts of a store –components of a store class Store { protected Inventory inv; protected Register reg; }

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 318 Inheritance/ is-a relationship class Person // Base type { protected String name; protected String address; } class Customer: public Person // Derived type; Customer is-a Person { protected String account; public open_account(int account_number); public deposit(int deposit_amount); public withdraw(int withdrawal_amount); } 18

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 319 Polymorphism Derived type used instead of base type –implicit switch statement –late binding dynamic binding –C++ pointers + virtual functions

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 320 Example class FarmAnimal { public: virtual void makeSound() {}; }; class Cow : public FarmAnimal { public: void makeSound() {cout<<” Moo-oo-oo”;} }; class Sheep : public FarmAnimal { public: void makeSound() {cout<<” Be-e-e”;} };

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 321 Example (cont) FarmAnimal* ourAnimal[3]; ourAnimal[0] = new Cow; ourAnimal[1] = new Sheep; ourAnimal[2] = new Cow; for(int i = 0; i < 3; i++) { ourAnimal[i] -> makeSound(); } Print out: “Moo-oo-oo Be-e-e Moo-oo-oo”

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 322 Technology diffusion Innovators –the first group of users –assume the risks Early adopters –draw on innovators’ experience

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 323 Technology diffusion cont. Majority adopters –advantages are proven and well understood –may take more than 10 years to reach this stage Late adopters –there is no longer any significant doubt Laggards –they have no other option

Technology diffusion example Automobile in Detroit Innovators –Henry Ford, others Early adopters –wealthy, purchase from innovators Majority adopters –model T made it accessible Late adopters –still used streetcars, but then saw benefits Laggards –streetcar tracks torn up, no other option © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 324

© 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 325 Hype cycle Peculiar behavior of innovators Technology trigger –product launch or other event generates significant interest Inflated expectations –a frenzy of publicity generates unrealistic expectations Disillusionment –technologies fail to meet expectations and become unfashionable –normal diffusion resumes after disillusionment bottoms out

Hype cycle J. Fenn, A. Linden. “Gartner’s Hype Cycle Special Report for 2005”. Gartner Research, Aug., 2005 © 2012 Václav Rajlich Software Engineering: The Current Practice Ch. 326