Establishing Great Software Development Process(es) for Your Organization. By Dale Mayes DMayes@HomePortEngineering.com



Similar documents
How To Develop Software

Software Process for QA

Classical Software Life Cycle Models

(Refer Slide Time: 01:52)

SOFTWARE DEVELOPMENT SD

Development models. 1 Introduction. 2 Analyzing development models. R. Kuiper and E.J. Luit

How To Integrate Software And Systems

Software Engineering Reference Framework

Foundations for Systems Development

SOFTWARE ENGINEERING INTERVIEW QUESTIONS

Software Engineering. What is a system?

Software Development Life Cycle (SDLC)

CSE 435 Software Engineering. Sept 16, 2015

Software Development Life Cycle

IV. Software Lifecycles

A. Waterfall Model - Requirement Analysis. System & Software Design. Implementation & Unit Testing. Integration & System Testing.

SE464/CS446/ECE452 Software Life-Cycle and Process Models. Instructor: Krzysztof Czarnecki

Chap 1. Introduction to Software Architecture

Software Engineering. Software Engineering. Software Costs

Software Project Models

Components Based Design and Development. Unit 2: Software Engineering Quick Overview

Abstract. 1 Introduction

CHAPTER_3 SOFTWARE ENGINEERING (PROCESS MODELS)

And the Models Are System/Software Development Life Cycle. Why Life Cycle Approach for Software?

Process Models and Metrics

VAIL-Plant Asset Integrity Management System. Software Development Process

Requirement Management with the Rational Unified Process RUP practices to support Business Analyst s activities and links with BABoK

3SL. Requirements Definition and Management Using Cradle

Module 2. Software Life Cycle Model. Version 2 CSE IIT, Kharagpur

Process Methodology. Wegmans Deli Kiosk. for. Version 1.0. Prepared by DELI-cious Developers. Rochester Institute of Technology

What is a life cycle model?

Principles of Software Engineering: Software Methodologies. COSI 120b, Spring 2005

Software Project Management Plan (SPMP)

The Impacts Of Agile Development On The System Engineering Process

Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University

Questions? Assignment. Techniques for Gathering Requirements. Gathering and Analysing Requirements

Software Engineering. Objectives. Designing, building and maintaining large software systems

The Software Life Cycle. CSE 308: Software Engineering

Project management. Organizing, planning and scheduling software projects

Background: Business Value of Enterprise Architecture TOGAF Architectures and the Business Services Architecture

Plan-Driven Methodologies

1. Software Engineering Overview

A Capability Maturity Model (CMM)

SECTION 2 PROGRAMMING & DEVELOPMENT

Organising, planning and scheduling software projects. Software management distinctions

How To Understand The Software Process

Your Software Quality is Our Business. INDEPENDENT VERIFICATION AND VALIDATION (IV&V) WHITE PAPER Prepared by Adnet, Inc.

Time Monitoring Tool Software Development Plan. Version <1.1>

Project management. Organizing, planning and scheduling software projects. Objectives. Chapter 3. Chapter 3 Project Management. Learning Objective

Chapter 8 Approaches to System Development

Engineering Process Software Qualities Software Architectural Design

Codesign: The World Of Practice

Lecture Objectives. Software Life Cycle. Software Engineering Layers. Software Process. Common Process Framework. Umbrella Activities

International Journal of Advance Research in Computer Science and Management Studies

SWEBOK Certification Program. Software Engineering Management

PROJECT MANAGEMENT PLAN TEMPLATE < PROJECT NAME >

Managing TM1 Projects

Chakra Vs Spiral Model - A Practical Approach

Appendix 2-A. Application and System Development Requirements

USTC Course for students entering Clemson F2013 Equivalent Clemson Course Counts for Clemson MS Core Area. CPSC 822 Case Study in Operating Systems

In this Lecture you will Learn: Development Process. Unified Software Development Process. Best Practice

DOCUMENTING THE SOFTWARE DEVELOPMENT PROCESS. June S. Hopkins and Jean M. Jeroow. Litton Data Systems 8000 Woodley Ave. Van Nuys, CA 91406

How To Manage Project Management

Software Life Cycle Processes

Life-Cycle Model. Software Life-Cycle Models. Software Development in Theory. Software Development in Practice

Title: Topic 3 Software process models (Topic03 Slide 1).

R214 SPECIFIC REQUIREMENTS: INFORMATION TECHNOLOGY TESTING LABORATORY ACCREDITATION PROGRAM

Iterative Software Development -

Applications in Business. Embedded Systems. FIGURE 1-17 Application Types and Decision Types

NOTICE: This publication is available at:

Acknowledgement. Software Engineering. CS 3141: Team Software Project Introduction

Chapter 11: Integrationand System Testing

The Plan s Journey From Scope to WBS to Schedule

Information Systems Analysis and Design CSC340. XXIV. Other Phases

Outline Business Intelligence Roadmap: The Complete Project Lifecycle for Decision-Support Applications

Organizing, planning and scheduling software projects

How PRINCE2 Can Complement PMBOK and Your PMP Jay M. Siegelaub Impact Strategies LLC. Abstract. About PRINCE2

SOFTWARE DEVELOPMENT AND DOCUMENTATION

Software Process and Models

An Introduction to the ECSS Software Standards

THE APPLICATION OF THE PARETO PRINCIPLE IN SOFTWARE ENGINEERING.

The Software Development Life Cycle (SDLC)

Contents. Introduction and System Engineering 1. Introduction 2. Software Process and Methodology 16. System Engineering 53

SoftwareCostEstimation. Spring,2012

Testing Automated Manufacturing Processes

asuresign Aero (NATEP Grant MA005)

PROJECT SCOPE STATEMENT

The Software Process. The Unified Process (Cont.) The Unified Process (Cont.)

Project Time Management

8. Master Test Plan (MTP)

How To Understand The Business Analysis Lifecycle

Revision History Revision Date Changes Initial version published to

SWEN 256 Software Process & Project Management

JOURNAL OF OBJECT TECHNOLOGY

DO-254 Requirements Traceability

Chapter 5: Project Scope Management. Information Technology Project Management, Fifth Edition

System Engineering Plan

Transcription:

Establishing Great Software Development Process(es) for Your Organization By Dale Mayes DMayes@HomePortEngineering.com Class: ETP-410 Embedded Systems Conference San Francisco 2005

Abstract: There are many correlations between good s and good development processes. For instance, although there isn t one that is applicable to every project, there are principles of good s that are. The same is true in development processes. Also, it takes multiple views to adequately describe both architectures and development processes. One of the process views we will examine is a swim lane chart. This view highlights another parallel; good s limit the number of dependencies and interaction points between modules. Your process should as well. We ll start with an introduction to the traditional waterfall, incremental and iterative development models. A quick overview of a classic formal process (DoD-2167a) will establish a common reference for what artifacts are typically created under a formal process. Other factors that add to a project s complexity, and consequently, the need for a more formal process will be ed. Introduction: On the continuum of processes where does your company fall? Unless you are developing a one-off throw away project where you are; the customer, the engineer, and the hardware engineer hopefully you are not working to the extreme left of the spectrum. No process DoD-2167a *----------------------------------------------------------------------------------------------------------------------* Even if your company does not have a formal development process for their embedded, you can probably identify with some of the following typical process steps. A customer (or marketing) has a concept for the next great thing. The rough customer concepts get refined into robust system level requirements including details on, performance and the desired user interface experience. The system requirements are supplemented with any other external obligations (industry standards, safety agencies, company policies ) The system architecture is selected addressing: Types of I/O needed Number of boards Type of processor(s) Data and program memory needs User interface The system requirements are allocated to the configuration items (hardware boards and microcontrollers) The system requirements that were allocated to are supplemented with additional interface requirements imposed by the hardware or the multiple processors. In other words, if you have two processors in your, how will the processors communicate with each other (protocol) and what data will they exchange. For each processor, a team should create the architecture, identifying the major routines and modules. The following should be estimated: Allocate the processor s total memory budgets (program and data space) across each module. Estimate timing budgets (both real time and cycles consumed) across each module. Validate I/O plans The engineer creates a detailed of the new modules and has them ed by his peers. Class # ETP-410 Page 2 of 10

The is then coded following the established house coding standards. The developers perform unit testing of their code. Someone other than the developers verifies the fully integrated. A final validation is performed against the initial system requirements. This typical development sequence correlates pretty well to the classic waterfall methodology. One development task flows into the next task. Traditional Waterfall, Incremental and Iterative methodologies The waterfall model breaks the development process into a series of cascading phases. The analysis and phases consist of a top-down decomposition of the system. The implementation, integration and test phases represent a bottom-up construction. The waterfall model is frequently represented in a V shape, see figure 1. Down the left side of the V is the top-down decomposition of requirements and. Where the system requirements are identified and allocated across the hardware and components or subsystems. Up the right side of the V is the bottom-up construction of the system, encompassing; build, integrate and test. A nice feature of the V representation is that the testing path flows across the V. This represents two things. First, that tests and test plans can be developed in parallel to the implementation. Second, that there are multiple levels of requirements to be tested as the subsystems get integrated. The requirements directly across the V are what should be verified as the subsystems are integrated and ultimately the full system is built. REQUIREMENTS ANALYSIS System Validation against users needs FINAL QULIFICATIONS System Verification plans AND TEST SOFTWARE REQUIREMENTS ANALYSIS Sub-system test plans AN D TEST UNIT TESTING CODING & IMPLEMENTATION Figure 1 - Waterfall or V model Class # ETP-410 Page 3 of 10

As the name implies, the waterfall model assumes a one-way cascading progression of tasks. In other words, it assumes all requirements can be fully defined prior to moving on to and the system can be fully ed prior to implementations. The waterfall model assumes parallel development of multiple components that make up a system. For example, if the system phase identifies three microprocessors in the system, there will actually be three simultaneous requirement analysis phases. These parallel development phases will merge back into one development path after each component completes its integration and test phase. A major criticism of the waterfall approach is that it doesn t handle downstream changes or incompleteness well. It simplifies the development process into orderly progression of fully attainable tasks. Another criticism of the waterfall method is that it requires significant development up front. Sometimes this method is referred to as BUFD (Big Up Front Design). One method to overcome this large up front development effort is to incrementally implement the system. In essence, an incremental development runs through the full waterfall cycle for as much of the system as is defined, with the idea that a future pass will add the other functionality. The glossary in Software Requirements Engineering, second edition, published by IEEE in 1997 has the following definition of Incremental development: A development strategy that involves the process of constructing a partial implementation of a total system by slowly adding increased functionality or performance. The initial system is developed through all the system lifecycle stages, from analysis to implementation. This approach reduces the cost incurred before an initial capability is achieved. It also produces an operational system more quickly and thus reduces the possibility that the user s needs will change during the development process. The iterative development models represent another metaphor for the incremental development approach, see figure 2. The iterative model is typically represented by a spiral expanding out from the origin of the x and y- axis to a 100% endpoint. The theory behind the iterative model is that 100% of the requirements cannot be known up front and it is only after an implementation that additional requirements are revealed. The four axis s in figure 2 include; requirements,, code, test. The example in figure 2 represents three iterations to realize a completed system. The first iteration includes the front end system and implementation of the low level. This first iteration of enables the hardware team to test the initial prototypes. The second iteration gets the basic functionality of the product running. The final iteration ensures all the cross-mode interaction, special features, and advanced user interface is fully functioning. Class # ETP-410 Page 4 of 10

SOFTWARE SW FOR INITIAL HW TEST SW FOR INITIAL PRODUCT TEST FINAL SW SOFTWARE REQUIREMENTS CODE TEST Figure 2 - Iterative Software Development Model Class # ETP-410 Page 5 of 10

DoD-2167a DoD-2167a, Military Standard, Defense System Software Development was released 29 February 1988. As stated in the forward of the, This standard establishes uniform requirements for development that are applicable throughout the system life cycle. The requirements of this standard provide the basis for Government insight into a contractor s development, testing, and evaluation efforts. As shown in figure 3, DoD-2167a decomposes a System into Segments, where a Segment consists of one or more Hardware Configuration Items, one or more Computer Software Configuration Items and an Interface Requirements Specification. Typically, a Hardware Configuration Item is a printed circuit board and a Computer Software Configuration Item is a microcontroller. A Computer Software Configuration Item is further decomposed into Computer Software Components (source code files) and then finally Computer Software Units (functions or modules). (SSS) SEGMENT (SSS) SEGMENT (SSS) I (SRS) IRS HWCI (PIDS) HWCI (CIDS) HWCI I (SRS) IRS HWCI CIDS - Critical Item Development Specification - Computer Software Component I - Computer Software Configuration Item - Computer Software Unit HWCI - Hardware Configuration Item IRS - Interface Requirements Specification PIDS - Prime Item Development Specification SRS - Software Requirements Specification SSS - System/Segment Specification Figure 3 - DOD-STD-2167a System Breakdown DoD-2167a applies a waterfall like development method to the decomposed system. Figure 4 shows the deliverable artifacts, s and baselines that are expected from each phase of the development. There is a separate hardware development path that splits off just after the System Design phase and merges back at System Integration and Test phase. Class # ETP-410 Page 6 of 10

In DoD-2167a, any artifact that drives downstream work must have a baseline established. This doesn t mean that the s can t change it just means there needs to be a formal way for notifying all interested parties that something has changed. Other factors that add to a project s complexity Generally, military standards are for very complex projects with huge development teams. DoD-2167a is too formal and rigorous for direct application to small projects. It is useful, however, to understand DoD-2167a as one of the extremes in the range of standards. It is also interesting to explore because, DoD-2167a was one of the last prescriptive development processes. In other words, subsequent process work defined objectives for the process to achieved, not an explicit process. This difference in process approaches is analogous to creating good requirements. The focus is on what needs to be done vs. how something is to be done. Embedded tends to have more constraints than other projects. Things like microcontroller selection (limited memory size, limited I/O) and hard timing deadlines lead to a need for more up-front. Figure 5 adds a couple additional dimensions to a DoD-2167a like process. It not only shows the phases and deliverables, but who is involved in creating the. It also identifies dependencies with other development items, like first hardware availability. A Swim lane diagram, also know as a Cross-Functional Flow Chart, is useful for highlighting added complexities which could lead to the need for a more formal process. For instance, more developers and more development groups (hardware,, systems) leads to more interaction between developers and consequently a more formal process. Dispersed development teams also require additional process rigor. Think about in your s, if an output-driver only has one master that master can interface directly with the driver. However, if there are multiple modules that need to change the output, the driver can t know which request to honor; a manager function needs to be introduced to arbitrate between the multiple requests. A more complex embedded system (multiple boards or multiple microprocessors) also leads to a need for a more formal process. Class # ETP-410 Page 7 of 10

REQUIREMENTS ANALYSIS SOFTWARE REQUIREMENTS ANALYSIS PRELIMINARY DETAILED CODING AND TESTING AND TESTING I TESTING AND TESTING preliminary system system (prelim ) (detail ) test descriptions (procedures) updated source code DELIVERABLE ARTIFACTS system segment preliminary requirement s requirements test plan test descriptions source code listing test reports operation and operation and operation support and support support s s s preliminary interface requirement interface requirement preliminary interface interface source code version description s development plan product developmental configuration REVIEWS AND AUDITS system require ment system specificat ion prelimin ary critical test readiness I functional & physical configurati on audits BASELINES functional baseline allocated baseline product baseline Figure 4 - DOD-STD-2167A, Development Phases, Deliverable Products, Reviews / Audits, and Baselines Class # ETP-410 Page 8 of 10

REQ SYS REQ BUILD INTEGRATE VALIDATE Product Engineering Marketing CONTROL BEHAVIORAL REQUIREMENTS sys other sys & spec other sys & spec AND TESTING BY PROD. ENG. Engineering Software PRELIM. CONTROL top level SOFTWARE TOP LEVEL DETAILED and test plan code, as required CODING AND TESTING BY THE SW DEV. TEAM ELEC. SYS. TESTING Hardware Engineering hw first hw "final" hw Figure 5, Swim Lane Diagram Class # ETP-410 Page 9 of 10

Conclusion: The key points from 2167A that should be applied to a typical embedded process: Do a Top Level Design and Review before starting on the Detailed Designs. Do the Detailed Design and Reviews before starting to Code. Create test plans and cases in parallel to developing the code. Unit Test the code as it is developed. Review and Baseline of any that feeds downstream work. With an iterative implementation, appropriately functioning code can be available earlier in the development cycle. Design s are very effective for finding errors. They are also a great way for a group to share best practices and train junior developers. Before you can have an effective, you need to have a ed. Thru this paper and presentation, you should now have an idea of when a more formal process may be needed and what aspects of a formal process make sense to apply in your company. Contacting the Author: The author welcomes questions or comments on this paper and can be reached at: Dale Mayes Founding Member Home Port Engineering LLC 20004 103rd Court NE Bothell WA 98011 Dmayes@HomePortEngineering.com Phone: (425)876-1915 Class # ETP-410 Page 10 of 10