Document

advertisement
CS 325: Software Engineering
January 12, 2016
Introduction
•
•
•
•
•
Defining Software Engineering
SWE vs. CS
Software Life-Cycle
Software Processes
Waterfall Process Model
Defining Software Engineering
Software engineering as a discipline is focused on
the research, education, and application of
engineering processes and methods to significantly
increase software productivity and software quality
while reducing software costs and time to market.
CS 325
January 12, 2016
Introduction
Page 2
CS 325
January 12, 2016
Introduction
Page 3
Requirements
Usability
Maintainability
Modifiability
Safety
Portability
Estimation
Testability
Design Patterns
Scalability
Team Process
Architecture Styles
Computability
Queueing Theory
Algorithms
Formal Specification
Language
Syntax/Semantics
Cryptography
Correctness Proofs
Automatic Programming
Network Analysis
Machine Learning
Compilers
OS Paging/Scheduling
Complexity
Computer scientists are primarily concerned with the
design of algorithms, languages, hardware architecture,
systems software, applications software, and tools.
Computer Science
Software Engineering
SWE vs. CS
Software engineers learn much more
about creating high-quality software in a
systematic, controlled, and efficient manner.
Software Life-Cycle
Software Development Process
System
Requirements
Definition
Definition & Relationships
of Subsystems
Software
Requirements
Analysis
Identification of Software
Capabilities
Software
Design
Structure of Interface &
Algorithms
Coding & Unit
Testing
Modules Developed &
Tested Independently
Integration &
Integration
Testing
Module Collaboration &
Cooperation
Acceptance
Testing
Confirmation That
Requirements Are Met
Maintenance
CS 325
January 12, 2016
Introduction
Page 4
Customer Support After
Delivery
Software Life-Cycle
Software Quality Assurance
Validation
Verification
Have we built the
right software?
Have we built the
software right?
Static Analysis
Prototyping
Proofs of Correctness
Model Checking
Testing
Unit Test
Integration Test
Automated Test
Robustness Analysis
Consistency Checking
CS 325
January 12, 2016
Introduction
Page 5
Regression Test
System Test
Beta Test
Acceptance Test
Usability Test
Modeling Formal Methods
Code Inspection
Goal Analysis
Specification Inspection
Software Life-Cycle
Software Project Management
CS 325
January 12, 2016
Introduction
Page 6
Software Processes
A software process is a division of software
development work into distinct phases
containing activities with the intent of
better planning and management.
Evolutionary
Waterfall
Prototyping
CS 325
January 12, 2016
Introduction
Page 7
Unified
Spiral
Agile
Waterfall Process Model
System
Requirements
Definition
Software
Requirements
Analysis
Software
Design
Waterfall Pros
Waterfall Cons
Accommodates updates to large
systems that rarely need major
changes
Project cancellation is rarely mitigated
by early achievements in design and
analysis, only by late achievements in
late code and testing
Permits pipelining of tasks
(requirements analysis, design, coding,
testing)
Early feedback from users is difficult to
obtain since early iterations are not
available to be examined
Makes planning, scheduling, and
tracking progress simple
Strict development stages and
milestones make revisiting earlier
stages difficult
Coding & Unit
Testing
Integration &
Integration
Testing
Acceptance
Testing
Maintenance
CS 325
January 12, 2016
Introduction
Page 8
The sequential approach of the waterfall
model is rather old-fashioned but still
effective in some circumstances.
Download