0% found this document useful (0 votes)
34 views44 pages

CS 7202-1

Uploaded by

Asghar Abbas
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
34 views44 pages

CS 7202-1

Uploaded by

Asghar Abbas
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 44

CS 7202: Advanced Software

Engineering

Dr. Syed Noman Hasany


Review of known methodologies
Part 1
The mother of Qualities: Simplicity
• We all have an intuitive notion of simplicity
• We recognize simplicity
• In clear and easy to understand speaking and writing
• In uncluttered (neat and organized) forms
• In a good teacher’s explanation
• In a leader’s setting of goals and strategies
Simplicity, simply!

As we quickly grasp simple statements and forms, we can


easily use them as building blocks for our thoughts and
activities in work and play.
But, The World is Complex!!!
• The world around us is complex and the human activities increase the
complexity.
• Some of the complexity is inherent and we can do nothing about it.
• Some complexity can be reduced without penalizing usefulness but
with a net gain in elegance and quick understanding.
Achieving Simplicity is NOT simple
• Achieving simplicity sometimes requires extra work.
• Work very hard to keep everything as simple as you
can.
• Documentation written from the point of view of
the writer is not nearly so useful as document
written from the point of view of the reader.
Achieving Simplicity is NOT simple!
• “I had happily spend two hours pondering how to make
a simple sentence clearer”
E. Dijkstra (the inventor of many software Engineering principles)

• Someone once remarked to Fred Brooks how timeless


his classic book The Mythical Man Month had remained
over time. He smiled and replied, “That’s becoz it’s a
book about people, and not computers.”
• Software engineering is also, in large part, about
rendering artifacts readable and usable by people as well
as (if not more so than) by machines.
Remember!
• Assignment solutions should be simple.
• Do not copy and paste from internet, based on term search
results.
What is software?
• Computer programs and associated documentation
What is software?
 Software is the means by which we delegate human
thought to an agent of very limited intelligence, the
computing machine.
 It is the task of the programmer to bridge up the gap
between the simplicity of the machine and the complexity
of human mind.
Simplicity in Software
• Many of these intuitive ideas can be applied to programming as well.
• Simpler programs are easier to use, review, document and modify
with the result of significantly reduced cost in all phases of the
process
Software Products Categories
• Software products may be
• Generic - developed to be sold to a range of different customers
• Examples of this type of product include software for PCs such as databases, word processors,
drawing packages, and project management tools. It also includes so-called vertical applications
designed for some specific purpose such as library information systems, accounting systems, or
systems for maintaining dental records.
• Bespoke (custom) - developed for a single customer according to their
specification
• Examples of this type of software include control systems for electronic devices, systems written to
support a particular business process, and air traffic control systems.
Vertical application
• The distinction between these system product types is becoming increasingly blurred. More and
more systems are now being built with a generic product as a base, which is then adapted to suit
the requirements of a customer.
• Enterprise Resource Planning (ERP) systems, such as the SAP system, are the best examples
of this approach. SAP is adapted for a company by incorporating information about their
business rules and processes, reports required, and so on.
• A vertical application is any software application that supports a specific business
process and targets a smaller number of users with specific skill sets and job
responsibilities within an organization.
Software Engineering (In general)

Software engineering is an engineering disciplinea which is


concerned with all aspects of software productionb
a. Engineering Discipline
• Engineer make things work.
• Apply theories, methods and tools where appropriate
• Discover solutions to problems even in the absence of applicable
theories and methods
• Work and look for solutions within organizational and financial
constraints
b. All aspects of software production
• Not only technical processes of software development, but also
• Software project management
• Development of tools, methods and theories to support software
production
Software Engineering Definitions
• Classic Definition (1969)
• “The establishment and use of sound engineering principles in
order to obtain economically software that is reliable and works
efficiently on real machines”
• IEEE Definition (1993)
• “Software engineering (1) The application of a systematic,
disciplines, quantifiable approach to the development, operation
and maintenance of software; that is the application of
engineering to software. (2) The study of
approaches as in (1).”
Software Engineering Definitions…
• Systematic: done or acting according to a fixed plan or system; methodical.
• Discipline: when one uses reason to determine the best course of action.
• the ability to act in accordance with the standards and best practices in the
field of software engineering
S/W Engineering : A young Discipline!
• The notion of ‘software engineering’ was first proposed
in 1968 at a conference held to discuss what was then
called the ‘software crisis’.
• The software crisis at that time was a result of the
introduction of (at that time) powerful, third-generation
hardware.
• The power made hitherto (until that time) unrealizable
applications a reasonable proposition.
Software Engineers
• Software engineers should adopt a systematic and organised
approach to their work and use appropriate tools and techniques
depending on the problem to be solved, the development constraints
and the resources available.
Software Engineering and Economics
• The economies of ALL developed nations are
dependent on software
• More and more systems are software controlled
• Software engineering expenditure represents a
significant fraction of GNP in all developed countries
GNP
• Gross National Product (GNP) is the total value of final goods and
services produced in a year by domestically owned factors of
production.
• Final goods are goods that are ultimately consumed rather than used
in the production of another good.
• For example, a car sold to a consumer is a final good; the components
such as tires sold to the car manufacturer are not; they are intermediate
goods used to make the final good. The same tires, if sold to a consumer,
would be a final good. Only final goods are included when measuring
national income. If intermediate goods were included too, this would
lead to double counting; for example, the value of the tires would be
counted once when they are sold to the car manufacturer, and again
when the car is sold to the consumer.
GNP
• GNP = GDP + Net factor income from abroad
• GDP: Gross Domestic Production
• Only newly produced goods are counted. Transactions in existing
goods, such as second-hand cars, are not included, as these do not
involve the production of new goods.
• Income is counted as part of GNP according to who owns the factors
of production rather than where the production takes place. For
example, in the case of a German-owned car factory operating in the
US, the profits from the factory would be counted as part of German
GNP. The wages of the American workers would be part of US GNP,
while the wages of any German workers on the site would be part of
German GNP.
Difference between software engineering and computer
science
• Computer science is concerned with theory and fundamentals;
software engineering is concerned with the practicalities of
developing and delivering useful software.
• Computer science theories are currently insufficient to act as a
complete underpinning (foundation) for software engineering.
• Software engineers must often use ad hoc approaches to develop the
software. (Research is in progress and will remain in progress!)
Difference between software engineering and system
engineering
• System engineering is concerned with all aspects of computer-based systems
development including hardware, software and process engineering. Software
engineering is part of this process
• System engineers are involved in system specification, architectural design,
integration and deployment
• Process engineering focuses on the design, operation, control, and optimization of chemical,
physical, and biological processes. Process engineering encompasses a vast range of
industries, such as chemical, petrochemical, mineral processing, advanced material, food,
pharmaceutical, and biotechnological industries. The application of systematic computer-
based methods to process engineering is process systems engineering.
What is a software process?
• A set of activities whose goal is the development or evolution of
software
• Mostly carried out by software Engineers
• Generic activities in all software processes are:
• Specification - what the system should do and its development
constraints
• Development (Design & Implementation) - production of the
software system
• Validation - checking that the software is what the customer
wants
• Evolution - changing the software in response to changing
demands
Software costs
• Software costs often dominate hardware costs.
• Software engineering is concerned with cost-effective
software development
• For systems with a long life, maintenance costs may be
several times development costs.
• Roughly 60% of costs are development costs, 40% are
testing costs.
• For custom software, evolution costs often exceed
development costs.
Product development costs
For generic software products, specification costs are relatively low.
However, because they are intended for use on a range of different
configurations, they must be extensively tested.

0 25 50 75 100

Specification Development System testing


What are software engineering methods?
• A structured approach to software development whose aim is to
facilitate the production of high-quality software in a cost-effective
way.
• Methods such as Structured Analysis were first developed in the
1970s. These methods attempted to identify the basic functional
components of a system; function-oriented methods are still used.
• In the 1980s and 1990s, these function-oriented methods were
supplemented by object-oriented (OO) methods.
• These different approaches have now been integrated into a single
unified approach built around the Unified Modeling Language (UML).
What is CASE (Computer-Aided Software Engineering)

• Software systems which are intended to provide automated support


for software process activities. 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
Attributes of good software
• The software should deliver the required functionality and
performance to the user and should be maintainable, dependable and
usable
• Maintainability
• Software must evolve to meet changing needs
• Dependability
• Software must be trustworthy
• Efficiency
• Software should not make wasteful use of system resources
• Usability
• Software must be usable by the users for which it was
designed
Key challenges facing Software Engineering
• Coping with legacy systems, coping with increasing diversity and
coping with demands for reduced delivery times
• Legacy systems
• Old, valuable systems must be maintained and updated
• Heterogeneity
• Systems are distributed and include a mix of hardware and
software
• Delivery
• There is increasing pressure for faster delivery of software
Professional and ethical responsibility

• Software engineering involves wider responsibilities than simply the


application of technical skills
• Software engineers must behave in an honest and ethically
responsible way if they are to be respected as professionals
• Ethical behaviour is more than simply upholding the law.
Issues of professional responsibility

• Confidentiality
• Engineers should normally respect the confidentiality of their employers or clients
irrespective of whether or not a formal confidentiality agreement has been signed.
• 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 (dissemination of viruses).
ACM/IEEE Code of Ethics
• The professional societies in the US have cooperated to
produce a code of ethical practice.
• Members of these organisations sign up to the code of
practice when they join.
• The Code contains eight Principles related to the
behaviour of and decisions made by professional
software engineers, including practitioners, educators,
managers, supervisors and policy makers, as well as
trainees and students of the profession.
• ACM: Association for Computing Machinery
• IEEE: Institute of Electrical and Electronics Engineers
Code of ethics - preamble
• Preamble
• Engineers shall commit themselves to making the analysis,
specification, design, development, testing and maintenance
of software a beneficial and respected profession. In
accordance with their commitment to the health, safety and
welfare of the public, software engineers shall adhere to the
following Eight Principles:
Code of ethics - principles
• 1. PUBLIC
• Engineers shall act consistently with the public
interest.
• 2. CLIENT AND EMPLOYER
• Engineers shall act in a manner that is in the best
interests of their client and employer consistent with
the public interest.
Code of ethics - principles
• 3. PRODUCT
• Engineers shall ensure that their products and
related modifications meet the highest professional
standards possible.
• 4. JUDGMENT
• Engineers shall maintain integrity and
independence in their professional judgment.
Code of ethics - principles
• 5. MANAGEMENT
• Engineering managers and leaders shall subscribe to and promote
an ethical approach to the management of software development
and maintenance.
• 6. PROFESSION
• Engineers shall advance the integrity and reputation of the
profession consistent with the public interest.
Code of ethics - principles
• 7. COLLEAGUES
• Engineers shall be fair to and supportive of their colleagues.
• 8. SELF
• Engineers shall participate in lifelong learning regarding the practice of their
profession and shall promote an ethical approach to the practice of the
profession.
Ethical dilemmas(problems)
• In any situation where different people have different views and
objectives you are likely to be faced with ethical dilemmas.
• Disagreement in principle with the policies of senior management.
• Your employer acts in an unethical way and releases a safety-critical system
without finishing the testing of the system.
• Participation in the development of military weapons systems or nuclear
systems.
Assignment 1(a)
• Name and describe about at least two uppercase and two lower case
tools used in software engineering. Provide some of the snaps for the
tool also.
• Assignment is individual. Copying may cancel both of the students marks.
Assignment 1(b)
• Explain why system testing costs are particularly high for generic
software products that are sold to a very wide market.

You might also like