Software Engineering
Sheng Bin
Shanghai Jiao Tong University
Software Engineering
Course Information Teacher:
Bin Sheng( 盛斌 )
SEIEE3-511, 15026790946, shengbin@cs.sjtu.edu.cn
Teaching Assistant:
Li XIA( 夏立 ) ziggzagg@sjtu.edu.cn
Project Mentors:
樊增智 谯从彬 夏立 杜皓 殷本俊 裴树炜 Course Website:
http://www.cs.sjtu.edu.cn/~shengbin/course/SE/sesite/home.html
Software Engineering
Course Overview
Part A: Software Engineering Concepts
2. Software Life-Cycle Models 3. The Software Process
4. Teams
5. The Tools of the Trade 6. Testing
7. From Modules to Objects 8. Reusability and Portability 9. Planning and Estimating
Software Engineering
Course Overview
Part B: The Workflows of the Software Life Cycle
10. Key Material from Part A 11. Requirements
12. Classical Analysis
13. Object-Oriented Analysis 14. Design
15. Implementation
16. Postdelivery Maintenance 17. More on UML
18. Emerging Technologies
Software Engineering
Team Projects Form teams of 3 (± 1?) students DEADLINE: Sept 28, 2014
After that, teams assigned randomly Project Ideas:
Pls refer to the project presentation ppt.
No more than two (2) groups working on the same pr oject
One (1) new project allowed
• Email your project idea ASAP, before proposal is due, fo r feedback.
5
Software Engineering
Project Deliverables
6
Item Due date
Software Engineeri
ng
1. Proposal Sept 28
2. First report (Specification only)
• Part 1 (Statement of Work & Requirements) • Part 2 (Functional Requirements Spec & UI) • Full Report #1
Oct 31 Oct 31 Oct 31 3. Second report (Design only)
• Part 1 (Interaction Diagrams)
• Part 2 (Class Diagram and System Architecture) • Full Report #2
Dec 1 Dec 8 Dec 15
4. First demo Dec 2 ..
SE Practice
5. Third report (All reports collated) Dec 27
6. final demo Dec 31 ...
7. Electronic Project Archive Dec 3
Assignment + Attendance= 30%
Project=70%
Each group will have a mentor to guide the development of the project.
Software Engineering
Reference book:
1. Stephen R Schach, Object Oriented And Classical Software Engineering 8th Edition, McGraw-Hill.
2. Bruegge & Dutoit: Object-Oriented Software Engineering, Using UML, Patterns and Java, Third Edition, Prentice Hall, 2010.
3. Sommerville, Ian: Software Engineering,9th Edition, Addison Wesley.
4. Miles & Hamilton: Learning UML 2.0, O’Reilly Media, 2006. ISBN: 0- 596-00982-8
Software Engineering
Why should we learn SE ? Why should we learn SE?
• Because you are from Computer Science
• SE is the best jobs
• best job of 2011, Career Cast
Best Jobs in America 1. Software engineer 2. College professor 3. Financial advisor
4. Human resources manager 5. Physician assistant
6. Market research analyst 7. Computer/IT analyst 8. Real estate appraiser 9. Pharmacist
10. Psychologist
Money Magazine recently published
"Best Jobs in America"
Software Engineering
Source: US Department of Labor/Bureau of Labor Statistics (Occupational Employment Surveys)
According to the BLS, software engineering unemployment was 4.6% in 2010, compared to 5.4% for electrical engineers.
Average Annual Wages
Software Engineering
Software
Q : If you have to write a 10,000 line program in C to solve a problem, how long will it take?
Answers: generally range from 2-4 months Let us analyze the productivity
• Productivity = output/input resources
• In SW output is considered as LOC
• Input resources is effort - person months; overhea d cost modeled in rate for person month
• Though not perfect, some productivity measure is needed, as project has to keep it high
Software Engineering
Software …
The productivity is 2.5-5 KLOC/PM
Q: What is the productivity in a typical commercial SW organization ?
A: Between 100 to 2000 LOC/PM
Q: Why is it low, when your productivity is so high?
(people like you work in the industry)
A: What the student is building and what the indust ry builds are two different things
Software Engineering
Software…
Students build: student software
Industry builds: industrial strength Systems What is the difference between
• student software and
• industrial strength software
for the same problem?
Software Engineering
Software…
Student
Developer is the use r
• Works for the typical case most of the tim e
• Bugs are tolerable
• UI not important
• No documentation
Industrial Strength Others are the users
• Works robustly
• Bugs not tolerated
• UI very important iss ue
• Documents needed f or the user as well as for the organization a nd the project
Software Engineering
Software…
Student
SW not in critical use Reliability, robustness not important
No investment
Don’t care about port ability
Industrial Strength Supports important fu nctions / business
Reliability , robustnes s are very important Heavy investment
Portability is a key iss ue here
Software Engineering
Industrial Strength Software
Student programs != industrial strength softwa re
Key difference is in quality (including usability, reliability, portability, etc.)
• High quality requires heavy testing, which consum es 30-50% of total development effort
• Requires development be broken in stages such t hat bugs can be detected in each
• Good UI, backup, fault-tolerance, following of stds etc all increase the size for the same functionality
Software Engineering
Industrial strength software
If 1/5th productivity, and increase in size by a fac tor of 2, industrial strength software will take 10 times effort
Brooks thumb-rule: Industrial strength SW cos ts 10 time more than student SW
In this course, software == industrial strength so ftware
Software Engineering
What is software?
Computer programs and associated docu mentation
Software products may be developed for a p articular customer or may be developed for a general market
Software products may be
• Generic - developed to be sold to a range of differ ent customers
• Bespoke (custom) - developed for a single custo mer according to their specification
Software Engineering
Software is Expensive
Rough cost estimate… Productivity = 500 LOC/PM
Cost to the company = $10K/PM
Cost per LOC = $20
So each line of delivered code costs about $20.
A simple application for a business may have 2 0KLOC to 50KLOC Cost = $100K to $1Million
Can easily run on $10K-$20K hardware
So HW costs <<< SW costs.
Software Engineering
Software is Expensive…
The HW/SW ratio for a computer system has shown a reversal from the early years.
• In 50s , HW:SW :: 80:20
• In 80s , HW:SW :: 20:80
So, SW is very expensive
• Importance of optimizing HW is not much
• More important to optimize SW
Software Engineering
Software is Complex
Complex complicated
Complex = composed of many simple parts related to one another
Complicated = not well understood, or explained
Software Engineering
Complexity Example:
Scheduling Fence Construction Tasks
Setting posts [ 3 time units ]
Cutting wood [ 2 time units ]
Painting
[ 5 time units for uncut wood;
4 time units otherwise ] Nailing
[ 2 time units for unpainted;
3 time units otherwise ]
Setting posts Nailing, Painting Cutting Nailing
…shortest possible completion time = ?
[ “simple” problem, but hard to solve without a pen and paper ]
Software Engineering
More Complexity
Suppose today is Monday, Sept 9, 2013 What day will be on January 3, 2014?
[ To answer, we need to bring the day names and the day numbers into coordination, and for that we may need again a pen and paper ]
Software Engineering
Late & Unreliable
20-25% of SW projects never complete
• Because after some time they realize that the fina l cost will be much higher
Many companies report “runaways”
• Budget & cost out of control
• Consulting companies to help control them
One defense survey found that 70% of the eq uipment problems are due to SW
Software Engineering
Why is SW Unreliable?
SW failures are different from failures of mecha nical or electrical systems
• In software, failures are not due to aging related pro blems
• Failures occur due to bugs or errors that get introduc ed during development
• The bug that causes a failure typically exists from st art, only manifests later
Software Engineering
Maintenance
Once SW delivered, it enters maintenance phas e
Why is maintenance needed for SW when it do es not wear with age?
• Residual errors requiring corrective maintenance
• Upgrades and environment changes – adaptive mai ntenance
Over SW lifetime, maintenance can cost more t han the development cost of SW
Software Engineering
What is Software Engineering?
Problem domain discussed before, now we discu ss the area of SE
SE (IEEE): systematic approach to developm ent [….] of software
Systematic approach: methodologies and practic es that can be used to solve a problem from prob lem domain
2 6
Software Engineering
What is SE?
The SWEBOK Knowledge Areas (KAs) Software requirements
Software design Software construction
Software testing Software maintenance
Software configuration management Software engineering management
Software engineering process
Software engineering tools and methods Software quality
http://www.computer.org/portal/web/swebo k/html/ch1
Software Engineering
Basic Problem
CS3130 SOFTWARE ENGINEERING – Summer 2011
2 8
Software Engineering
The Role of Software Engg. (1)
Customer Customer
Software Engineering
Programmer A bridge from customer needs to programming implementation
First law of software engineering
Software engineer is willing to learn the problem domain
(problem cannot be solved without understanding it first)
29
Software Engineering
The Role of Software Engg. (2)
30 Customer:
Requires a computer system to achieve some business goals by user interaction or interaction with the environment
in a specified manner
System-to-be
Software-to-be System-to-be
Software-to-be User
Software Engineer’s task:
To understand how the system-to-be needs to interact with the user or the environment so that customer’s requirement is met and design the software-to-be
Programmer’s task:
To implement the software-to-be designed by the software engineer
Environment
May be the same person
Software Engineering
Second Law of Software Engineering
Software should be written for people first
• ( Computers run software, but hardware quickly becomes outd ated )
• Useful + good software lives log
• To nurture software, people must be able to understand it
31
Software Engineering
Software Engineering Blueprints
Specifying software problems and solutions is li ke cartoon strip writing
Unfortunately, most of us are not artists, so we will use something less exciting:UML symbols
However …32
Software Engineering
What is software engineering?
Software engineering is an engineering discipline which is concerned with all aspects of software pr oduction
Software engineers should
• adopt a systematic and organised approach to their w ork
• use appropriate tools and techniques depending on
• the problem to be solved,
• the development constraints and
• the resources available
Software Engineering
What is the difference between softwar e engineering and computer science?
Computer Science Software Engineering
is concerned with
Computer science theories are currently insufficient to act as a complete
underpinning for software engineering
theory
fundamentals
the practicalities of developing
delivering useful software
Software Engineering Computer Scientist
• Proves theorems about algorithms, designs languages, defines knowl edge representation schemes
• Has infinite time…
Engineer
• Develops a solution for an application-specific problem for a client
• Uses computers & languages, tools, techniques and methods
• Has finite (usually not enough) time…
Software Engineer
• Works in multiple application domains
• Has only 3 months...
• …while changes occurs in requirements and available technology
Software Engineering
What is the difference between softwar e engineering and system engineerin
g?
System engineering is concerned with all aspects of c omputer-based systems development including hardwar e, software and process engineering
Software engineering is part of this process
System engineers are involved in
system specification, architectural design, integ ration and deployment
Software Engineering
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 develop ment constraints
• Development - production of the software system
• Validation - checking that the software is what the custom er wants
• Evolution - changing the software in response to changing demands
Software Engineering
What are the costs of software engineering?
Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evoluti on costs often exceed development costs
Costs vary depending on the type of system bein g developed and the requirements of system attrib utes such as performance and system reliability
Distribution of costs depends on the developme nt model that is used
Software Engineering
What are the attributes of good software?
Maintainability
• Software must evolve to meet changing needs
Dependability
• Software must be trustworthy
Efficiency
• Software should not make wasteful use of system resources
Usability
• Software must be usable by the users for which it was design ed
The software should deliver the required functionality and performance to the user and should be maintainable,
dependable and usable
Software Engineering
What are the key challenges
facing software engineering?
Software engineering in the 21st century faces three k ey challenges:
Legacy systems
• Old, valuable systems must be maintained and updated
Heterogeneity
• Systems are distributed and include a mix of har dware and software
Delivery
• There is increasing pressure for faster delivery of software
Software Engineering
Professional and ethical responsibility
Software engineering involves wider responsibilitie s than simply the application of technical skills
Software engineers must behave in an honest and e thically responsible way if they are to be respected as professionals
Ethical behaviour is more than simply uphold ing the law
Thanks
shengbin@cs.sjtu.edu.cn