2. Outcomes: Knowledge, Skills,
Attitude
Ability to define and describe basic software engineering
concepts such as lifecycle models, metrics, and testing
methods.
Ability to accurately and consistently elicit and
communicate the requirements of a system via a structured
analysis using data flow diagrams.
Ability to design an appropriate set of modules from a
structured analysis, and communicate them in the form of a
structure chart.
Ability to construct the main elements of a project plan.
Ability to use a dictionary-based CASE tool (e.g.
WinA&D) and a project management tool (e.g. MS
Project).
Ability to apply simple metrics and estimation techniques.
3. What is Software
S/W is not just the programs, but also associated
documentation and configuration data (to operate
the program) needed to make the programs
operate correctly.
A S/W system consists of
Number of separate programs
Configuration files used to setup the programs
System documentation – structure of the system
User documentation – how to use the system
4. Programs Vs Software Products
Programs:
Small
Single developer
Single user (author)
Simple user interface
Sparse documentation
No user manual
Ad hoc development
Software Products:
Large
Team of developers
Multiple users (customer)
Complex user interface
Detailed documentation
User manual
Systematic development
5. What is software Engineering?
Software engineering is an engineering discipline,
concerned with all aspects of software production
from early stages of system specification through
maintaining the system.
engineering discipline – make things work by applying
theories, methods and tools where appropriate and also
try to find solutions to problems when there’s no
suitable theories/methods.
all aspects of software production – not just technical,
but project management and development of tools,
methods and theories to support S/W production.
6. Characteristics of Software
Engineering
Software engineering deals with team-based
production of large software systems:
no single person has complete knowledge of all
the details of a software engineering project.
Software engineering borrows from:
computer science & information technology;
electrical & computer engineering;
mathematics & physics;
business & management;
psychology & sociology.
7. Characteristics of Software
Engineering contd.
Modern engineering is based on the
systematic collection of past experience:
methodologies; techniques; guidelines.
It involves tradeoffs between alternatives:
a pragmatic approach to cost-effectiveness;
a rigorous approach to quality and safety!
It uses a variety of quantitative techniques
with a sound theoretical basis:
yet many SE techniques are just rules of thumb!
10. Software Engineering History
1950s: Early Programming
Early 1960s: High Level languages and
Control flow design
Late 1960s: The demise of GOTO and
Structured programming
Early 1970s: Data Structure Design
Late 1970s: Structured Analysis
1980s:Object Oriented Design
12. Modern SE Techniques
In addition to software design, many other SE
techniques have evolved:
analysis & specification techniques;
debugging & testing techniques;
software metrics (used to measure SE);
software project management;
software quality assurance;
Most of the above are examined in this unit.
13. Modern SE Techniques –
The software life cycle
A series of phases through which a software
product passes during its lifetime, such as:
Feasibility Study;
Requirements Analysis & Specification;
Design;
Implementation (coding);
Testing;
Maintenance.
Many different activities may be carried out in
each phase.
14. Life Cycle (process) Models
A program is developed by a single
programmer who is free to make decisions.
A software product is developed by a team of
software engineers:
there must be agreement between team members
about what to do when;
communication is essential – breakdown will
quickly lead to chaos project failure.
A software development team must identify a
suitable life cycle model and stick to it!
15. Life Cycle (process) Models
A software life cycle (process) model:
is a descriptive and diagrammatic model of
the life cycle of a software product;
identifies all the activities and phases
necessary for software development;
establishes a precedence ordering among
the different activities.
Life cycle models encourage systematic
and disciplined software development.
16. Life Cycle (process) Models
Examples of well-known process models:
classical waterfall model;
iterative waterfall model;
prototyping model;
incremental model;
spiral model.
17. References
Essential Reading:
Pressman – Chapter 1.
Dijkstra, E: 1968. “Goto statement
considered harmful.” Communications of
the ACM: vol 11, no 3, pp 147-148.
Background Reading:
Pfleeger – Chapter 1;
Sommerville – Chapter 1.