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



Similar documents
Advanced Software Engineering FYI!

Karunya University Dept. of Information Technology

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

Classical Software Life Cycle Models

Introduction and Overview

Software Engineering Question Bank

What is a life cycle model?

Software development life cycle. Software Engineering - II ITNP92 - Object Oriented Software Design. Requirements. Requirements. Dr Andrea Bracciali

Software Development Life Cycle (SDLC)

(Refer Slide Time: 01:52)

A Capability Maturity Model (CMM)

Software Process for QA

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

SOFTWARE ENGINEERING INTERVIEW QUESTIONS

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

Chapter 10. Practical Database Design Methodology. The Role of Information Systems in Organizations. Practical Database Design Methodology

CS4507 Advanced Software Engineering

Software Testing Interview Questions

Java Programming (10155)

Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville

Sistemi ICT per il Business Networking

Software Production and Lifecycle Models

Application of software product quality international standards through software development life cycle

Software Development Life Cycle

IV. Software Lifecycles

Process Models and Metrics

Project Management. Project Analysis and Definition. Project Management. Project Management People

22C:22 (CS:2820) Object-Oriented Software Development

Software Project Models

SOFTWARE DEVELOPMENT SD

Best-Practice Software Engineering: Software Processes to Support Project Success. Dietmar Winkler

VAIL-Plant Asset Integrity Management System. Software Development Process

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

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

Umbrella: A New Component-Based Software Development Model

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

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

SOFTWARE ENGINEERING IT 0301 Semester V B.Nithya,G.Lakshmi Priya Asst Professor SRM University, Kattankulathur

To introduce software process models To describe three generic process models and when they may be used

Software Development Processes. Software Life-Cycle Models

Software Engineering Reference Framework

Chap 1. Introduction to Software Architecture

Software Design Document (SDD) Template

Outline. Definitions. Course schedule

Software Development Process Models and their Impacts on Requirements Engineering Organizational Requirements Engineering

Manage Software Development in LabVIEW with Professional Tools

Software Life Cycle Processes

CSE 435 Software Engineering. Sept 16, 2015

Rapid Development & Software Project Survival Guide Steve McConnell Dave Root (Developed with Mel Rosso-Llopart)

Fundamentals of Measurements

Software Development Process

Lecture 3 Software Development Processes

TECH. Requirements. Why are requirements important? The Requirements Process REQUIREMENTS ELICITATION AND ANALYSIS. Requirements vs.

Why process models? Topic 3 Software process models. 3. Process models. What is a process model?

Development of AUTOSAR Software Components within Model-Based Design

Overview of Software Engineering and the Software Development Process

Software Development Processes. Software Life-Cycle Models. Process Models in Other Fields. CIS 422/522 Spring

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

IT3205: Fundamentals of Software Engineering (Compulsory)

Knowledge, Certification, Networking

IT3203 Fundamentals of Software Engineering (Compulsory) BIT 2 nd YEAR SEMESTER 3

Reaching CMM Levels 2 and 3 with the Rational Unified Process

Software Engineering/Courses Description Introduction to Software Engineering Credit Hours: 3 Prerequisite: (Computer Programming 2).

Example Software Development Process.

Scenario-based Requirements Engineering and User-Interface Design

Component Based Development in Software Engineering

Engineering Process Software Qualities Software Architectural Design

MICHIGAN TEST FOR TEACHER CERTIFICATION (MTTC) TEST OBJECTIVES FIELD 050: COMPUTER SCIENCE

Visual Programming of Logic, Motion, and Robotics

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

Module 1. Introduction to Software Engineering. Version 2 CSE IIT, Kharagpur

SOFTENG250FC: Introduction to Software Engineering

Software Quality Assurance Plan

The SPES Methodology Modeling- and Analysis Techniques

D6 INFORMATION SYSTEMS DEVELOPMENT. SOLUTIONS & MARKING SCHEME. June 2013

CS 487. Week 8. Reference: 1. Software engineering, roger s. pressman. Reading: 1. Ian Sommerville, Chapter 3. Objective:

CS4507 Advanced Software Engineering

How To Understand Software Engineering

Software Life Cycle. Management of what to do in what order

CSC 342 Semester I: H ( G)

INTRODUCTION TO SOFTWARE ENGINEERING

Instructional Design Framework CSE: Unit 1 Lesson 1

What is Software? The Software Development Process. Definition of Software. Why Software?

How To Validate Software

Software Engineering. System Models. Based on Software Engineering, 7 th Edition by Ian Sommerville

11.1 What is Project Management? Object-Oriented Software Engineering Practical Software Development using UML and Java. What is Project Management?

Chapter 13: Program Development and Programming Languages

IF2261 Software Engineering. Introduction. What is software? What is software? What is software? Failure Curve. Software Applications Type

Software Engineering. Software Development Process Models. Lecturer: Giuseppe Santucci

Software Development Methodologies

Compliance ow - managing the compliance of dynamic and complex processes

Information Systems Development Process (Software Development Life Cycle)

Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology

CHAPTER_3 SOFTWARE ENGINEERING (PROCESS MODELS)

2. Analysis, Design and Implementation

How To Develop Software

Software Development Process and Activities. CS 490MT/5555, Fall 2015, Yongjie Zheng

Transcription:

CS 3141: Team Software Project Introduction Ali Ebnenasir Department of Computer Science Michigan Technological University Acknowledgement Betty H.C. Cheng Software Engineering Systematic approach for developing software Methods and techniques to develop and maintain quality software to solve problems. (Software Engineering: Methods and Management, Pfleeger, 1990) Study of the principles and methodologies for developing and maintaining software systems. (``Perspectives on Software Engineering,'' Zelkowitz, 1978)

Software Engineering Practical application of scientific knowledge in the design and construction of computer programs and the associated documentation required to develop, operate, and maintain them. (``Software Engineering,'' Boehm, 1976) Deals with establishment of sound engineering principles and methods in order to economically obtain software that is reliable and works on real machines. (``Software Engineering,'' Bauer, 1972) Why Engineer Software? Software plays a role in almost every aspect of our lives Software failure could lead to loss of life, property, and could damage critical infrastructures August 2003 black out Automatic Luggage system Denver Airport Medical devices failures Therac 25 Need systematic (and possibly automatic) approaches for software development Why is it difficult? Developers lack domain knowledge (business logic) Communication difficulties: Amongst developers Between developers and users Incremental nature of user requirements Crosscutting nature of non-functional concerns Security reliability

What is important? Problem abstraction: Figure out what the problem is in the application domain Inputs, outputs and a set of constraints that must be met Modeling: Model different entities involved in the problem Balance the level of abstraction with reality Use a modeling language to specify the problems Problem solving: Focus on solving the problem in the context of your modeling language Conceptual model: A set of artifacts representing the problem along with its solution Example: Functional Decomposition Decompose the problem into a set of independent sub-problems Each sub-problem may represent one functionality of the system Solve the sub-problems using necessary abstractions Analysis Views Functional Top-down hierarchy of functions Control flow Control flow graphs (CFGs) Data flow Data flow diagrams (DFDs) Entity relationship diagrams (ERDs) Object-Oriented Data and control encapsulated as an object

Data Flow Diagram Check for overdue books Patron ID True/false Check-out books Patron ID Patron record or null Book ID, out Read Patron record Change book status Book ID Read book record Book record Book record Legend: Process Write book record Data Flow Entity Relationship Diagram Entity Relationship Library Patron Has-a Address Checks out Requests Has-a 1:M 1:M Cardinality Book Has-a Publisher Software Engineering Phases and Process Models

Software Engineering Phases Definition: What? Development: How? Maintenance: Managing change Umbrella Activities: Throughout lifecycle Definition Requirements definition and analysis Developer must understand Application domain Required functionality Required performance User interface Definition (cont.) Project planning Allocate resources Estimate costs Define work tasks Define schedule System analysis Allocate system resources to Hardware Software Users

Development Software design User interface design High-level design Define modular components Define major data structures Detailed design Define algorithms and procedural detail Development (cont.) Coding Develop code for each module Unit testing Integration Combine modules System testing Maintenance Correction - Fix software defects Adaptation - Accommodate changes New hardware New company policies Enhancement - Add functionality Prevention - make more maintainable

Umbrella Activities Reviews - assure quality Documentation - improve maintainability Version control - track changes Configuration management - integrity of collection of components Development Process Step-by-step procedure to develop software Typically involves the major phases: analysis design coding testing Process Model / Methodology Set of activities, notations, tools, in defined sequence Goal: Order, predicitability, quality, cost control Follows requirements=>design=>coding, etc. sequence (usually) Usually defines phases or steps Often has notations Sometimes has tools

Waterfall Process Model Requirements Coding Testing Maintenance Prototyping Process Model Requirements Quick Prototype Evaluate When to use prototyping? Help the customer pin down the requirements Concrete model to test out Often done via the user interface Explore alternative solutions to a troublesome component e.g., determine if an approach gives acceptable performance Improve morale Partially running system provides visibility into a project Never press down a prototype to final product!

Spiral Process Model Planning Risk Analysis Customer Evaluation Engineering The V-Model Requirement s Analysis Acceptanc e Test Acceptanc e Testing System Architectur e System Test Integration Test System Testing Integration Testing Module An extension of the waterfall model Focus on testing Unit Test Coding Unit Testing Process Models Idealized view of the development process Different models are often used for different subprocesses may use spiral model for overall development prototyping for a particularly complex component waterfall model for other components

CMM: Capability Maturity Model A process meta-model that defines a set of capabilities that should be achieved by software development organizations/companies. Level 1: Initial ad hoc success depends on people Level 2: Repeatable track cost, schedule, functionality Level 3: Defined use standardized processes Level 4: Managed collect detailed metrics Level 5: Optimizing continuous process improvement built-in process improvement Software Engineering Institute: http://www.sei.cmu.edu/cmm/ Why is software development so difficult? Communication Between customer and developer Poor problem definition is largest cause of failed software projects Within development team More people = more communication New programmers need training Project characteristics Novelty Changing requirements 5 x cost during development up to 100 x cost during maintenance Hardware/software configuration Real time requirements Why is software development difficult? (cont.) Personnel characteristics Ability Prior experience Communication skills Team cooperation Training Facilities and resources Identification Acquisition Management issues Realistic goals Cost estimation Scheduling Resource allocation Quality assurance Version control Contracts Crosscutting concerns Availability requirements Security requirements Reliability requirements Correctness/High assurance

Summary Software lifecycle consists of Definition (what) Development (how) Maintenance (change) Different process models concentrate on different aspects Waterfall model: maintainability Prototype model: clarifying requirements Spiral model: identifying risk V model: extensive testing/verification Maintenance costs much more than development Bottom Line Software is a major part of our societal infrastructure Costs upwards of $200 billion/year Need to Improve software quality Reduce software costs/risks 32 Impact of SE Research Impact of research is measured over time and utility Who do you think has had the most impact on the field of software engineering? Why?

People you should know David Parnas: modularity, reuse, abstraction Edsger Dijkstra: structured programming Harlan Mills: clean room programming Mark Weiser: ubiquitous computing Software vs. Hardware Engineering Hardware and Hardware Engineering Characteristics: Components are packaged as individual building blocks Standardized interfaces among components Large number of off-the-shelf components Performance, cost, and availability easily determined/measured Hardware configuration built from a hierarchy of "building blocks"

Hardware Engineering Phases to system engineering of hardware: Development Planning and requirements analysis: best classes of hardware for problem availability of hardware type of interface required identification of what needs to be designed and built Establish a Plan or "road map" for design implementation May involve a hardware specification Use Hardware Description Languages (HDL) Use CAE/CAD to develop a prototype (breadboard) Develop printed circuit (PC) boards Manufacturing of boards Software and Software Engineering Function may be the implementation of a sequential procedure for data manipulation Performance may not be explicitly defined (exception in real-time systems) Software element of computer-based system consists of two classes of programs, data, and documentation Application Software: implements the procedure that is required to accommodate information processing functions System Software: implements control functions that enable application software to interface with other system elements Three high-level phases of Software Engineering Definition phase: Software planning step Software Project Plan scope of project risk resource identification cost and schedule estimates Software Requirements Analysis Requirements Specification System element allocated to software is defined in detail Formal information domain analysis to establish models of information flow and structure (expand to produce specification) Prototype of software is built and evaluated by customer Performance requirements or resource limits defined in terms of software characteristics Definition and Requirements must be performed in cooperation

Development Phase Development Phase: Translate set of requirements into an operational system element Specification Coding (appropriate programming language or CASE tool) Should be able to directly trace detail design descriptions from code.; i.e., traceability Verification, release, and maintenance phase: Testing software Testing Plan to find maximum number of errors before shipping Testing shows software has errors, it does not show the lack of errors! Prepare software for release Quality Assurance Maintain software throughout its lifetime