Professional Documents
Culture Documents
Lecture 3
Lecture 3
LECTURE 3
Ghulam Farooque
Lecturer
Department: CS & IT
The University of Lahore
Email: ghulam.farooque@cs.uol.edu.pk
Software Engineering
Software Engineering is the set of processes and tools to develop
software. Software Engineering is the combination of all the tools,
techniques, and processes that used in software production. Therefore
Software Engineering encompasses all those things that are used in
software development like:
• Programming Language
• Programming Language Design
• Software Design Techniques
• Tools
• Testing
• Maintenance
• Development etc.
Well-Engineering Software
• Competence
Engineers should not misrepresent their level of competence.
They should not knowingly accept work which is out with their
competence.
Issues of professional responsibility
Intellectual property rights
Engineers should be aware of local laws governing the use of
intellectual property such as patents, copyright, etc. They should be
careful to ensure that the intellectual property of employers and
clients is protected.
Computer misuse
Software engineers should not use their technical skills to misuse
other people’s computers. Computer misuse ranges from relatively
trivial (game playing on an employer’s machine, say) to extremely
serious (spread of viruses).
ACM/IEEE Code of Ethics
• The professional societies in the US have cooperated to produce a
code of ethical practice.
3. PRODUCT
Software engineers shall ensure that their products and related
modifications meet the highest professional standards possible.
Code of ethics - principles
4. JUDGMENT
Software engineers shall maintain integrity and independence in
their professional judgment.
5. MANAGEMENT
Software engineering managers and leaders shall subscribe to
and promote an ethical approach to the management of software
development and maintenance.
6. PROFESSION
Software engineers shall advance the integrity and reputation of
the profession consistent with the public interest.
Code of ethics - principles
7. COLLEAGUES
Software engineers shall be fair to and supportive of their colleagues.
8. SELF
Software engineers shall participate in lifelong learning regarding the
practice of their profession and shall promote an ethical approach to
the practice of the profession.
Software Development
Construction
Some of the major construction activities are listed below.
• Requirement Gathering
• Design Development
• Coding
• Testing
Management
Some of the major management activities are listed below.
• Project Planning and Management
• Configuration Management
• Software Quality Assurance
• Installation and Training
Software Development Loop
• The software developed through this process has the property that this could be evolved
and integrated easily with the existing systems.
Software Development Loop
Problem Definition: In this stage, Determine what is the problem against which we
are going to develop software. Here we try to completely comprehend the issues
and requirements of the software system to build.
Technical Development: This is the stage where a new system is actually developed
that solves the problem defined in the first stage.
Solution Integration: All existing system(s) integrate with our new system at this
stage.
Status Quo: After going through the previous three stages successfully, when we
actually deployed the new system at the user site then that situation is called status
quo. But once we get new requirements then we need to change the status quo.
After getting new requirements we perform all the steps in the software
development loop again.
Ad hoc Software Development
Ali’s request was to develop a system to electronically manage patient records and
perform administrative functions similar to ‘what is being used in other clinics’ but within
a budget of 500 Saudi riyals and delivered within 3 months.
SaudiTech adopts an ad hoc approach (Developing software without planning for each
phase, and without specifying tasks, deliverables, or time constraints) to software
development and has not worked on large scale projects before.
What problems do you anticipate in this project?
How can we overcome problems with ad hoc software
development?
Problems:
Difficult to distinguish between tasks important tasks may be ignored.
Inconsistent schedules, budgets, functionality and product quality.
Delayed problem discovery more costly to fix.
In practice, most practical processes include elements of both plan-driven and agile.
• Because of the cascade from one phase to another, this model is known as
‘Waterfall Model’.
• Each phase must be completed before the next phase can begin and there is
no overlapping in the phases.
Waterfall Model
The sequential phases in Waterfall model are:
System Design: The requirement specifications from first phase are studied in this phase
and system design is prepared. System Design helps in specifying hardware and system
requirements and also helps in defining overall system architecture.
Waterfall Model
Implementation and unit testing: With inputs from system design, the
system is first developed in small programs called units, which are
integrated in the next phase. Each unit is developed and tested for its
functionality which is referred to as Unit Testing.
• Technology is understood
Waterfall Model
Advantages:
• Documentation - at each phase
• Phases are processed and completed one at a time.
• Easy to arrange tasks.
Problems:
• Inflexible
partitioning of the project into distinct stages makes it difficult to respond to
changing customer requirements.
• Provides no Guidance how to handle changes (Frozen Requirements)
• Views software development as manufacturing process rather than creative process
• Long wait before the final product