Week 1 - Introduction
Week 1 - Introduction
Lecture Slides of
Week 1
Software Engineering
2
Course Contents
3
What is Software?
the software.
Documentation: Another very important thing that most of us forget is
documentation. All the documents related to the software are also considered
as part of the software.
4
What is Software?
Programs
Software
System
Documentation
Data Documentation
User
Documentation
5
What is Engineering?
Software Crisis ?
Projects were:
• Late.
• Over budgeted.
• Unreliable.
• Difficult to maintain.
• Performed poorly.
8
• Overloaded problem.
• 46 deaths.
11
Therefore…
A well-disciplined approach to software
development and management is
necessary. This is called engineering.
17
Types of Software
Generic products
• Stand-alone systems that are marketed and sold to any customer who
wishes to buy them.
• Examples – PC software such as graphics programs, project management
tools; CAD software; software for specific markets such as appointments
systems for dentists.
• The specification of what the software should do is owned by the software
developer and decisions on software change are made by the developer.
Customized or bespoke products
• Software that is commissioned by a specific customer to meet their own
needs.
• Examples – embedded control systems, air traffic control software, traffic
monitoring systems.
• The specification of what the software should do is owned by the customer
for the software and they make decisions on software changes that are
required.
27
Software Engineering:
A Problem Solving Activity
Analysis:
Understand the nature of the problem and break the problem into
pieces
Synthesis:
Put the pieces together into a large structure
Techniques:
Formal procedures for producing results using some well-
defined notation
Methodologies:
Collection of techniques applied across software development
and unified by a philosophical approach
Tools:
Instruments or automated systems to accomplish a technique
CASE = Computer Aided Software Engineering
30
l Problem solving
• Creating a solution
• Engineering a system based on the solution
l Modeling
l Knowledge acquisition
l Rationale management
31
Software Engineering
Systems Engineering:
Interdisciplinary engineering field (computer, software, and process eng.).
Focuses on how complex engineering projects should be designed and managed.
System engineers are involved in system specification, architectural design,
integration and deployment.
36
FAQs about software engineering aspects
Question Answer
What are the key challenges facing software Coping with increasing diversity, demands for reduced delivery
engineering? times and developing trustworthy software.
What are the costs of software engineering? Roughly 60% of software costs are development costs, 40% are
testing costs. For custom software, evolution costs often exceed
development costs.
What are the best software engineering While all software projects have to be professionally managed
techniques and methods? and developed, different techniques are appropriate for
different types of system. For example, games should always be
developed using a series of prototypes whereas safety critical
control systems require a complete and analyzable specification
to be developed. You can’t, therefore, say that one method is
better than another.
What differences has the web made to The web has led to the availability of software services and the
software engineering? possibility of developing highly distributed service-based
systems. Web-based systems development has led to important
advances in programming languages and software reuse.
37
38
Component-Based
Waterfall approach Iterative development
Software Engineering CBSE
Cost distribution
Custom software development (Bespoke)
Waterfall Model
Software Model
Cost units 0 25 50 75 100
Cost distribution
Software development activity Specification Design Development Integration and testing
Iterative Development
0 25 50 75 100
Cost distribution
Generic software development
0 25 50 75 100
What is CASE?
Computer Aided Software Engineering
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.
Programs that support:
Requirements analysis.
System modeling.
Debugging.
Testing.
44
Thanks
&
Any Question