Top Banner
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 sinc the 1970s
60
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 02 Why Software Engineering?

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

Page 2: 02 Why 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"

Page 3: 02 Why Software Engineering?

- “ 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:

Page 4: 02 Why Software Engineering?

- 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.

Page 5: 02 Why Software Engineering?

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.

Page 6: 02 Why Software Engineering?

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.

Page 7: 02 Why 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".

Page 8: 02 Why Software Engineering?

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

Page 9: 02 Why 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.

Page 10: 02 Why Software Engineering?

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.

Page 11: 02 Why Software Engineering?

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.

Page 12: 02 Why Software Engineering?

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.

Page 13: 02 Why Software Engineering?

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.

Page 14: 02 Why Software Engineering?

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).

Page 15: 02 Why Software Engineering?

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.

Page 16: 02 Why Software Engineering?

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.

Page 17: 02 Why 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.

Page 18: 02 Why Software Engineering?

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.

Page 19: 02 Why Software Engineering?

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.

Page 20: 02 Why Software Engineering?

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.

Page 21: 02 Why Software Engineering?

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.

Page 22: 02 Why Software Engineering?

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.

Page 23: 02 Why Software Engineering?

- 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.

Page 24: 02 Why Software Engineering?

• Emergence as a Profession• Role of Women• Processes and Methodology

• Cost of Hardware

Page 25: 02 Why Software Engineering?

ASPECTSAspects 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.

Page 26: 02 Why Software Engineering?

AGILEAgile 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

Page 27: 02 Why Software Engineering?

EXPERIMENTALExperimental 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.

Page 28: 02 Why Software Engineering?

SOFTWARE PRODUCT LINESSoftware 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.

Page 29: 02 Why Software Engineering?

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.

Page 30: 02 Why Software Engineering?

ICSEThe 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.

COMPSACThe 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.

Page 31: 02 Why Software Engineering?

ESECThe European Software Engineering Conference.

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

CUSECConferences dedicated to inform undergraduate students like the annual Canadian University Software Engineering Conference are also very promising for the future generation.

Page 32: 02 Why Software Engineering?

SEPGThe 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-INFORMATIQUEThe annual Canadian information technology, data processing and software engineering symposium, sponsored by the Canadian Information Processing Society. First held in 1958.

Page 33: 02 Why Software Engineering?

ICALEPSInternational 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.

APSECAsia Pacific Software Engineering Conference.

UYMSNational Software Engineering Symposium (in Turkish: Ulusal Yazilim Muhendisligi Sempozyumu) (not available in English). Biennial symposium first held in İzmir, Turkey in 2003.

Page 34: 02 Why Software Engineering?

• 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

Page 35: 02 Why Software Engineering?

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)

Page 36: 02 Why Software Engineering?

1.PUBLICSoftware engineers shall act consistently with the public interest.

2. CLIENT AND EMPLOYERSoftware engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest.3. PRODUCTSoftware engineers shall ensure that their products and related modifications meet the highest professional standards possible.

4. JUDGMENTSoftware engineers shall maintain integrity and independence in their professional judgment.

Page 37: 02 Why Software Engineering?

5. MANAGEMENTSoftware engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.

6. PROFESSIONSoftware engineers shall advance the integrity and reputation of the profession consistent with the public interest.

7. COLLEAGUESSoftware engineers shall be fair to and supportive of their colleagues.

Page 38: 02 Why Software Engineering?

8. SELFSoftware engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.

Page 39: 02 Why Software Engineering?

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.

Page 40: 02 Why Software Engineering?

The process of analysis

Page 41: 02 Why Software Engineering?

The process of synthesis

Page 42: 02 Why Software Engineering?

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.

Page 43: 02 Why Software Engineering?

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.

Page 44: 02 Why Software Engineering?
Page 45: 02 Why Software Engineering?

1. The Transcendental View

Where the quality is something we can recognize but not define

QUALITY – degree of excellence; high standardFive different perspectives of quality (Garvin 1984)

2. The User View

Where the quality is fitness for purpose

Page 46: 02 Why Software Engineering?

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

Page 47: 02 Why Software Engineering?

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

Page 48: 02 Why Software Engineering?

McCall’s Quality Model

Page 49: 02 Why Software Engineering?

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?”

Page 50: 02 Why Software Engineering?

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.”

Page 51: 02 Why Software Engineering?

- 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”

Page 52: 02 Why Software Engineering?

Terms included in industry definition of ROI

Page 53: 02 Why Software Engineering?
Page 54: 02 Why Software Engineering?
Page 55: 02 Why Software Engineering?

• Boundaries – what is included in the project and what is not.• Elements of a System

1. Activities are something that happens in the

system2. Objects or entities are the element

involve in the activities3. Relationships4. The System Boundary

Page 56: 02 Why Software Engineering?

• 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

Page 57: 02 Why Software Engineering?

• Two different ways to view the system

1. Statically Static view tells us how the system

is working today.

2. DynamicallyDynamic view shows us how the

system is changing into what it will eventually became.

Page 58: 02 Why Software Engineering?

• A popular collection of programming tools is called the Programmer’s Workbench• Software projects progress in a way similar to the house-building

Page 59: 02 Why Software Engineering?

Determining & Determining & analyzing the analyzing the requirementsrequirements

Requirement analysis Requirement analysis & definition& definition

Producing & Producing & documenting the documenting the overall design of the overall design of the househouse

System DesignSystem Design

Producing detailed Producing detailed specifications of the specifications of the househouse

Program DesignProgram Design

Identifying & designing Identifying & designing the componentsthe components

Writing the programs Writing the programs (Program (Program implementation)implementation)

Building each Building each component of the component of the HouseHouse

Unit Testing / Module Unit Testing / Module TestingTesting

Building a House

Building a System

Page 60: 02 Why Software Engineering?

Testing each Testing each component of the component of the househouse

Integration TestingIntegration Testing

Integrating the Integrating the componentcomponent

System TestingSystem Testing

Making final Making final modifications after the modifications after the residents have moved residents have moved inin

System DeliverySystem Delivery

Continuing Continuing maintenance by the maintenance by the residents of the houseresidents of the house

MaintenanceMaintenance

Building a House

Building a System