week 01-intro se
DESCRIPTION
TRANSCRIPT
1
9/18/2006 1
Software Concepts
FIT
HCMUNS
HCM
9/18/2006 2
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
2
9/18/2006 3
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 4
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.
3
9/18/2006 5
� 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?
FAQs about software engineering
9/18/2006 6
What is software ?
4
9/18/2006 7
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 8
What is software engineering?
5
9/18/2006 9
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 10
What is the difference between software engineering and computer science?
6
9/18/2006 11
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 12
What is the difference between software engineering and system engineering?
7
9/18/2006 13
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 14
What is a software process?
8
9/18/2006 15
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 16
What is a software process model?
9
9/18/2006 17
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 18
What are the costs?
0% 20% 40% 60% 80% 100%
Time
Specification
Design
Development
Integration/Testing
Evolution
10
9/18/2006 19
Development Costs
0% 20% 40% 60% 80% 100%
Time
Specification
Design
Development
Integration/Testing
9/18/2006 20
Lessons
� Most important goal: Reduce testing and evolution costs
� Get the requirements right!
� Coding is a small part of the software development cost.
11
9/18/2006 21
Computer-Aided Software Engineering?
9/18/2006 22
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
12
9/18/2006 23
Attributes of good software?
9/18/2006 24
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
13
9/18/2006 25
What are the key challenges facing software engineering?
9/18/2006 26
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