In this Module, we look at
  • what we mean by software engineering
  • software engineering’s track record
  • what we mean by “good software”
  • why systems approach is important
  • how software engineering has changed since
    the 1970s
Typical formal definitions of software engineering are:
  •
   - "the application of a systematic, disciplined,
  •
     quantifiable approach to the development,
  •
     operation, and maintenance of software".
  •
   - "an engineering discipline that is concerned with
  •
     all aspects of software production”
  •
   - "the establishment and use of sound engineering
  •
        principles in order to economically obtain
  software
  •
     that is reliable and works efficiently on real
  •
     machines"
•
   - “ is a theory and practice that an individual or a
  •
      group of software developers or software
  •
        engineers having the knowledge of computer
  and
  •
      computing to help solve problems especially
  •
       problems with which are related to a computer
  or
Other meanings of software engineering:
  •
      an existing computer system".
•
        As Dijkstra pointed out, the terms software
engineering and software engineer have, at times,
also been misused in a much wider sense,
particularly in America. The term has been used less
formally:
•
 - as the informal contemporary term for the broad
•
   range of activities that was formerly called
•
   programming and systems analysis
•
 - as the broad term for all aspects of the practice
of
•
   computer programming, as opposed to the theory
•
   of computer programming, which is called
 - as the term science; the advocacy of a specific
   computer embodying
•
•

•
      approach to computer programming, one that urges that
it
•
     be treated as an engineering discipline rather than an art
•
     or a craft, and advocates the codification of recommended
•
     practices in the form of software engineering
     methodologies.
•
            The discipline of software engineering
encompasses knowledge, tools, and methods for
defining software requirements, and performing
software design, software construction, software
testing, and software maintenance tasks.
•
      Software engineering also draws on knowledge
from fields such as computer engineering, computer
science,    management,      mathematics,    project
management,      quality   management,     software
ergonomics, and systems engineering.
•
     As of 2004, the U. S. Bureau of Labor Statistics
counts 760,840 software engineers holding jobs in
the U.S.; for comparison, in the U.S. there are some
1.4 million practitioners employed in all other
engineering disciplines combined. The term software
engineer is used very liberally in the corporate world.
Very few of the practicing software engineers
actually hold engineering degrees from accredited
universities.

•
         There are estimated to be about 1.5 million
practitioners in the E.U., Asia, and elsewhere SE
pioneers include Barry Boehm, Fred Brooks, C. A. R.
Hoare, and David Parnas.
•
 David Parnas has said that software engineering is, in fact, a
form of engineering.

Steve McConnell has said that it is not, but that it should be.
•




Donald Knuth has said that programming is an art and a
•


science.

The U.S. Bureau of Labor Statistics classifies computer
•


software engineers as a subcategory of "computer
specialists", along with occupations such as computer
scientist, programmer, and network administrator. The BLS
classifies all other engineering disciplines, including computer
hardware engineers, as "engineers".
•
 The U.K. has seen the alignment of the Information
Technology Professional and the Engineering
Professionals. Software engineering in Canada has
seen some contests in the courts over the use of the
title "Software Engineer
•
          Software is often found in products and
situations where very high reliability is expected,
even under demanding conditions, such as
monitoring and controlling nuclear power plants, or
keeping a modern airliner aloft. Such applications
contain millions of lines of code, making them
comparable in complexity to the most complex
modern machines. For example, a modern airliner
has several million physical parts (and the space
shuttle about ten million parts), while the software
for such an airliner can run to 4 million lines of
code.
•
        Software engineers advocate many different
technologies      and     practices,    with    much
disagreement, which has originated a debate that
has gone on for over 60 years. Software engineers
use a wide variety of technologies: compilers, code
repositories, text editors. They also use a wide
variety of practices to carry out and coordinate their
efforts: pair programming, code reviews and daily
stand up meetings. In spite of the enormous
economic growth and productivity gains enabled by
software, persistent complaints about the quality of
software remain.
Most software engineers work as employees or
contractors. Software engineers work with
businesses, government agencies (civilian or
military), and non-profit organizations. Some
software engineers work for themselves as
freelancers. Some organizations have specialists to
perform each of the tasks in the software
development process. Other organizations required
software engineers to do many or all of them. In
large projects, people may specialize in only one
role. In small projects, people may fill several or all
roles at the same time.
Specializations include: in industry (analysts,
architects, developers, testers, technical support,
managers) and in academia (educators, researchers
).

      There is considerable debate over the future
employment prospects for Software Engineers and
other IT Professionals. For example, an online
futures          market          called         the
Future of IT Jobs in America attempts to answer
whether there will be more IT jobs, including
software engineers, in 2012 than there were in 2002
.
Certification of software engineers is a
contentious issue. Some see it as a tool to improve
professional practice.

Most successful certification programs in the
software industry are oriented toward specific
technologies, and are managed by the vendors of
these technologies. These certification programs are
tailored to the institutions that would employ people
who use these technologies.
The ACM had a professional certification
program in the early 1980s, which was discontinued
due to lack of interest. As of 2006, the IEEE had
certified over 575 software professionals.

       In                  Canada                 the
Canadian Information Processing Society           has
developed a legally recognized professional
certification called Information Systems Professional
(ISP).
Many students in the developed world have
avoided degrees related to software engineering
because of the fear of offshore outsourcing
(importing software products or services from other
countries)    and      of   being     displaced    by
foreign visa workers. Although government statistics
do not currently show a threat to software
engineering      itself;    a     related      career,
computer programming does appear to have been
affected. Often one is expected to start out as a
computer programmer before being promoted to
software engineer.
Thus, the career path to software engineering may
be rough, especially during recessions.

       Some career counselors suggest a student
also focus on "people skills" and business skills
rather than purely technical skills because such "soft
skills" are allegedly more difficult to offshore. It is
the quasi-management aspects of software
engineering that appear to be what has kept it from
being impacted by globalization.
Software engineering has evolved steadily from
its founding days in the 1940s until today in the
2000s. Applications have evolved continuously.
PIONEERING ERA
 - The ongoing goal to improve technologies and
   practices, seeks to improve the productivity of
   practitioners and the quality of applications to
   users.
 - Hardware vendors gave away systems software
   for free as hardware could not be sold without
   software. A few companies sold the service of
   building custom software but no software
   companies were selling packaged software.
1945 TO 1965: THE ORIGINS
- The term software engineering first appeared in
  the late 1950s and early 1960s.
- NATO Science Committee sponsored conferences
  in 1968 and 1969 that marked the official start of
  the profession of SE.
1965 TO 1985: THE SOFTWARE CRISIS
- The software crisis was originally defined in terms
  of productivity, but evolved to emphasize quality.
- Some used the term software crisis to refer to
  their inability to hire enough qualified
  programmers causing over budget and schedules,
  property damage and loss of life.
Cost and Budget Overruns:
      The OS/360 operating system was a classic
example. This decade-long] project from the 1960s
eventually produced one of the most complex
software systems at the time. OS/360 was one of
the first large (1000 programmers) software
projects.        Fred Brooks         claims      in
The Mythical Man Month that he made a multi-
million dollar mistake of not developing a coherent
architecture before starting development.
•
 Property Damage:
•
 Software defects can cause property damage. Poor
software security allows hackers to steal identities,
costing time, money, and reputations.
•
 Life and Death:
•
 Software defects can kill. Some embedded systems
used in radiotherapy machines failed so
catastrophically that they administered lethal doses
of radiation to patients.
1985 TO 1989: NO SILVER BULLET
- From 1970s to 1990s researchers and companies
  produced software tools as a “silver bullet” to
  solve the software crisis.
 Tools:
 Especially       emphasized         were         tools:
 Structured programming,
 object-oriented programming, CASE tools, Ada, Java
 ,        documentation,        standards,          and
 Unified Modeling Language were touted as silver
•
 Discipline:
•
 Some pundits argued that the software crisis was due
to the lack of discipline of programmers.
•
 Formal methods:
•
 Some      believed     that   if  formal  engineering
methodologies would be applied to software
development, then production of software would
become as predictable an industry as other branches
of engineering. They advocated proving all programs
correct.
•
 Process:
•
 Many advocated the use of defined processes and
methodologies like the Capability Maturity Model.
•
 Professionalism:
•
 This led to work on a code of ethics, licenses, and
professionalism.
1990 TO 1999: THE INFORMATION
                  SUPERHIGHWAY
- Rise of the Internet
- The growth of Browser usage running on the
  HTML Language
- Search engines system
- Human multi-language translation system
2000 TO PRESENT: LIGHTWEIGHT
                       METHODOLOGIES
- With the expanding demand for software in many
  smaller organizations, the need for inexpensive
  software solutions led to the growth of simpler,
  faster methodologies that developed running
  software, from requirements to deployment,
  quicker & easier.
- The use of rapid-prototyping evolved to entire
  lightweight methodologies, such as Extreme
  Programming (XP), which attempted to simplify
  many areas of software engineering, including
  requirements gathering and reliability testing for
  the growing, vast number of small software
  systems.
• Emergence as a Profession
• Role of Women
• Processes and Methodology
• Cost of Hardware
ASPECTS
        Aspects help software engineers deal with -
ilities by providing tools to add or remove boilerplate
code from many areas in the source code. Aspects
describe how all objects or functions should behave
in particular circumstances. For example, aspects
can add debugging, logging, or locking control into
all objects of particular types. Researchers are
currently working to understand how to use aspects
to design general-purpose code. Related concepts
include generative programming and templates.
AGILE
     Agile     software    development       guides
software development projects that evolve rapidly
with changing expectations and competitive
markets. Proponents of this method believe that
heavy, document-driven processes (like TickIT, CMM
and ISO 9000) are fading in importance. Some
people believe that companies and agencies export
many of the jobs that can be guided by heavy-
weight processes. Related concepts include
Extreme Programming                             and
Lean software development
EXPERIMENTAL
      Experimental software engineering is a branch
of software engineering interested in devising
experiments on software, in collecting data from the
experiments, and in devising laws and theories from
this data. Proponents of this method advocate that
the nature of software is such that we can advance
the knowledge on software through experiments
only.
MODEL-DRIVEN
     Model Driven Software Development uses
(both textual and graphical) models as primary
development       artifacts.   By    means      of
model transformation and code generation a part or
complete applications are generated.
SOFTWARE PRODUCT LINES
      Software Product Lines is a systematic way to
produce families of software systems, instead of
creating a succession of completely individual
products. This method emphasizes extensive,
systematic, formal code reuse, to try to industrialize
the software development process.
In 2006, Money Magazine and Salary.com
rated software engineering as the best job in
America in terms of growth, pay, stress levels,
flexibility in hours and working environment,
creativity, and how easy it is to enter and advance
in the field.
ICSE
     The biggest and oldest conference devoted to
software engineering is the International Conference
on Software Engineering. This conference meets
every year to discuss improvements in research,
education, and practice.

COMPSAC
     The Annual International Computer Software
and Applications Conference was first held in
Chicago in 1977 and is designated as the IEEE
Computer Society signature conference on software
technology and applications.
ESEC
The European Software Engineering Conference.

FSE
The             Foundations of Software Engineering
conference is held every year, alternating between
Europe and North America. It emphasizes
theoretical and foundational issues.

CUSEC
Conferences dedicated to inform undergraduate
students           like           the         annual
Canadian University Software Engineering Conference
 are also very promising for the future generation.
SEPG
The annual Software Engineering Process Group
conference, sponsored by the Carnegie Mellon
Software Engineering Institute (SEI), is a conference
and exhibit showcase for systems and software
engineering professionals. The four-day event
emphasizes systematic improvement of people,
processes, and technology.

INFORMATICS-INFORMATIQUE
The annual Canadian information technology, data
processing and software engineering symposium,
sponsored                  by                   the
Canadian Information Processing Society. First held
in 1958.
ICALEPS
International Conference on Accelerator and Large
Experimental Physics Control Systems Conference.
Biennial conference covering software engineering
for large scale scientific control systems. First held
in 1987.

APSEC
Asia Pacific Software Engineering Conference.

UYMS
National Software Engineering Symposium (in
Turkish: Ulusal Yazilim Muhendisligi Sempozyumu)
(not available in English). Biennial symposium first
held in İzmir, Turkey in 2003.
•   Association for Computing Machinery (ACM)
•   Australian Computer Society (ACS)
•   British Computer Society (BCS)
•   Canadian Information Processing Society (CIPS) -
    Information Systems Professional certification.
•   IEEE Computer Society
•   Lero, the Irish Software Engineering Research Centre
•   Russian Software Developers Association (RUSSOFT)
•   Software Engineering Institute (SEI)
•   Software Industry Professionals
•   The Safety and Reliability Society
(SHORT VERSION)

                  PREAMBLE

      Software     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:
1. PUBLIC
   Software engineers shall act consistently with the
   public interest.
2. CLIENT AND EMPLOYER
   Software engineers shall act in a manner that is in
   the best interests of their client and employer
   consistent with the public interest.
3. PRODUCT
  Software engineers shall ensure that their
  products and related modifications meet the
  highest professional standards possible.
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.
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.
Problem solving technique must have two parts:

1. ANALYZING

      Solving problems must begin investigating it
by analyzing it, that it, by breaking the problem into
pieces to determine its nature
2. SYNTHESIZING

      Synthesis is putting together of a large
structure from small building blocks.
The process of analysis
The process of synthesis
To use efficient and productive approaches to
generate effective solutions to problems, SE may
employ the use of:

1. METHOD

     Method or technique is a formal procedure for
producing some result.

2. PARADIGM

      Paradigm represents a particular approach or
philosophy for building software.
3. TOOL

      Tool is the instrument or automated system
for accomplishing something in a better way. The
“BETTER WAY” can mean that the tool makes us
accurate, more efficient, or more productive or that
it enhances the quality of the resulting product.


4. PROCEDURE

     A combination of tools and techniques that, in
concert, produce a particular product.
QUALITY – degree of excellence; high standard
Five different perspectives of quality (Garvin 1984)

1. The Transcendental View

     Where the quality is something we can
recognize but not define

2. The User View

     Where the quality is fitness for purpose
3. The Manufacturing View

      Where the quality is conformance to the
specification

4. The Product View

     Where the quality is tied to inherent product
characteristics

5. The Value-Based View

     Where the quality depends on the amount the
customer is willing to pay for it
Software Quality must be consider in at least 3 ways

1. QUALITY OF THE PRODUCT
   - Users judge software to be of high quality if it is
     easy to use and easy to learn
   - number of failures and type of failures
   - must be judge according who are designing and
     writing the code and who maintain the program
     after they are written
McCall’s Quality Model
2. THE QUALITY OF THE PROCESS
    - One of the advantages of modeling the process is
      we can examine it and look for ways to improve
      it.
    - “Where and when are we likely to find a
      particular kind of fault?
    - “How can we find faults earlier in the
      development process?”
   - “How can we build in fault tolerance so that we
      minimize the like hood that a fault became a
      failure?”
   - “Are there alternative activities that can make
      our process more effective or efficient at
      assuring quality?”
3. THE QUALITY IN THE CONTEXT OF BUSINESS
   ENVIRONMENT
   - Quality is viewed in terms of the products and
     services being provided by the business in which
     the software is embedded.
   - Technical value of the product rather than the
     Business value.
   - Improving technical quality will automatically
     translate into business value.
   - Return of Investment (ROI) derived from financial
     community, describes the investment in terms of
     what is given up for other purposes. That is, the
     “investment must not only return the original
     capital but enough more to at least equal what the
     funds would have earn elsewhere, plus the
     allowance of risk.”
- ROI includes training, schedule, risk, quality,
  productivity, process, customer, cost and
  business

- ROI Business models such as
      “Payback Model”,
      “Accounting-Rate of Return Model”,
      “Discounted Cash Flow Model”
Terms included in industry definition of ROI
• Boundaries – what is included in the project and
  what is not.
• Elements of a System

     1. Activities are something that happens in the
        system
     2. Objects or entities are the element involve
        in the activities
     3. Relationships
     4. The System Boundary
• System is a collection of things, a set of entities, a
  set of activities, a description of relationships
  among entities and activity and a definition of a
  system boundary.

• Interrelated System


• Incremental Development Approach may
  incorporated a series of stages, each of which frees
  the previous system from another such constraint
• Two different ways to view the system

     1. Statically
           Static view tells us how the system is
        working today.

     2. Dynamically
            Dynamic view shows us how the system
        is changing into what it will eventually
        became.
• A popular collection of programming tools is called
  the Programmer’s Workbench

• Software projects progress in a way similar to the
  house-building
Building a House              Building a System
Determining & analyzing       Requirement analysis &
the requirements              definition
Producing & documenting       System Design
the overall design of the
house
Producing detailed            Program Design
specifications of the house

Identifying & designing       Writing the programs
the components                (Program implementation)
Building each component       Unit Testing / Module
of the House                  Testing
Building a House             Building a System
Testing each component       Integration Testing
of the house
Integrating the              System Testing
component
Making final modifications   System Delivery
after the residents have
moved in
Continuing maintenance       Maintenance
by the residents of the
house

02 Why Software Engineering?

  • 1.
    In this Module,we look at • what we mean by software engineering • software engineering’s track record • what we mean by “good software” • why systems approach is important • how software engineering has changed since the 1970s
  • 2.
    Typical formal definitionsof software engineering are: • - "the application of a systematic, disciplined, • quantifiable approach to the development, • operation, and maintenance of software". • - "an engineering discipline that is concerned with • all aspects of software production” • - "the establishment and use of sound engineering • principles in order to economically obtain software • that is reliable and works efficiently on real • machines"
  • 3.
    - “ is a theory and practice that an individual or a • group of software developers or software • engineers having the knowledge of computer and • computing to help solve problems especially • problems with which are related to a computer or Other meanings of software engineering: • an existing computer system". • As Dijkstra pointed out, the terms software engineering and software engineer have, at times, also been misused in a much wider sense, particularly in America. The term has been used less formally:
  • 4.
    • - asthe informal contemporary term for the broad • range of activities that was formerly called • programming and systems analysis • - as the broad term for all aspects of the practice of • computer programming, as opposed to the theory • of computer programming, which is called - as the term science; the advocacy of a specific computer embodying • • • approach to computer programming, one that urges that it • be treated as an engineering discipline rather than an art • or a craft, and advocates the codification of recommended • practices in the form of software engineering methodologies.
  • 5.
    The discipline of software engineering encompasses knowledge, tools, and methods for defining software requirements, and performing software design, software construction, software testing, and software maintenance tasks. • Software engineering also draws on knowledge from fields such as computer engineering, computer science, management, mathematics, project management, quality management, software ergonomics, and systems engineering.
  • 6.
    As of 2004, the U. S. Bureau of Labor Statistics counts 760,840 software engineers holding jobs in the U.S.; for comparison, in the U.S. there are some 1.4 million practitioners employed in all other engineering disciplines combined. The term software engineer is used very liberally in the corporate world. Very few of the practicing software engineers actually hold engineering degrees from accredited universities. • There are estimated to be about 1.5 million practitioners in the E.U., Asia, and elsewhere SE pioneers include Barry Boehm, Fred Brooks, C. A. R. Hoare, and David Parnas.
  • 7.
    • David Parnashas said that software engineering is, in fact, a form of engineering. Steve McConnell has said that it is not, but that it should be. • Donald Knuth has said that programming is an art and a • science. The U.S. Bureau of Labor Statistics classifies computer • software engineers as a subcategory of "computer specialists", along with occupations such as computer scientist, programmer, and network administrator. The BLS classifies all other engineering disciplines, including computer hardware engineers, as "engineers".
  • 8.
    • The U.K.has seen the alignment of the Information Technology Professional and the Engineering Professionals. Software engineering in Canada has seen some contests in the courts over the use of the title "Software Engineer
  • 9.
    Software is often found in products and situations where very high reliability is expected, even under demanding conditions, such as monitoring and controlling nuclear power plants, or keeping a modern airliner aloft. Such applications contain millions of lines of code, making them comparable in complexity to the most complex modern machines. For example, a modern airliner has several million physical parts (and the space shuttle about ten million parts), while the software for such an airliner can run to 4 million lines of code.
  • 10.
    Software engineers advocate many different technologies and practices, with much disagreement, which has originated a debate that has gone on for over 60 years. Software engineers use a wide variety of technologies: compilers, code repositories, text editors. They also use a wide variety of practices to carry out and coordinate their efforts: pair programming, code reviews and daily stand up meetings. In spite of the enormous economic growth and productivity gains enabled by software, persistent complaints about the quality of software remain.
  • 11.
    Most software engineerswork as employees or contractors. Software engineers work with businesses, government agencies (civilian or military), and non-profit organizations. Some software engineers work for themselves as freelancers. Some organizations have specialists to perform each of the tasks in the software development process. Other organizations required software engineers to do many or all of them. In large projects, people may specialize in only one role. In small projects, people may fill several or all roles at the same time.
  • 12.
    Specializations include: inindustry (analysts, architects, developers, testers, technical support, managers) and in academia (educators, researchers ). There is considerable debate over the future employment prospects for Software Engineers and other IT Professionals. For example, an online futures market called the Future of IT Jobs in America attempts to answer whether there will be more IT jobs, including software engineers, in 2012 than there were in 2002 .
  • 13.
    Certification of softwareengineers is a contentious issue. Some see it as a tool to improve professional practice. Most successful certification programs in the software industry are oriented toward specific technologies, and are managed by the vendors of these technologies. These certification programs are tailored to the institutions that would employ people who use these technologies.
  • 14.
    The ACM hada professional certification program in the early 1980s, which was discontinued due to lack of interest. As of 2006, the IEEE had certified over 575 software professionals. In Canada the Canadian Information Processing Society has developed a legally recognized professional certification called Information Systems Professional (ISP).
  • 15.
    Many students inthe developed world have avoided degrees related to software engineering because of the fear of offshore outsourcing (importing software products or services from other countries) and of being displaced by foreign visa workers. Although government statistics do not currently show a threat to software engineering itself; a related career, computer programming does appear to have been affected. Often one is expected to start out as a computer programmer before being promoted to software engineer.
  • 16.
    Thus, the careerpath to software engineering may be rough, especially during recessions. Some career counselors suggest a student also focus on "people skills" and business skills rather than purely technical skills because such "soft skills" are allegedly more difficult to offshore. It is the quasi-management aspects of software engineering that appear to be what has kept it from being impacted by globalization.
  • 17.
    Software engineering hasevolved steadily from its founding days in the 1940s until today in the 2000s. Applications have evolved continuously. PIONEERING ERA - The ongoing goal to improve technologies and practices, seeks to improve the productivity of practitioners and the quality of applications to users. - Hardware vendors gave away systems software for free as hardware could not be sold without software. A few companies sold the service of building custom software but no software companies were selling packaged software.
  • 18.
    1945 TO 1965:THE ORIGINS - The term software engineering first appeared in the late 1950s and early 1960s. - NATO Science Committee sponsored conferences in 1968 and 1969 that marked the official start of the profession of SE. 1965 TO 1985: THE SOFTWARE CRISIS - The software crisis was originally defined in terms of productivity, but evolved to emphasize quality. - Some used the term software crisis to refer to their inability to hire enough qualified programmers causing over budget and schedules, property damage and loss of life.
  • 19.
    Cost and BudgetOverruns: The OS/360 operating system was a classic example. This decade-long] project from the 1960s eventually produced one of the most complex software systems at the time. OS/360 was one of the first large (1000 programmers) software projects. Fred Brooks claims in The Mythical Man Month that he made a multi- million dollar mistake of not developing a coherent architecture before starting development. • Property Damage: • Software defects can cause property damage. Poor software security allows hackers to steal identities, costing time, money, and reputations.
  • 20.
    • Life andDeath: • Software defects can kill. Some embedded systems used in radiotherapy machines failed so catastrophically that they administered lethal doses of radiation to patients. 1985 TO 1989: NO SILVER BULLET - From 1970s to 1990s researchers and companies produced software tools as a “silver bullet” to solve the software crisis. Tools: Especially emphasized were tools: Structured programming, object-oriented programming, CASE tools, Ada, Java , documentation, standards, and Unified Modeling Language were touted as silver
  • 21.
    • Discipline: • Somepundits argued that the software crisis was due to the lack of discipline of programmers. • Formal methods: • Some believed that if formal engineering methodologies would be applied to software development, then production of software would become as predictable an industry as other branches of engineering. They advocated proving all programs correct. • Process: • Many advocated the use of defined processes and methodologies like the Capability Maturity Model. • Professionalism: • This led to work on a code of ethics, licenses, and professionalism.
  • 22.
    1990 TO 1999:THE INFORMATION SUPERHIGHWAY - Rise of the Internet - The growth of Browser usage running on the HTML Language - Search engines system - Human multi-language translation system 2000 TO PRESENT: LIGHTWEIGHT METHODOLOGIES - With the expanding demand for software in many smaller organizations, the need for inexpensive software solutions led to the growth of simpler, faster methodologies that developed running software, from requirements to deployment, quicker & easier.
  • 23.
    - The useof rapid-prototyping evolved to entire lightweight methodologies, such as Extreme Programming (XP), which attempted to simplify many areas of software engineering, including requirements gathering and reliability testing for the growing, vast number of small software systems.
  • 24.
    • Emergence asa Profession • Role of Women • Processes and Methodology • Cost of Hardware
  • 25.
    ASPECTS Aspects help software engineers deal with - ilities by providing tools to add or remove boilerplate code from many areas in the source code. Aspects describe how all objects or functions should behave in particular circumstances. For example, aspects can add debugging, logging, or locking control into all objects of particular types. Researchers are currently working to understand how to use aspects to design general-purpose code. Related concepts include generative programming and templates.
  • 26.
    AGILE Agile software development guides software development projects that evolve rapidly with changing expectations and competitive markets. Proponents of this method believe that heavy, document-driven processes (like TickIT, CMM and ISO 9000) are fading in importance. Some people believe that companies and agencies export many of the jobs that can be guided by heavy- weight processes. Related concepts include Extreme Programming and Lean software development
  • 27.
    EXPERIMENTAL Experimental software engineering is a branch of software engineering interested in devising experiments on software, in collecting data from the experiments, and in devising laws and theories from this data. Proponents of this method advocate that the nature of software is such that we can advance the knowledge on software through experiments only. MODEL-DRIVEN Model Driven Software Development uses (both textual and graphical) models as primary development artifacts. By means of model transformation and code generation a part or complete applications are generated.
  • 28.
    SOFTWARE PRODUCT LINES Software Product Lines is a systematic way to produce families of software systems, instead of creating a succession of completely individual products. This method emphasizes extensive, systematic, formal code reuse, to try to industrialize the software development process.
  • 29.
    In 2006, MoneyMagazine and Salary.com rated software engineering as the best job in America in terms of growth, pay, stress levels, flexibility in hours and working environment, creativity, and how easy it is to enter and advance in the field.
  • 30.
    ICSE The biggest and oldest conference devoted to software engineering is the International Conference on Software Engineering. This conference meets every year to discuss improvements in research, education, and practice. COMPSAC The Annual International Computer Software and Applications Conference was first held in Chicago in 1977 and is designated as the IEEE Computer Society signature conference on software technology and applications.
  • 31.
    ESEC The European SoftwareEngineering Conference. FSE The Foundations of Software Engineering conference is held every year, alternating between Europe and North America. It emphasizes theoretical and foundational issues. CUSEC Conferences dedicated to inform undergraduate students like the annual Canadian University Software Engineering Conference are also very promising for the future generation.
  • 32.
    SEPG The annual SoftwareEngineering Process Group conference, sponsored by the Carnegie Mellon Software Engineering Institute (SEI), is a conference and exhibit showcase for systems and software engineering professionals. The four-day event emphasizes systematic improvement of people, processes, and technology. INFORMATICS-INFORMATIQUE The annual Canadian information technology, data processing and software engineering symposium, sponsored by the Canadian Information Processing Society. First held in 1958.
  • 33.
    ICALEPS International Conference onAccelerator and Large Experimental Physics Control Systems Conference. Biennial conference covering software engineering for large scale scientific control systems. First held in 1987. APSEC Asia Pacific Software Engineering Conference. UYMS National Software Engineering Symposium (in Turkish: Ulusal Yazilim Muhendisligi Sempozyumu) (not available in English). Biennial symposium first held in İzmir, Turkey in 2003.
  • 34.
    Association for Computing Machinery (ACM) • Australian Computer Society (ACS) • British Computer Society (BCS) • Canadian Information Processing Society (CIPS) - Information Systems Professional certification. • IEEE Computer Society • Lero, the Irish Software Engineering Research Centre • Russian Software Developers Association (RUSSOFT) • Software Engineering Institute (SEI) • Software Industry Professionals • The Safety and Reliability Society
  • 35.
    (SHORT VERSION) PREAMBLE Software 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:
  • 36.
    1. PUBLIC Software engineers shall act consistently with the public interest. 2. CLIENT AND EMPLOYER Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest. 3. PRODUCT Software engineers shall ensure that their products and related modifications meet the highest professional standards possible. 4. JUDGMENT Software engineers shall maintain integrity and independence in their professional judgment.
  • 37.
    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. 7. COLLEAGUES Software engineers shall be fair to and supportive of their colleagues.
  • 38.
    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.
  • 39.
    Problem solving techniquemust have two parts: 1. ANALYZING Solving problems must begin investigating it by analyzing it, that it, by breaking the problem into pieces to determine its nature 2. SYNTHESIZING Synthesis is putting together of a large structure from small building blocks.
  • 40.
  • 41.
    The process ofsynthesis
  • 42.
    To use efficientand productive approaches to generate effective solutions to problems, SE may employ the use of: 1. METHOD Method or technique is a formal procedure for producing some result. 2. PARADIGM Paradigm represents a particular approach or philosophy for building software.
  • 43.
    3. TOOL Tool is the instrument or automated system for accomplishing something in a better way. The “BETTER WAY” can mean that the tool makes us accurate, more efficient, or more productive or that it enhances the quality of the resulting product. 4. PROCEDURE A combination of tools and techniques that, in concert, produce a particular product.
  • 45.
    QUALITY – degreeof excellence; high standard Five different perspectives of quality (Garvin 1984) 1. The Transcendental View Where the quality is something we can recognize but not define 2. The User View Where the quality is fitness for purpose
  • 46.
    3. The ManufacturingView Where the quality is conformance to the specification 4. The Product View Where the quality is tied to inherent product characteristics 5. The Value-Based View Where the quality depends on the amount the customer is willing to pay for it
  • 47.
    Software Quality mustbe consider in at least 3 ways 1. QUALITY OF THE PRODUCT - Users judge software to be of high quality if it is easy to use and easy to learn - number of failures and type of failures - must be judge according who are designing and writing the code and who maintain the program after they are written
  • 48.
  • 49.
    2. THE QUALITYOF THE PROCESS - One of the advantages of modeling the process is we can examine it and look for ways to improve it. - “Where and when are we likely to find a particular kind of fault? - “How can we find faults earlier in the development process?” - “How can we build in fault tolerance so that we minimize the like hood that a fault became a failure?” - “Are there alternative activities that can make our process more effective or efficient at assuring quality?”
  • 50.
    3. THE QUALITYIN THE CONTEXT OF BUSINESS ENVIRONMENT - Quality is viewed in terms of the products and services being provided by the business in which the software is embedded. - Technical value of the product rather than the Business value. - Improving technical quality will automatically translate into business value. - Return of Investment (ROI) derived from financial community, describes the investment in terms of what is given up for other purposes. That is, the “investment must not only return the original capital but enough more to at least equal what the funds would have earn elsewhere, plus the allowance of risk.”
  • 51.
    - ROI includestraining, schedule, risk, quality, productivity, process, customer, cost and business - ROI Business models such as “Payback Model”, “Accounting-Rate of Return Model”, “Discounted Cash Flow Model”
  • 52.
    Terms included inindustry definition of ROI
  • 55.
    • Boundaries –what is included in the project and what is not. • Elements of a System 1. Activities are something that happens in the system 2. Objects or entities are the element involve in the activities 3. Relationships 4. The System Boundary
  • 56.
    • System isa collection of things, a set of entities, a set of activities, a description of relationships among entities and activity and a definition of a system boundary. • Interrelated System • Incremental Development Approach may incorporated a series of stages, each of which frees the previous system from another such constraint
  • 57.
    • Two differentways to view the system 1. Statically Static view tells us how the system is working today. 2. Dynamically Dynamic view shows us how the system is changing into what it will eventually became.
  • 58.
    • A popularcollection of programming tools is called the Programmer’s Workbench • Software projects progress in a way similar to the house-building
  • 59.
    Building a House Building a System Determining & analyzing Requirement analysis & the requirements definition Producing & documenting System Design the overall design of the house Producing detailed Program Design specifications of the house Identifying & designing Writing the programs the components (Program implementation) Building each component Unit Testing / Module of the House Testing
  • 60.
    Building a House Building a System Testing each component Integration Testing of the house Integrating the System Testing component Making final modifications System Delivery after the residents have moved in Continuing maintenance Maintenance by the residents of the house