2. 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.
3. 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.
4. 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.
5. 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.
6. 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.
7. 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.
8. 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
9. 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.
10. 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
11. 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
12. 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.
13. 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.
15. 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.
16. Spider Chart
One way to visualize seven dimensional space of alphas using spider
chart.
18. 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.
19. 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.
20. 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.