Title: CS456 Software Engineering Workshop
1CS456Software Engineering Workshop
- Keith Bennett
- Department of Computer Science
- Washington University in St. Louis
21st Class
- Review Class Handout
- Review Class Schedule
- Review Article List
- Review Other Resources
- Web Site
3Class Lectures
- Introduction to Software Engineering
- Software Development Lifecycle
- Methods, Models, and Processes
- Software Requirements
- UML and Objectory Overview
- Software Design Issues
- Software Integration and Testing
- Software Project Management
4Introduction to Software Engineering
- Intro to Software Engineering - What Is It?
- Intro to Software Engineering - Engineering?
- Intro to Software Engineering - Who Is It?
- Intro to Software Engineering - Why Is It
Important? - Intro to Software Engineering - Software Entropy
- Intro to Software Engineering - What are the Key
Factors?
5Intro to Software Engineering - What Is It?
- What is Software Engineering?
- How Does it Relate to Computer Science?
- How Does it Relate to Computer Programming?
- Is There One Definition of Software Engineering?
- Why Does Everyone Seem to Have a Different
Opinion?
6Intro to Software Engineering - Engineering?
- What is Engineering?
- Is Software Engineering Engineering?
7Intro to Software Engineering - Who Is It?
- What is the Role of the Software Engineer?
- What is a Requirements Engineering?
- Who are the Customers?
- Who are the Users?
- Who Pays?
- Others?
8Intro to Software Engineering - Why Is It
Important?
- What is the Software Crisis?
- What Causes Software Failures
9Intro to Software Engineering - Software Entropy
- The 2nd Law of Thermodynamics, in princple,
states that a closed systems disorder cannot be
reduced, it can only increase or possibly remain
unchanged. A measure of this disorder is
entropy. - Software Entropy is the application of this
concept to software, I.e. a systems disorder, or
entropy, always increases. - Fundemental Software Concept
- A program that is used will be modified.
- When a program is modified, its complexity will
increase provided that one does not actively work
against this.
10Intro to Software Engineering - What are the Key
Factors?
- How Does Cost and Schedule Effect Software?
- What is Software Quality?
11Software Development Lifecycle
- Software Development Lifecycle
- S/W Development Lifecycle - Issues driving
software - S/W Development Lifecycle - Types of Software
- S/W Development Lifecycle - System vs.. Software
- S/W Development Lifecycle - Confusion of Terms
- S/W Development Lifecycle - Development
- S/W Development Lifecycle - Development Details
- S/W Development Lifecycle - Development Terms
12Software Development Lifecycle
13S/W Development Lifecycle - Issues driving
software
- Time/Schedule
- Changing technology
- Safety
- Reliability
- Cost
- Platforms
- Methods
14S/W Development Lifecycle - Issues driving
software (cont)
- Silverbullet Concepts
- Moving target syndrom
- Issues with time in development
- Terminology Problems
15S/W Development Lifecycle - Types of Software
- Technical Applications
- Examples
- Tactical Command and Control Systems
- Process Control Systems
- Telecommunication Systems
- Embedded Control Systems
- Control Driven
- Administrative Applications
- Examples
- Order-Entry Systems
- Reservation Systems
- Enterprise or Business Driven
- Many System a Combination of Both
16S/W Development Lifecycle - System vs. Software
- How Does System relate to Software?
- Why use the term Software System?
17S/W Development Lifecycle - Confusion of Terms
- How Does Requirements relate to Design
- Requirements are relative, I.e. a Point of View
- System Requirements vs. Software Requirements
- Depends on type of system
- Software-Driven vs. Embedded
- Activity vs. Phase
- Early methods equated activity to phase
- Later methods (including Objectivity) divorces
activity from phase requirements and design
activities occur in most phases. - Requirements vs. Requirements Analysis vs.
Analysis
18S/W Development Lifecycle - Development
19S/W Development Lifecycle - Development Details
20S/W Development Lifecycle - Development Terms
- Problem Identification and Domain
Analysis/Modeling - Purpose is to understand the customers problem
domain. - Understanding should include both the current
domain (if one exists) and the change that a new
system will make to this domain. - Documentation Requirements Definition Document
(RDD) or SSRS
21S/W Development Lifecycle - Development Terms
- Requirements Analysis
- Purpose Understand Requirements
- May include prototyping or trade-studies to
insure that the end product meets real user
needs. - Requirement specification and analysis often
combined into a single activity/phase.
22S/W Development Lifecycle - Development Terms
(cont)
- System Architectural Design
- Purpose Establish high-level hardware and
software design. - Establish high-level software components
(subsystems, packages, or objects) and their
interfaces. - Investigate critical design issues which may
include prototype and feasibility studies. - Different methods use this phase/activity
differently - some focus on hardware/software
architectures, others focus on environment-indepen
dent software architectures and only introduce
environment details later. - Sometimes called analysis
- (not to be confused with requirements analysis)
23S/W Development Lifecycle - Development Terms
(cont)
- Software Design
- Purpose Establish design details.
- Decompose high-level components into lower-level
components. - Refine interfaces, component behaviors, and
internal component structures - Implementation Unit Testing
- Purpose Implement design components and perform
individual component testing.
24S/W Development Lifecycle - Development Terms
(cont)
- Integration Informal Testing
- Purpose Integrated tested lower-level components
into higher-level components, subsystems, and
system. - Perform informal testing on integrated
components, subsystems, and system. - Formal Testing VV
- Formal or Qualification Testing
- Verification and Validation of Product
25S/W Development Lifecycle - Development Terms
(cont)
- Different Models/Methods Use Terms Differently!
26Methods, Modeling, and Processes
- Intro to System/Software Methods, Modeling, and
Processes - Methods, Modeling, and Processes - General
Modeling Types - Methods, Modeling, and Processes - Methods
- Methods, Modeling, and Processes - Development
Processes - Methods, Modeling, and Processes - Maintenance
Processes - Methods, Modeling, and Processes - A Model View
of Development - Methods, Modeling, and Processes - Documentation
27Intro to System/Software Methods, Modeling, and
Processes
- What is modeling?
- Way of describing something.
- Example Weather model
- What are methods?
- Collection of ordered activites to develop a set
of models - Example Activities involved in developing a
weather model - What is a Process?
- Combination of methods to achive goal
- Example Total collection of steps to provide
weather forecasting - These terms are not exact - different authors use
different definitions - Particularly for Processes vs. Methods
28Methods, Modeling, and Processes - General
Modeling Types
- Functional Modeling
- Structured Analysis
- Data-Oriented Modeling
- ER Diagraming
- Object-Oriented Modeling
- Booch
- OMT/Rumbaugh
- UML
29Methods, Modeling, and Processes - Methods
- Activity vs. Phases
- System vs. Software
- Requirements vs. Design
- Incremental vs. Waterfall
- Traditional Strong Divisions between System and
Software and between requirements and design.
30Methods, Modeling, and Processes - Development
Processes - Traditional Waterfall
- Waterfall
- Modified Waterfall (Waterfall With Feedback)
31Methods, Modeling, and Processes - Development
Processes - ETVX
- ETVX Entry/Task/VV/Exit Model
- More of a Process Construction Approach than a
complete process
32Methods, Modeling, and Processes - Development
Processes - Spiral
33Methods, Modeling, and Processes - Development
Processes - Incremental
- Software First
- Software Growing
- Objectory/Incremental
34Methods, Modeling, and Processes - Maintenance
Processes
- Mini-Development
- Bug-Driven
35Methods, Modeling, and Processes - A Model View
of Development
- S/W Development consisits of a series of
Products Intermediate Product or Models - For Example
- Requirements
- Design
- Code
- Tests
- Products or Models can be captured in
- Formal Documents (ala DoD Specs)
- Informal Models
- Configuration management must be applyied to all
intermediate products
36Methods, Modeling, and Processes - Documentation
- Documentation Captures Models
- Document Types
- Problem Identification
- Requirements Definition Document
- System Requirements Specification
- System Design Document
- Software Requirements Document
- Software Design Documents
- Architectural
- Top-Level
- Detailed
37Software Requirements Overview
- System/Software Requirements Specification
Analysis - Requirements - Types
- Requirements - Specification Methods
- Requirements - Analysis and Verification Issues
- Requirements - Informal Specification Techniques
- Requirements - Other Rqmts Activities/Issues
- Requirements - Requirements vs... Design
- Requirements - Documentation
38System/Software Requirements Specification
Analysis
- Requiments Activities
- Rqmts Elicitation
- Process whereby customers, users, developers
discover, review, articulate, and understand
users needs and the contraints on the software
and development activitiyWho? - Customer,
Marketing, S/W Development Team - Rqmts Specification
- The development of a document that clearly and
precisely records each of the requirements - Rqmts Validation
- Process of analysing the requirements as
specified to ensure that they meet user needs.
Are we building the right system? - Rqmts Verification
- Process of analysing the requirements as
specified meet developer needs. This includes
that they are in compliance with the system
requirements, conforms to document standards of
the rqmts phase, and is an adequate basis for the
architectural (preliminary) design phase. (This
sometimes is called analysis) Will the system be
build right?
39Requirements - Types
- Functional vs. Non-Functional
- External vs. Internal
- User Interface
40Requirements - Specification Methods
- Purpose Interface between S/W Development and
Others - Contractual
- Narrative good structure and user manuals can
be very effective - Semi-formal techniques involving graphical or
structured text - Data flow diagrams, state-charts, object-oriented
analysis, ER charts - Formal methods
- Finite state, set theory, event algebras, logic
41Requirements - Analysis and Verification Issues
- Completeness
- Consistancy
- Testability
- Traceability
42Requirements - Informal Specification Techniques
- ER Diagrams
- Functional or Dataflow Diagrams
- State Diagrams
- Object Diagrams
43Requirements - Other Rqmts Activities/Issues
- Trade-Studies
- Feasibility Studies
- Prototyping
44Requirements - Requirements vs. Design
- Rqmts/Design depends on point of view
- Requirements focus on External Needs
- Design focus on Internal Structures
- Example External view of Automoble vs. Internal
- (note overlap)
- Requirements focus on what not how
- (This is not always possible)
- Should be a process for understanding the problem
- Architectural/System Design vs. Requirements -
- Depends on Point of View
45Requirements - Documentation
- System/Software Requirements Specification (SSRS)
46Objectory and UML
- Introduction to Objectory and UML
- Objectory and UML - This Class
- Objectory and UML - Generic Object-Oriented
Concepts - Objectory and UML - Universal Modeling Language
- Objectory and UML - Modified Objectory Process
- Objectory and UML - Models and Documentation
- Objectory and UML - Models and Documentation -
Requirements Model - Objectory and UML - Models and Documentation -
Analysis Model - Objectory and UML - Models and Documentation -
Risk Model - Objectory and UML - Models and Documentation -
Design Model - Objectory and UML - Models and Documentation -
Implementation Model - Objectory and UML - Models and Documentation -
Test Model - Objectory and UML - Diagram Perspectives
47Introduction to Objectory and UML
- UML or Universal Modeling Language
- Evolved From Rumbaughs OMT, Boochs OO Method,
and Jacobsons OOSE - Objectory - A methods using UML
- Developed by Ivar Jacobson
- Refinement of Method Described in Object-Oriented
Software Engineering
48Objectory and UML - This Class
- We will use UML and a modified version of
Objectory for Class - Focus is on SSRS and SSDD
49Objectory and UML - Generic Object-Oriented
Concepts
- What is an Object?
- Object Classification
- Active vs. Passive
- Physical vs. Conceptual
- Temporary vs. Permanent vs. Persistent
- Private vs. Public
- Shared vs. Non-Shared
50Objectory and UML - Generic Object-Oriented
Concepts
- Object-Oriented Analysis
- Finding the Objects (Or Defining)
- Organizing the Objects
- Describing How the Object Interact
- Defining the Operations of the Objects
- Defining the Objects Internally
51Objectory and UML - Diagram Perspectives
- Conceptual
- Domain Analysis
- Specification
- Software Analysis and Top-Level Design
- Implementation
- Software Detailed Design
- Diagrams as a Visual Code Description
- ?Least Useful Diagrams?
52Objectory and UML - Universal Modeling Language
- Use Case Diagrams
- Class Diagrams
- Interaction Diagrams
- Sequence Diagrams
- Collaboration Diagrams
- Package Diagrams
- State Diagrams
- Activity Diagrams
- Deployment Diagrams
53Objectory and UML - Modified Objectory Process
54Objectory and UML - Models and Documentation
- Requirements Model - System/Software Requirements
Specification (SSRS) - Risk Model (Risk Management Plan)
- Design Model - System/Software Design Document
(SSDD) - Implementation Model - Code and Code
Documentation - Test Model - Test Documenation
55Objectory and UML - Models and Documentation -
Requirements Model
- Problem Identification
- Pre-System Domain Model
- Post-System Domain Model
- Requirements List
- Use Cases
- Documented in the System/Software Requirements
Spec (SSRS)
56Objectory and UML - Models and Documentation -
Analysis Model
- Implementation-Independent System Architecture
(Optional) - Bridge Between Requirements and Design
- Documented in the System/Software Design Document
(SSDD)
57Objectory and UML - Models and Documentation -
Risk Model
- Risk Identification and Risk Management Plan
- Requirement Risks
- Technology Risks
- Skills Risks
- Political Risks
- Documented in the Risk Management Plan
58Objectory and UML - Models and Documentation -
Design Model
- Implementation Dependent System Architecture
- Documented in the System/Software Design Document
(SSDD)
59Objectory and UML - Models and Documentation -
Implementation Model
- Code
- Code Description (aka Version Description)
- Compiler and Tools
60Objectory and UML - Models and Documentation -
Test Model
- Test Plan
- Developed During Elaboration
- Updated During Analysis and Design
- Test Procedures
- Developed/Updated During Analysis and Design
- Test Cases
- Developed/Updated During Analysis and Design
- Test Results
- Generated During Testing
61Software Design Overview
- Software design
- Design - Good Software Engineering Concepts
- Design - Architectures
- Design - Other Views
- Design - Documentation
- Design - Software Design Issues - Real
Time/Safety Critical software - Design - Software Design Issues - Real
Time/Safety Critical software - Design - Software Design Issues - Human Interface
Issues
62Software design
- Purpose
- Approaches
- System or Architectural Design
- Software/Component Design
- Detailed Design
63Design - Good Software Engineering Concepts
- Modularity / Decomposition
- Basic Structure of Program
- Coupling
- Interaction between Two Modules
- Loosely vs. Tightly Coupled
- Information or Data Hiding
- Limiting Access to Internal Data Structure
Details - Stong Data Typing
64Design - Architectures - Functional Abstraction
- Traditional Main Program and Subroutines
- Functional Abstration
- Batch Sequential
- Function/Data Approach Treats Functions and Data
as Separate Elements - Functions Are Active and Have Behavior
- Data is Passive
- System is Typically Broken Down as Functions with
Data Passed Between
65Design - Architectures - Data Abstraction/Object-
Oriented
- Current Best Practice or Design Method of the
Month - Major Problem
- In order to interact with another object, an
object must know it exists - Can be overcome by using event registration
- Why Object-Oriented over Functional? - Tendency
for Change - Object From Application - Low
- Long-Lived Information Structures - Low
- Passive Objects Attributes - Medium
- Sequences of Behavior - Medium
- Interfaces with the Outside World - High
- Functionality - High
66Design - Architectures - Pipes and Filters
67Design - Architectures - Layered Systems
- Example
- Communication Protocals
68Design - Archtectures - Process Control
69Design - Architectures - Repositories or Data
Pools
70Design - Architectures - Distributed Systems
- Most Common is Client Server
71Design - Other Views
- Architectural Design
- Structural View
- OOD vs. Functional
- Object diagrams
- Structured Design
- Dynamic View
- Purpose Identify major tasks/executables,
databases, external interfaces. Often associated
with hardware designs. - System Design Diagrams
- Tasks
- Databases
- Interfaces
- Communication Devices
- Data/Data Repositories View
- ER Diagrams
- S/W Architectures
72Design - Documentation
- System/Software Design Document (SSDD)
73Design - Software Design Issues - Real
Time/Safety Critical software
- Why study real-time/safety critical software
issues? - Issues
- What is event driven?
- What is real-time?
- Safety Considerations
- Security Considerations
- Distribution/Communication Considerations
- State vs. Stateless
- Connection types
74Design - Software Design Issues - Real
Time/Safety Critical software
- Typical real-time control concepts
- Concurency
- Event Driven
- Communications Issues
- Event Lag
- System Design Impacts
- System level assumptions
- individual hardware components
- communication structure
- data allocation
- processing elements
75Design - Software Design Issues - Concurrency
- What is concurrency?
- Issues
- Language Support
- O/S Support
- Testing/Debugging Issues
- Concurrency Hiding within Objects
- Active vs Passive vs Evolving Objects
76Design - Software Design Issues - Human Interface
Issues
- More than GUI
- Key Issues
- Who Drives the System?
- Who Adapts? The System or the User?
- Replacing Existing Process or Introducing New
Process?
77Testing Overview
- Integration, Testing, Verification, and
Validation - IT, VV - Testing Concepts
- IT, VV - Testing Process
- IT, VV - Testing Stages
- IT, VV - Verification and Validation
78Integration, Testing, Verification, and Validation
- Purpose
- Integration
- Information Testing
- Formal Testing
- VV
79IT, VV - Testing Concepts
- Black Box Testing
- White Box Testing
- Regression Testing
80IT, VV - Testing Process
- Test Plan
- Test Cases
- Test Procedures
- Testing
- Test Reporting/Logging
81IT, VV - Testing Stages
- Module Testing
- Object Integration Test
- System Integration
- Informal Testing
- Formal Testing
- Verification Validation
- Problem Reporting Tracking
82IT, VV - Verfication and Validation
- VV - The process of determining whether the
requirements for a system or component are
complete and correct, the product of each
development phase fullfill the requirements or
conditions imposed by the previous phase, and the
final system or complenent complies with
specified requirements. - Verification The process of determining whether
or not the products of a given phase of the s/w
development cycle fulfill the requirements
established for them at the end of the previous
phase - Answers the question Are we building
the system right? - Validation The determination of correctness of
the final program or software produced from a
development project with respect to the users
needs and requirements Answers the question
Are we building the right system?Done at all
stages of development.
83CS456 Seminar Productivity
- What is Software Productivity?
- How is it Measured?
- What Effects Software Productivity?
84CS456 Seminar Quality
- What is Software Quality?
- How is it Measured?
- What Effects Software Quality?
85CS456 Seminar Ethics
- What is Software Engineering Ethics?
- Should there be ethical standards?
- What should constitute ethical standards?
86CS456 Seminar Safety Critical Software
- What is safety-critical software?
- Is it different than other software?
- What is the impact?
- Direct - failures of software
- Indirect - failures of interfaces
- User interface failures