Introduction to Software Engineering:
Course Introduction and Administrivia
Dr. Vojislav B. Mišiċ
Overview of the first week
Me, myself, and I (very very briefly)
What is Software Engineering and why study it?
Course information and administrivia
Software development lifecycle models
Who am I? How to get in touch?
Vojislav B. Mišiċ, a.k.a. dr. Voja (pronounced Voh-ya)
The easiest way to reach me: send email to email@example.com
(which I check often … very often … perhaps even too often –
that is, several times per day)
I'm usually in the office (ENG279) every day from something like
9 or 10 am to 4 pm, so feel free to drop by
Note: it helps ENORMOUSLY to email first for an appointment
What and Why
What Are We Going To Talk About
Description of CPS406 Introduction to Software Engineering from
the official guide says:
This course introduces the study of Object-Oriented software
engineering. Topics include software project management,
requirements gathering, requirements analysis, modeling, design,
implementation and testing. UML diagrams and design patterns are
also discussed. A major portion of the course is a team project,
taking a system from the initial requirements to the final
implementation. (2 hr Lab every other week).
Software Is Programming, Right?
Writing a program is easy …
Developing a software product is hard …
Developing high quality software product is even harder
Software has to be good, cheap, and fast – but experience has
shown that you can independently pick at most two of these (Brooks
In fact, most software projects are delivered late, exceed the budget,
and don’t provide the required functionality (in many cases, all of the
symptoms are present)
…which is why the term “software crisis” is quite frequently used
since the 1968 NATO symposium in Germany
Why Software Needs Engineering
High-quality software products are effective (they perform according
to specifications) and efficient (they do it well) and provide value for
Or at least we’d like them to be efficient and effective and to provide
Now, planes, trains, and automobiles are generally effective and
efficient and provide value
As these are engineering products built mostly on time, within
budget, and to specifications, the obvious conclusion is that we
should try to
Make Software Development an engineering discipline
Great Idea! Right?
Well, yes and no
On the plus side, software development could benefit from
Yet software is different from planes, trains, and you-know-what (as
you probably know, but I’ll take the liberty to remind you
Therefore, the process of designing and building software must
differ from the process of designing and building planes, trains, and
In fact, maybe Software Engineering is not really engineering?
Perhaps it should be Software Craft?
Or even Software Art? How About Software Magic?
So What is Software Engineering?
Application of (appropriate) engineering practice(s) to software
Treating computers and all related stuff as problem-solving tools to
design and implement solutions to business problems
Application of a systematic, disciplined, quantifiable approach to the
development, operation, and maintenance of software (IEEE 1990)
Multi-person construction of multi-version software (Parnas 1978)
Me, myself, and i (very very briefly) Vojislav b. mi i , a. k. a. dr. voja (pronounced voh-ya) The easiest way to reach me: send email to vmisic@scs. ryerson. ca (which i check often very often perhaps even too often that is, several times per day) I"m usually in the office (eng279) every day from something like. 9 or 10 am to 4 pm, so feel free to drop by. Note: it helps enormously to email first for an appointment. Description of cps406 introduction to software engineering from the official guide says: This course introduces the study of object-oriented software engineering. Topics include software project management, requirements gathering, requirements analysis, modeling, design, implementation and testing. Uml diagrams and design patterns are also discussed. A major portion of the course is a team project, taking a system from the initial requirements to the final implementation. (2 hr lab every other week). Developing a software product is hard .