Week-4: Slide 1

  • Uploaded by: api-3737023
  • 0
  • 0
  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Week-4: Slide 1 as PDF for free.

More details

  • Words: 2,255
  • Pages: 30
Week-4 Introduction to Software Engineering

Slide 1

Objectives ●





To introduce software products, software engineering and to explain their importance To set out the answers to several key questions about software engineering To introduce ethical (principled) and professional issues (matters) and to explain why they are of concern to software engineers

Slide 2

Software engineering ●

● ●

The economies of all developed nations are dependent on software More and more systems are software controlled Software engineering is concerned with theories, methods and tools for professional software development

Slide 3

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. The ongoing goal to improve technologies and practices, seeks to improve the productivity of practitioners and the quality of applications to users.

Slide 4

The Pioneering Era ●















The most important development was that new computers were coming out almost every year or two, rendering existing ones obsolete. Software people had to rewrite all their programs to run on these new machines. Programmers did not have computers on their desks and had to go to the "machine room". Jobs were run by putting punched cards for input into the machine's card reader and waiting for results to come back on the printer. The field was so new that the idea of management by schedule was nonexistent. Making predictions of a project's completion date was almost impossible. Computer hardware was application-specific. Scientific and business tasks needed different machines. Due to the need to frequently translate old software to meet the needs of new machines, high-order languages like FORTRAN and COBOL etc were developed. 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. The notion of reuse flourished. As software was free, user organizations commonly gave it away. Groups like IBM's scientific user group SHARE offered catalogs of reusable components. Slide 5

1945 to 1965: The origins ●







The term software engineering first appeared in the late 1950s and early 1960s. Programmers have always known about civil, electrical, and computer engineering and debated what engineering might mean for software. The NATO Science Committee sponsored two conferences on software engineering in 1968 and 1969 in Germany, which gave the field its initial boost. Many believe these conferences marked the official start of the profession of software engineering.

Slide 6

1965 to 1985: The software crisis ●







Software engineering was provoked (inflamed) by the socalled software crisis of the 1960s, 1970s, and 1980s, which identified many of the problems of software development. Many software projects ran over budget and schedule. Some projects caused property damage. A few projects caused loss of life. The software crisis was originally defined in terms of productivity, but evolved to emphasize quality. Some used the term software crisis to refer to organization inability to hire enough qualified programmers.

Slide 7

1965 to 1985: The software crisis (cont) ●





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

Slide 8

1985 to 1989: No silver bullet ●



For decades, solving the software crisis was dominant to researchers and companies producing software tools. Seemingly, they announced and boost every new technology and practice from the 1970s to the 1990s as a silver bullet to solve the software crisis.

Slide 9

1985 to 1989: No silver bullet (cont) ●











Tools, discipline, formal methods, process, and professionalism were touted (plug) as silver bullets: Tools: Especially emphasized were tools: Structured programming, objectoriented programming, CASE tools, Java, documentation, and standards were touted as silver bullets. Discipline: Some experts 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 10

1990 to 1999: Prominence of the Internet ●









The rise of the Internet led to very rapid growth in the demand for international information display/e-mail systems on the world wide web. Programmers were required to handle illustrations, maps, photographs, and other images, plus simple animation, at a rate never before seen, with few well-known methods to optimize image display/storage (such as the use of thumbnail images). The growth of browser usage, running on the HTML language, changed the way in which information-display and retrieval was organized. The wide-spread network connections led to the growth and prevention of international computer viruses on MS Windows computers, and the vast explosion of spam e-mail became a major design issue in e-mail systems, flooding communication channels and requiring semi-automated pre-screening. Keyword-search systems evolved into web-based search engines, and many software systems had to be re-designed, for international searching, depending on Search Engine Optimization (SEO) techniques. Human natural-language translation systems were needed to attempt to translate the information flow in multiple foreign languages, with many software systems being designed for multi-language usage, based on design concepts from human translators. Typical computer-user bases went from hundreds, or thousands of users, to, often, many-millions of international users.

Slide 11

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. Very large software systems still used heavily-documented methodologies, with many volumes in the documentation set; however, smaller systems had a simpler, faster alternative approach to managing the development and maintenance of software calculations and algorithms, information storage/retrieval and display.

Slide 12

Prominent Figures in the History of Software Engineering ● ● ●



● ● ● ● ●

● ● ●

Ken Thompson (inventor of Unix) Dennis Ritchie (inventor of C) Brian Kernighan (co-author of the first book on the C programming language with Dennis Ritchie, coauthor of the AWK and AMPL programming languages) Bill Joy (inventor of vi, early author of BSD Unix, and originator of SunOS, which became Solaris) Anders Hejlsberg (developer of Turbo Pascal) John Von Neumann (originator of the operating system concept) John Backus (inventor of Fortran) Bjarne Stroustrup (developer of C++) Alan Kay (pioneering work on object-oriented programming: Originator of Smalltalk) James Gosling (developer of Oak, the precursor of Java) Alan Cooper (developer of Visual Basic) Tony Williams (co-inventor of COM - interesting interview)

Slide 13

Software costs ●





Software costs often dominate system costs. The costs of software on a PC are often greater than the hardware cost Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs Software engineering is concerned with costeffective software development Slide 14

What is software? ●

Computer programs and associated documentation (plus configuration data and user training)

Software products may be developed for a particular customer or developed for a general market • •

Generic (general) - developed to be sold to a range of different customers Bespoke (custom-built) - developed for a single customer according to their specification

Slide 15

What are the attributes of good software? ●



The software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable Maintainability •



Dependability •



Software must be trustworthy

Efficiency •



Software must evolve to meet changing needs

Software should not make wasteful use of system resources

Usability •

Software must be usable by the users for which it was designed

Slide 16

...attributes of good software (these two are not always required) ● Robustness • ●

Software should fail only under extreme conditions

Portability •

Should be possible to move from one environment to another

Slide 17

The software crisis ●

Advances in hardware technologies made it possible to build powerful computers •





This allowed building of more complex and powerful software

Existing software development methodologies were not capable of handling such large projects. Hence projects had many problems: • • • •

Over budget Late delivery Requirements not met Poor usability

Slide 18

What is software engineering? ●



Software engineering is an engineering discipline which is concerned with all aspects of software production (Sommerville, 2001). 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.

Slide 19

What is the 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

Slide 20

Why does a software engineer need to understand system engineering aspects? ●





Many software systems are part of a larger system System engineering decisions have direct impacts on software Many systems now have lots of software parts

Slide 21

What is a software process? ●



A set of activities and associated results whose goal is the development or evolution of a software product Generic (general) activities in all software processes are: • • • •

Specification - what the system should do and its development constraints Development - production of the software system Validation - checking that the software is what the customer wants Evolution - changing the software in response to changing demands

Slide 22

What are software engineering methods? ●



Structured approaches to software development which include system models, notations, rules, design advice and process guidance Model descriptions •



Rules •



Constraints applied to system models

Recommendations •



Descriptions of graphical models which should be produced

Advice on good design practice

Process guidance •

What activities to follow

Slide 23

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

Slide 24

What are the costs of software engineering? ●



Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs Costs vary depending on • •



the type of system being developed and the requirements of system attributes such as performance and system reliability

Distribution of costs depends on the development model that is used

Slide 25

What are the key challenges facing software engineering? ●



Coping with legacy (old) systems, coping with increasing diversity (variety) and coping with demands for reduced delivery times Legacy systems •



Heterogeneity •



Old, valuable systems must be maintained and updated

Systems are distributed and include a mix of hardware and software

Delivery •

There is increasing pressure for faster delivery of software

Slide 26

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 (moral, principled) responsible way if they are to be respected as professionals.

Slide 27

Issues of professional responsibility ●

Confidentiality •



Engineers should normally respect the confidentiality (privacy) 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 (capability). They should not knowingly accept work which is outside their competence.

Slide 28

Issues of professional responsibility ●

Intellectual property rights •



Engineers should be aware of local laws governing the use of intellectual (scholar) property such as patents (exclusive rights), 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 (distribution) of viruses).

Slide 29

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 and leaking out confidential information to the others.

Slide 30

Related Documents

Week4
April 2020 10
Slide 1
October 2019 22
Slide 1
May 2020 28
Slide 1
November 2019 18
Slide 1
December 2019 21
Slide 1
December 2019 22