Lect 1&2
Lect 1&2
(CS6401)
Autumn Semester (2023-2024)
2
Organization of this Lecture:
Nature of software
Nature of software projects
What is Software Engineering?
Programs vs. Software Products
Software Process
Introduction to Life Cycle Models
Summary
3
Software
4
Characteristics
• Software is developed or engineered; it is not
manufactured in the classical sense.
• Similarity exist between software development and
hardware manufacturing, but two activities are different.
• High quality is achieved through good design, but
hardware manufacturing introduces quality problems that
are easily corrected for software
• Relationship between people applied and work
accomplished is entirely different
• Both activities require the construction of a product, but
approaches are different
• Software costs are concentrated in engineering; software
project management is different from hardware
5
Characteristics
• Software does not wear out.
• Hardware failure rate resembles Bathtub curve
• Relatively high failure rates early in its life
• Often attributable to design or manufacturing defects
• Failure rate drops to steady-state level due to correction
of defects
• Failure rate rises as hardware components suffer from
cumulative effects of dust, vibration, and temperature etc.
• But software is not susceptible to those environmental
maladies.
• Failure curves of hardware and software are given in the next
slide.
6
Failure curve for hardware
7
Failure curve for software
9
Nature of software projects
• Ubiquitous, used in variety of applications – Business, engineering and
scientific applications
• System Software,
• Application Software,
• Scientific Software,
• Embedded Software,
• Web applications etc.
13
Ad hoc software development results in
such problem:
• No planning of development work (e.g., no milestones
are defined)
• Deliverable are not defined
• Technical incompetency of developers
• No control over review (Review the progress of the
system because enough money is spent in it and keep
updated with the recent trends)
• Poor understanding of the user requirements
• Poor understanding of the cost and effort by both
developer and user
14
Engineering: other disciplines
17
Engineering Practice
• Heavy use of past experience:
• Past experience is systematically arranged.
• Theoretical basis and quantitative techniques provided.
• Many are just thumb rules.
• Trade-off between alternatives
• Pragmatic approach to cost-effectiveness
18
Software Crisis
• Software products:
• fail to meet user requirements.
• frequently crash.
• expensive.
• difficult to alter, debug, and enhance.
• often delivered late.
• use resources non-optimally.
19
Software Crisis (cont.)
Hw cost
Sw cost
1960 Year
2017
Relative Cost of Hardware and Software
20
Factors contributing to the software crisis
• Larger problems
• Lack of adequate training in software engineering
techniques
• Increasing skill shortage
• Low productivity improvements
21
Software Crisis (cont.)
22
Programs versus Software Products
23
Computer Systems Engineering
• Computer systems engineering:
• encompasses software engineering.
24
Computer Systems Engineering
• The high-level problem:
• deciding which tasks are to be solved by software
• which ones by hardware.
25
Computer Systems Engineering (Cont..)
26
Computer Systems Engineering (CONT.)
Feasibility
Study
Requirements
Analysis and
Specification Hardware
Development
Hardware
Software
Partitioning
Software
Development Integration
and Testing
Project Management
27
Large projects:
• Deliverables: architecture, model, structure diagram,
electrical cabling layouts
(Exit
(Entry
Criteria)
criteria) Actions to be Review
Inputs carried out (V&V) Outputs
Information
Project for
Control Management
Information
Characteristics of a Good Process
46
Life Cycle Model (CONT.)
47
Life Cycle Model (CONT.)
48
Why Model Life Cycle ?
• A written description:
• forms a common understanding of activities among
the software developers.
49
Why Model Life Cycle ?
50
Life Cycle Model (CONT.)
• The development team must identify a suitable life
cycle model:
51
Life Cycle Model (CONT.)
• When a program is developed by a single programmer
• he has the freedom to decide his exact steps.
52
Life Cycle Model (CONT.)
• A software project will never succeed if:
• one engineer starts writing code,
53
Life Cycle Model (CONT.)
• When a life cycle model is adhered to,
• the project manager can at any time fairly
accurately tell,
• at which stage (e.g., design, code, test, etc. ) of
the project is.
• Otherwise, it becomes very difficult to track the
progress of the project
• the project manager would have to depend on the
guesses of the team members.
54
Life Cycle Model (CONT.)
55
Summary
56
Summary
57
Reference
R. S. Pressman, Software Engineering A Practitioner's Approach,
McGraw Hill Publications , 2006