Part 1
Part 1
Marks distribution
Mid-sem examination 30%
Practical evaluation 30%
End-sem examination 40%
● Can propose and work on your own project idea after discussing with me
● Takeaway from previous courses: Better to perform all the actions before the
Cheating and plagiarism without proper credit to the original source(s) will lead
to strict punishments.
Objectives of Studying CS-208
● Understand and apply Software Engineering concepts
● Building complex software systems when requirements are frequently changing
● Designing high quality software system within time, budget and other constraints.
● Acquire technical knowledge
● Acquire managerial knowledge
● Understand the Software development life-cycle
Source: https://en.wikipedia.org/wiki/Software
Software Vs Hardware
● You can’t see, touch, or feel software
● Software is only engineered, not manufactured
● Software doesn’t wear out
● Software is complex
● Software can behave like an aging factory
change
actual
curve
idealized
curve
Time
Roger S. Pressman, Software Engineering: A
Practitioner's Approach, Fourth Edition 1997
Categories of software
Software products may be developed for a particular customer or may be
developed for a general market.
GENERIC
BESPOKE (custom)
● Developed for a single customer or organization according to their specification.
● Product specification controlled by the product developer
● Examples – embedded control systems, air traffic control software, traffic monitoring
systems.
● Also known as services. Usually not developed from scratch. Often generic software is
tailored. Eg. Fees collection systems.
Horizontal product (like OS, MS word) Vs vertical product (like banking systems)
Categories of software
Open-source software
• Developed and maintained by a team of
volunteers
• May be downloaded and used free of charge
• Examples:
● Linux operating system
● Firefox web browser
● Apache web server
Type of software
1. System software: such as compilers, editors, file management
utilities
2. Application software: stand-alone programs for specific needs.
3. Engineering/scientific software: Characterized by algorithms such
as automotive stress analysis, molecular biology, orbital dynamics
etc
4. Embedded software resides within a product or system. (key pad
control of a microwave oven, digital function of dashboard display in
a car)
5. AI software uses non-numerical algorithm to solve complex
problems like Robotics, expert system, pattern recognition game
playing
And so on…
Importance of software
Why Software is Important?
✓ The economies of ALL nations are dependent on software.
More and more systems are software controlled (
transportation, medical, telecommunications, military,
industrial, entertainment,)
✓ Software costs often dominate computer system costs. The
costs of software on a PC are often greater than the hardware
cost.
Maintenance attributes are required to test how well a software has the capabilities to
maintain itself in the ever-changing environment:
✔ Maintainability
✔ Adaptability
✔ Scalability and so on...
● The relative importance of these characteristics depends on the product and the
environment in which it is to be used.
● In some cases, some attributes may dominate. Like, key attributes may be
dependability and efficiency in safety-critical real-time systems.
● Costs tend to rise exponentially if very high levels of any one attribute are required.
What are the attributes of good software?
● From the Users Perspective
− Functionality
− Reliability
− Efficiency
− Usability
− And so on...
● Within budget,
Result:
● At most 70% of projects completed
Engineering
Technology
Craft
Esoteric Past Systematic Use of Past
Experience Experience and Scientific Basis
Unorganized Use of
Past Experience
Art
Time
“A discipline whose aim is the production of fault-free software, delivered on-time and
within budget, that satisfies the user’s needs. Furthermore, the software must be easy
to modify when the user’s needs change.” [Schach]
“A discipline that deals with the building of software systems which are so large that
they are built by a team or teams of engineers.” [Ghezzi, Jazayeri, Mandrioli]
Change:
The “Entropy” of a software system increases with each change: Each
implemented change erodes the structure of the system which makes
the next change even more expensive (“Second Lehman's laws of
software evolution”).
As time goes on, the cost to implement a change will be too high, and
the system will then be unable to support its intended task. This is true
of all systems, independent of their application domain or technological
base.
Brooks’s Law
Adding personnel to a late project makes it later
Postdelivery maintenance is
extremely Costly
● To correct a fault early
− Usually just a document needs to be changed
● To correct a fault later stages
− Change the code and the documentation
− Test the change itself
− Perform testing
− Reinstall the product on the client’s computer(s)
The Cost of Change
60-
100x
1.5-
6x
1
x
change
actual
curve
idealized
curve
Time
Roger S. Pressman, Software Engineering: A
Practitioner's Approach, Fourth Edition 1997
Engineering Process Model
● Specification: Set out the requirements and constraints on the system.
● Design: Produce a model of the system.
● Manufacture: Build the system.
● Test: Check the system meets the required specifications.
● Install: Deliver the system to the customer and ensure it is operational.
● Maintain: Repair faults in the system as they are discovered.
Any Questions??