1 cs 501 spring 2003 cs 501: software engineering lecture 25 people ii

31
1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

Upload: shana-green

Post on 18-Jan-2016

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

1 CS 501 Spring 2003

CS 501: Software Engineering

Lecture 25

People II

Page 2: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

2 CS 501 Spring 2003

Course Administration

Quizzes

Quiz 5 is on ThursdayCollect Quiz 4 after lecture

Next week

Final lecture is TuesdayPresentations on Thursday and Friday

Page 3: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

3 CS 501 Spring 2003

From Lecture 1:Overall Aim of the Course

We assume that you are technically proficient. You know a good deal about computing, can program reasonably, can learn more on the job.

When you leave Cornell, you are going to work on production projects where success or failure costs millions of dollars.

Soon you will be in charge! It may be your money!

We want you to make your mistakes now and learn from your mistakes.

Page 4: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

4 CS 501 Spring 2003

From Lecture 1:Future Experience

What will you be doing one year from now?

Ten years from now?

Page 5: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

5 CS 501 Spring 2003

Future Experience

What will you be doing one year from now?

Ten years from now?

1. Careers outside computing

2. Careers in which you personally continue to do technical work

3. Careers in which you are responsible for the technical work of others

Page 6: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

6 CS 501 Spring 2003

Careers outside Computing

A computing background can be valuable in any career: management, government, law, medicine, philanthropy, etc.

Education in computing is an asset:

• Computing is a vital part of almost every organization

• Education in logical thinking, tackling large tasks systematically

Education in computing is a potential weaknesses:

• Not every problem can be solved by rational thinking

• Importance of skills with people, judgment, etc.

Page 7: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

7 CS 501 Spring 2003

Technical Careers

Super-technical positions

A very few senior positions which are almost entirely technical:e.g., industrial research, universities

Even these have substantial organizational aspects

Mid-level technical positions

Numerous mid-level professional positions

Can be state-of-the-art or dead-end

Computer professional report satisfaction with their choice of careers

Page 8: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

8 CS 501 Spring 2003

Careers that take responsibility for the Technical Work of Others

A common career progression is from doing the technical work to leading others who do technical work

Senior personnel must be familiar with both the strategic organizational aspects and the computing aspects of the work, e.g.,

EntrepreneurChief Information OfficerSenior consultant

• Does not require detailed technical expertise

• Requires organizational, personnel, financial expertise

Page 9: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

9 CS 501 Spring 2003

Flexibility

Nobody knows where computing will go in the future, but …

If you do not learn continuously, you are going out of date fast!

• Go to seminars, conferences, training courses

• Be inquisitive – discover things for yourself

Technical expertise is most valuable when combined with other skills

• Understand the organization that you are part of, e.g., budgets, marketing.

• Develop organizational skills, e.g., presentations, writing, leadership

Page 10: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

10 CS 501 Spring 2003

Software Development as a Profession

Question: Is software development a branch of engineering?

Answer: It depends on how you define engineering.

Software development demands a high degree of

professionalism.

Page 11: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

11 CS 501 Spring 2003

From Lecture 1:The Craft of Software Development

Software products are very varied

--> Client requirements are very different

--> There is no standard process for software engineering

--> There is no best language, operating system, platform, database system, development environment, etc.

A skilled software developer knows about a wide variety of approaches, methods, tools. The craft of software engineering is to select appropriate methods for each project and apply them effectively.

Page 12: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

12 CS 501 Spring 2003

Crafts, Science, Engineering

Production

Craft

Commercial

Science

ProfessionalEngineering

From: Shaw and Garlan

Page 13: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

13 CS 501 Spring 2003

Crafts, Science, Engineering

Production

Craft

Commercial

Science

ProfessionalEngineering

From: Shaw and Garlan

algorithmsdata structures

compiler construction

software developmentmethodologies

Page 14: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

14 CS 501 Spring 2003

Professionalism: Software Process

Fundamental Assumption:

Good processes lead to good software

Good processes reduce risk

Good processes enhance visibility

Page 15: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

15 CS 501 Spring 2003

Software Engineering Institute Capability Maturity Model

1. Initial -- no effective management processes

2. Repeatable -- requirements management, project planning, scheduling and tracking, quality assurance, configuration control

3. Defined -- conformity to defined processes, design and code reviews, communication procedures, personnel development

4. Managed -- software quality management, quantitative process management

5. Optimizing -- continuous improvement of processes

Question: What is the evidence that the Capability Maturity Model reflects effective Software Engineering?

Page 16: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

16 CS 501 Spring 2003

From Lecture 1:Professional Responsibility

Organizations put trust in software developers:

• Competence: Software that does not work effectively can destroy an organization.

• Confidentiality: Software developers and systems administrators may have access to highly confidential information (e.g., trade secrets, personal data).

• Legal environment: Software exists in a complex legal environment (e.g., intellectual property, obscenity).

• Acceptable use and misuse: Computer abuse can paralyze an organization (e.g., the Internet worm).

Page 17: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

17 CS 501 Spring 2003

An Old Question: Safety Critical Software

A software system fails and several lives are lost. An inquiry discovers that the test plan did not consider the case that caused the failure. Who is responsible:

(a) The testers for not noticing the missing cases?

(b) The test planners for not writing the complete test plan?

(c) The managers for not having checked the test plan?

(d) The customer for not having done a thorough acceptance test?

Page 18: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

18 CS 501 Spring 2003

Client Responsibility

• Organization culture that expects quality

• Appointment of suitably qualified people to vital tasks (e.g., technical team that will build a critical system)

• Reviewing requirements and design carefully

• Establishing and overseeing the acceptance process

• Providing time and incentives that encourage quality work

• Working closely with the software team

Accepting responsibility for the resulting product

Page 19: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

19 CS 501 Spring 2003

Computing Management Responsibility

• Organization culture that expects quality

• Appointment of suitably qualified people to vital tasks (e.g., testing safety-critical software)

• Establishing and overseeing the software development process

• Providing time and incentives that encourage quality work

• Working closely with the client

Accepting responsibility for work of team

Page 20: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

20 CS 501 Spring 2003

Software Developers and Testers: Responsibilities

• Carrying out assigned tasks thoroughly and in a professional manner

• Being committed to the entire project -- not just tasks that have been assigned

• Resisting pressures to cut corners on vital tasks

• Alerting colleagues and management to potential problems early

Page 21: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

21 CS 501 Spring 2003

What is Engineering?

A definition of engineering

The profession of:

... creating cost-effective solutions ...

... to practical problems ...

... by applying scientific knowledge ...

... and established practices ...

... building things ...

and taking responsibility for them!

With this definition, software development is clearly engineering

Page 22: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

22 CS 501 Spring 2003

What is Engineering?

A second definition of engineering

A professional who

… is licensed by a professional society

… based on a set educational program with a standard body of knowledge and specified experience

… who is the only person permitted to oversee certain tasks

If this is your definition of engineering it is hard to see it applied to software development

Page 23: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

23 CS 501 Spring 2003

Engineers, Texas and the ACM

• Proposal in the Texas legislature to license professional engineers in Software Engineering

• What role should the ACM play?

Page 24: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

24 CS 501 Spring 2003

From the National Society of Professional Engineers

• Only a licensed engineer may prepare, sign and seal, and submit engineering plans ... for public and private clients.

• Licensure for individuals ... is a legal requirement for those who are in responsible charge of work, ...

• Federal, state, and municipal agencies require that certain [positions] ... be filled only by licensed professional engineers.

• Many states have been increasingly requiring that those individuals teaching engineering must be licensed.

• State engineering boards are increasingly ... obtaining the authority to impose civil penalties against unlicensed individuals.

Page 25: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

25 CS 501 Spring 2003

Software Engineering as Engineering?

• Part craft -- part engineering

• Embryonic scientific basis

• Evolving body of expertise

ACM conclusion: Software Engineering is in too much of a craft, too uncertain, and changing too much for the apparatus of a profession

• Who has the expertise to define a formal Body of Knowledge?

• What would be in an accreditation exam?

Page 26: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

26 CS 501 Spring 2003

Professionalism: Planning for the Final Presentation

Questions for every presentation

1. Who is the audience? What do they want?

2. What do you want to achieve?

3. How much time do you have? How much can you cover?

4. What facilities are in the room? Who should be there?

5. What materials should you prepare?

6. Do you need a rehearsal?

Page 27: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

27 CS 501 Spring 2003

Who is the Audience? What do they Want?

Clients

The clients have invested effort in this project:

• Is it ready for production?

• Should they invest more effort to bring it into production?

• Should they abandon the project?

Course team

• What has been accomplished? What has been learned?

• Is the client satisfied?

• Are you handing over a maintainable system?

Page 28: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

28 CS 501 Spring 2003

What do You want to Achieve?

• Personal and team satisfaction in handing over a good piece of work to the client

• Complete the course in good style with good grade

• A clean handover without loose ends

Perhaps: a good basis for future involvement with the client, team, or this project

Page 29: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

29 CS 501 Spring 2003

How much Time do You Have?How much can You Cover?

Plan for 45 minutes total. You should cover:

Presentation:

• Brief review of goals

• Honest summary of achievements and gaps

• Summary of what is being delivered

Demonstration of operational system:

• Show the system in operation

• Be honest about gaps, weaknesses, etc.

Time for discussion

Page 30: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

30 CS 501 Spring 2003

What Materials should you Prepare?

When you leave, all that the client has is your documentation and your software. Imagine that you work for the client and are asked to take over this system. You would want:

• An overview that describes the system goals, architecture, state of implementation and future work

• Documentation of requirements and design

• Source code, installation instructions and information about installed system

• User instructions

• Business documentation

Materials can be in any form, need not be huge, but must be current.

Page 31: 1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 25 People II

31 CS 501 Spring 2003

Do you need a Rehearsal?

You need a rehearsal

• Will you have a single presenter, a moderator, or with each presenter handing to the next?

• Decide on the running order of the presentation and stick to it.

• When will you take questions?

• How will manage the time? Who will take notes?

Do not change the system after the rehearsal !