jagomart
digital resources
picture1_Software Engineer Pdf 183681 | Educationofsease


 134x       Filetype PDF       File size 0.30 MB       Source: www.inf.usi.ch


File: Software Engineer Pdf 183681 | Educationofsease
the education of a software engineer mehdi jazayeri technical university of vienna mehdi jazayeri tuwien ac at abstract a successful software engineer must possess a wide often using uml as ...

icon picture PDF Filetype PDF | Posted on 31 Jan 2023 | 2 years ago
Partial capture of text on file.
                                                 The Education of a Software Engineer 
                                                                               
                         
                                                                     Mehdi Jazayeri 
                                                           Technical University of Vienna 
                                                             mehdi.jazayeri@tuwien.ac.at 
                         
                         
                                        Abstract 
                   A  successful  software  engineer  must  possess  a  wide      often  using  UML  as  a  standard  notation.  Software 
                   range of skills and talents. Project managers know how         architecture  has  become  a  standard  topic,  providing  a 
                   difficult it is to find, motivate, and retain such people.     bridge from requirements to design. Still, most of the 
                   Educators  face  a  complementary,  and  perhaps  more         emphasis is on these forward engineering development 
                   challenging,  problem:  how  to  prepare  such  engineers.     steps. Some courses also cover management aspects, but 
                   The  challenge  of  what  to  teach  software  engineers       mostly in a theoretical sense. These treatments leave out 
                   evolves  over  time  as  technologies,  applications,  and     the  entire  “experience”  aspect:  it  is  one  thing  to  read 
                   requirements  change.  As  software  technology  has           about how to design a module and quite a different thing 
                   rapidly spread through every aspect of modern societies,       to  design  a  specific  module  that  is  supposed  to  meet 
                   the challenge of educating software engineers has taken        specific requirements and fit in with modules designed 
                   on new form and become more complex and urgent. In             by others. To provide some level of experience with the 
                   this  talk,  I  present the broad outline of an educational    techniques  that  are  taught  in  textbooks,  many  courses 
                   program  for  a  complete  software  engineer.  A  new         include, or are complemented by, a project component 
                   curriculum  for  computer  science  has  been  developed       in which the students, usually in small teams, develop a 
                   based on these ideas and will start in October 2004 at         medium-sized  software  application.  While  the  aim  of 
                   the University of Lugano in Switzerland.                       the project is to show the student what the “real world” 
                                                                                  of development is like, and often these projects are the 
                   1. Introduction                                                most time-consuming projects that students undertake in 
                                                                                  their  studies,  by  necessity  the  project  must  be 
                   Over the years, the teaching of software engineering has       constrained to ensure that it can be completed within the 
                   changed only slightly  and most textbooks of software          semester with a reasonable amount of work. Sometimes 
                   engineering follow rather traditional and similar  lines.      the  instructor  specifies  the  requirements,  hiding  the 
                   This  might  give  the  impression  that  there  is  general   most  difficult  aspect  of  the  real  world,  in  which  the 
                   consensus on what must be taught to software engineers.        requirements  are  never  really  known.  Usually  the 
                   On  the  other  hand,  listening  to  discussions  between     infrastructure and the development environment are pre-
                   academics and practitioners at conferences reveals deep        determined and are ones that the students are familiar 
                   disagreements.    Many  practitioners      believe   that      with, the schedule is fixed and the project has already 
                   universities  are  not  doing  a  good  job  and  many         been trimmed to an appropriate size by the instructor, 
                   academics argue that industry does not use the latest,         and there are no compatibility or legacy requirements. 
                   best technology.                                               None  of  these  constraints  reflect  the  real  world  of 
                   There  are  deep,  underlying,  reasons  why  universities     software  projects  but  they  are  necessary  for  practical 
                   have  difficulties  in  educating  software  engineers.  A     reasons  to  respect  the  academic  calendar  in  which 
                   software  engineer  must  combine  formal  knowledge,          semesters come to a quiescent end, with no possibility 
                   good  judgment  and  taste,  experience,  and  ability  to     of lawsuits or contract disputes! 
                   interact with and understand the needs of clients. It is       The solution to  these  challenges  is  to design a  whole 
                   not easy to teach all of this, certainly not in one or two     new curriculum of computer science that integrates the 
                   courses on software engineering!                               different  topics  that  we  teach  and  addresses  the  new 
                   The typical courses on software engineering concentrate        realities  in  the  application  world.  Because  of  the 
                   on the phases of the development process: requirements         importance  of  software,  its  engineering,  and  how  we 
                   analysis,  specification,  design,  implementation,  and       teach it, is a core component of such a curriculum. In 
                   testing. In recent years, some of these issues have been       this  paper,  I  will  attempt  to  outline  the  challenges  of 
                   enhanced because of new research results. For example,         teaching  software  engineering  today,  the  emerging 
                   requirements is now treated much more systematically,          requirements that software engineers must satisfy, and 
                   propose  a  modern  curriculum  to  address  these                development-oriented.  One  could  teach  about  how  to 
                   challenges. A curriculum of this type has been designed           form  teams  and  establish  proper  communication 
                   in the last two years and will start for the first class of       channels or one could teach about module design. One 
                   students in October 2004 at the University of Lugano.             could  teach  about  making  the  quality  assurance  team 
                                                                                     independent from the development team or one could 
                   2. Traditional challenges of Teaching                             teach  about  testing  techniques.    In  reality,  the 
                   Software Engineering                                              differences  are  not  so  sharp  and  the  most  important 
                                                                                     problems  cross  the  boundaries  of  development  and 
                   Teaching software engineering has never been easy and             management.  For  example,  as  Parnas  [6]  has  pointed 
                   no consensus has emerged from the many debates about              out,  the  essential  concept  of  modularity  that  guides 
                   how best to do it. At the base of the problem lies the fact       module  design  can  be  used  as  the  basis  for  work 
                   that the complexity of software engineering comes from            assignment  in  a  project.  An  architectural  approach  to 
                   the  complexity  of  problems  and  it  is  impossible  to        development supports better management practices.  
                   construct complexity in a classroom setting. Indeed, the          -Product versus process. Should we  teach  about  the 
                   purpose  of  classroom  teaching  is  to  peel  enough            software  object  and  its  constituents  or  about  how  we 
                   complexity away that the problems become doable by                construct the software object? In  the former approach 
                   students. In software engineering, unfortunately, if you          we  emphasize  the  programming  and  other  languages 
                   peel  away  complexity,  you  are  left  with  unrealistic        and in the latter we emphasize at what step we should 
                   (sometimes called toy) problems.                                  use those languages. In the product-based approach we 
                   Another difficulty of teaching  software  engineering is          emphasize more design issues and in the process-based 
                   that it is a multi-faceted discipline. As a result, there are     approach we emphasize the problems that occur in the 
                   many  tradeoffs  that  an  instructor  must  make,  thus          process.  This  tradeoff  has  always  been  the  focus  of 
                   limiting  the  experience  of  the  student.  Some  of  the       software  quality  improvement  approaches.  Capability 
                   common tradeoffs are:                                             Maturity Model (CMM) is the well-known assessment 
                   -Practice versus theory. How much should we teach                 approach that measures the software production quality 
                   about current state of the practice and how much about            of  an  organization  solely  based  on  process-related 
                   an  idealized  approach  that  our  theories  cover?  The         issues.   
                   theoretical  approach  emphasizes  the  importance  of            -Formal  versus  empirical.  This  tradeoff  is  between 
                   formal  specifications,  program  verification,  and  in          learning by studying versus learning by doing. The two 
                   general  a  disciplined  and  systematic  approach  to            schools  of  thought  view  software  engineering  as  a 
                   software  development.  In  the  practical  approach,  one        mathematical  science  or  as  an  empirical  science. 
                   emphasizes the difficulties that arise in the real world,         Empirical software engineering emphasizes experiments 
                   despite  taking  a  systematic  approach  to  software            and  statistics  to  characterize  the  results  of  those 
                   development. These problems range from unreasonable               experiments.  A  laboratory  approach  to  some  degree 
                   customers who can’t make up their minds to difficult              supports the empirical approach 
                   colleagues  who  refuse  to  change  their  interface  to          
                   accommodate  new  requirements  to  incompatible                  Of course, most textbooks and most courses try to cover 
                   versions of the version control system. This tradeoff is a        all of the above aspects, making more or less conscious 
                   manifestation of what Fred Brooks [1] has described as            choices about  the  tradeoffs. If we were sure what the 
                   essential versus accidental complexity of software. The           graduate of the course would end up doing, it would be 
                   theoretical approach deals with the essential complexity          easier to decide on the tradeoffs but we usually do not 
                   while  the  practice-oriented  approach  deals  with  the         know that. A textbook, in particular, tries to address a 
                   accidental  complexity.  The  usual  solution  to  this           general  audience  and  for  software  engineering  the 
                   tradeoff is to combine a lecture course, dealing with the         general audience is not very homogeneous. In any case, 
                   theory, with a laboratory course, in which the students           the necessity of making choices among these tradeoffs 
                   face practical issues. With the caveat that one cannot re-        has  made  the  teaching  of  software  engineering  a 
                   create    the   real  world     in  a    classroom,    close      challenging task. 
                   approximations to the real world are possible.                     
                   -Development versus management. From the birth of                 3. New realities 
                   software engineering, some have viewed the problems               The traditional challenges of software engineering have 
                   as  being primarily managerial  and others  as primarily          been  exacerbated  in  recent  years  by  the  growing 
                   importance  of  software  and  by  new  technological          leave  the  environment  at  arbitrary  times.  Software 
                   developments. In this section, I discuss what I consider       services and applications must be created dynamically 
                   to be the trends with the most significant impact on the       out of these computing elements. This dynamic world is 
                   teaching of software engineering.                              at  odds with traditional software engineering in which 
                   -Distribution. The change of computing platform from           we try to fix (bind) as much as we can as early in the 
                   mainframe computing to distributed computing requires          process  as  possible.  Traditional  software  engineering 
                   a fundamental reconsideration in the way we view the           favors static decisions and pervasive computing forces 
                   structure of software and the basic notion of modularity.      most decisions to be made dynamically.   
                   Historically, software engineering practice, and software      -The  Internet.  Of  course,  the  Internet  has  changed 
                   engineering textbooks too, have dealt with centralized         everything  and  software  engineering  is  no  exception. 
                   (mainframe)  software  systems.  The  often-maligned           The  Internet  has  had  several  different  effects  on 
                   metric  of  lines  of  code  to  measure  the  complexity  of  software engineering. First,  it  is  used  as  an  execution 
                   software  or  the  productivity  of  programmers  is  an       platform. Second, it is used as a development platform. 
                   indication  of  this  mainframe  bias.  Today’s  world,        Third, it is used as a delivery vehicle for software. Each 
                   however, is distributed by default. This means that we         of  these  engenders  its  own  version  of  software 
                   must begin with distribution as  a starting point rather       engineering issues. For example, using the Internet as an 
                   than as a special case of software engineering. To what        execution  platform  can  be  based  on  various  Internet 
                   degree    must    we    teach   about    communication,        protocols  and  security  mechanisms  and  infrastructure. 
                   synchronization,  caching,  security,  fault-tolerance,  and   We are beginning to see book titles such as Software 
                   other such concepts that are traditionally the domain of       Engineering  for  the  Internet.  There  are  even  degrees 
                   distributed systems? In fact, no software engineer can         offered on Web Informatics. 
                   ignore these issues  and they  are complex enough that         A more direct impact of the Internet on education in 
                   they must be engineered if they are to be included in any      general, not only in software engineering education, is 
                   system.  This argues for a closer coupling of software         the availability of an unlimited reservoir of information. 
                   engineering and distributed systems. But if we already         For  example,  the  open  courseware  library  offered  by 
                   had too much to teach in a software engineering course,        MIT on the Internet (ocw.mit.edu) is a wonderful source 
                   how  are  we  going  to  include  the  new  distribution       of material for instructors and students alike. It is not 
                   considerations?                                                clear, however, how best to exploit this information in a 
                   Another aspect of distribution involves the people and         traditional course setting.  
                   processes  in  software  engineering.    Increasingly,         -Proliferation  of  software  tools  and  environments. 
                   software is being developed by teams of engineers that         Practitioners   and   educators    alike   have   always 
                   are  geographically,  and  often  also  organizationally,      recognized the importance of tools and environments to 
                   distributed.  While  this  does  not  change  the  formal  or  support  software.  The  state  of  practice,  however,  has 
                   theoretical aspects of software engineering, it does have      changed considerably over time. At some point in time, 
                   a  fundamental  impact  on  the  processes,  tools,  and       tools  were  used  to  enforce  certain  methodologies  or 
                   practices  that  can  and  should  be  used.  There  are       company  policies.  The  adoption  of  such  tools  by 
                   interesting  ways  that  traditional  formal  concepts  are    companies is a major decision with large impact on the 
                   affected  by  such  practical  realities.  For  example,  the  processes  and  future  decisions  of  the  company.  The 
                   practice of outsourcing makes some traditional concepts        assumption  is  that  the  experience  of  the  company’s 
                   such    as   module     decomposition     and    program       engineers in the use of the tools is so valuable that the 
                   specification more important than ever before.                 tools must be used over a long period of time. Adopting 
                   -Pervasive computing. Pervasive computing seems to             a  different  toolset  or  environment  discards  the  hard-
                   be the technological trend of distribution extended to its     earned    employees’     experience.    Furthermore,    a 
                   extreme. There are several different views of pervasive        company’s software engineering processes build around 
                   computing but the common one refers to the availability        the  set  of  tools  being  used.  Changing  tools  requires 
                   of unlimited computing and communication elements in           changing  processes,  which  is  also  an  expensive 
                   the environment, where every object can communicate            undertaking. As a result,  the state of tool adoption in 
                   with  other  objects.  Pervasive  computing  requires  us      industry is rather static and conservative. On the other 
                   once  again  to  question  our  assumptions  about  the        hand, over the last decade, there have been tremendous 
                   structure of software. The most important difference is        developments in the area of software tools, spurred in 
                   the  introduction  of  dynamicity.  The  software  must  be    part  by  the  very  active  research  on  software 
                   able  to  deal  with  computing  elements  that  enter  and    environments in the 1970s, in part by the open source 
                   movement, and in part by the existence of the Internet            quality issues. Software engineers must learn that “time-
                   platform  for  execution  and  delivery.  The  pace  of           to-market” is not the only measure of project success. 
                   technology  development  and  supporting  tools  has              They must learn tradeoffs that take into account quality 
                   picked  up  so  considerably  that  the  conservative             factors as well as more concrete factors. This area needs 
                   approach of earlier times is no longer viable. A software         much more research  but  educational  needs  are  rather 
                   engineer must now be able to pick up a new tool and an            acute and cannot wait for research results. The only way 
                   associated  process  quickly,  regardless  of  his  or  her       I  know  to  emphasize  this  subject  is  to  teach  the 
                   vested experience in a previous tool. Internet-time has           responsibilities of a professional software engineer. This 
                   certainly  affected  tools  and  processes  and  requires         has  to  be  a  critical  part  of  a  software  engineer’s 
                   agility on the part of the software engineer. On the one          education.  There  is  not  a  wealth  of  material  on  this 
                   hand, this implies that the choice of, and emphasis on,           subject but a good starting point is [2].   
                   tools in a software engineering class is not as important         -Computing  platform.  With  a  distributed  computing 
                   because  almost  certainly  the  students  will  use  very        environment      providing    the    hardware     platform, 
                   different tools in their profession. On the other hand, it        middleware provides the software platform, something 
                   implies that the student must gain the skills to be able to       analogous to operating systems of the past in centralized 
                   switch among tools. Where and how is this skill to be             systems.  Most  middleware  systems  offer  similar 
                   acquired?                                                         facilities  but  they  also  have  significant  differences. 
                   -Software evolution. It is now generally accepted that            Software  engineering  on  top  of  different  middleware 
                   the initial focus of software engineering on development          systems  could  be  based  on  different  approaches  and 
                   ignored the importance of software evolution. We now              techniques. Should a middleware platform be part of the 
                   acknowledge  that  we  have  problems  with  legacy               study of a software engineer? While we would like to 
                   software that must be maintained by software engineers.           believe that the concepts and principles are independent 
                   There is significant research currently going on in the           of  the  actual  middleware,  a  skilled  software  engineer 
                   area  of  software  evolution,  from  theories  to  tools  to     needs detailed knowledge of the middleware principles 
                   processes. It is more likely that a software engineer will        and  the  gap  between  general  concepts  and  concrete 
                   be employed in software evolution than new software               middleware  practices  is  growing  rather  large.  The 
                   development. Should this new reality shift the emphasis           choice  of  which  middleware  platform  to  use  in 
                   we place in software engineering courses from software            classroom  teaching  involves  similar  considerations  as 
                   development  to  software  evolution?  More  likely,  we          the  choice  of  what  programming  language  to  use. 
                   have    to   seriously    consider   evolution    alongside       Should we choose a platform for its teaching value or 
                   development.    But  we  face  the  same  problems  of            for  its  current  popularity?  A  disturbing  trend  is  the 
                   creating  a  realistic  evolution  experience  in  the            mixing of marketing and technical considerations. The 
                   classroom.  What  makes evolution difficult  is  the  size        argument that one platform is better because it has more 
                   and complexity of the software, company organizational            users is not a valid argument for educational choices. 
                   issues,  and  the  necessity  of  parallel  development.          Regardless  of  how  fast  technology  develops,  we  in 
                   Recreating these issues in the classroom makes the class          universities must prepare engineers who will cope with 
                   unmanageable  and  restricting  them  to  make  the  class        the technologies of at least the coming decade. 
                   manageable defeats the learning objectives.                       -Interdisciplinary  informatics.  Pervasive  computing 
                   -Software quality.  Complaints about software quality             refers  to  a  branch  of  (distributed)  computing  that 
                   are  commonplace.  Most  of  us  acknowledge  the                 considers  abundant  computing  power  embedded  in 
                   shortcomings  in  today’s  software  but  few  of  us  do         everyday environments. The field lies at the intersection 
                   anything  about  it.  As  software  pervades  society’s           of embedded and distributed systems. We can, however, 
                   infrastructures  and  runs  most  of  its  services,  software    interpret  “pervasive”  computing  in  a  more  general 
                   quality  cannot  be  ignored.    With  emerging  pervasive        sense, in the sense that computing is now pervasive in 
                   computing  applications  and  services,  software  quality        all  aspects  of  society,  ranging  from  business,  to 
                   becomes  even  more  challenging.  Software  engineers            government,  to  education  and  science.  No  profession 
                   must  have  tools  and  techniques  to  build  high-quality       can function or advance without computing. New drug 
                   software.  Where do they get these tools and techniques?          discoveries,  new  material  inventions,  new  business 
                   Most  software  engineering  courses  and  textbooks  go          products and processes, are all based on heavy use of 
                   little  beyond  testing  techniques  in  this  area.  The         computing  and  software.  This  means  that  software  is 
                   problem here is a lack of concrete techniques. The best           being developed to address the needs of many diverse 
                   that  can  be  done  today  is  to  impart  a  sensitivity  to    disciplines.  Indeed,  we  once  taught  informatics  as  if 
The words contained in this file might help you see if this file matches what you are looking for:

...The education of a software engineer mehdi jazayeri technical university vienna tuwien ac at abstract successful must possess wide often using uml as standard notation range skills and talents project managers know how architecture has become topic providing difficult it is to find motivate retain such people bridge from requirements design still most educators face complementary perhaps more emphasis on these forward engineering development challenging problem prepare engineers steps some courses also cover management aspects but challenge what teach mostly in theoretical sense treatments leave out evolves over time technologies applications entire experience aspect one thing read change technology about module quite different rapidly spread through every modern societies specific that supposed meet educating taken fit with modules designed new form complex urgent by others provide level this talk i present broad outline an educational techniques are taught textbooks many program for ...

no reviews yet
Please Login to review.