Section 1.3

Software Development Life Cycle

Learning Goals


Objectives and General Description

The objective of this section is to develop an understanding of the iterative and incremental nature of software development by analyzing different styles of the software development life cycle.  

The student teams will be introduced to their first ARC challenge and project in the next section.  In anticipation of that, the students need to have a general understanding of how software and projects are developed.  Development is incremental, meaning that large projects are divided into smaller, manageable components that are completed in a specific order.  Development is also iterative, meaning that the development happens in cycles using feedback to continually revise and improve the product.  In the next section, students will be actively planning an iterative and incremental approach to completing their challenge project.


Activities

Activity 1.3.1 (Budget 20 minutes)

Allow student teams to sit together.  Select a piece of software for discussion (video game, app, website, etc.).  The teacher can make the selection or can ask students for ideas.  Then ask each team to make a list of the steps needed to create this piece of software.  Keep this instruction vague.  Some teams may be very detailed in their responses (pick a coding language, hire programmers, etc.) and other teams may be very general (idea, code, test, sell).  Give the teams 5 - 10 minutes to complete this.

Ask each group, one group at a time,  to tell you a step.  They cannot repeat a step that has previously been mentioned.  The teacher should record their responses on the board. Once the groups run out of ideas, have a summary discussion about the steps.  Students may have left out some of the important components.  The next activity will fill in the gaps.


Activity 1.3.2 (Budget 30 minutes)

Present the slides on the Software Development Life Cycle.   Note:  Slide 5, bullet #3 talks about gathering information from the intended audience or user to get their perspective on the problem/solution.  This is a core component of Design Thinking and should be emphasized.

After discussing the steps in the cycle, have students brainstorm innovations that have gone through a development cycle.  They can probably name the original iPhone and the newest model.  What has changed since the first phone came out and what does Apple do to keep making improvements?  This is just one example.  If students name other innovations, you can have a class discussion or even look at a timeline for the innovation.  As innovations go through the remodeling process, it is important to point out that the purpose may change over time.  When cell phones first came out they were simply a way to make phone calls.  Now we connect to the Internet, take videos, and pictures, play games, etc.  The newest phones are now incorporating AI.  As our needs change, the purpose of our innovation changes too.  Developers make improvements by constantly and consistently listening to the feedback from the audience and the development process can be ordered and intentional or exploratory as developers try to make their innovation better than the others on the market.

Let's continue the discussion with the iPhone.  At Apple, there may be a department that develops the hardware for the phone.  They figure out where to place the on/off button, the volume control, etc.  Then, there is a department that creates the system settings and the interface of the phone.  Another department may be conducting marketing research on user experience.  All of these departments have to work together on a deadline to produce the best possible device.

Have students think of other devices that depend on different departments working together to consistently improve a product for specific users.

Reflection:  Have teams refer back to their original list from activity 1.3.1.  Revise the list to show an approach that reflects elements of collaboration, design thinking, incremental development and iterative development.