Prepared By: Jerusalem Y.
Introduction to SE   4/8/2019   1
   Software Engineering and its place as an Engineering
   Software development process models
                                    Introduction to SE   4/8/2019   2
   The term Software Engineering is composed of two words.
    Software and Engineering.
   Software is more than just a program code, which serves some
    computational purpose.
   Software is considered to be a collection of executable
    programming code, associated libraries and documentations.
    Software, when made for a specific requirement is called
    software product.
   Engineering on the other hand, is all about developing
    products, using well-defined scientific principles and methods.
                                          Introduction to SE   4/8/2019   3
   Software Engineering as an Engineering branch associated
    with the development of software product using well-defined
    scientific principles, methods and procedures.
    The outcome of software Engineering is an efficient and
    reliable software product.
                                        Introduction to SE   4/8/2019   4
The main difference is
 Computer science deal with studying and analyzing the
  algorithms and problems that are related to making the
  computer to do the task.
 This involves knowing the details of how the computer as
  well as the network works. This field focuses more on how
  these computer programming languages work.
 Computer science aims at understanding the theories that
  makes the computer function.
 Software Engineering, on the other hand, deals with creating
  new software that would be used in the real world.
                                      Introduction to SE   4/8/2019   5
   You would be required to actually work with a team so that
    you can build a new application that your end-users would
    find beneficial.
   In conclusion, though both fields deal with computer and
    software, computer science works on the theories behind how
    the computer works while software engineering works on
    developing new applications depending on the requirements.
                                        Introduction to SE   4/8/2019   6
   Software engineering deals with designing and developing
    software of the highest quality.
   A software engineer does analyzing, designing, developing
    and testing software.
   Software engineers carry out software engineering projects,
    which usually have a standard software life cycle.
   System Engineering is the sub discipline of engineering
    which deals with the overall management of engineering
    projects during their life cycle (focusing more on physical
    aspects).
    It deals with logistics, team coordination, automatic
    machinery control, work processes and similar tools.
                                         Introduction to SE   4/8/2019   7
    The difference between System Engineering and Software
     Engineering is
1.    System Engineers focus more on users and domains, while
      Software Engineering focus more on implementing quality
      software.
2.    System Engineer may deal with a substantial amount of
      hardware engineering, but typically software engineers will
      focus solely on software components.
3.    System Engineers may have a broader education (including
      Engineering, Mathematics and Computer science), while
      Software Engineers will come from a Computer Science or
      Computer Engineering background.
                                          Introduction to SE   4/8/2019   8
    A software process (also knows as software methodology) is a
     set of related activities that leads to the production of the
     software.
     These activities may involve the development of the software
     from the scratch, or, modifying an existing system.
    Any software process must include the following four
     activities:
1.     Software specification: Define the main functionalities of
       the software and the constrains around them.
2.     Software design and implementation: The software is to be
       designed and programmed.
                                         Introduction to SE   4/8/2019   9
   Software verification and validation: The software must
    conforms to it’s specification and meets the customer needs.
   Software evolution (software maintenance): The software is
    being modified to meet customer and market requirements
    changes.
                                         Introduction to SE   4/8/2019   10
    A software process model is a simplified representation of a
     software process.
    Each model represents a process from a specific perspective.
    A few of software process models are defined as follows:
1.     Waterfall model
2.     Iterative model
3.     Spiral model
4.     V – model
5.     Agile method
                                          Introduction to SE   4/8/2019   11
   Waterfall model is the simplest model of software
    development paradigm.
   The phases will function one after another in linear manner.
    That is, when the first phase is finished then only the second
    phase will start and so on.
   This model assumes that everything is carried out and taken
    place perfectly as planned in the previous stage and there is no
    need to think about the past issues that may arise in the next
    phase.
                                          Introduction to SE   4/8/2019   12
   This model does not work smoothly if there are some issues
    left at the previous step.
   The sequential nature of model does not allow us go back and
    undo or redo our actions.
   This model is best suited when developers already have
    designed and developed similar software in the past and are
    aware of all its domains.
                                        Introduction to SE   4/8/2019   13
Introduction to SE   4/8/2019   14
Advantages
 Easy to explain to the users.
 Structures approach.
 Stages and activities are well defined.
 Helps to plan and schedule the project.
 Verification at each stage ensures early detection of
  errors/misunderstanding.
 Each phase has specific deliverables.
                                         Introduction to SE   4/8/2019   15
Disadvantages
 Very difficult to go back to any stage after it finished.
 A little flexibility and adjusting scope is difficult and
  expensive.
 Required more time, in addition to the detailed plan.
                                          Introduction to SE   4/8/2019   16
   This model leads the software development process in
    iterations.
   It projects the process of development in cyclic manner
    repeating every step after every cycle of the software
    development process.
   The software is first developed on very small scale and all the
    steps are followed which are taken into consideration.
   Then, on every next iteration, more features and modules are
    designed, coded, tested and added to the software.
   Every cycle produces a software, which is complete in itself
    and has more features and capabilities than that of the previous
    one.
                                          Introduction to SE   4/8/2019   17
Introduction to SE   4/8/2019   18
Advantages
 Better use of scarce resources through proper increment
  definition.
 Can accommodate some change requests between increments.
 More focused on customer value than the linear approaches.
 Problems can be detected earlier.
                                     Introduction to SE   4/8/2019   19
Disadvantages
 Requires heavy documentation.
 Follows a defined set of processes.
 Requires more customer involvement than the linear
  approaches.
 Integration between iteration can be an issue if this is not
  considered during the development.
                                          Introduction to SE   4/8/2019   20
   Spiral model can be seen as if you choose one software
    development life cycle model and combine it with cyclic
    process (iterative model).
   This model considers risk, which often goes un-noticed by
    most other models.
   The model starts with determining objectives and constraints
    of the software at the start of one iteration.
   Next phase is of prototyping the software. This includes risk
    analysis.
   Then one standard SDLC model is used to build the software.
                                         Introduction to SE   4/8/2019   21
Introduction to SE   4/8/2019   22
Advantages
 Estimates (i.e. budget, schedule, etc.) become more realistic as
  work progressed because important issues are discovered
  earlier.
 Early involvement of developers.
 Manages risks and develops the system into phases.
Disadvantages
 High cost and time to reach the final product.
 Needs special skills to evaluate the risks and assumptions.
                                        Introduction to SE   4/8/2019   23
   The major drawback of waterfall model is we move to the next
    stage only when the previous one is finished and there was no
    chance to go back if something is found wrong in later stages.
    V-Model provides means of testing of software at each stage
    in reverse manner.
   At every stage, test plans and test cases are created to verify
    and validate the product according to the requirement of that
    stage.
                                         Introduction to SE   4/8/2019   24
Advantages
 Simple and easy to use
 Each phase has specific deliverables.
 Higher chance of success over the waterfall model due to the
  development of test plans early on during the life cycle.
 Works well for where requirements are easily understood.
 Verification and validation of the product in early stages of
  product development.
                                        Introduction to SE   4/8/2019   25
Disadvantages
 Very inflexible, like the waterfall model.
 Adjusting scope is difficult and expensive.
 The software is developed during the implementation phase,
  so no early prototypes of the software are produced.
 The model doesn’t provide a clear path for problems found
  during testing phases.
 Required more time, in addition to detailed plan
                                      Introduction to SE   4/8/2019   26
Introduction to SE   4/8/2019   27
   Agility is flexibility, it is a state of dynamic, adapted to the
    specific circumstances.
   The agile methods refers to a group of software development
    models based on the incremental and iterative approach, in
    which the increments are small and typically, new releases of
    the system are created and made available to customers every
    few weeks.
   They involve customers in the development process to propose
    requirements changes.
                                          Introduction to SE   4/8/2019   28
   They minimize documentation by using informal
    communications rather than formal meetings with written
    documents.
   They are best suited for application where the requirements
    change rapidly during the development process.
                                         Introduction to SE   4/8/2019   29
   Roughly 60% of costs are development costs, 40 % are testing
    costs.
   For custom software, evolution costs often exceed
    development costs.
   Costs vary depending on the type of system being developed
    and the requirements of system attributes such as performance
    and system reliability.
   Distribution of costs depends on the development model that
    is used.
                                         Introduction to SE   4/8/2019   30
Software engineering in the 21st century faces three key
  challenges
1. The legacy challenge
  The majority of software systems which are in use today were
   developed many years ago yet they perform critical business
   functions.
 The legacy challenge is the challenge of maintaining and
  updating this software in such a way that excessive costs are
  avoided and essential business services continue to be
  delivered.
                                      Introduction to SE   4/8/2019   31
2.   The heterogeneity challenge
    Increasingly, systems are required to operate as distributed
     systems across networks that include different types of
     computer and with different kinds of support systems.
    The heterogeneity challenge is the challenge of developing
     techniques to build dependable software which is flexible
     enough to cope with this heterogeneity.
                                         Introduction to SE   4/8/2019   32
3.   The delivery challenge
    Many traditional software engineering techniques are time-
     consuming.
    The time they take is required to achieve software quality.
     However, businesses today must be responsive and change
     very rapidly.
    The delivery challenge is the challenge of shortening
     delivery times for large and complex systems without
     compromising system quality.
                                        Introduction to SE   4/8/2019   33
   Like other engineers, software engineers must accept that their
    job involves wider responsibilities than simply the application
    of technical skills.
    Their work is carried out within a legal and social framework.
   Software engineering is obviously bounded by local, national
    and international laws.
    Software engineers must behave in an ethical and morally
    responsible way if they are to be respected as professionals.
   It goes without saying that engineers should uphold normal
    standards of honesty and integrity.
                                          Introduction to SE   4/8/2019   34
   They should not use their skills and abilities to behave in a
    dishonest way or in a way that will bring disrepute to the
    software engineering profession.
   However, there are areas where standards of acceptable
    behaviour are not bounded by laws but by the more tenuous
    notion of professional responsibility.
                                          Introduction to SE   4/8/2019   35
    Software characteristics are classified into six major
     components.
1.    Functionality: Refers to the degree of performance of the
      software against its intended purpose.
2.    Reliability: Refers to the ability of the software to provide
      desired functionality under the given conditions.
3.    Usability: Refers to the extent to which the software can be
      used with simplicity.
4.    Efficiency: Refers to the ability of the software to use
      system resources in the most effective and efficient manner.
                                           Introduction to SE   4/8/2019   36
5.   Maintainability: Refers to the simplicity with which the
     modifications can be made in a software system to extend its
     functionality, improve its performance, or correct errors.
6.   Portability: Refers to the simplicity with which software
     developers can transfer software from one platform to
     another, without (or with minimum) changes. In simple
     terms, it refers to the ability of software to function properly
     on different hardware and software platforms without
     making any changes in it.
                                          Introduction to SE   4/8/2019   37