ContentSEMAT IntroSEMAT elementsSEMAT as SW process
Sources• Ivar Jacobson et al. The Essence of SoftwareEngineering - Applying the SEMAT Kernel. 2013Pearson Education, Inc. ISBN 978-0-321-88595-1• Ivar Jacobson, Pan-Wei Ng, Paul McMahon and IanSpence. The Essence of Software Engineering: TheSEMAT Kernel (Paper). Available inhttp://queue.acm.org/detail.cfm?id=2389616
SEMAT• Acronym of Software Engineering Methodand Theory• Works from Ivar Jacobson in 2006• SEMAT was officially founded in September2009 by Ivar Jacobson, Bertrand Meyer, andRichard Soley.• RFP OMG• www.semat.org
SEMAT – Motivation (I)(From Jacobson)Some areas of software engineering today suffer from immaturepractices. Specific problems include:• The prevalence of fads more typical of the fashionindustry than an engineering discipline.• The lack of a sound, widely accepted theoretical basis.• The huge number of methods and method variants, withdifferences little understood and artificially magnified.• The lack of credible experimental evaluation andvalidation.• The split between industry practice and academicresearch.
SEMAT – Common Ground (I)• SEMAT’s first step was to identify a commonground for software engineering.• This common ground is manifested as akernel of essential elements that are universalto all software development efforts, and asimple language for describing methods andpractices.
SEMAT – Common Ground (III)(From Jacobson)More than just a conceptual model, the kernel provides:• A thinking framework for teams to reason about the progressthey are making and the health of their endeavors• A framework for teams to assemble and continuously improvetheir way of working• A common ground for improved communication, standardizedmeasurement, and the sharing of best practices• A foundation for accessible, interoperable method and practicedefinitions• And most importantly, a way to help teams understand wherethey are and what they should do next
Organization of SEMATSEMAT defines• The essential things to progress andevolve—the alphas• The essential things to do— the activityspaces• The essential capabilities needed— thecompetencies
SEMAT’ Alphas• Alphas represent the things you need to monitor forprogress and health to steer your endeavor to asuccessful conclusion, and they have states andchecklists to that effect.• A good way to remember this is as a mnemonic formedfrom the words “Aspiration Led Progress and HealthAttribute”,• Those words stresses that(1) alphas are about progress and health,(2) they are focused on achieving positive results, and(3) they should be looked at as a set and notindividually.
SEMAT’ Alphas (II)• An alpha is an essential element of the software engineeringendeavor, one that is relevant to an assessment of itsprogress and health.• How the “things to work with” are handled.• These are captured as alphas rather than work products(such as documents).• SEMAT has identified seven alphas: Opportunity,Stakeholders, Requirements, Software System, Work,Way of Working, and Team.• The alphas are characterized by a simple set of states thatrepresent their progress and health. As an example, theSoftware System moves through the states of ArchitectureSelected, Demonstrable, Usable, Ready, Operational, andRetired.
SEMAT’ Alphas (III)• Opportunity: The set of circumstances that makes it appropriate todevelop or change a software system.• Stakeholders: The people, groups, or organizations that affect orare affected by a software system.• Requirements: What the software system must do to address theopportunity and satisfy the stakeholders.• Software System: A system made up of software, hardware, anddata that provides its primary value by the execution of thesoftware.• Team: The group of people actively engaged in the development,maintenance, delivery, and support of a specific software system.• Work: Activity involving mental or physical effort done in order toachieve a result.• Way of Working: The tailored set of practices and tools used by ateam to guide and support their work.
SEMAT’ Alphas states• The kernel alphas can be used to explore theroot causes of a challenge.• The kernel can also help to overcome thechallenge because each alpha has a series ofstates to guide a team to achieve progressand health.• See:http://www.ivarjacobson.com/uploadedFiles/Content/Landing_Pages/SEMAT%20SW%20Eng%20Kernel%20Cards%20A7.pdf
SEMAT as a Practical Kernel (I)(From Jacobson)• Perhaps the most important feature of the kernel isthe way it is used in practice.• Traditional approaches to software developmentmethods tend to focus on supporting processengineers or quality engineers.• The kernel, in contrast, is a hands-on, tangiblethinking framework focused on supporting softwareprofessionals as they carry out their work.
Why Kernel ?(From Jacobson)• A software engineering kernel is a lightweight set ofconcepts and definitions that captures the essenceof effective, scalable software engineering in apractice-independent way.• The kernel forms a common ground for describingand conducting software development.
In additionInformation about Alpha State features available inhttp://www.ivarjacobson.com/uploadedFiles/Content/Landing_Pages/SEMAT%20SW%20Eng%20Kernel%20Cards%20A8.pdfThe Kernel Alphas Made Tangible with Cards
Organization of SEMAT (II)• Customer: The customer perspective must be integrated intothe day-to-day work to ensure that an appropriate solution isdeveloped. The customer area of concern contains everythingto do with the actual use and exploitation of the softwaresystem to be produced.• Solution: The goal of software development is to develop aworking software system to solve some problem. The solutionarea of concern contains everything related to the specificationand development of the software system.• Endeavor: Software development is an endeavor ofconsequence that typically takes significant time and effort tocomplete, affects many different people, and involves adevelopment team. The endeavor area of concern containseverything related to the development team and the way theydo their work.
SEMAT Activities spaces (I)• The kernel as such does not define any activities, but it doesdefine a number of activity spaces.• The activity spaces represent the essential things that have tobe done to develop good software.• You can think of activity spaces as method-independentplaceholders for specific activities that will be added later ontop of the kernel.• They provide general descriptions of the challenges a teamfaces when developing, maintaining, and supporting softwaresystems, and the kinds of things the team will do to meetthem.• Each activity space then can be extended with concreteactivities that progress one or more of the kernel alphas.
Customer’ Activities spaces• Explore Possibilities: Explore the possibilities presented by anew or improved software system. This includes the analysisof the opportunity and the identification of the stakeholders.• Understand Stakeholder Needs: Engage with thestakeholders to understand their needs and ensure that theright results are produced. This includes identifying andworking with the stakeholder representatives to progress theopportunity.• Ensure Stakeholder Satisfaction: Share the results of thedevelopment work with the stakeholders to gain theiracceptance of the system produced and to verify that theopportunity has been addressed.• Use the System: Use the system in a live environment tobenefit the stakeholders.
Solution’ Activities spaces• Understand the Requirements: Establish a sharedunderstanding of what the system must do.• Shape the System: Shape the system to make it easy todevelop, change, and maintain. This includes the overalldesign and architecture of the system.• Implement the System: Build a system by implementing,testing, and integrating one or more system elements.• Test the System: Verify that the system meets thestakeholders’ requirements.• Deploy the System: Take the tested system and make itavailable for use outside the development team.• Operate the System: Support the use of the software systemin the live environment.
Endeavor’ Activities spaces• Prepare to Do the Work: Set up the team and its workingenvironment. Understand and sign up for the work.• Coordinate Activity: Coordinate and direct the team’swork. This includes all ongoing planning and replanningof the work.• Support the Team: Help the team members to helpthemselves, collaborate, and improve their way ofworking.• Track Progress: Measure and assess the progress madeby the team.• Stop the Work: Shut down the work and hand over theteam’s responsibilities.
SEMAT Competencies (I)• You need competency relevant to the specific tasks you areworking on, but you also need other competencies to understandwhat your teammates are working on.• Competencies are defined in the kernel and can be thought ofas generic containers for specific skills.• Specific skills—for example, Java programming—are not part of thekernel because such skills are not essential on all softwareengineering endeavors.• But competency is always required, and it will be up to theindividual teams to identify the specific skills needed for theirparticular software endeavors.• A common problem of software endeavors is not being aware of thegap between the competency that is needed and the competencythat is available. The kernel approach will raise the visibility of thisgap.
SEMAT Competencies (III)• Stakeholder Representation: This competency encapsulates the ability togather, communicate, and balance the needs of other stakeholders, andaccurately represent their views.• Analysis: This competency encapsulates the ability to understandopportunities and their related stakeholder needs, and to transform theminto an agreed upon and consistent set of requirements.• Development: This competency encapsulates the ability to design andprogram effective software systems following the standards and normsagreed upon by the team.• Testing: This competency encapsulates the ability to test a system,verifying that it is usable and that it meets the requirements.• Leadership: This competency enables a person to inspire and motivate agroup of people to achieve a successful conclusion to their work and tomeet their objectives.• Management: This competency encapsulates the ability to coordinate,plan, and track the work done by a team.
Aligning the kernel with one governance framework
Planning Iterations (I)• The art of planning an iteration is in deciding which of the many thingsthe team has to do should be done in this iteration—the next two tofour weeks.• Every iteration will produce working software, but there are other thingsthe team needs to think about.• They need to make sure they develop the right software in the best waythey can. The kernel helps the team reason about the currentdevelopment context, and what to emphasize next, to make sure a goodbalance is achieved across the different dimensions of softwaredevelopment.• You can think of planning an iteration as follows.1. Determine where you are. Work out the current state of the endeavor.2. Determine where to go. Decide what to emphasize next, and what theobjectives of the next iteration will be.3. Determine how to get there. Agree on the tasks the team needs to doto achieve the objectives.
Planning Iterations (III)Task board at the beginning of the iteration
Planning Iterations (IV)Task board at the ending of the iteration
SEMAT & other processes• The kernel doesn’t in any way compete with existingmethods, be they agile or anything else. On the contrary, thekernel is agnostic to a team’s chosen method. Even if youhave already chosen, or are using, a particular method thekernel can still help you. Regardless of the method used,projects—even agile ones—can get out of kilter, and whenthey do teams need to know more. This is where the realvalue of the kernel can be found.• It can guide a team in the actions to take to get back oncourse, to extend their method, or to address a critical gap intheir way of working. At all times it focuses on the needs ofthe software professional and values the “use of methods”over the “description of method definitions” (as has beennormal in the past).
SEMAT & other processes• The kernel doesn’t just support modern best practices. It alsorecognizes that a vast amount of software is alreadydeveloped and needs to be maintained; it will live for decadesand it will have to be maintained in an efficient way. Thismeans the way you work with this software will have to evolvealongside the software itself.• New practices will need to be introduced in a way thatcomplements the ones already in use. The kernel providesthe mechanisms to migrate legacy methods from monolithicwaterfall approaches to more modern agile ones and beyond,in an evolutionary way. It allows you to change your legacymethods practice by practice while maintaining and improvingthe team’s ability to deliver.