1. Software Concepts
FIT
HCMUNS
HCM
9/18/2006 1
Introduction to Software
Engineering
Attributes of Software-Intensive
Systems
Software Engineering Definitions
Software Engineering as a Process
Software Engineering Challenges
Professional Responsibilities of Software
Engineers
9/18/2006 2
1
2. Software-Intensive Systems
Large Numbers (100s, 1000s, millions) of:
Users
Developers
Lines of code
Pages of User Documentation and help screens
Pages of Requirements and Design Documentation
Customers: Governments, Businesses,
Individuals, ….
9/18/2006 3
Software-Intensive Systems
Implementation involves distributed objects,
database systems, web servers. Portable
across multiple platforms.
Requirements and specifications obtained
through extensive interviews, prototypes, and
participant research.
Detailed test plan with automated testing.
Project requires 1-2 years.
System will evolve for 20 years after initial
installation.
9/18/2006 4
2
3. FAQs about software engineering
What are the costs of software
engineering?
What is CASE (Computer-Aided
Software Engineering)
What are the attributes of good
software?
What are the key challenges facing
software engineering?
9/18/2006 5
What is software ?
9/18/2006 6
3
4. What is software?
Computer programs and associated
documentation, installation and un-
installation scripts, etc.
Software products may be
Generic - developed to be sold to a
range of different customers
Custom - developed for a single
customer according to their specification
9/18/2006 7
What is software
engineering?
9/18/2006 8
4
5. What is software engineering?
A set of methods for the cost-efficient
development and evolution of software systems.
Issues, techniques, and lessons learned from
previous software projects.
Methods for acquiring and debugging
requirements.
Methods for refining and debugging specifications.
Representations and languages for
communicating with other software engineers.
Methods for project management (costing and
scheduling).
9/18/2006 9
What is the difference between
software engineering and computer
science?
9/18/2006 10
5
6. What is the difference between software
engineering and computer science?
Software engineering requires skills and
knowledge from computer science, but also from
management, speech communications, and
writing.
Computer science is concerned with the
development of theory and technology.
Software engineers apply this technology, but
sometimes they stumble upon new problems that
have not yet been formally studied by computer
scientists.
Real-world software projects are an important
source of new problems for computer science.
9/18/2006 11
What is the difference between
software engineering and system
engineering?
9/18/2006 12
6
7. What is the difference between software
engineering and system engineering?
System engineering is concerned with all
aspects of computer-based systems
development including hardware,
software, and process engineering.
Software engineering is part of this
process
System engineers are involved in system
specification, architectural design,
integration and deployment
9/18/2006 13
What is a software process?
9/18/2006 14
7
8. What is a software process?
A set of activities whose goal is the development or
evolution of software
Generic activities in all software processes are:
Specification - what the system should do and its
development constraints
Development - production of the software system
Validation - checking that the software is what the
customer wants
Evolution - changing the software in response to
changing demands
9/18/2006 15
What is a software process
model?
9/18/2006 16
8
9. What is a software process
model?
A simplified representation of a software process,
presented from a specific perspective
Examples of process perspectives are
Workflow perspective - sequence of activities
Data-flow perspective - information flow
Role/action perspective - who does what
Generic process models
Waterfall
Evolutionary development
Formal transformation
Integration from reusable components
9/18/2006 17
What are the costs?
Specification
Design
Development
Time Integration/Testing
Evolution
0% 20% 40% 60% 80% 100%
9/18/2006 18
9
10. Development Costs
Time
0% 20% 40% 60% 80% 100%
Specification
Design
Development
Integration/Testing
9/18/2006 19
Lessons
Most important goal: Reduce testing
and evolution costs
Get the requirements right!
Coding is a small part of the software
development cost.
9/18/2006 20
10
11. Computer-Aided Software
Engineering?
9/18/2006 21
Computer-Aided Software
Engineering?
Software systems which are intended to
provide automated support for software
process activities. CASE systems are often
used for method support
Upper-CASE
Tools to support the early process activities of
requirements and design
Lower-CASE
Tools to support later activities such as
programming, debugging and testing
9/18/2006 22
11
12. Attributes of good software?
9/18/2006 23
Attributes of good software?
Deliver the required functionality and
performance to the user.
Maintainability (d b o trì, nâng c p)
Software must evolve to meet changing needs
Dependability ( áng tin c y)
Software must be trustworthy
Efficiency (hi u qu )
Software should not make wasteful use of
system resources
Usability (ti n d ng)
Software must be usable by the users for which
it was designed
9/18/2006 24
12
13. What are the key challenges
facing software engineering?
9/18/2006 25
What are the key challenges facing
software engineering?
Coping with legacy systems, coping with increasing
diversity, and coping with demands for reduced
delivery times
Legacy systems
Old, valuable systems must be maintained and
updated
Heterogeneity (tính h n t p)
Systems are distributed and include a mix of
hardware and software
Delivery
There is increasing pressure for faster delivery of
software
9/18/2006 26
13