© 2006-07 Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Requirements.

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

System Integration Verification and Validation
Software Quality Assurance Plan
The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
Software Engineering CSE470: Process 15 Software Engineering Phases Definition: What? Development: How? Maintenance: Managing change Umbrella Activities:
The software process A software process is a set of activities and associated results which lead to the production of a software product. This may involve.
Software Process Models
Design Concepts and Principles
Software Engineering CSE470: Intro Software Engineering CSE470 (Fall 1999) Instructor: Dr. B. Cheng (Sect. 1) TAs: Jack Brown Durga Prasad.
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
Chapter 1 The Systems Development Environment 1.1 Modern Systems Analysis and Design Third Edition.
1 Lecture 5 Introduction to Software Engineering Overview  What is Software Engineering  Software Engineering Issues  Waterfall Model  Waterfall Model.
Software Engineering CSE470: Systems Engineering 35 Computer System Engineering Computer System Engineering is a problem-solving activity. Itemize desired.
Lecture Nine Database Planning, Design, and Administration
System Engineering Instructor: Dr. Jerry Gao. System Engineering Jerry Gao, Ph.D. Jan System Engineering Hierarchy - System Modeling - Information.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
Software Engineering CSE470 (Fall 2001) Instructors: Dr. B. Cheng (Sect. 1-3) Dr. W. McUmber (Sect. 4-6)
Design, Implementation and Maintenance
Database System Development Lifecycle © Pearson Education Limited 1995, 2005.
Overview of the Database Development Process
Systems Analysis – Analyzing Requirements.  Analyzing requirement stage identifies user information needs and new systems requirements  IS dev team.
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
Chapter 2 The process Process, Methods, and Tools
MCS 270 Spring 2014 Object-Oriented Software Development.
Dillon: CSE470: SE, Process1 Software Engineering Phases l Definition: What? l Development: How? l Maintenance: Managing change l Umbrella Activities:
Software Inspection A basic tool for defect removal A basic tool for defect removal Urgent need for QA and removal can be supported by inspection Urgent.
1 Chapter 2 The Process. 2 Process  What is it?  Who does it?  Why is it important?  What are the steps?  What is the work product?  How to ensure.
CSE 303 – Software Design and Architecture
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
ITEC 3220M Using and Designing Database Systems
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
FCS - AAO - DM COMPE/SE/ISE 492 Senior Project 2 System/Software Test Documentation (STD) System/Software Test Documentation (STD)
Software Requirements Engineering CSE 305 Lecture-2.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
Lecture Introduction to Software Development SW Engg. Development Process Instructor :Muhammad Janas khan Thursday, September.
The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
Chapter 4 프로세스 모델 Process Models
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
CSE 303 – Software Design and Architecture
SOFTWARE ENGINEERING. Objectives Have a basic understanding of the origins of Software development, in particular the problems faced in the Software Crisis.
Software Development Life Cycle (SDLC)
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
Modelling the Process and Life Cycle. The Meaning of Process A process: a series of steps involving activities, constrains, and resources that produce.
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Dillon: CSE470: INTRO1 Introduction to Software Engineering Computer Science and Engineering 470.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
 System Requirement Specification and System Planning.
Advanced Software Engineering Dr. Cheng
Chapter 1 The Systems Development Environment
Software Project Configuration Management
Chapter 1 The Systems Development Environment
Lecture 3 Prescriptive Process Models
Managing the Project Lifecycle
Software Engineering CSE470 (Fall 2000)
Software Life Cycle “What happens in the ‘life’ of software”
Chapter 1 The Systems Development Environment
Lecture 9- Design Concepts and Principles
Advanced Software Engineering Dr. Cheng
Software Processes (a)
Chapter 1 The Systems Development Environment
Software Life Cycle Models
Software Project Planning &
Lecture 9- Design Concepts and Principles
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
Chapter 1 The Systems Development Environment
Presentation transcript:

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Requirements Engineering CSE (Fall 2006) Instructor: Dr. B. Cheng

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Acknowledgments Waterloo Software Engineering Team (Atlee, Berry, Day, Svetinovic, Godfrey Steve Easterbrook Tony Torre, Detroit Diesel Corp.

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. What is Software Engineering ??? The study of systematic and effective processes and technologies for supporting software development and maintenance activities Improve quality Reduce costs

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Historical Perspective 1940s: computers invented 1950s: assembly language, Fortran 1960s: COBOL, ALGOL, PL/1, operating systems 1969: First conference on Software Eng 1970s: multi-user systems, databases, structured programming

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Historical Perspective (cont.) 1980s: networking, personal computing, embedded systems, parallel architectures 1990s: information superhighway, distributed systems, OO in widespread use. 2000s: virtual reality, voice recognition, video conferencing, global computing,...

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Hardware Costs vs Software Costs (% of overall costs) s/w costs h/w costs Time

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Why is software so expensive? Hardware has made great advances But, software has made great advances... We do the least understood tasks in software When task is simple & understood, encode it in hardware Demand more and more of software

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Size of programs continues to grow Trivial: 1 month, 1 programmer, 500 LOC, Intro programming assignments Very small: 4 months, 1 programmer, 2000 LOC Course project Small: 2 years, 3 programmers, 50K LOC Nuclear power plant, pace maker Medium: 3 years, 10s of programmers, 100K LOC Optimizing compiler

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Size of programs continues to grow Large: 5 years, 100s of programmers, 1M LOC MS Word, Excel Very large: 10 years, 1000s of programmers, 10M LOC Air traffic control, Telecommunications, space shuttle Unbelievable: ? years, ? programmers, 35M LOC W2K *

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Goals of this Course Gain a better understanding of requirements and requirements engineering Expose you to some of the RE techniques that have been found to be effective Give you hands-on experience with performing requirements engineering

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Overview of Course Emphasis on analysis and design Learn/apply new techniques for engineering requirements Learn to work with a group Improve technical writing skills Become up to date on current trends in RE Explore presentation media and techniques

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. What’s the problem? Software cannot be built fast enough to keep up with H/W advances Rising expectations Feature explosion Increasing need for high reliability software Cell phones Transportation systems (cars, planes, trains) Information systems (medical records, financial/banking)

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. What’s the problem? Software is difficult to maintain “aging software” Difficult to estimate software costs and schedules Too many projects fail Arianne Missile Denver Airport Baggage System Therac-25

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Why is software engineering needed? To predict time, effort, and cost To improve software quality To improve maintainability To meet increasing demands To lower software costs To successfully build large, complex software systems To facilitate group effort in developing software

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Structure of Course Weekly reading assignments Short assignments Written critiques over reading assignments Specification and modeling problems Group projects (prototype, analysis) Two - one hour exams (mid-semester and end) Presentations: oral presentations, prototype demos

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Grading of course Exams (2)=40% Homework and Design Exercises=35% Term project=20% Class participation=5%  Attendance  Participation in class discussion

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Software Engineering A Brief Introduction

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Software Engineering Phases Definition: What? Development: How? Maintenance: Managing change Umbrella Activities: Throughout lifecycle

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Definition Requirements definition and analysis Developer must understand  Application domain  Required functionality  Required performance  User interface

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Definition (cont.) Project planning Allocate resources Estimate costs Define work tasks Define schedule System analysis Allocate system resources to  Hardware  Software  Users

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Development Software design User interface design High-level design  Define modular components  Define major data structures Detailed design  Define algorithms and procedural detail

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Development (cont.) Coding Develop code for each module Unit testing Integration Combine modules System testing

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Maintenance Correction - Fix software defects Adaptation - Accommodate changes New hardware New company policies Enhancement - Add functionality Prevention - make more maintainable

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Umbrella Activities Reviews - assure quality Documentation - improve maintainability Version control - track changes Configuration management - integrity of collection of components

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Software Engineering Costs

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Relative Costs to Fix Errors This is why software process pays off

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Waterfall Process Model Requirements Design Maintenance Coding Testing

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Prototyping Process Model Requirements Quick Design Prototype Evaluate Design

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. 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 a prototype into production

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Spiral Process Model PlanningRisk Analysis Engineering Customer Evaluation

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Process Models Idealized views of the 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 See Evolution of the Frameworks Quagmire, Computer, July 2001, p.96

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Capability Maturity Model Level 1: Initial 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

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. 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 Security requirements Real time requirements Reliability requirements

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. 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

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Summary Software lifecycle consist 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 Maintenance costs much more than development

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Bottom Line U.S. software is a major part of our societal infrastructure Costs upwards of $200 billion/year Need to Improve software quality Reduce software costs/risks

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Systems Engineering

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Computer System Engineering Computer System Engineering is a problem-solving activity. Itemize desired system functions Analyze them Allocate functions to individual system elements Systems Analyst (computer systems engineer) Start with customer-defined goals and constraints Derive a representation of function, performance, interfaces, design constraints, and information structure That can be allocated to each of the generic system elements (i.e., Software, Hardware, People, database, documentation, procedures) Focus on WHAT, NOT how.

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Computer System Engineering Customer goals; constraints Customer goals; constraints Derive representation that can be allocated Derive representation that can be allocated Itemize Functions Itemize Functions Analyze Functions Analyze Functions Allocate functions to system elements Allocate functions to system elements Problem solving *

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Criteria for System Configuration: Technical Technical Analysis: (existence of necessary technology, function and performance assured, maintainability) Environmental Interfaces: (proposed configuration integrate with external environment, interoperability) Off-the-shelf options must be considered. Manufacturing evaluation: (facilities and equipment available, quality assured?)

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Criteria for System Configuration: Business Issues Project Considerations: (cost, schedules, risks) Business Considerations: (marketability, profitability) Legal Considerations: (liability, proprietary issues, infringement?) Human issues: (personnel trained? political problems, customer understanding of problem)

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Hardware and Hardware Engineering testresults Well defined

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. 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."

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. 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 CAE/CAD to develop a prototype (breadboard)  Develop printed circuit (PC) boards  Manufacturing of boards

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. 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

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. 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

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Third Phase of Software Engineering Development Phase: Translate set of requirements into an operational system element  Design Design Specification  Coding (appropriate programming language or CASE tool) Should be able to directly trace detail design descriptions from code. Verification, release, and maintenance phase: Testing software: Testing Plan  to find maximum number of errors before shipping Prepare software for release Quality Assurance Maintain software throughout its lifetime

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Structured Design: Design Issues Modularity Criteria: Decomposability: decompose large problem into easier to solve subproblems Composability: how well modules can be reused to create other systems Understandability: how easily understood without other reference info Continuity: make small changes and have them reflected in corresponding changes in one or a few modules Protection: architectural characteristic to reduce propagation of side effects of a given error in a module.

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Design Issues Basic Design Principle: Linguistic modular units: correspond to syntactic units in implementation language Few interfaces: minimize the number of interfaces between modules Small interfaces (weak coupling): minimize amount of info moving across interfaces Explicit interfaces: when modules do interact, should be in obvious way Information hiding: all info about module is hidden from outside access

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. “Uses” Relation

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Design Heuristics Evaluate "First-cut" program structure Reduce coupling: Improve cohesion Use exploding: common process exists in 2 or more modules Use imploding: if high coupling exists, implode to reduce control transfer, reference to global data, and interface complexity Minimize Structures with high fan-out ; Strive for Fan-in as depth increases Keep scope effect of a module within scope of control of that module effect of module should be in deeper nesting Evaluate module interfaces: Reduce complexity Reduce redundancy Improve consistency

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Design Heuristics (cont’d) Define predictable functions for modules, but not too restrictive: Black box modules are predictable (like hardware) Restricting module processing to single subfunction (high cohesion) Pass only a few (like 3, max) and return one parm from module High maintenance: if randomly restrict local data structure size, options within control flow, or types of external interface "Single-entry-single-exit" modules: Avoid "Pathological Connections" Enter at top, exit at bottom Pathological connection: entry into middle of module Package SW based on design constraints and portability requirements Assemble SW for specific processing environment Program may "overlay" itself in memory reorganize group modules according to degree of repetition, access frequency, and interval of calls Separate out modules only used once.

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Design Postprocessing After Transaction or transform analysis: complete documentation to be included as part of architectural design Processing narrative for each module Interface description for each module Definition of local and global data structures Description of all design restrictions Perform review of preliminary design "optimization" (as required or necessary)

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Design Postprocessing Module Foo ;kskf;ldskfs;dfsdf sdfjs;fjsldfksfd skdjflsdjfsfjsdf j3098wodfjsldfjs sdfjslkdfjsldkfjsldkfjsdf sdjflsdfjslkdfjslkdfj sdjfsldfjsldkfjsldf sjdflksjdfljkwruswdfusdf sdhjsldfhsdfsldfjs \98sf7sd89vhjsdvsdaofusd0f sdhjsdfhskdjfhskdf sdjfslhfkwfhiahjalsfjd sdhfskdfhskdfjsfdk sdhfksdjfhksdjfhskdf shdfksdhfksdjfksdf sdfkjhfjsdhfksdfhskdf Module Foo ;kskf;ldskfs;dfsdf sdfjs;fjsldfksfd skdjflsdjfsfjsdf j3098wodfjsldfjs sdfjslkdfjsldkfjsldkfjsdf sdjflsdfjslkdfjslkdfj sdjfsldfjsldkfjsldf sjdflksjdfljkwruswdfusdf sdhjsldfhsdfsldfjs \98sf7sd89vhjsdvsdaofusd0f sdhjsdfhskdjfhskdf sdjfslhfkwfhiahjalsfjd sdhfskdfhskdfjsfdk sdhfksdjfhksdjfhskdf shdfksdhfksdjfksdf sdfkjhfjsdhfksdfhskdf Narrative Interface description Interface description Data structures description Data structures description Pre-conditions Design restrictions Post-conditions Pre-conditions Design restrictions Post-conditions Perform Review Documentation is critical

© Betty H.C. Cheng. This presentation is available free for non-commercial use with attribution under a creative commons license. Design Optimization Objectives: Smallest number of modules (within effective modularity criteria) Least complex data structure for given purpose Refinement of program structure during early design stages is best Time-critical applications may require further refinements for optimizations in later stages (detailed design and coding)