Upstream Prerequisites

Slides:



Advertisements
Similar presentations
Software Engineering Key construction decisions Design challenges.
Advertisements

Lecture 2 1 Introduction to Software Engineering.
Software Quality Assurance Plan
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
CS 3500 SE - 1 Software Engineering: It’s Much More Than Programming! Sources: “Software Engineering: A Practitioner’s Approach - Fourth Edition” Pressman,
Using UML, Patterns, and Java Object-Oriented Software Engineering Royce’s Methodology Chapter 16, Royce’ Methodology.
SE 555 Software Requirements & Specification Beyond Requirements Based on Weigers Chapter17.
Chapter 9: The Client/Server Database Environment
School of Computer ScienceG53FSP Formal Specification1 Dr. Rong Qu Introduction to Formal Specification
DITSCAP Phase 2 - Verification Pramod Jampala Christopher Swenson.
Implementation. We we came from… Planning Analysis Design Implementation Identify Problem/Value. Feasibility Analysis. Project Management. Understand.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
© 2005 Prentice Hall, Decision Support Systems and Intelligent Systems, 7th Edition, Turban, Aronson, and Liang 6-1 Chapter 6 Decision Support System Development.
Course Instructor: Aisha Azeem
Lecture The Client/Server Database Environment
The Client/Server Database Environment
1 L07SoftwareDevelopmentMethod.pptCMSC 104, Version 8/06 Software Development Method Topics l Software Development Life Cycle Reading l Section 1.4 – 1.5.
Effective Methods for Software and Systems Integration
Software Construction. Implementation System Specification Requirements Analysis Architectural Design Detailed Design Coding & Debugging Unit Testing.
LAYING OUT THE FOUNDATIONS. OUTLINE Analyze the project from a technical point of view Analyze and choose the architecture for your application Decide.
Testing. Definition From the dictionary- the means by which the presence, quality, or genuineness of anything is determined; a means of trial. For software.
Chapter 2 The process Process, Methods, and Tools
PROJECT MILESTONES Group Presentations: ~ 5 mins presentations.
1 Debugging and Testing Overview Defensive Programming The goal is to prevent failures Debugging The goal is to find cause of failures and fix it Testing.
Chapter 2 소프트웨어공학 Software Engineering 임현승 강원대학교
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 3 Slide 1 Software Processes l Coherent sets of activities for specifying, designing,
CS 350, slide set 6 M. Overstreet Old Dominion University Spring 2005.
CSC-115 Introduction to Computer Programming
Software Engineering General architecture. Architectural components:  Program organisation overview Major building blocks in a system Definition of each.
Industry SDLCs and Business Climate. Justin Kalicharan Credentials Director and Senior Technology Officer Over 14 years of coding experience in various.
 CS 5380 Software Engineering Chapter 2 – Software Processes Chapter 2 Software Processes1.
111 Notion of a Project Notes from OOSE Slides – a different textbook used in the past Read/review carefully and understand.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Chapter 7 Applying UML and Patterns Craig Larman
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Chapter 6 Architectural Design.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Software Engineering Saeed Akhtar The University of Lahore Lecture 6 Originally shared for: mashhoood.webs.com.
Chapter 1 Program design Objectives To describe the steps in the program development process To introduce the current program design methodology To introduce.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
Construction Planning and Prerequisite
1 EE29B Feisal Mohammed EE29B: Introduction to Software Engineering Feisal Mohammed Ph: x3156.
Software Engineering - Abdul Majeed. What is software? Definition of Software Engineering Software Process Generic view of Software Engineering Software.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
MNP1163 (Software Construction).  SDLC and Construction Models  Construction Planning  Construction Measurement.
The Anatomy of a Computer Program Unit 3. Programs are Directions  A computer carries out the instructions in a program, line by line, exactly as they.
CSE 303 – Software Design and Architecture
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
1 The Requirements Problem Chapter 1. 2 Standish Group Research Research paper at:  php (1994)
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Chapter-3 Measure Twice, Cut Once: Upstream Prerequisites.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Meghe Group of Institutions Department for Technology Enhanced Learning 1.
Chapter 8: Maintenance and Software Evolution Ronald J. Leach Copyright Ronald J. Leach, 1997, 2009, 2014,
What is a software? Computer Software, or just Software, is the collection of computer programs and related data that provide the instructions telling.
Victoria Ibarra Mat:  Generally, Computer hardware is divided into four main functional areas. These are:  Input devices Input devices  Output.
INTRODUCTION CSE 470 : Software Engineering. Goals of Software Engineering To produce software that is absolutely correct. To produce software with minimum.
CSC 108H: Introduction to Computer Programming
Preparation for coding
Algorithms II Software Development Life-Cycle.
The Client/Server Database Environment
1. Welcome to Software Construction
Chapter 9: The Client/Server Database Environment
Software Life Cycle Models
CHAPTER 10 METHODOLOGIES FOR CUSTOM SOFTWARE DEVELOPMENT
Preparation for coding
Presentation transcript:

Upstream Prerequisites “Measure Twice, Cut Once”

“Blueprints” Before construction, preparations must be made. These preparations are custom built to the projects specific needs The success or failure of the project is determined before the construction begins. “Measure twice, cut once”: construction can account for up to 65% of total project cost. “Blueprints”

Importance of Prerequisites High quality practices = high quality software. Quality start: Focus on planning Quality middle: Focus on construction Quality End: Focus on testing The goal of preparation is risk reduction. Most common project risks are poor requirements and planning. Preparation for construction is not an exact science. Importance of Prerequisites

Importance of Prerequisites Causes of Incomplete preparation Developers with lack of expertise. “I want to code now!!!!” : Coding ASAP “I want to SEE code now!!”: Unsympathetic managers Refuse, Trick, Educate, Relocate Educate people about the development process. Appeal to logic Use Analogies Show the data Importance of Prerequisites

Importance of Prerequisites Boss Test We’d Better start coding right away because we’re going to have a lot of debugging to do. We haven’t planned much time for testing because we’re not going to find many defects. We’ve investigated requirements and design so much that I can’t think of and major problems we’ll run into during coding or debugging. Importance of Prerequisites

“What software am I working on?” Different kinds of software projects require different balances between preparation and construction. Projects tend to fall into development styles. Business Systems Mission-Critical Systems Embedded Life- Critical Systems “What software am I working on?”

“What software am I working on?” Business Systems Internet site, Games, Management information systems, Payroll Planning is interleaved with construction Less quality assurance activities, done in house. Informal “What software am I working on?”

“What software am I working on?” Mission –Critical Systems Embedded software, Software tools, Web services Up- front planning and semi-formal requirements Informal check-ins while coding Testing with a separate group. (In house always done) “What software am I working on?”

“What software am I working on?” Embedded Life- Critical Systems Avionics software, Medical devices, Operating Systems Formal and extensive planning, requirements, and design Formal check-ins while coding Extensive out of house testing. Everything must go correctly “What software am I working on?”

“What software am I working on?” Sequential approach Upfront prerequisites Requirements are stable Design is straightforward Low risk project Long term predictability High change cost. “What software am I working on?”

“What software am I working on?” Iterative approach As you go prerequisites Unclear requirements Complex design Lots of risks Long term is not important Low change cost. Adapt approaches based on your specific project. “What software am I working on?”

Problem-Definition Prerequisite “Mission Statement” Problem definition defines what the problem is without a reference to a solution. If it sounds like a problem it is a good problem definition. “GGC students have a hard time managing all they have to do at the school.” Problem-Definition Prerequisite

Problem-Definition Prerequisite Problem definition lays the foundation of the programming process. State the definition in the users language and not in computer terms. The best solution may not require programming. Exception: When it deals with computers Programming tools are buggy, compile times are slow, ect. Problem-Definition Prerequisite

Requirements Prerequisite Requirements describe in detail what a software system is supposed to do. First step toward a solution. Allows the user to determine system functionality. Minimizes changes mid project. Stable requirements don’t really happen but must be strived for. On average a 25% change in requirements is bound to happen. Requirements Prerequisite

Problem-Definition Prerequisite How to handle requirement changes. Requirement checklist at the end of each section Make the change cost known to everyone Set up a change-control procedure Use development approaches that can accommodate changes. If all else fails: Dump the project. (Or at least think about it) Problem-Definition Prerequisite

Architecture Prerequisite Software architecture is the high-level part of software design. The frame that holds the detailed parts together. A single document that defines constraints that apply system wide. Provides guidance to programmers because it is detailed to the skills of the coders. Architecture Prerequisite

Problem-Definition Prerequisite Architectural Components Program Organization How many subsystems, what are the building blocks Major Classes Data Design Major files and tables Business Rules User Interface Design Input/Output Problem-Definition Prerequisite

Problem-Definition Prerequisite Architectural Components Con’t Resource Management Security Performance Scalability Growth? Interoperability Localization Error Processing Problem-Definition Prerequisite

Problem-Definition Prerequisite Architectural Components Con’t Fault Tolerance Architectural Feasibility Overengineering Buy vs Build Reuse Decisions Change Strategy General Architectural Quality Problem-Definition Prerequisite

How much time to spend on upstream prerequisites 10 to 20% of its effort and 20 to 30% of its time. Allow time to consult the requirements and for revisions. Treat requirements as its own project if necessary. Smaller the project, less time necessary. How much time to spend on upstream prerequisites

Key Points Main goal is risk reduction Educate everyone about the development process. Different projects means different prerequisites. (Iterative vs Sequential) Problem definition Requirements Architectural design Key Points