Date post: | 12-Apr-2017 |
Category: |
Technology |
Upload: | arunit-gupta |
View: | 57 times |
Download: | 0 times |
A New Software Engineering
GUPTA ARUNITCHRYSLER BENJAMIN
MURAKONDA SRAVANI
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.
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.
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.
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.
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.
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.
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
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.
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
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
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.
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.
Seven Dimensions of Kernel
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.
Spider Chart One way to visualize seven dimensional space of alphas using
spider chart.
alpha states on Card
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.
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.
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.