Slide 1 : Why Software Engineering? MODULE 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
Slide 2 : What is Software Engineering? - "the application of a systematic, disciplined,
quantifiable approach to the development,
operation, and maintenance of software". Typical formal definitions of software engineering are: - "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"
Slide 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
an existing computer system". Other meanings of software engineering: 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:
Slide 4 : - 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
computer science; - as the term embodying the advocacy of a specific
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.
Slide 5 : 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. 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.
Slide 6 : 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. 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.
Slide 7 : Nature of Software Engineering 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".
Slide 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
Slide 9 : Purpose of Software Engineering 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.
Slide 10 : Technologies and Practices 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.
Slide 11 : Employment 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.
Slide 12 : 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.
Slide 13 : Certification 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.
Slide 14 : 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).
Slide 15 : IMPACT OF GLOBALIZATION 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.
Slide 16 : 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.
Slide 17 : HISTORY OF SOFTWARE ENGINEERING 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.
Slide 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.
Slide 19 : 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.
Slide 20 : 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 bullets.
Slide 21 : 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.
Slide 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.
Slide 23 : - 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.
Slide 24 : MAJOR DEVELOPMENTS Emergence as a Profession Role of Women Processes and Methodology Cost of Hardware
Slide 25 : CURRENT TRENDS IN SOFTWARE ENGINEERING 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.
Slide 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
Slide 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.
Slide 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.
Slide 29 : SOFTWARE ENGINEERING TODAY 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.
Slide 30 : CONFERENCES 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.
Slide 31 : 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.
Slide 32 : 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.
Slide 33 : 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 Izmir, Turkey in 2003.
Slide 34 : ORGANIZATIONS 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
Slide 35 : SOFTWARE ENGINEERING CODE OF ETHICS
AND PROFESSIONAL PRACTICE 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: (SHORT VERSION)
Slide 36 : 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.
Slide 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.
Slide 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.
Slide 39 : SOLVING PROBLEMS 1. ANALYZING
Solving problems must begin investigating it by analyzing it, that it, by breaking the problem into pieces to determine its nature Problem solving technique must have two parts: 2. SYNTHESIZING
Synthesis is putting together of a large structure from small building blocks.
Slide 40 : The process of analysis
Slide 41 : The process of synthesis
Slide 42 : 1. METHOD
Method or technique is a formal procedure for producing some result. To use efficient and productive approaches to generate effective solutions to problems, SE may employ the use of: 2. PARADIGM
Paradigm represents a particular approach or philosophy for building software.
Slide 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.
Slide 44 : HOW HUMAN ERROR CAUSES A FAILURE
Slide 45 : WHAT IS A GOOD SOFTWARE? 1. The Transcendental View
Where the quality is something we can recognize but not define QUALITY – degree of excellence; high standard Five different perspectives of quality (Garvin 1984) 2. The User View
Where the quality is fitness for purpose
Slide 46 : 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
Slide 47 : 1. QUALITY OF THE PRODUCT Software Quality must be consider in at least 3 ways 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
Slide 48 : McCall’s Quality Model
Slide 49 : 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?”
Slide 50 : 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.”
Slide 51 : 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”
Slide 52 : Terms included in industry definition of ROI
Slide 53 : WHO DOES THE SE?
Slide 54 : MEMBERS OF THE DEVELOPMENT TEAM?
Slide 55 : A SYSTEM APPROACH 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
Slide 56 : 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
Slide 57 : 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.
Slide 58 : AN ENGINEERING APPROACH A popular collection of programming tools is called
the Programmer’s Workbench Software projects progress in a way similar to the
house-building
Slide 59 : Building a House Building a System
Slide 60 : Building a House Building a System