The Nature of Software and Software Engineering
The Nature of Software and Software Engineering
The Nature of Software and Software Engineering
Session 01
Acknowledgement
change
actual curve
idealized curve
Time
The Nature of Software
Software Application Domains
• System software
• Application software
• Engineering/scientific software
• Embedded software
• Product-line software
• Web/Mobile Application
• Arftificial intelligence software
The Nature of Software
Legacy Software
Why must software change?
•software must be adapted to meet the needs of
new computing environments or technology.
•software must be enhanced to implement new
business requirements.
•software must be extended to make it
interoperable with other more modern systems
or databases.
•software must be re-architected to make it
viable within a network environment.
The Changing Nature
of Software
1. WebApps
2. Mobile Applications
3. Cloud Computing
4. Product Line Software
The Changing Nature
of Software
WebApps
Cloud Computing
• Cloud computing encompasses an infrastructure or
‘ecosystem’ that enables any user, anywhere, to use
a computing device to share computing resources on
a broad scale
• The computing devices reside outside the cloud and
have access to a variety of resources within the
cloud.
• These resources encompass applications, platforms,
and infrastructure.
• In its simplest form, an external computing device
access the cloud via a Web browser or analogous
software.
The Changing Nature
of Software
Cloud Computing
The Changing Nature
of Software
A Layered Technology
tools
methods
process model
a “quality” focus
Software Engineering
The Software Process
A Process Framework
Process framework
Framework activities
work tasks
work products
milestones & deliverables
QA checkpoints
Umbrella Activities
The Software Process
Framework Activities
• Communication
• Planning
• Modeling
– Analysis of requirements
– Design
• Construction
– Code generation
– Testing
• Deployment
The Software Process
Umbrella Activities
• Software project tracking and control
• Risk management
• Software quality assurance
• Technical reviews
• Measurement
• Software configuration management
• Reusability management
• Work product preparation and
production
The Software Process
Process Adaptation
– overall flow of activities, actions, and tasks and the
interdependencies among them
– degree to which actions and tasks are defined within
each framework activity
– degree to which work products are identified and
required
– manner which quality assurance activities are applied
– manner in which project tracking and control activities
are applied
– overall degree of detail and rigor with which the process
is described
– degree to which the customer and other stakeholders
are involved with the project
– level of autonomy given to the software team
– degree to which team organization and roles are
Software Engineering Practice
• Polya suggests:
1.Understand the problem
(communication and analysis).
2.Plan a solution
(modeling and software design).
3.Carry out the plan
(code generation).
4.Examine the result for accuracy
(testing and quality assurance).
Software Engineering Practice