outline of talk topics in tools and environments for a ... topics in tools and environments for a...
TRANSCRIPT
1
Topics in Tools and Environments
for a Distributed Cooperative Work
Koichiro OchimizuJapan Advanced Institute of
Science and TechnologiesSchool of Information Science
Outline of TalkSelf introduction• Definition
– Tools, Environments• Quick review of the history of Software
Engineering and Related Tools– Past– Present
• Software Engineering: now and future– Current Topics in Object Oriented Technology– Software Engineering by / for Internet– Open Source Software Development– Web Engineering
My Research Interests
• Developing a Software Development Environment for distributed cooperative works over a computer network
• Supporting learning on-demand of industry people. The goal is to construct a system that enable them to acquire knowledge on demand in their daily work
• Applying Object-Oriented Technologies to Real World
Software Process Model and Support Environment for a Distributed Cooperative Work
over a Computer Network
• Merging communication processes support into object-centered activities
• Clear definition of individual responsibility and work interfaces
• Decision management made through conversations• Awareness of recognition gaps and Coordination
Support• Acting under existence of inconsistencies and
ambiguities, sharing instability of the work
Need additional supports for a distributed cooperative work
Do one’s job
A cooperative work is to make somethingsharing parts of it
(ConfigurationManagement)
Talk to others
Central activity is communication(CSCW)
Smoothness of communication
Independency of individual’s work
Problems specific to a distributed cooperative work
• Cooperation Related Issues– A cooperative work causes different
understandings of the state of shared artifacts, interface definitions, agreements .Such recognition-gaps increase instability of the state of the work.
2
Problems specific to a distributed cooperative work
• Distribution Related Issues– In a distributed work, we come across a
problem of how we should handle a situation in which we can not communicate with others.We need to provide a mechanism which can assist development works in an environment isolated with others.
It causes
• A lot of inconsistencies among shared artifacts / products and interface definitions produced through a cooperative work
• A lot of uncertainties and inconsistencies of decisions made through conversations
Inconsistencies
• Inconsistencies are defined as the differences between some definitions or decisions which accidentally happen during the progress of the work.
Our Approach to the Solution
Functions which can detect inconsistencies and uncertainties
Information Repository which can reflect the state of a cooperative workprecisely with managing- State of Artifacts/products
made through a cooperative work- State of decisions made through
conversations
Incrementalreinforcement
ofconsistencies
andcertainties
Sharing Instabilityof the state of the
work
Acting under existence of Acting under existence of inconsistencies uncertaintiesinconsistencies uncertainties
Current State of the Art
CVS logs
Javaprograms
Emailsin ML
Extractingprojectstate
Extractingdeliberation
threads
Conflictanalysis
Detection of somethingwrong ( load unbalance)
Influence to workInterfaces
Providingcontext of the work
Configuration management
Communication management
Future versionspace
ActiveCoordinator
with Team Model
Concurrency
Coordination
Collaboration
Awareness
detect
notify
Deliberation thread in detail
3
Multi-Party Deliberation Structure
To: Y, Z
To: Z
To: Y, Z
To: X, Z
To: X, Z
To: Y
To: X, Z
To: Y, Z
To: X, Y
To: X, Y
To: Z
To: Y, Z
Email message
From: Participant-X
From: Participant-Y
From: Participant-Z
From: Participant-Y
From: Participant-X
Topic:A
Topic:B
Topic:C
Topic:D
To: Z
To: Y : Utterance to be responded
: Utterance for showing completion of argument
Branch
Response by intended listener
Response by non-intended listener
Learning on-demand Support
• Active Book• Content Development• Evaluation Method
some onewants to knowsomething
Someone whoknows something
Up-to-datecontents
creationupdate
KnowledgeServer
Convenienttime and place
interaction
Can getknowledgeeasily
Communicationif necessary
Knowledgesourcesin outer World
Opendynamic generation
Active Book Our Web-based Learning System
Outline of TalkSelf introduction• Definition
– Tools, Environments• Quick review of the history of Software
Engineering and Related Tools– Past– Present
• Software Engineering: now and future– Current Topics in Object Oriented Technology– Software Engineering by / for Internet– Open Source Software Development– Web Engineering
What is a Software Tool ?
• Software tools are programs that help us:– Write– Measure programs– Test and Verify software documents– Change– Manage
4
Editors, Compilers, Debuggers• Familiar and Essential in programming
activities
CASE tools( Computer Aided Software Engineering )
• Familiar and Popular in software engineering activities of upstream
UML and CASE tools• Very popular now and help us make and analyze:
– Use-case Diagrams for defining functional requirements– Collaboration Diagrams for finding analysis classes – Class Diagrams for designing the static structure– Sequence Diagrams for defining objects interaction– State Diagrams for defining the behavior of each object– Deployment Diagrams for allocating objects to machines– Component Diagrams for packaging
What is a Software Environment ?
• The collection of software tools is called: – Environment– Software Environment– Software Development Environment (SDE)
What is an Integrated Environment ?
• Most of the cases, tools of an environment are integrated by some mechanisms: – User Interface– Product– Software Process
User-Interface centered Integration
Tools are directly manipulated from
User-Interface
Product centered Integration
• Software development by a team: Version Control System is essential for collaboration and coordination
change notify
policy and rules
5
Process centered Integration
• In Large-scaled software Development: should follow a software process
• Process centered integrated environmentinvokes software tools based on some process definition, e.g. workflow
Very Quick Review of theHistory of Software Engineering
Distinguished Features of Software• Different from other industrial products, software has
distinguished features which make production of software difficult. They are [1];
•Complexity•Conformity•Changeability•Invisibility[1] F.P. Brooks Jr.:No silver bullet: essence and accidents of software engineering, IEEE Computer, 20(4), (1987), pp.10--19.
And Furthermore
• human being engaged in – defining, – designing, – Implementing– testing
activities has unique weakness in complexity、conformity, instability, and invisibility.
• It is also difficult to control and coordinate a group activity of human beings.
What is Software Engineering
• Research on Software Engineering try to introduce discipline into these activities
• by providing models, languages, methodologies and tools.
Achievements of Software Engineering
• IT technologies are rapidly-advancing. Software engineering technologies couldnot always fulfill all the requirement every period of innovation
• Research on Software engineering follows them step by step creating new technologies and evolving itself.
6
Role of Tools and Environments
• Software Tools and Software Development Environments are means to make those software engineering activities efficient.
Change of Initiative
MSCulture
Software development methods
Languages and Environments
Technical project management techniques
Quality Assurance techniques
System Integration technologies
Network Age
IBM Culture UNIX Culture
Open sourcesoftware development
Object-Oriented technologies
High Reliability High Productivity
(General-purpose machine)
(WS)
(NotePC)
Web Engineering
• In the days of general-purpose machines, research on SE started to achieve the goal, high-productivity and high-reliability
• Being sophisticated by the UNIX culture• Many achievements: software development
methodologies; languages and environments; technical project management techniques; quality assurance techniques; and system integration technologies
Birth of Software Engineering
• Research on Software Engineering started from 1968 in NATO conference held in Garmisch Germany[2], triggered by several failures of big software projects
• and has evolved as follows
[2] Naur et al. : Software Engineering: Concepts and Techniques,Petrocelli/Charter, New York (1976).
1968-1980
• Formation of Software Lifecycle Concept establishing technologies for each phase from downstream to upstream .
Development of Programming Methodologies
• help us make a program with easy-to-test and easy-to-change structure
• Structured Programming by E.W.Dijkstra[3]• Parnas Module by D.L. Parnas [4] Information Hiding• JSP by M. Jackson[5]
[3] O.J. Dahl, E.W. Dijkstra, C.A.R. Hoare : Structured Programming, Academic Press, London (1972).[4] D.L. Parnas: A Tecnique for Software Module Specification with Examples, CACM, 15(12), (1972), pp.330--336.[5] M.A. Jackson: Principles of Program Design, Academic Press, New York (1975).
7
Information Hiding or Data Abstraction
• (1) The effects of modifying a data structure is scattered over a program. It makes modification of a program troublesome.(2) Effects of modified data structure is localized, if we can package both data structure and related operations in the same place of a source code.(3) Information Hiding or Data Abstraction, localization of change effects(4) Parnas's Module(5) Easiness of change of data structures was achieved. (6) The same or similar descriptions appear in a source code redundantly
Development of Design Methodologies
• Composite Design by G.J. Myers[6]• Structured Design by E. Yordon and L.L.
Constantine[7]
[6] G.J Myers: Composite / Structured Design, Van NostrandReinhold, Newyork (1978).[7] Edward Yordon and L.L. Constantine: Structured Design : Fundamentals of a Decipline of Computer Program and System Design, Prentice-Hall, Englewood Cliffs, N.J. (1979).
Development of Programming and Design Methodologies
• Those results affect the design of programming languages like– Pascal– C – Object-oriented Programming Languages.
• Many many tools were developed
Description of Users’ Requirements (requirement engineering)
• ISDOS by D. Teichrow[8]• SADT by D.T. Ross[9]• SREM by M.W. Alford[10]
[8] D. Teichrow and E. Hershey: PSL/PSA: a computer aided technique for structured documentation and analysis of information processing systems, IEEE Trans. on SE , 3(1), (1977), pp.41--48.[9] D. Ross: Structured Analysis(SA): a language for communicating ideas, IEEE Trans. on SE , 3(1), (1977), pp.16--34.[10] M.W. Alford: A Requirement Engineering methodology for real-time processing requirements, IEEE Trans. on SE , 3(1), (1977), pp.60--69.
Requirements-mismatch Program
with Good structure
?
70's
• Development of Technical Project Management technologies
• Development of Software Engineering Database technologies
a pair of wheels
development support project management
Development of Technical Project Management Technologies
• Cost estimation: – COCOMO by B.Boehm[11]
• Detection of risky factors (software complexity measures)– V measure(cyclomatic number) by R. MaCabe[12]– E measure by H. Halstead[13]
• Estimation of terminating test activities– software reliability growth model[14]
8
[11] Barry Boehm: Software Engineering Economics, Prentice-Hall, Englewood, (1981).[12] T.J. MaCabe: A Complexity Measure, IEEE Trans. on SE , 2(4), (1976), pp.308--320.[13] M.H. Halstead: Elements of Software Science, North-Holland, Amsterdum, (1977).[14] C.V. Ramamoorthy and F.B. Bastani: Software Reliability-Status and Perspective, IEEE Trans. on SE , 8(4), (1982), pp.354--371.
Development of Software Engineering Database
Technologies• which support configuration management
and project management
1980-1990
• Formalization and partial automation in upstream
Appearance of Prototyping Technologies
• Water fall model paradigm was discarded because it turned out to be impossible to define users' requirement perfectly. Paradigm sift for software development happened from water fall model to prototyping[15].
[15] William.W. Agresti: New Paradigms for Software Development, IEEE Tutorial, IEEE Computer Society, (1986).
Analysis of Dynamic Behavior of
Specificationsby Executable Specification
• for feasibility study and requirements elicitation based on prototyping paradigm or operational paradigm.
Examples• Real-time Data Flow by Paul. T. Ward[16]• JSD by M. Jackson[17]• PAISLey by Pamera Zave[18]• PROTnet by Giorgio Bruno[19]• User interface simulation by Anthony I.
Wasserman[20]
9
[16] Paul T. Ward: The Transformation Schema: An Extension of the Data Flow Diagram to Represent Control and Timing, IEEE Trans. on SE , 12(2), (1986), pp.198--210.[17] M.A. Jackson: Jackson System Development, Prentice-Hall International, London, (1983).[18] Pamera Zave and William Schell: Salient Features of an Executable Specification Language and its Environment, IEEE Trans. on SE , 12(2), (1986), pp.312--325.[19] Giorgio Bruno and Giuseppe Marchetto: Process-Translatable Petri Nets for the Rapid Prototyping of Process Control Systems, IEEE Trans. on SE , 12(2), (1986), pp.346--357.[20] Anthony I. Wasserman et. al.: Development Interactive Information Systems with the User Software Engineering Methdology, IEEE Trans. on SE , 12(2), (1986), pp.326--345
Development of CASE(Computer Aided
Software Engineering) Tools
• CASE tools for SA/SD[21]( e.g. StP)
[21] Meilir Page-Jones: The Practical Guide to Structured System Design, Prentice-Hall Englewood, N.J., (1988).
1985-1995
• Software process model and integrated Environment
• Analyzing and supporting human factors
Software Process
• Process programming by Lee Osterweil[22]• CMM by SEI[23]• SPI(Software Process Improvement)
activities
[22] L. Osterweil : Software Processes are Software too, 9th ICSE, (1987), pp.2--13.[23] Watts S. Humphrey: Managing the Software ProcesscturedSystem, Addison-Wesley, Reading Mass., (1989).
Integrated Environments
• Tool Integration by PCTE[24]
[24]Lois Wakeman and Jonathan Jowett: PCTE -- The Standard for Open Repositories, Prentice-Hall Englewood, N.J., (1993).
Analyzing and Supporting Human Factors
• Protocol analysis of human factors[25]• Communication support for consensus
making and informationexchange[26]
[25] Bill Curtis:Human Factors in Software Development, IEEE Tutorial, IEEE Computer Society, (1986).[26] Colin Potts and Glenn Bruns : Recording the Reasons for Design Decisions, 10th ICSE, (1988), pp.418--427.
10
1985-2002• Object-Oriented Technologies• Distributed Computing• Open source software development• Web Engineering
Object-Oriented Technologies
• 1967: Simula by O.J. Dahl[27] class and instance• 1977: CLU by B. Liskov[28] abstract data type• 1981: Smalltalk80 by Xerox• 1986: Objective-C by Cox, C++ by Strusrup• 1988: Eiffel by B. Meyer• 1989: CLOS by Moon• Now: Java
[28] B. Liskov and S. Zilles: Programming with abstract data types,SIGPLAN Notices,9(4), (1974),pp.50--60.
Abstract Data Type or Class
• (1) The same or similar descriptions appear in a source code redundantly, i.e. we should write code for each instance, if we realize the information hiding principle without type definition.(2) We can modify a code only once by defining aParnas's Module as a type definition.(3) Abstract Data Type(4) New Languages(e.g. CLU )(5) There are lot of similar class definitions in a source code.
Object-Oriented Technologies(object oriented analysis and
design)• 1986: OOD by G. Booch[29]• 1988: Shlare/Mellor,• 1991: Coad/Yordon,• 1991: OMT by J.Rumbaugh[30]• 1995: OOSE by Ivar Jacobson[31]• now: UML[32],[33],[34]
[29] Grady Booch: Object Oriented Design with Applications, The Benjamin/Cummings Publishing Company, (1991).[30] James Rumbaugh et. al. : Object-Oriented Modeling and Design}, Prentice-Hall Englewood, N.J., (1991).[31] Ivar Jacobson et. al. : Object-Oriented Software Engineering -- A Use Case Driven Approach, ACM Press, (1992).[32] Ivar Jacobson, James Rumbaugh, Grady Booch: The Unified Software Development Process, Addison-Wesley, (1999).[33] James Rumbaugh, Ivar Jacobson, Grady Booch: The Unified Modeling Language Reference Manual, Addison-Wesley, (1999).[34] Grady Booch, James Rumbaugh, Ivar Jacobson: The Unified Modeling Language User Guide, Addison-Wesley, (1999).
Outline of TalkSelf introduction• Definition
– Tools, Environments• Quick review of the history of Software
Engineering and Related Tools– Past– Present
• Software Engineering: now and future– Current Topics in Object Oriented Technology– Software Engineering by / for Internet– Open Source Software Development– Web Engineering
11
Software EngineeringNow and Future
Expanding Application Area
• Network application are increasing in the area of:– E-business– Information applicant– Web
• Need new software tools and environments that can handle complex of various types of medias in addition to traditional tools and environments
• Need another tools in a system LSI domain for specifying and verifying the design products consisting of hardware, firmware, and software requirement
Paradigm Change for Software Development
• The dominant competitive factors of software products in future are;(1) make software skillfully to sell them in large quantities(2) high quality(high reliability) to
high value(low cost, de facto standard, high value added)(3) make from scratch to choose and combine(4) make in a group of enterprises and compete with others groups to global cooperation and competition
Change of Development Style
• Software Engineering by Internet– Open Source Software Development
• Software Engineering for Internet– Web Engineering
Current Topics in Object Oriented Technologies
• Design patterns by GoF[35]• Application Frameworks[36]• Software Components[37]• Distributed Computing and Middleware
such as RPC, RMI, CORBA
[35] Eric Gamma, Richard Helm, Ralph Johnson, JohnVlissides: Design Patterns, Addison-Wesley, (1995).[36]Ted Lewis et. al. : Object Oriented Application Frameworks, Manning Publications, (1995).[37] Clemens Szypersky: Component Software -- beyond object-oriented programming, Addison-Wesley, (1997).
12
Achievements and IssuesAchievements
Topics
Easy-to-change of Data Structure (Information Hiding)Programming-to-difference (Class Inheritance)Easy-to-evolve (Interface inheritance)
Coarse-grained Reuse( Design Patterns, Frameworks)
Distributed Computing( Middleware, Component-ware)
Relationships
Implementation
Domain dependency
Abstract(natural languages or diagrams)
Concrete(machine readable)
Independent
DetailedDomain taxonomyApplications
Domainmodels
Architecturalstyles
Design pattern
Frameworks
Kits
System Development path
New Framework development
Kits Development
[38]W.M.Tepfenhart and J.J. Cusick,”A Unified Object Topology”, IEEE Software Jan/Feb. pp.31-35,1997.
Design Patterns• (1) Experienced object-oriented designers know
something inexperienced designer don't. What is it ? (2) Such technologies as Interface inheritance(or sub-typing) and overriding, object composition and delegation are more useful for promoting reuse. Experienced designers know useful recurring patterns which give us common design terms.(3) Design Patterns(4) Micro architectures (five Creational Patterns, seven Structural Patterns, eleven Behavioral Patterns)(5) It is difficult to develop useful design patterns.
Observer
SubjectAttach(Observer)Detach(Observer)Notify()
ObserverUpdate()
ConcreteSubjectsubjectStateGetState()
ConcreteObserverObserverState
Update()
*
Observers
Subject
observerState=subject->Getstate()
return sujectstate
for all o inobservers{
o -> Update()}
“ConcreteSubject notifies its observers whenever a change occurs that could make its observers’ state inconsistent with its own. After being Informed of a change in the concrete subject, ConcreteObserver uses this information to reconcile its state with that of the subject.”[39]
[39] Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, “Design Patterns”, Addison-Wesley Publishing
Application Frameworks• (1) The lifecycle of a program become shorter and
shorter. It is difficult to develop a program from scratch even if we use object-oriented approach.(2) If we can provide a set of cooperating objects that make up a reusable application-independent implementation, We can create a particular application by customizing it. Customization is realized by creating application-specific objects and just add-on them to the framework.(3) Application Framework(4) San Francisco Framework(5) We need to prepare an application framework for each domain.
Three-layered ArchitectureUI Package
ApplicationWindows
MicrosoftFoundation
Classes
ActiveXComponents
package
Business Objects Package
External Business Objects (Legacy
System Wrapper)
<<Façade>>Service Interface
Control Business Objects
Entity Business Objects
Database Package
SQL GeneratorPackage
<<Façade>>ObjectToRelationalTranslation Package
two-layered
Three-layered
Four-layered
(collection of Façades for each presentation)
Penker, UML Toolkit, Wiley Computer Publishing, 1998 Hans-Erik Eriksson and Magnus.
DB Interface layer
DB Interface layer
DB Interface layer
Business object layer
Business object layer
Application layer
Application layer Application
logic layer
Presentation layer(GUI)
13
Component-ware• (1) The lifecycle of a program become shorter and
shorter.(2) We want to have technologies that support plug-in and play development using components which encapsulate application domain knowledge.(3) Component-ware(4) JavaBeans(5) Unreliability of components affects traditional management technologies wrt. reliability management and process management. We need new software development methodologies and management technologies.
Middleware
• (1) Applications working over a network is increasing. We should prepare environments which can support communication between remote objects in a heterogeneous computing environment.(2) Communication support between remote objects by stub and skeleton(3) middle ware (4) CORBA(5) Programming effort is still heavy and tedious
CORBA
IDL definition
ORB coreInterface
RepositoryImplementation
Repository
Client Application Server Application
IDL stub
IDLskeleton
DynamicInvocationInterface
ORBInterface
ObjectAdaptor
IDL compiler
Interface aa {long print(in string data);}
Software Engineering by/for Internet
• newly developing area.• Various types of distributed co-operative
work over an internet are now being tried.• Co-operative work over an Internet requires
new mechanisms that support collaboration among geographically distributed people.
Open Source Software development
• Organizational Structure of OSSD– Patch from contributors – Feedback from users– Core member
• Management of source codes and Control directions of software evolution
Issues on OSSD
• OSSD naturally correspond to software evolution.
• Issues to be solved are enhancement of version control system that can deal with distribution related problems
• Should cope with different project and product management policies on each site
14
Web Crisis and Web Engineering• Development and Maintenance of Web
– Large-scaled complex Structure liked by hyperlink– Worldwide decentralized concurrent development and
modification activities– Short time development and change with high
frequency– User-centered development and skills are not uniform
• Ad hoc and unreliable• Efforts to give a solution for the problem is called
Web EngineeringSan Murugesan, “Leverage Global Software Development and Distribution Using the Internet and Web”, IT JOURNAL, Vol. 12, No.3 March 1999.
Research on-going• WebSoft project( UC Irvine )
– Distributed workflow system– Shared workspace with the following fuctions
• Authentication• access control • Versioning• Locking
• Columbia– Virtual work space
R.oy T. Fielding, E.James. Whitehead, Jr., Kenneth. M. Anderson, Gregory A. Bolcer, Peyman Oreizy, Richard N. Taylor, ”Web-Based Development of Complex Information Products”, Comm. Of the ACM, Vol.41, No.8, 1998.
Software Engineering v.s. Web Engineering
• The method for constructing complex structure by a team was developed in the research area on Software Process Modeling
• Basic concept behind software process modeling is:– Divide a whole work into smaller units(task)– Connect them( workflow and communication )– Providing an information sharing
mechanism(Information Repository, database,Web)
Coplien’s Organizational Pattern• Group closely related activities( that is, those
that are mutually coupled in their implementation, manipulate the same artifacts, or are semantically related to the same domain). Name the abstractions resulting from the grouped activities, making them into roles. The associated activities become the responsibilities( job description) of the roles .
J.Coplien, “A Development Process Generative Pattern Language”, Pattern Languages of Program Design 1999.
Design of Communication Link• Proper communication structures
between roles are key to organizational success. Communication follows semantic coupling between responsibilities. Physically collocate people whom you wish to have close communication coupling.
J.Coplien, “A Development Process Generative Pattern Language”, Pattern Languages of Program Design 1999.
Team Model (Ochimizu)
Role objectCommunication path objectDistributed Work Space objectShared artifact objectPrivate artifact object
15
In Web Engineering
• The definition of process is a quite other one• Decentralize Sub Processes with interaction
?It is your role
Role of the Internet and Web in global software development and distribution
• New models of software development– Distributed collaborative software development– Bazaar-like, open-source software development– Online software development tools and libraries
• Electronic software distribution– New models of software sales: pay/use, pay/fuction
• Project management, configuration management, and issue tracking
• Remote software testing and maintenance• Technical support, training, and education• Communication, information dissemination, and
marketing San Murugesan, “Leverage Global Software Development and Distribution Using the Internet and Web”, IT JOURNAL, Vol. 12, No.3 March 1999.
Framework of study on Software Engineering
• Studies on Software Engineering should be performed with spiral interaction between requirements from a real world and basic theoretical considerations in academies. The framework shown in next page is one of effective ways of doing it.
Framework• (1) Declare one's research interest definitely and briefly
by observing the superficial problematic situations in a real world(2) Set up a hypothesis on a Solution and its Effect by abstracting an Essential Problem(3) Give a name both for an abstraction of problem and an effect of solution(4) Change your concerns to basic theoretical considerations apart from a real world. Concentrate your attentions on constructing a solution by using proper tools such as algebraic expressions, algorithms, languages, software tools and so on.(5) Evaluate effects of research results by performing a field test in a real world to find new requirements for technology evolution/revolution