 Software design/development consultant in Bedford, MA  Lotus/IBM previous to consulting  Instructor of software engineering at BU  Author of recent.

Slides:



Advertisements
Similar presentations
CS 501: Software Engineering Fall 2000 Lecture 2 The Software Process.
Advertisements

Virtual University - Human Computer Interaction 1 © Imran Hussain | UMT Imran Hussain University of Management and Technology (UMT) Lecture 16 HCI PROCESS.
SEP1 - 1 Introduction to Software Engineering Processes SWENET SEP1 Module Developed with support from the National Science Foundation.
Chapter 2 The Software Process
©2006 OLC 1 Process Management: The Foundation for Achieving Organizational Excellence Process Management Implementation Worldwide.
Chapter 2 Process Models
Paul Davies Thomson Racal Defence Ltd
Systems Engineering in a System of Systems Context
Shihong Huang Department of Computer Science & Engineering Florida Atlantic University 1st SEMAT Workshop March , 2010 Zurich Capturing the Essence.
6 December ’s  60’s “Cowboys” wrote software anyway that they could Difference between best programmers and worst as high as 28:1 (many sources)
1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 2 Software Processes.
SE 470 Software Development Processes James Nowotarski 12 May 2003.
SE 450 Software Processes & Product Metrics 1 Quality Systems Frameworks.
CS 501: Software Engineering
Software Quality Assurance. CS351 - Software Engineering (AY2004)2 Software engineering processes Systems vs. Software –Terms often used interchangeably.
Using the Essential Unified Process with Visual Studio Team System Ian Spence and Craig Lucia.
Capability Maturity Model
Software Project Management Course Instructor Samana Zehra (Assistant Professor)
Developing Enterprise Architecture
CMMI Course Summary CMMI course Module 9..
1 ©B. Henderson-Sellers SEMAT 2010 SEMAT Position Statement March 17, 2010 Brian Henderson-Sellers PhD, DSc, MASCE, FIMA, FACS, FIEAust, CPEng Director,
COMPGZ07 Project Management Presentations Graham Collins, UCL
Introduction to Software Quality Assurance (SQA)
Capability Maturity Model. Reflection Have you ever been a part of, or observed, a “difficult” software development effort? How did the difficulty surface?
Applied Software Project Management Andrew Stellman & Jennifer Greene Applied Software Project Management Applied Software.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Profile and a quick introduction Software Engineering: ) هندسة البرمجيات (in Arabic: is the branch of computer science Designed to develop a set rules.
Model-Based Process Improvement Module 2. Module Objectives This module will enable students to recall information about the history of CMMI fundamentals.
Chapter 2 The process Process, Methods, and Tools
N By: Md Rezaul Huda Reza n
Ivar Jacobson and Ed Seidewitz A New Software Engineering Communications of the ACM, Dec. 2014, 57 (12): CS 791z Graduate Topics on Software Engineering.
-Nikhil Bhatia 28 th October What is RUP? Central Elements of RUP Project Lifecycle Phases Six Engineering Disciplines Three Supporting Disciplines.
المحاضرة الثالثة. Software Requirements Topics covered Functional and non-functional requirements User requirements System requirements Interface specification.
By: Md Rezaul Huda Reza 5Ps for SE Process Project Product People Problem.
Introduction to Software Engineering LECTURE 2 By Umm-e-Laila 1Compiled by: Umm-e-Laila.
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITHClass of 39 CS3600: Software Engineering: Standards in Process Modeling CMM and PSP.
Software Engineering Lecture # 17
University of Sunderland CIFM03Lecture 2 1 Quality Management of IT CIFM03 Lecture 2.
How to read a scientific paper
Software Engineering Prof. Dr. Bertrand Meyer March–June 2007 Chair of Software Engineering Lecture 2: The Personal Software Process.
Process Improvement. It is not necessary to change. Survival is not mandatory. »W. Edwards Deming Both change and stability are fundamental to process.
CMMI. 1.Initial - The software process is characterized as ad hoc, and occasionally even chaotic. Few processes are defined, and success depends on individual.
This material is approved for public release. Distribution is limited by the Software Engineering Institute to attendees. Sponsored by the U.S. Department.
Session # Rational User Conference 2002 Author Note: To edit Session # go to: View/Master/Title Master ©1998, 1999, 2000, 2001, 2002 Rational Software.
Ch-1 Introduction The processes used for executing a software project have major effect on quality of s/w produced and productivity achieved in project…
1-1 Software Development Objectives: Discuss the goals of software development Identify various aspects of software quality Examine two development life.
 An article review is written for an audience who is knowledgeable in the subject matter instead of a general audience  When writing an article review,
MNP1163 (Software Construction).  SDLC and Construction Models  Construction Planning  Construction Measurement.
Software Design: The Next Step A presentation by Sean Matthews.
Introduction to the Personal Software Process. Overview Process Fundamentals PSP Concepts and Structure PSP Planning and Measurement PSP Quality Management.
What is Research?. Intro.  Research- “Any honest attempt to study a problem systematically or to add to man’s knowledge of a problem may be regarded.
SE513 Software Quality Assurance Lecture12: Software Reliability and Quality Management Standards.
Semat: Software Engineering Method and Theory or What are we doing here? Richard Mark Soley, Ph.D.
Enterprise Architectures Course Code : CPIS-352 King Abdul Aziz University, Jeddah Saudi Arabia.
Capability Maturity Model. What is CMM? n CMM: Capability Maturity Model n Developed by the Software Engineering Institute of the Carnegie Mellon University.
Significance of Findings and Discussion
The Methods of Science Chapter 1.
The Systems Engineering Context
CMMI Q & A.
A possible solution: Personal Software Process (PSP)
Quality management standards
Integrated Processes: On the Horizon
Chapter 2 Process Models
Chapter 2 Process Models
Chapter 2 Process Models
Capability Maturity Model
Chapter 2 Process Models.
Chapter 2 Process Models
Chapter 2 Process Models
Capability Maturity Model
Presentation transcript:

 Software design/development consultant in Bedford, MA  Lotus/IBM previous to consulting  Instructor of software engineering at BU  Author of recent book Beautiful Software › Topics related to this talk and other issues › Two giveaways

 A problem in software engineering  What SEMAT is and how they are trying to solve the problem  An example from my work, in the spirit of SEMAT  Analysis: SEMAT successes and warnings

 “Software engineering is gravely hampered today by immature practices. Specific problems include: › The prevalence of fads more typical of fashion industry than of an engineering discipline. › The lack of a sound, widely accepted theoretical basis. › The huge number of methods and method variants, with differences little understood and artificially magnified. › The lack of credible experimental evaluation and validation. › The split between industry practice and academic research. “  Do you agree? Feedback from roundtable?

 Fads › Structured A/D (1980), CMM (1990), object oriented A/D (1995), open source (2000), agile (2005), more…  Freebie: who wrote seminal book on SD?  Method overload › CMM vs. ISO 9126 RAD vs. agile › Key similarities, differences?  Lack of theory › Why does refactoring work?

 Credit to Sarah Sheard in Evolution of the Frameworks Quagmire.  2001/2003, but still relevant

PSP IEEE/EIA Baldrige ISO/IEC People CMM IPD- CMM* SECAM SCE MIL-STD- 498 DOD- STD- 2167A MIL-STD 499B* ISO/IEC IEEE 1220 SDCE SE-CMM EIA 731 EIA/IS 632 ISO 9000 series Ansi/EIA 632 SSE- CMM ISO/IEC CMMI SA- CMM Q9000 DOD- STD FAA- iCMM # RTCA DO-178B SW-CMM TL9000 ISO PSM SCAMPI CBA IPI SAM FAM** Process Stds Quality Stds Maturity or Capability Models Appraisal methods Guidelines Six Sigma J-STD 016 DOD- STD- 7935A TSP The Frameworks Quagmire

 Software Engineering Method and Theory  Organization dedicated to fixing these problems  Started in 2009 with 3 articles in DDJ by Ivar Jacobson, Bertrand Meyer and Richard Soley  Now 30 famous people + 15 major institution “signatories”, and 1600 “supporters”

 “We support a process to re-found software engineering based on a solid theory, proven principles and best practices that: › Include a kernel of widely-agreed elements, extensible for specific uses › Addresses both technology and people issues › Are supported by industry, academia, researchers and users › Support extension in the face of changing requirements and technology”

All of SWE expressible from… Methods PatternsPractices Kernel: universals + language

 Describe all current SWE methods with a common language and concepts  Know that ABC method is a superset of XYZ  Know that ISO-1234 just a restatement of CMM-AB  Easily describe new process for new situation  Like discovery of DNA and the A-T-C-G language of genetics!

 But what could SEMAT look like in practice?  A possible example, from my own work…  Goal is universal sw design principles › Could serve as foundation for all analysis/design methods  Freebie: what is source code refactoring? › Hint: two key aspects

 temp = 2 * (_height + _width); ‘perimeter System.out.println (temp); temp = _height * _width; ‘area System.out.println (temp); › What is the problem(s) with this code? › Solution: Split Temporary Variable  perimeter = 2 * (_height + _width); System.out.println (perimeter); area = _height * _width; System.out.println (area);

 Programmers have been tweaking code since  Disciplined, correct refactoring has at least three benefits. › Successive, small changes can produce BIG improvements. › Lightens the load on design phase. › More realistic design phase. › (Latter two support agile methods.)

 Unanswered questions… 1. When should you refactor?  When is source code “not good” so it needs improvement? 2. Which refactoring method to use?  At least 70, several for each case.  Some contradict each other. 3. Why is the change an improvement?  No explanation for what is happening.

 Summarizing thousands of pages of research… 1. A section of source code should be refactored when it “smells bad.” 2. We should apply the refactoring that helps with this smell. 3. No one knows.  We need a theory of refactoring. › What is refactoring? › Why does some code smells bad? › Why does refactoring make code better?

 7 universal principles of good sw design › Cooperation. Work well with its surrounding environment. › Appropriate form. Form follow function. › Minimality. As small as it can be. › Singularity. Contain one instance of each component. › Locality. Place related items together. › Visibility. Built-in clarity plus comments. › Simplicity. Solve its problems in the simplest manner possible.

 This theory answers the open questions 1. You should refactor when one/more of the 7 tenets are broken. 2. Use the transformation that most easily reestablishes good design where it is currently broken. 3. Refactoring works by bringing software more in line with 7 principles.

 There are not 70 transformations, there are only 7! › The 7 can be combined in various ways. › By Occam’s Razor, this is much better.  In the spirit of chemistry and physics. › Substances  elements  particles.  Predicts new transformations. › The best way to test any theory.

 Needs evidence and arguments.  Could be improved over time.  But is within the spirit of SEMAT by offering an overall theory of software design.

 There is a clear problem.  Solution would obviously be useful  Many important people are behind the effort  Lots of “working together”  Have had 3 int’l conferences, each with report  Broken into 6 tracks › Requirements › Universals › Assessment › Theory › Kernel language › Definitions › Architecture (spike)

 Goal is to improve practice not just create abstract results  Foundation (kernel + language) acceptance transferred to OMG in June 2011 › So SEMAT is not voting on its own work › SEMAT is now one org that can propose solutions for problem it defined  20 people working on kernel since March › 8 universals proposed: o pportunity, stakeholder community, requirement, software system, work, team, method, practice  Want to remove split between process nazies and programmers › Good!

 Lots of discussion, few results › 1p problem statement  20p vision  44p RFP  RFP actually a step backwards › It is a “request for” a result, not a proposal  Could become more jargon on top of existing jargon  … a “method” must be enactable, while a “practice” in isolation will in general not be. In the context of this RFP, the enactment of a method can be defined as the carrying out of that method in the context of a specific project effort. Within this context, the practices within the method may be considered use cases for the work that must be carried out to achieve the project objectives, with each practice providing a specific aspect of the overall method.

 Need to watch for agile bias  Agile is FOTM, something else in 2020  SEMAT must define earlier flavors and next  Need to watch for cult of personality › Trumpet names/# of famous signatories › But science is about evidence, prediction, internal consistency; doesn’t matter who says it › History of science shows famous people are wrong about the next breakthrough

 This has all been tried before! › System Process Engineering Meta-Model (SPEM) › ISO/IEC › Eclipse Process Framework › Software Engineering Body of Knowledge (SWEBOK) › Unified Method Framework › More….  The RFP says each is inadequate › Worth a raised eyebrow though

 Questions?  Comments?

 SEMAT home page › semat.org semat.org  SEMAT vision statement › vision.pdf vision.pdf  SEMAT blog › sematblog.wordpress.com/ sematblog.wordpress.com/  My home page › chc-3.com chc-3.com  My book, including these issues ›