1 software engineering development process: the meiotic model vito veneziano

21
1 Software engineering development process: the meiotic model Vito Veneziano

Post on 21-Dec-2015

222 views

Category:

Documents


5 download

TRANSCRIPT

1

Software engineering development process: the meiotic model Vito Veneziano

2

What this talk is about (a disclaimer!)

A critical review of Software Engineering approaches

A hypothesis to re-organise software engineers’ job

A new biology-based view of how to model and develop software systems

3

Software processes: 3 phases

Software Engineering:

Definition phase – what?

Development phase – how?

Support and change phase –

Error correction

Adaptions

Enhancements

Sounds likeBIOLOGY?!

4

A list of process models

The waterfall model

◦Activities represented as separate process phases

Incremental development

◦Systems developed as a series of versions

Reuse-oriented software engineering

Based on identification and integration of reusable components

Agile methods

5

What all software engineering process models share is

6

CONTROL

7

But... What’s software engineering about, really?

Software engineering is about designing information systems that meet users’ viewpoints

There is no such a thing like an “absolute” system: it’s all about decisions to be made

Inherently constructionist approach

8

Engineering processes as problem analysis 1

Problem analysis and solving is more than decomposing problems into sub-problems

Software engineers are expected to actively identify and decide about...

◦Contexts and context-sensitive meanings

◦General features and recurrent patterns

◦Relevant factors from the surroundings (ethics, cultural issues, economics, etc...)

◦Whose perspective that problem is “a problem”

9

Engineering processes as problem analysis 2

... In one word: software engineers have an active role to play in “finding” new, hidden information from within existing information

Sometimes “finding” means... “creating”

And... problems evolveSounds likeBIOLOGY?!

10

Nature VS Engineering

Nature solves “problems” (or should we call them challenges) without “obsessions”

It lets “solutions” evolve out of problems by encouraging diversity, independent assortment, genetic recombination

It makes problem solving “self-rewarding”

It obtains big solutions (complex eco-biological systems) from small processes (cells reproduction)

11

Problem analysis as cell reproduction processes?

Identify relevant “chunks” of information (set of chromosomes)

Mix them and further recombine into new “chunks” (crossing over)

Split them into “bricks of information” (chromosome segregation), leading to the production of gametes

Building new “chunks” by joining different “bricks” (zygotes from gametes)

12

How crossing over leads to genetic recombination

Nonsister chromatids break in two at the same spot

The 2 broken chromatids join together in a new way

Tetrad(homologous pair ofchromosomes in synapsis)

Breakage of homologous chromatids

Joining of homologous chromatids

Chiasma

Separation of homologouschromosomes at anaphase I

Separation of chromatids atanaphase II and completion of meiosis

Parental type of chromosome

Recombinant chromosome

Recombinant chromosome

Parental type of chromosome

Gametes of four genetic types

1

2

3

4

Coat-colorgenes

Eye-colorgenes

13

Software engineering and computer science... … know something about cells and

genetics, as they tend to apply biology-derived models to almost everything

Genetic Algorithms

Neural networks

Computational simulations of complex systems

And what if they try...

14

Applying the meiotic model to S/W Eng own “core” activities

Could S/W Engineers tasks and individual skills be seen as the informational chunks that can be randomically “recombined” by an organisational crossing over process?

Would we end up with less control, but more diversity and variability? How?

How could testing evolve as well (and become more “demanding” and selective)?

15

Within the core process of engineering software...

S/W Engineering main task is to develop (i.e., “decide”) what information structure would make our systems best

Obviously, most of designing techniques have been derived by “engineering” approaches (class diagrams, use case diagrams, sequence diagrams, data flow diagrams), as if building information systems is the same as building “things” (which is less obvious, though!)

16

Biology is mainly about information systems

Every biological organism is an information system, exchanging information with[in] the environment and with other systems

Sounds likeS/W Eng?!

Advanced biological systems have adopted the meiotic process to reproduce themselves AND IMPROVE the species they belong to

17

A typical information management system...

[Information] environment

Customers

Orders

Products

Deliveries

Payments

Staff

Our system to be designed

Information chunks

The world, society, etc etc

Other systems

18

A zoom on a typical information chunk (CRUD)

[System] environment

Customers Create

Retrieve

Update

DeleteData

19

A new approach to software engineering?

Every information(al) chunk could be recombined whilst creating the whole system (new chunks expected!)

Customer-Orders

Staff-Deliveries

Deliveries-Products

Chunks exchange data

Information system grows...

Sounds likeBiology?!

20

?

21

Thank you