CSC230 Software Design (Engineering) : Computer Science
CSC230 Software Design (Engineering) : Computer Science
TECH
Computer Science
CH01: What is Software Engineering
Software Engineers build software systems
Building a software system requires
(1) Planning,
(2) Understand what needed to be built,
(3) Designing the system,
(4) Writing the programs,
(5) Testing, and
(6) Maintaining the system.
What is CS 230
Class Syllabus
Software Engineers use knowledge of
Computer Science to Solve problems
Computer Problem
Theories Functions
SOFTWARE
ENGINEERING
Tools and
Techniques to
Solve Problem
Problem Solving: Analysis
PROBLEM
Subproblem 4
Subproblem 1 Subproblem 2
Subproblem 3
Problem Solving: Synthesis
Solution 4
Solution 1 Solution 2
Solution 3
SOLUTION
How successful have we been?
Writing software is an art as well as a science.
Software engineering is about designing high-quality
software.
System Crash!!!
Seeking wrong target!!!
However, we have come a long way!!!
(Cant leave home without a computer.)
What is Good software?
Context helps to determine the answer
Games and Safety-critical systems have different
standard
Evaluate software by evaluating
quality of the product
quality of the process
quality in the context of the business environment
Quality of the product
Correctness
Reliability
Usability
Testability
Maintainability
Quality of the Process
Many (development) activities will affect the ultimate
product quality, e.g.
Talking to customers and users to understand what
they want
Code reviews
When to conduct testing
Quality in Context of the Business
Environment
Return on investment
Express in dollars
Express in effort
schedule
productivity
customer
Who does software engineering?
CUSTOMER Sponsors system
development
$$$, DEVELOPER
needs
USER Contractual
obligation
Uses Builds
system system
Needs
Software system
Understanding software systems:
A Systems Approach
A system is a collection of entities and activities, plus
a description of the relationships that tie the entities
and activities together.
An activity is something that happens in a system.
The elements involved in the activities are called
entities.
Once entities and activities are defined, we match the
entities with their activities.
System Boundary: Input and Output
Mail room
Pay information
Pay checks
Date Printing
validation
Calculation
System boundary
Building software systems:
An Engineering Approach
Software projects progress in a way similar to the
house-building process.
Asking customers what house they want to build
Drawing floor plans (rooms) ((Model house))
Designing interior (e.g. where the light switch should be)
Testing each subsystem (e.g. testing each light switch,
electrical subsystem)
Testing everything work together
Maintaining the house
Software development process
requirements analysis and definition
system design
program design
writing the programs (program implementation)
unit testing
integration testing
system testing
system delivery
maintenance
Members of the development team
SOFTWARE DEVELOPMENT STEPS
REQUIREMENTS ANALYST
ANALYSIS AND DEFINITION
SYSTEM DESIGNER
DESIGN
PROGRAM
PROGRAMMER
DESIGN
DEVELOPER ROLES
PROGRAM
IMPLEMENTATION
UNIT
TESTING TESTER
INTEGRATION
TESTING
SYSTEM
TESTING
SYSTEM
DELIVERY TRAINER
MAINTENANCE
How has software engineering changed? //
CHANGES IN
SOFTWARE Time to market
Desktop computing
ENGINEERING
Shifts in economics
Networking
User interfaces
Fundamental notions in software engineering
Abstraction
Analysis and design methods and notations
User interface prototyping
Software Architecture
Software Process
Reuse
Measurement
Tools and Integrated Environments
Abstraction
Electrical device
is a description of the problem at some level of
generalization that allows us to concentrate on the
key aspects of the problem without getting mired in
the details.
Identifying classes of objects that allow us to group
items together Sensor
Forming hierarchies