ArticlePDF Available

Putting the Engineering into Software Engineering Education

Authors:

Abstract

Based on over 20 years of teaching and research experience, the author provides his assessment of software engineering education. He then builds on the analysis to provide recommendations on how we need to diverge from computer science to increase our impact, gain credibility, and ultimately ensure the success and recognition of our young discipline. A key behind the author's message is that we need to become a true engineering discipline.
96 IEEE SoftwarE | publIShEd by thE IE EE comput Er SocIE ty 0740 -7459 /13/ $ 31.0 0 © 2 013 I EE E
Editor: Neil Maiden
City Un iversit y London,
n.a.m.maiden@city.ac.uk
Editor: Philippe Kruchten
University of British Columbia
pbk@e ce.ubc.ca
Sounding Board
I RECENTLY READ a paper about software en-
gineering research,1 and once again discovered
that its author, Lionel Briand, had published
“my” ideas before I wrote them. Thankfully,
his writing often stimulates further think-
ing, and this was no exception. His visionary
thoughts on software engineering research
started me thinking, but in terms of software
engineering education rather than research.
Briand wrote about the “paradox of be-
ing both highly relevant and increasingly un-
derfunded and discredited.” Personally, I’ve
found that software engineering research
gets more respect every year, although the
funding is abysmally low, at least in the US.
This article argues that software engineering
is not given enough relevance or support in
higher education.
Research and Education
I’ve been a researcher in software engineer-
ing for more than 25 years, but I’ve also been
an educator. I taught my rst software engi-
neering course as a graduate student in 1985,
a standard undergraduate survey course. I
joined my current university, George Ma-
son, in 1992, partly because it had a full
MS program in software engineering that
was distinct from computer science. I’ve led
this large successful program since 2003 and
helped create software engineering concen-
trations in our PhD program (2000) and in
our undergraduate applied computer science
program (2010). Along the way, I’ve cre-
ated over a dozen new software engineer-
ing courses, many of which had never been
taught anywhere and had to be designed
without adequate textbooks or other mate-
rials. This wealth of experience in software
engineering education lets me see things dif-
ferently from many of my colleagues.
Briand wrote a sentence that I’ve said
many times: “Software engineering isn’t a
branch of computer science; it’s an engineer-
ing discipline relying in part on computer sci-
ence, in the same way that mechanical engi-
neering relies on physics.”
Some of my colleagues respond by say-
ing, “Well, of course,” but many traditional
CS professors think it’s almost heretical. In
this old-fashioned view, software engineer-
ing has always been part of computer science
and always will be. But things change. This
analogy has been 100 percent convincing to
my colleagues in civil engineering, electrical
engineering, and other traditional engineer-
ing disciplines.
Differentiating Software Engineering
from Computer Science
If software engineering isn’t a branch of
computer science, then we must ask prac-
ticing software engineers what they need to
know that they don’t learn as part of CS de-
grees. Most computer science undergradu-
ate students take one software engineering
class, typically with a week or two spent on
each phase in the traditional waterfall life-
cycle model. A lot of the semester is devoted
to process theory. It’s worth noting that in
modern software engineering projects, the
Putting the Engineering
into Software Engineering
Education
Jeff Offutt
continued on p. 94
94 IEEE SoftwarE | www.computEr.org/SoftwarE
Sounding Board
traditional waterfall model is almost
never used, and the ideas about pro-
cess change constantly—often much
faster than textbooks or instructors’
knowledge. Moreover, as David Par-
nas asserts, process must be shown, not
taught, by mentoring young engineers
through actual projects.2
This answers what CS students learn
about software engineering, but what
useful knowledge are they not learning?
It turns out that this is an easy question
with lots of answers: usability, testing,
security, design modeling, project man-
agement, quality control, standards,
architecture, embedded applications,
evolution, Web applications, ethics, and
so on. The list constantly changes. Yes,
CS students learn a little about some of
these topics—for example, they spend
about one week on testing in a semester-
long class. But is a week really enough
for an activity that consumes well over
50 percent of the effort in large soft-
ware engineering projects?3
I like to ask my students a question:
What is your expected job title when
you graduate? If they know anything
about the computing eld, they don’t say
“computer scientist.” Most answer cor-
rectly, “software engineer.” Isn’t it just
a little strange that we prepare software
engineers by teaching them computer
science? This fact alone should obviously
imply that we either need computer sci-
ence programs to include more software
engineering or more software engineer-
ing degrees. After all, nobody would
argue that students study physics to be-
come mechanical engineers!
Although both approaches would be
an improvement, I believe that CS edu-
cation shouldn’t change to include more
software engineering. Rather, I agree
that they should continue to diverge.
Software Engineering Is
Engineering, Not Science
Can you imagine mechanical engineer-
ing being part of physics? Can you
imagine ME faculty performing re-
search within the physics department?
Can you imagine an ME program our-
ishing within the connes of a physics
department? You probably can’t, but
that’s where it originated.
Over a century ago, universities
had some departments and programs
in physics that taught really practical
applications in physics, such as how
to use principles from physics to build
bridges, dams, cars, airplanes, and
electrical circuits. Over time, phys-
ics ssioned into elds now known as
mechanical engineering, civil engineer-
ing, electrical engineering, mining engi-
neering, aerospace engineering, and a
host of others. The process continues,
but from our 21st-century perspec-
tive, it’s now obvious that engineering
elds are different pedagogically and
should be taught differently from phys-
ics. It’s equally obvious that the hun-
dreds of thousands of engineering stu-
dents should take three or four courses
in physics and even more in math. This
is why my employer, George Mason
University, has a successful and long-
lasting MS program in software engi-
neering and, more recently, a BS con-
centration in software engineering.
So how exactly does software edu-
cation differ from computer science
education? The most obvious is in top-
ics; the list in the earlier paragraph is
much of what we should teach in soft-
ware engineering programs. Software
engineering education also must focus
on multiple quality attributes—not just
efciency, but reliability, scalability, se-
curity, availability, maintainability, and
usability. Good engineering is also about
making the right tradeoffs based on
contextual requirements, which CS stu-
dents aren’t taught. Parnas emphasized
that engineering students should learn
applications and how to build complete
products, as opposed to how to conrm
known facts and extend knowledge.2
Another aspect that differentiates
software engineering is that it needs
to include noncomputing topics other
than CS. Software is part of larger sys-
tems, so we need systems engineering.
Software is developed by teams, so we
need project management. Software
must be high quality, so we need statis-
tical quality control. Deeper differences
can affect not just what we teach but
how we teach. Traditional CS courses
emphasize single solutions, developed
by students working alone, and evalu-
ated primarily by efciency. This ap-
proach doesn’t work for engineering.
Three Principles for Teaching
Software Engineering
Computer science, with its strong roots
in mathematics, is usually taught using
“convergent thinking,” meaning prob-
lems have one answer and successful stu-
dents should tend toward that answer.
Engineering, however, especially soft-
ware engineering, needs divergent think-
ing, where multiple answers are possible
and the most successful students should
continued from p. 96
Process must be shown,
not taught, by mentoring young
engineers through actual projects.
January/fEbruary 2013 | IEEE SoftwarE
95
Sounding Board
nd a solution that’s unique from other
students’ solutions. Divergent thinking
is encouraged by assigning problems
that have many solutions.
In CS, traditionalists become ada-
mant supporters of “individual learn-
ing,” discouraging cooperation at all
costs. This is partly because instructors
worry about plagiarism—not surpris-
ing since computers make it so very easy
to copy. Thus, a side effect of spending
so much energy discouraging cheating
is that we alienate the educational, em-
powering benets of collaboration and
social processes. Practical software en-
gineering is an extremely collaborative
discipline, and I’ve found that software
engineering students are best taught
with collaborative learning. Students
should be encouraged to work together,
to solve problems together, and to learn
together. Instead of focusing exclusively
on discouraging plagiarism, we should
encourage students to learn more by
learning together. Students learn more
through collaboration than competition!
Computer science projects and home-
work assignments tend to be assessed
on a uniform scale that measures every
student’s work with the same yardstick.
But in engineering, especially software
engineering, the notion of what will suc-
ceed often varies depending on the con-
text, including users, market, platform,
and release date. This suggests that we,
as educators, should use differentiated
assessments. Instead of every student
trying to accumulate exactly the same
points for the same requirements, we
could offer a menu of potential features
and attributes for students to choose
from, each of which accumulates some
number of points.
Clearly, if software engineer-
ing is really the “best job,”4
and employment is continuing
to increase throughout the great reces-
sion with no end in sight, universities
must shift from a computer “science”
focus to a software engineering focus.
Universities should create more under-
graduate software engineering degrees.
If that’s not possible, undergraduate CS
programs should add more software
engineering—a one-semester course is
clearly insufcient. Physics is still go-
ing strong, and society still needs physi-
cists. But what’s the ratio of engineers
to physicists—100 to 1? 1,000 to 1?
Also, when we teach software engi-
neering, we must remember that diver-
gent thinking and collaborative learning
are essential abilities for practicing en-
gineers, and differentiated assessment is
essential for teaching software engineer-
ing. I’ve successfully used all of these
techniques in my classes, and so can
you. As software engineering continues
to move out of the shadow of CS to es-
tablish itself as a separate, independent
discipline, industry will be more satis-
ed with our graduates, and companies
will create more high-quality software.
Don’t we owe this to society?
Acknowledgments
I’m grateful to Lionel Briand, R ich LeBlanc,
Paul Ammann, and Stephanie Offutt for
helping me rene my thinking on this topic.
References
1. L. Briand, “Embracing the Engineering Side of
Software Eng ineer ing,” IEEE Software, vol.
29, no. 4, 2012, pp. 93–96 .
2. D. Parnas, “Software Engineering Progra ms
Are Not Computer Sc ience Programs,” IEEE
Software, vol. 16, no. 6, 1999, pp. 19–30.
3. B. Boehm, Software Engineering Economics,
Prentice-Hall, 1981.
4. Y. Klugerm an, “Softwa re Engi neer Ranked
Best Job for 2011,” Brain Track, Jan. 2011;
www.braintrack.com/college-and-work-news/
articles/software-engineer-ranked-best-job
-for-2 011-11010502.
JEFF OFFUTT is professor and director of the
software engineering M S program at George Mason
Universit y. He received the Best Teacher Award from
GMU’s Volgenau S chool of Engineering in 2003 and
coauthored the textbook Introduction to Software
Testing (Cambridge University Press, 2008). Offut t
is co-editor in chief of Wiley’s Software Testing,
Verication, and Reliability and one of the founders
of the IEEE International Conference on Software
Testing, Verication, and Validation. Contact him at
offutt@gmu.edu.
IEEE Software (ISSN 0740 -7459) is published bi monthly by the IE EE Computer So-
ciety. IEEE headquarters: Th ree Park Ave., 17th Floor, New York, N Y 10016-5997.
IEE E Computer Soci ety Publicat ions Ofce: 10 662 Los Vaqueros Cir., L os Alamitos ,
CA 90720; +1 714 821 8380; fax +1 714 821 4010. IEEE Computer Society head-
quart ers: 2001 L St., Ste . 700, Washington , DC 20036. Subscription rates: IE EE
Computer S ociet y members get the lowest rate of US$56 per yea r, which includes
printed issues plu s online acces s to all issues publi shed since 1984. Go to www.com -
puter.org /subscribe to order a nd for more informat ion on other subscription prices.
Back iss ues: $20 for membe rs, $209.17 for nonmembe rs (plus shipping a nd handlin g).
Postmaster: Send undelivered copie s and address changes to IE EE Software, Mem-
bership Proces sing Dept., IE EE Ser vice C enter, 445 Hoes Lane, Piscataway, NJ
08854-4141. Periodic als Post age Paid at Ne w York, NY, and at additional m ail-
ing of ces. Ca nadia n GST #12 5634188. Canada Post Publications Mail Agreement
Number 4 0013885. Re turn undeliverable Canadian addresses to PO Box 12 2, Ni-
agara Falls, ON L 2E 6S8 , Canada. Print ed in the U SA.
Reuse Ri ghts and Repri nt Perm issions: Educational or personal u se of thi s ma-
terial is permitted without fee , provided such use: 1) is not m ade for prot; 2)
includes this not ice and a f ull cit ation to the original work on the rst page of
the copy; a nd 3) does not i mply IEEE endors ement of any t hird- part y product s or
services. Aut hors and their compa nies a re permitted to post the accepted version
of IEE E-c opyrig hted material on their own webservers without permission, pro -
vided th at the IEE E copyright not ice and a full c itation to the orig inal work appe ar
on the r st screen of the pos ted copy. An accepted manuscr ipt is a version which
has been revise d by the author to incor porate review sug gestions, but not the pub-
lished version wit h copyedit ing, pro ofreading, and formatting adde d by IEE E.
For more in formation, please go to: http://w ww.ieee.org/publicat ions_sta ndards /
publications /rights/paperversionpolicy.html. Permission to reprint/republish this
material for commercial , advertising, or promotion al purp oses or for creating
new colle ctive work s for resale or redistribut ion must be obtaine d from IE EE by
writi ng to the I EEE I ntellectual Property Rig hts Ofce, 445 Hoes La ne, Pisca-
taway, NJ 08854 -4141 or pubs-p ermissions@ ieee.org. Copyright © 2013 I EEE .
All rights res erved.
Abstracting and Library Us e: Abstracting is perm itted w ith cred it to the sou rce. Li -
brarie s are permitted to photocopy for private use of patrons, provide d the per-copy
fee indicated in the code at t he bottom of the rst page is pa id through the Copyright
Clearance Center, 222 Ro sewood Drive, Danvers, M A 01923.
... Una de las líneas de trabajo derivadas de la aparición de esta área de conocimiento a inicios de los 70's es la Educación en Ingeniería de Software que emerge como una disciplina que busca la formación de profesionales que combinen conocimientos técnicos y habilidades blandas que les permitan cumplir con las exigencias de la industria del software [28]. La educación en ingeniería de software se sustenta en tres principios [29]. ...
... No obstante, para el caso de la ingeniería, y en especial para ingeniería de software, el éxito de un proyecto depende del contexto relacionado con usuarios, mercado y plataformas de implementación, entre otros. Por esta razón, autores como Offutt [29] sugieren definir una escala de evaluación diferenciada para las tareas de los estudiantes. Esta escala incluye un conjunto de características que debe cumplir el producto de software con un puntaje asociado, de tal forma que el propósito del estudiante sea obtener el mayor puntaje posible, incorporando las características solicitadas a su propuesta de solución informática. ...
Article
Full-text available
Games for educational purposes have been used in different areas as supplementary strategies to the traditional teaching-learning process. Software Engineering-applying methods and techniques for building high-quality software products-also includes games in the professional training process. In order to provide a tool for teacher guidance about their use in their teaching-learning process, several game classifications have been proposed. However, existing classifications consider the game purpose and the target audience, but they omit variables associated with the structure of the game-e.g., rules or materials. This paper proposes a classification of games for teaching software engineering considering purpose, scope, and fun components. This proposal defines the key features of any game for teaching software engineering and provides alternatives to professors for incorporating this teaching tool in their training process. The proposed classification was applied to a set of 17 games oriented to software engineering teaching, showing its potential as a support tool in the analysis, comparison, and selection of games for teaching this discipline.
... A profissão de engenheiro de software e a educação em Engenharia de Software (ES) são desafiadoras, pois, demandam muitos atributos qualitativos diferentes. Habilidades como o pensamento divergente e aprendizado colaborativo são importantes para a prática de engenheiros de software [19]. ...
Conference Paper
Full-text available
As the significance of Software Engineering (SE) professionals continues to grow in the industry, the adoption of gamification techniques for training purposes has gained traction due to its potential to enhance class appeal through game-derived elements. This paper presents a tertiary study investigating the application of gamification in Software Engineering (SE) education. The study was conducted in response to recent systematic literature reviews and mappings on the topic. The findings reveal that the areas of SE most frequently gamified are Software Testing and Software Quality, with competition and cooperation being the most commonly utilized gamification elements. Additionally, the majority of studies focus on structural gamification, where game elements are employed to modify the learning environment without altering the content. The results demonstrate the potential of gamification to improve students’ engagement and motivation throughout the SE learning process, while also impacting other aspects such as performance improvement, skill development, and fostering good SE practices. However, caution is advised as unplanned and incorrectly applied gamification measures may lead to significant declines in performance and motivation.
... Software development is almost exclusively a team activity and in addition to communication among team members, it also includes communication with users (interviews and user requirements analysis). Accordingly, it is useful to simulate different stages of software development (Offutt, 2013). Besides the ability to creatively solve software design problems, software engineers should be creative in the design and implementation of interviews and system analysis (Nguyen & Shanks, 2009), i.e., requirements gathering (interview and questionnaire) and data flow diagrams of different levels (Rob, 2013). ...
Article
Full-text available
Aim/Purpose: During the education of future engineers and experts in the field of computer science and information communication technology, the achievement of learning outcomes related to different levels of cognitive ability and knowledge dimensions can be a challenge. Background: Teachers need to design an appropriate set of activities for students and combine theory-based knowledge acquisition with practical training in technical skills. Including various activities for formative assessment during the course can positively affect students’ motivation for learning and ensure appropriate and timely feedback that will guide students in further learning. Methodology: The aim of the research presented in this paper is to propose an approach for course delivery in the field of software engineering and to determine whether the use of the approach increases student’s academic achievement. Using the proposed approach, the course Process Modeling for undergraduate students was redesigned and experimental study was conducted. Course results of the students (N=82) who took the new version of the course (experimental group) were compared to the results of the students from the control group (N=66). Contribution: An approach for a blended learning course in the field of software engineering was developed. This approach is based on the formative assessment activities that promote collaboration and the use of digital tools. Newly designed activities are used to encourage a greater level of acquired theoretical content and enhance the acquisition of subject-specific skills needed for practical tasks. Findings: The results showed that students who participated in the formative assessment activities achieved significantly better results. They had significantly higher scores in the main components of assessment compared to the students from the control group. In addition, students from the experimental group expressed positive views about the effectiveness of the used approach. Recommendations for Practitioners: The proposed approach has potential to increase students’ motivation and academic achievements so practitioners should consider to apply it in their own context. Recommendation for Researchers: Researchers are encouraged to conduct additional studies to explore the effectiveness of the approach with different courses and participants as well as to provide further insights regarding its applicability and acceptance by students. Impact on Society: The paper provides an approach and an example of good practice that may be beneficial for the university teachers in the field of computer science, information-communication technology, and engineering. Future Research: In the future, face-to-face activities will be adapted for performance in an online environment. Future work will also include a research on the possibilities of personalization of activities in accordance with the students’ characteristics.
... Students are given the opportunities to both discuss and observe their peers. It is also believed that real-world software development project experiences encourage students to enhance their written and oral communication skills (DiYanni et al., 2020;Offutt, 2013). Students will be assisted in developing problem-solving, critical thinking and analytic skills that are all valuable instruments in which students can prepare for better choices, become better students and finally better future employees. ...
Conference Paper
Full-text available
Most of the principles and concepts that need to be taught in Software Engineering courses are hard to share the realistic experiences because it is difficult to give the student practical exposure to the insight and processes involved. There is a non-existent approach to conveying the concepts of applying Agile Scrum and Team Software Process (TSPi) that involve learner, instructor and business stakeholder. This paper will explain the concept of a framework for efficiently building an immersive learning environment for both learner and instructor of Software Engineering Project course with the involvement of business stakeholder. This provides an opportunity for learning to be more focused on learning design through the prism of immersive environments rather than the collection of information. The online surveys were disseminated to third-year students who took the Software Engineering Laboratory course and the projects' stakeholders. This study aims to gain feedback from both sides on the effectiveness and suitability of the framework and concept in teaching and learning the course. Our experience in the creation, conduct and iteration of the course is outlined in this paper. It ends by assessing the degree to which we were able to achieve the course objectives established by the students and stakeholders.
... The teaching methodology is essential to address some of the particularities in the education of students, since they are not scientists but often take the view of an engineer [7], [8]. Concerning tools, the situation has significantly improved during the last 10 years, and now we have a number of good modeling tools which are used in most courses [9]. ...
... Finally, tools are essential elements in any engineering discipline. Students from these disciplines work better with hands-on experiences, because they need to be able to build and to manipulate the corresponding software artifacts if they actually want to comprehend the related concepts (Offutt, 2013;Vincenti, 1990). In this respect, modeling tools directly influence the way they learn, develop and use models. ...
Conference Paper
Understanding the experiences of instructors teaching modelling and model-driven engineering is of great relevance to determining how MDE courses should be managed in terms of content, assessment, and teaching methods. In this paper, we report the results of a survey of 47 instructors in this field. Questions address course content, tools and technologies used, as well as positive and negative factors affecting learning outcomes. We analyse the results and summarise key findings with the potential of improving the state of teaching and learning practices. The survey is a preliminary effort in giving a structured overview on the state-of-the-practice within teaching modeling and model-driven engineering (from the point of view of the instructor).
... They also argue in favour of having separate software engineering programs which follow a traditional engineering approach to education [21]. Offutt et al. provides suggestions on how the divergence between computer science and software engineering can be created and how software engineering can be created a true engineering discipline [20]. ...
Article
Full-text available
The first edition of the Workshop on Software Engineering Education co-located with Innovations (formerly India) in Software Engineering Conference (ISEC) was held on 9th February 2018 at IIIT Hyderabad (India). In this paper, we present an experience report on conducting this workshop. We describe the workshop format and present the workshop program. The workshop was activity-oriented consisting of talks, discussions and engagements from all the participants. We provide an overview of the four invited talks and present few highlights of these talks. We present the challenges encountered, recommendations and future plans. We describe the motivation behind the hands-on workshop activities and their respective formats. We collect a variety of data from the participants on case-based learning, wall of ideas and an activity on the debate between computer science and software engineering as two separate disciplines. We analyse this data received collected through worksheets and survey forms. We present our insights and conclusions from the data analysis. The number of attendees, participation and engagement, talks, responses to worksheets, and questionnaires demonstrate that the workshop was fruitful and successful in-terms of meeting its desired objectives.
Article
Full-text available
About 15 years ago, a role-based learning program aimed primarily at software architects was established. In the early days, we had extensive discussions to what extent to build on existing materials available outside of the company or to “grow our own” learning program. Due to the nature of our businesses, especially having many complex and cyber-physical systems with a strong focus on quality attributes, we established our own program. This architect-based learning program, known as the “Software Curriculum” has evolved over time and continues to be a key part of our company’s learning landscape. Especially as systems today and in future get more and more complex, the importance of learning, and especially in the software architecture area, has never been higher.
Chapter
This paper summarizes the current state ofthe art and recent trends in software engineering economics. It provides an overview of economic analysis techniques and their applicability to software engineering and management. It surveys the field of software cost estimation, including the major estimation techniques available and the state of the art in algorithmic cost models.
Article
A summary is presented of the current state of the art and recent trends in software engineering economics. It provides an overview of economic analysis techniques and their applicability to software engineering and management. It surveys the field of software cost estimation, including the major estimation techniques available, the state of the art in algorithmic cost models, and the outstanding research issues in software cost estimation.
Article
The author provides, based on 20 years of research and industrial experience, his assessment of software engineering research. He then builds on such analysis to provide recommendations on how we need to change as a research community to increase our impact, gain credibility, and ultimately ensure the success and recognition of our young discipline. The gist of the author's message is that we need to become a true engineering discipline.
Article
Software Engineering programs have become a source of contention in many universities. Computer Science departments, many of which have used that phrase to describe individual courses for decades, claim SE as part of their discipline. Yet some engineering faculties claim it as a new specialty among the engineering disciplines. This article discusses the differences between traditional CS programs and most engineering programs, and argues that we need SE programs that follow the traditional engineering approach to professional education
Software Engineer Ranked Best Job for2011
  • klugerman
Y. Klugerman, "Software Engineer Ranked Best Job for 2011," Brain Track, Jan. 2011;
  • B Boehm
B. Boehm, Software Engineering Economics, Prentice-Hall, 1981.