21
CSCI 6231: Software Engineering Instructor: Morris Lancaster

CSCI 6231: Software Engineering Instructor: Morris Lancaster

Embed Size (px)

Citation preview

Page 1: CSCI 6231: Software Engineering Instructor: Morris Lancaster

CSCI 6231: Software Engineering

Instructor: Morris Lancaster

Page 2: CSCI 6231: Software Engineering Instructor: Morris Lancaster

CSCI 6231 Lecture 0 2

Web Page

http://www.seas.gwu.edu/~mlancast/csci6231

Page 3: CSCI 6231: Software Engineering Instructor: Morris Lancaster

CSCI 6231 Lecture 0 3

Instructor

Morris Lancaster – (703) 400 6408

[email protected]

– Office hours by appointment

Page 4: CSCI 6231: Software Engineering Instructor: Morris Lancaster

CSCI 6231 Lecture 0 4

SWE Courses

• Domain Specific– Aeronautical/Aerospace

• Level of Detail/Process Oriented– Overview course from a civil/environmental eng. Dept

– Elements of Software Construction from a CS department

Page 5: CSCI 6231: Software Engineering Instructor: Morris Lancaster

CSCI 6231 Lecture 0 5

Openly Available Resources

• Software Engineering Courses/Course Notes– MIT Open Courseware

– Open Software Engineering

– Free Open Courseware Page

• Open Source Tools– At the Development Level Another

– At the Project Management Level Another

• Professional Societies– Association for Computing Machinery SigSoft

– IEEE

Page 6: CSCI 6231: Software Engineering Instructor: Morris Lancaster

CSCI 6231 Lecture 0 6

Software Engineering

“the application of engineering to software” – IEEE Std 610.12 -1990, Standard Glossary of Software Engineering Terminology (ANSI)

“the multi-person construction of multi-version software” - Parnas

Page 7: CSCI 6231: Software Engineering Instructor: Morris Lancaster

CSCI 6231 Lecture 0 7

Course Approach

Present the background body of knowledge found in the text

Use a team project to provide some hands on experience for a development effort (the teams will define, estimate, plan, provide management reviews, develop, test, implement and present their projects)

Page 8: CSCI 6231: Software Engineering Instructor: Morris Lancaster

CSCI 6231 Lecture 0 8

Programming versus Software Engineering

Programming – a personal activityStructured programming did not solve our problems

Software Engineering – team activity

Software Engineers emerged (honest brokers, heroes, and snake oil salesmen)

Page 9: CSCI 6231: Software Engineering Instructor: Morris Lancaster

CSCI 6231 Lecture 0 9

Role of Software Engineering

In overall system designSoftware is a component of larger systems

Software engineers now participate in the design of the whole system (some arrogance among systems engineers still remains, which often times pushes them on to the next project before the roof caves in)

Page 10: CSCI 6231: Software Engineering Instructor: Morris Lancaster

CSCI 6231 Lecture 0 10

Software Engineering Choices

Trade-off

Hardware, software, or elbow wear

Compromise

Good, fast, cheap (pick 2)

Performance, schedule, cost

Page 11: CSCI 6231: Software Engineering Instructor: Morris Lancaster

CSCI 6231 Lecture 0 11

Software Engineering Environment

Risk

Cost

Schedule

Performance

We hope to address some principles that will withstand the changes in how we develop large software products

Page 12: CSCI 6231: Software Engineering Instructor: Morris Lancaster

CSCI 6231 Lecture 0 12

Software Engineering History

In the beginning was the machine language programmer who addressed well understood problems that had to be solved quickly

Computers became cheaper and high level languages emerged

- programming became a profession

- user and programmer became separate

- user wrote specification and programmer implemented

- still very few large projects

- reuse through subroutines

Page 13: CSCI 6231: Software Engineering Instructor: Morris Lancaster

CSCI 6231 Lecture 0 13

Software Engineering History

1960’s - MIT (MULTICS Project) link link- IBM OS 360 (Over 1 staff century of labor)

-- Fred Brooks – Mythical Man Month link- Scaling of development efforts was difficult - folklore- Structured Programming – Harlan Mills- The problems being solved were not well understood (lots of basic research in operating systems conducted)- Basic concepts emerged, reuse through libraries, modularity, pathological coupling (later used in structured design)

Page 14: CSCI 6231: Software Engineering Instructor: Morris Lancaster

CSCI 6231 Lecture 0 14

Software Engineering History

1970’s - Even cheaper computers micro mini- Range of problems attacked grew- Many failures- Emergence of structured design

-- cohesion-- coupling

- Team efforts addressed- Still much communication by folklore

Page 15: CSCI 6231: Software Engineering Instructor: Morris Lancaster

CSCI 6231 Lecture 0 15

Software Engineering History

1980’s - Even cheaper computers and larger number of programming languages- DoD attempts to solve manpower problems by mandating Ada- In the programming genre encapsulation and abstract data types emerged- Serious metrics and whole life cycle methodologies emerged

Page 16: CSCI 6231: Software Engineering Instructor: Morris Lancaster

CSCI 6231 Lecture 0 16

Software Engineering History

1990’s - Even cheaper computers, industry settles on C/C++, Academia uses C++ and moves toward Java, Ada all but dies- Java language was developed- Industry products developed that incorporated business logic (the reuse concept that began with subroutines, matured with abstract data types and object oriented development, was now applied to whole areas of business)- Whole life cycle methods continued, new development concepts emerge to break the long time frame of the waterfall model – rapid prototyping, agile development- Components emerge from middleware

Page 17: CSCI 6231: Software Engineering Instructor: Morris Lancaster

CSCI 6231 Lecture 0 17

Engineering

- The solution to an engineering construction or design problem can either be visualized, or is the result of a selection from a possible set of alternatives that can be “constructed” directly by piecing together components with known characteristics and capabilities. (We can visualize a house, draw a scale model, pick the appropriate components to meet the underlying requirements at each point, and produce a result.

Page 18: CSCI 6231: Software Engineering Instructor: Morris Lancaster

CSCI 6231 Lecture 0 18

The Software Life Cycle

- Requirements Analysis and Specification (expressed in some form A)

- System Design and Specification (expressed in form A and B)- Coding and Testing (results in a program and the necessary

artifacts to document the program, expressed in form C)- Integration and system testing (parts are put together and tested,

test results communicated in form D)- Delivery and Maintenance (system is operational, with changes

to remove defects and meet new requirements)(THE WATERFALL MODEL)

How do we connect these representations so that the transitions can be verified?

Page 19: CSCI 6231: Software Engineering Instructor: Morris Lancaster

CSCI 6231 Lecture 0 19

Relationship of SWE to Other Areas of Computer Science

Programming Languages- modularity, encapsulation, reuse

Operating Systems- virtual machines, portable OS

Databases- most computation is processing information

Artificial Intelligence- large, complex, and not fully understood systems were developed

Theoretical Models- from 210, remember the logical and algebraic paradigms,

Page 20: CSCI 6231: Software Engineering Instructor: Morris Lancaster

CSCI 6231 Lecture 0 20

Relationship of SWE to Other Disciplines

Management Science

As much of an oxymoron as software engineering? Not really, the difficulty is in understanding the degree of precision with which we can work.

Systems Engineering

Leave the difficult problems for the software?

Page 21: CSCI 6231: Software Engineering Instructor: Morris Lancaster

CSCI 6231 Lecture 0 21

Chapter 1

Some Key Points of Chapter 1- Two kinds of challenges in software development, essential and accidental

-- accidental problems can be remedied-- essential problems are more of an issue

- Complexity is our enemy, it increases risk-- complexity of the problem-- complexity due to size of project