Slide 1

Slide 1 text

Dr. Javier Gonzalez-Sanchez [email protected] www.javiergs.info office: 14 -227 CSC 307 Introduction to Software Engineering Lecture 02. Process Models

Slide 2

Slide 2 text

Previously

Slide 3

Slide 3 text

Homework Read the Syllabus

Slide 4

Slide 4 text

Homework Read Textbook Chapter 1

Slide 5

Slide 5 text

Homework Read the Java Turorials

Slide 6

Slide 6 text

Software Process

Slide 7

Slide 7 text

Software Engineering “The application of a systematic, disciplined, quantifiable approach (process) to the development, operation, and maintenance of software.” – IEEE 7

Slide 8

Slide 8 text

Process 8 Process Activity Task Step

Slide 9

Slide 9 text

Activities 9 Deployment Software Testing Coding, Programming, Developing Software Design Requirement Engineering [+]

Slide 10

Slide 10 text

Activities 10

Slide 11

Slide 11 text

Activities 11

Slide 12

Slide 12 text

Strategies 12 • Plan-driven, all process activities are planned in advance, and progress is measured against a plan (a contract). • Agile planning is incremental, and it is easier to change the process to reflect changing customer requirements. •

Slide 13

Slide 13 text

Strategies 13

Slide 14

Slide 14 text

Plan-based Process

Slide 15

Slide 15 text

The Waterfall Model 15

Slide 16

Slide 16 text

The Waterfall Model • Key idea: Separate and distinct phases of specification and development. A phase has to be completed before moving on to the next phase. • Type: Linear model. • Recommended for: Embedded systems and Large systems(developed by several partner companies) • Disadvantage: the difficulty of accommodating change after the process is underway. 16

Slide 17

Slide 17 text

The V-Model 17 this arrows point at what we are testing

Slide 18

Slide 18 text

The V-Model • Key idea: It is an extension of Waterfall where instead of moving down in a linear way, the process steps are bent upwards after the coding phase. While the test is just one of five steps in Waterfall, it looks like practically half of the process in the V-model. • Type: Linear model. • Recommended for: well-suited for projects that must maintain a strict deadline and meet key milestone dates throughout the process. Example: medical device industry • Disadvantage: same as waterfall 18

Slide 19

Slide 19 text

The Spiral Model 19

Slide 20

Slide 20 text

The Spiral Model • Key idea: High amount of risk analysis hence, avoidance of Risk is enhanced. • Evolutionary model • Recommended for: (1) Good for large and mission-critical projects. (2) Strong approval and documentation control. (3) Significant changes are expected (research and exploration). • Doesn’t work well for smaller projects. • Doesn’t work well when users are unsure of their needs • Doesn’t work well when requirements are complex 20

Slide 21

Slide 21 text

Prototyping 21 Constructio n communication Quick plan Modeling Quick design Construction of prototype Deployment delivery & feedback

Slide 22

Slide 22 text

Prototyping • Definition: A prototype is an initial version of a system used to demonstrate concepts and test design options. • Evolutionary model • Recommended for: a prototype can be used to help with requirements elicitation and validation; or in design processes to explore options and develop a UI design. 22

Slide 23

Slide 23 text

The Incremental Model 23 Option A: Linear Increments (not all colors (activities) are repeated)

Slide 24

Slide 24 text

The Incremental Model 24 Option B: Parallel Increments (most than 1 activity at the same time)

Slide 25

Slide 25 text

The Incremental Model ▪ Key idea: split each activity into pieces. ▪ Type: Iterative model (it could include parallel). ▪ Recommended for: Facilitate getting customer feedback on the development work that has been done. ▪ Disadvantages: (1) it could be not cost-effective to produce documents that reflect every version of the system; (2) System structure tends to degrade as new increments are added. Unless time and money are spent on refactoring to improve the software, regular change tends to corrupt its structure. 25

Slide 26

Slide 26 text

Agile Methods

Slide 27

Slide 27 text

Agile in a Nutshell 27

Slide 28

Slide 28 text

Agile in Action 28

Slide 29

Slide 29 text

Agile Manifesto 29 Agile Manifesto We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: n Individuals and interactions n Working software n Customer collaboration n Responding to change over processes and tools over comprehensive documentation over contract negotiation over following a plan While there is value in the items on the right, we value the items on the left more.

Slide 30

Slide 30 text

Agile Manifesto 30 Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. Business people and developers must work together daily throughout the project. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. The most efficient and effective method of conveying information to and within a devel- opment team is face-to-face conversation. Working software is the primary measure of progress. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. Continuous attention to technical excellence and good design enhances agility. Simplicity – the art of maximizing the amount of work not done – is essential. The best architectures, requirements, and designs emerge from self-organizing teams. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly. The 12 Principles of Agile

Slide 31

Slide 31 text

Agile Manifesto 31 opment team is face-to-face conversation. and adjusts its behavior accordingly. Kent Beck Mike Beedle Arie van Bennekum Alistair Cockburn Ward Cunningham Martin Fowler Robert C. Martin Steve Mellor Dave Thomas James Grenning Jim Highsmith Andrew Hunt Ron Jeffries Jon Kern Brian Marick Ken Schwaber Jeff Sutherland ©2001-2019 The Agile Manifesto Authors. This declaration may be freely copied in any form, but only in its entirety through this notice. THE MANIFESTO AUTHORS Advancing the principles of Agile Learn more at AgileAlliance.org

Slide 32

Slide 32 text

Applicability • Product development is where a software company develops a small or medium-sized product for sale. • Nowadays, several software products and apps are small or medium-sized; therefore, they are developed using an agile approach. • Custom system development within an organization where the customer clearly commits to becoming involved in the development process and where there are few external rules and regulations that affect the software. 32

Slide 33

Slide 33 text

Pros • The product is broken down into a set of manageable and understandable chunks. • Unstable requirements do not hold up progress. • The whole team has visibility of everything, and consequently, team communication is improved. • Customers see on-time delivery of increments and gain feedback on how the product works. 33

Slide 34

Slide 34 text

Cons • The informality of agile development is incompatible with the legal approach to contract definition (requirement specification) that is commonly used in large companies. • Agile methods are most appropriate for new software development rather than software maintenance (documentation). Yet the majority of software costs in large companies come from maintaining their existing software systems. • Agile methods are designed for small co-located teams, yet much software development now involves worldwide distributed teams. 34

Slide 35

Slide 35 text

Questions 35

Slide 36

Slide 36 text

Lab 02. Getting Started with Java Swing (Part II)

Slide 37

Slide 37 text

Previously

Slide 38

Slide 38 text

Paint App 38

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

Lab 01 Make It Work (Submit Code on Canvas)

Slide 44

Slide 44 text

CSC 307 Introduction to Software Engineering Javier Gonzalez-Sanchez, Ph.D. [email protected] Summer 2024 Copyright. These slides can only be used as study material for the class CSC307 at Cal Poly. They cannot be distributed or used for another purpose.