Professional Documents
Culture Documents
Chapter 1
Introduction
Software engineering
• Software Engineering is not Programming
− Programming is primarily a personal activity
2
Software engineering
Software Engineering
• a software engineer starts with problem definition and
applies tools of the trade to obtain a problem solution.
3
4
Software Engineering
• “Engineering is the analysis, design, construction, verification,
and management of technical (or social) entities”
• Questions that we must answer:
− What is the problem to be solved?
− What characteristics of the entity are used to solve the problem?
− How will the entity (and the solution) be realized?
− How will the entity be constructed?
− How to uncover error made in design and construction of entity?
− Manage change: How to support, when corrections, adaptations,
and enhancements are requested by users of the entity.
6
7
What is Software engineering
• Software engineering
− Creating and maintaining software applications by applying
technologies and practices from computer science, project
management, and other fields.
8
• Real-time software
• Business software
• Embedded software
• Web-based software
9
Aspects of software engr.
1. Processes necessary to turn a concept into a robust
deliverable that can evolve over time
1. Satisfying a customer
1. Managing risk
10
Ties to many fields
− computer science (algorithms, data structures, languages, tools)
− business/management (project mgmt, scheduling)
− economics/marketing (selling, markets, monopolies)
− communication (managing relations with stakeholders:
customers, management, developers, testers, sales)
− law (patents, licenses, copyrights, reverse engineering)
− sociology (modern trends in societies, localization, ethics)
− political science (negotiations; topics at the intersection of
law, economics, and global societal trends; public safety)
− psychology (personalities, styles, usability, what is fun)
− art (GUI design, what is appealing to users)
11
Roles of people in software
− customer / client: wants software built
• often doesn't know what he/she wants
12
What is a software project?
• Projects are a balance of three dimensions, with the goal of
producing a successful deliverable.
SOFTWARE
DELIVERABLE
TIME RESOURCES
13
ORTHOGONAL VIEWS OF THE SOFTWARE
⚫ Two Approaches:
Traditional Approach
Objected-Oriented Approach
⚫TRADITIONAL APPROACH:
⚫ Collection of programs or functions.
15
Object-oriented Approach
⚫ Object Oriented Development is a new way of
thinking about software based on abstractions that
exist in the real world as well as in the program.
⚫ An approach to the solution of problems in which all
on the objects
⚫ A running program can be seen as a collection of
18
BENEFITS OF OBJECT ORIENTATION
⚫ Faster development,
⚫ Re-usability,
⚫ Increased quality
19
Difference between Traditional and Object
Oriented Approach
20
Software Process
• A software process is a set of related activities that leads to the
production of a software product.
• There are many different software processes but all must include
four activities that are fundamental to software engineering:
1. Software specification: The functionality of the software and
constraints on its operation must be defined.
2. Software design and implementation: The software to meet
the specification must be produced.
3. Software validation: The software must be validated to ensure
that it does what the customer wants.
4. Software evolution: The software must evolve to meet
changing customer needs
21
Verification: are we building the product right?
Validation: are we building the right product?
22
software engineering
objectives
1. optimality
2. scalability.
23
Software process xics
• Functionality: the degree of performance of the software
against its intended purpose.
Required functions are:
✓ suitability
✓Accuracy
✓Interoperability
✓Compliance
✓Security
24
• Reliability:
A set of attributes that bears on the capability of software to
maintain its level of performance under the given condition for
a stated period of time.
✓ Recoverability
✓Fault tolerance
✓ Maturity
25
• Efficiency:
It refers to the ability of the software to use system resources
in the most effective and efficient manner.
✓efficiency In time
✓In resource
26
• Usability: to the extent to which the software can be used
with ease.
✓Understandability
✓Learnability
✓Operability
27
• Maintainability:
It refers to the ease with which the modifications can be made in a
software system to extend its functionality, improve its performance,
or correct errors.
✓Testability
✓Stability
✓Changeability
✓Operability
28
• Portability:
A set of attributes that bears on the ability of software to be
transferred from one environment to another, without or
minimum changes.
✓Adaptability
✓Install ability
✓Replace ability
29
Big questions
• What is a software lifecycle model? When and why should we
use such models?
30
The "Software Lifecycle"
• software lifecycle: The entire process of creating a software
product from an initial concept until the last user stops using it.
− often divided into "phases":
• Requirements – what does the customer want
• Design – Describe how a solution that meets the requirements
• Implementation – Convert the design (description) into code
• Testing – Make sure the code meets the requirements
• Maintenance – Fix problems while operating
• other possibilities: Risk Assessment, Prototyping
31
Software is complex
• Measures of complexity:
− lines of code
− number of classes
− number of modules
− module interconnections and dependencies
− time to understand
− # of authors
− … many more
32
Life without software process
• Advantages:
− nothing to learn or plan!
− work on whatever is interesting, ignore
the rest.
• Disadvantages:
− may ignore some important tasks (testing, design)
− not clear when to start or stop doing each task
− scales poorly to multiple people
− hard to review or evaluate one's work
− code may not match user's needs (no requirements!)
− code was not planned for modification, not flexible
33
Software process models
• Drawbacks?
− No way to asses progress, quality, or risks
− Unlikely to accommodate changes without a major design
Examination
− Unclear delivery features (scope), timing, and support
36
Waterfall
• The first published model of the software development process
• derived from more general engineering processes
• Perform each phase in order
37
1. Requirements analysis and definition
40
Waterfall model advantages
• Suitable for projects that are very well understood but complex
− Tackles all planning upfront
− The ideal of no midstream changes equates to an efficient
software development process
41
Drawbacks of waterfall
req. change
requirements
verify
design
verify
implement
test
operations
• drawbacks? retirement
− assumes requirements will be clear and well-understood
• requires a lot of planning up front (not always easy)
− rigid, linear; not adaptable to change in the product
• costly to go back to a previous phase
− nothing to show until almost done
42
Spiral
• steps taken at each loop:
− determine objectives
and constraints
− identify risks
− evaluate options to
resolve risks
− develop and verify
deliverables
• benefits?
− provides early indication of unforeseen problems
− always addresses the biggest risk first
− accommodates changes, growth
− eliminates errors and unattractive choices early
43
Drawbacks of spiral
• drawbacks?
− relies on developers to have risk-assessment expertise
− perhaps over-focuses on risk and "putting out fires"; other
features may go ignored because they are not "risky" enough
− complex; how do you actually follow this?
− works poorly when bound to an inflexible contract
44
comparison
45
Evolutionary prototyping
• Develop a skeleton system and evolve it for delivery
Refine
Design and
Initial concept prototype until Complete and
implement
acceptable release
initial
prototype prototype
46
Evolutionary prototyping
for each build:
requirements arch. design operations
detailed design,
implement,
verify verify test, deliver
retirement
• benefits?
− produces steady signs of progress, builds customer confidence
− useful when requirements are not well known or change rapidly
− customer involvement ("What do you think of this version?")
47
Drawbacks of evolutionary
for each build:
requirements arch. design operations
detailed design,
implement,
verify verify test, deliver
retirement
• drawbacks?
− assumes user's initial spec will be flexible
− Problems with planning
• unclear how much iteration/time will be needed to finish
• feature creep
− fails for separate pieces that must then be integrated
− temporary fixes become permanent constraints
48
Staged delivery
waterfall-like beginnings, then develop in
Requirements short stages
plan, design, execute, test, release
− can ship at any time at the end of any
cycle
Design
50
Staged delivery model disadvantages
• Disadvantages
− Requires tight coordination with documentation, management,
marketing
− Product must be decomposable
− Extra releases cause overhead
51
Embracing or fighting timelines
• Fit-to-schedule
− “We will ship on a certain date and cut until it fits”
− useful when you absolutely need to ship by a certain date
− similar to the staged delivery model
• but less flexible because of the fixed shipping date
− requires careful prioritization of features and risks to address
− not recommended
• Fit-to-features/quality
− “We’ll ship the product when it is ready”
− Trade predictable schedules for quality control
52
Why are there so many models?
• The choice of a model depends on the project circumstances
and requirements.
53
What’s the best model?
• Consider
− The task at hand
− Risk management
− Quality / cost control
− Predictability
− Visibility of progress
− Customer involvement and feedback
54
Other Models
• Rapid application development (RAD) Model
− incremental software development process model
− emphasizes an extremely short development cycle
− achieved by using component-based construction
• Piece together already existing components to create what you need
• The Formal-methods model
− formal mathematical specification of computer software
− specify, develop, and verify systems by a rigorous, mathematical
notation
− SE M.Sc. And PhD researches focus here
• Agile Model: is based on iterative development.
− - break tasks into smaller iterations
− - duration and scope of each iteration is clearly defined in
advance.
55