a new software engineeering approach

20
A New Software Engineering GUPTA ARUNIT CHRYSLER BENJAMIN MURAKONDA SRAVANI

Upload: arunit-gupta

Post on 12-Apr-2017

59 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: A New Software Engineeering Approach

A New Software Engineering

GUPTA ARUNITCHRYSLER BENJAMIN

MURAKONDA SRAVANI

Page 2: A New Software Engineeering Approach

Paradigm shifts in Software Engineering

Software Engineering - Set of practices adopted from other disciplines of Engineering like project management, design and blue printing.

Essence of software engineering has disparage coders, who actually make the software work.

There is a paradigm shift from traditional methods towards agile methodology.

Page 3: A New Software Engineeering Approach

Analogy

Basic Analogy was to treat software as manufactured product. Other engineering disciples have up-front work which is based on

strong foundational understanding where results can be relied on.

Software engineering doesn't have any such basis.

Page 4: A New Software Engineeering Approach

Software - Art or Science ?

Software Engineering is craft supported by theory. Current software artistry has direct reaction to engineering

approach. Conventional methods believes that code has to be run to make

a software work, which doesn't focus on crafting quality code. Agile practices has made possible to create high- quality scalable

software systems.

Page 5: A New Software Engineeering Approach

Engineering

Skilled Artisans from Ancient times created marvelous structures which were incredibly expensive and time consuming, also having risk of getting collapsed in a disastrous way.

Structures like skyscrapers were possible only with true engineering approach having strong foundation in material science and theory of structures.

Engineering = Craftsmanship + Theoretical foundation.

Page 6: A New Software Engineeering Approach

SEMAT

Software Engineering Method and Theory (SEMAT) focuses both on supporting the craft (methods) and building foundational understanding (theory).

Method is a process for developing software from experience, which is filtered into rules --> guidelines

-->consensus-->standards. In older times master work was closely guarded and given to

trusted apprentices. As a craft develops into engineering discipline, it’s important to find common functionality of various methods based on shared experiences.

Page 7: A New Software Engineeering Approach

Development of Theory These Methods, or processes, are the basis of the common

understanding known as Theory. Theoretical foundations allow for disciplined analysis. Theory is used to develop engineering disciplines. Engineering disciplines go through cycles.

Practice Theory Analysis

Theory in software engineering is relatively new.

Page 8: A New Software Engineeering Approach

Development of Theory Computer Science is often separated from Software Engineering. Computer Science mostly only academic, not concerned with

industry methods. Methods in current software engineering often lack support

theory. Theory is not typically useful for those in industry. To address this:

Start with methods used in practice Combine techniques Avoid competition

Page 9: A New Software Engineeering Approach

Growth of Agility Currently, the trend is to compliment Craftsmanship. Make development changeable and flexible, done by small

installments. Increment and adjust based on feedback. Adapt to the task at hand. Each team and each member must be agile enough to improve

the software through the development of the software.

Page 10: A New Software Engineeering Approach

Growth of Agility The nature of software is also adaptable. As software gets more complex, it becomes less flexible. Two tasks help overcome this:

Process control Project management

The Agile Methods, handle things differently: quick feedback cycles continuous integrated testing

Page 11: A New Software Engineeering Approach

From Practice to Method Practices are repeatable approaches to specific purpose. Methods are built from a collection of practices. Examples of this are Extreme Programming and Scrums Extreme Programming is and approach that includes:

Pair Programming Test-Driven Development Continuous Integration

Page 12: A New Software Engineeering Approach

From Practice to Method A Scrum is an agile approach that contains but is not limited to:

Backlogs Daily Scrums Sprints

Scrums are built from any number of different practices. A new foundation is needed, independent of the practices and

practitioners for the new software Engineering.

Page 13: A New Software Engineeering Approach

Kernel is The Foundation for Practices and Methods Kernel is the first tangible result of SEMAT It consists of 3 parts :

A means for measuring the progress and health of an endeavor.

A categorization of the activities necessary to advance the progress of an endeavor.

A set of competencies necessary to carry out such activities. SEMAT seven dimensions to measure progress known as “alpha”

(Abstract Level Progress Health Attribute). The seven dimensions are: opportunity,stakeholders,

requirements, software system, work, team, and way of working.

Page 14: A New Software Engineeering Approach

Seven Dimensions of Kernel

Page 15: A New Software Engineeering Approach

alpha in Software Engineering Each alpha has a specific set of states that codify points along

the dimension of progress represented by the alpha. Each of the states has a checklist. Help practitioners monitor the current state of their endeavor

along a certain alpha. To understand the state they need to move toward next. Idea is to provide an intuitive tool for practitioners.

Page 16: A New Software Engineeering Approach

Spider Chart One way to visualize seven dimensional space of alphas using

spider chart.

Page 17: A New Software Engineeering Approach

alpha states on Card

Page 18: A New Software Engineeering Approach

Practices Built on the Kernel: Enable Agile Methods A practice can be expressed in terms of the kernel by:

Identifying the areas in which it advances the endeavor. Describing the activities used to achieve this advancement and the

work products produced. Describing the specific competencies needed to carry out these

activities. How the common framework of the kernel provides a predictive

capability.

Page 19: A New Software Engineeering Approach

Conclusion Those practices, as well as building new ones as necessity.

Ultimately, the goal will be, as an industry to provide for the standardization of particularly useful and successful practices.

While enhancing not limiting, the agility of teams in applying and adapting those practices, as well as building new ones as necessary.

Finally, that is the path toward a true discipline of software engineering.

Page 20: A New Software Engineeering Approach

References Ivar Jacobson and ED Seidewitz “A New Software Engineering” VOL. 57 ,NO. 12, December

2014. Graziotin, D. and Abrahamsson, P. A Web-based modeling tool for the SEMAT Essence theory of

software engineering. J. Open Research Software 1, 1(2013). Jacobson, I., Ng, P-W., McMahon, P., Spence, I. and Lidman, S. The Essence of software

engineering: The SEMAT kernel. ACM Queue 10, 10 (2012). Jacobson, I., Ng, P.-W., McMahon, P. E., Spence, I.and Lidman, S. The Essence of Software

Engineering: Applying the SEMAT Kernel. Addison-Wesley, Reading,PA, 2013. Jacobson, I., Spence, I. and Ng, P.-W. Agile and SEMAT— Perfect partners. Comm. ACM 6, 11

(Nov. 2013) Kuhn, T. The Structure of Scientific Revolutions. University of Chicago Press, 1962.