Professional Documents
Culture Documents
ENGINEERING
Case Study On Software Engineering Principles
Group 2
Govt. Engineering College, Sreekrishnapuram.
November 2009
1
ASSIGNMENT
Anjali SP 8
STAFF IN CHARGE Anoop R 9
Archana Chandran 10
Miss. Shilpa Arjun CR 11
Department of Information Technology Arun K 12
Assia Shabeeba K 13
Aswathy Manomohan 14
2
Acknowledgement
Group Members
3
Abstract
This assignment is conducted as a part of evaluation for the
subject Software Engineering. Teacher divided the class into groups
of seven each.
We were asked to choose a topic for case study. Our first task
was to take the most appropriate topic. Each member came up with
different topic, collected details about it. We then choose this
specific topic as it provides an excellent opening example. We are
also studying this as an example in “Object Oriented Design”.
4
Contents
A. Introduction 6
C. Conclusion 38
D. Bibliography 39
5
Introduction
Tools
Methodologies
Methodologies
Methods
and techniques
Principles
Principles
A visual representation
Key principles
1. Rigor and formality
2. Separation of concerns
3. Modularity
4. Abstraction
5. Anticipation of change
6. Generality
7. Incrementality
6
Case study (system engineering):
Robot Navigation
In many cases, the "software engineering" phase starts after
understanding and analyzing the "systems engineering” issues
Fig 1.
7
Fig 2
8
Rigor & formality
Software engineering is a creative design activity, but it must be
practiced systematically
Examples: product
Example: process
9
The above code may be written by the Software-Development Manger to his
team.
10
The team may use any programming paradigm as given below.
11
Quite relevant: it is a performance critical system
Define requirements
• A single advancement by the hominoid carries it exactly one square
forward (in the direction of its nose).
• It’s important that the hominoid visit every square on the path from
START to FINISH.
12
Fig 3. A path through the hominoid’s grid. Here ‘S’ denotes “starting point” and ‘F’ the “finishing
point”.
• It’s even more important that the hominoid does not hit a wall,
because then we'll look stupid and they won't let us install the
software in the actual hardware hominoid.
Fig 4.
13
Fig 5.
Fig 6.
14
Fig 7 .
It is important that the robot navigate in its exact path. If it is not rigor it
affects maintainability.
15
Separation of concerns
Example: process
Fig 8.
Example: product
• Keep product requirements separate
Functionality
Performance
16
User interface and usability
• performance
• usability
• cost
17
Software engineers must deal with complex values in attempting
to optimize the quality of a product. There are often efficient
algorithms for optimizing a single measurable quantity, but
problems requiring optimization of a combination of quantities
are almost always NP-complete.
Although it is not a proven fact, most experts in complexity theory
believe that NP-complete problems cannot be solved by
algorithms that run in polynomial time. In view of this, it makes
sense to separate handling of different values.
This can be done either by dealing with different values at
different times in the software development process, or by
structuring the design so that responsibility for achieving different
values is assigned to different components.
• As an example of this, run-time efficiency is one value that frequently
conflicts with other software values. For this reason, most software
engineers recommend dealing with efficiency as a separate concern.
After the software is design to meet other criteria, its run time can be
checked and analyzed to see where the time is being spent. If necessary,
the portions of code that are using the greatest part of the runtime can
be modified to improve the runtime.
Fig 9. 18
Fig 10.
A robot has a plurality of components which can pivot relative to each other, in
particular robot arms. Changes in the separation between individual points of
the robot thereby occur. This must be taken into consideration when guiding
the operation cables for robot elements, in particular robot tools. They must
be able to accommodate changes in length while being loaded to as little an
extent as possible during motion of the robot so that they have high durability
and are not prematurely damaged.
19
Modularity
The principle of modularity is a specialization of the principle of
separation of concerns.
• Understandable separately
(a) (b)
20
Fig 11.
Fig 12.
21
Fig 13.
Navigation process decomposed into phases
• Position analysis
• Changing direction
Turn left
Turn right
• Advancing
Forward
Backward
Fig 14.
22
Fig 15.
Fig 16.
23
Abstraction
The principle of abstraction is another specialization of the
principle of separation of concerns.
Following the principle of abstraction implies separating the
behavior of software components from their implementation.
It requires learning to look at software and software components
from two points of view: what it does, and how it does it.
Design by contract is an important methodology for dealing with
abstraction.
Identify the important aspects of a phenomenon and ignore its
details
24
Fig 17.
Fig 18.
25
Fig 19.
Fig 20.
26
Fig 21.
Fig 22.
27
Fig 23.
Fig 24.
28
Fig 25.
29
Anticipation of change
Ability to support software evolution requires anticipating
potential future changes
• New operations
• Advanced devices
• Different environments
30
Fig 26. Shows robots working in different environments
31
Software developers, on the other hand, are familiar with a
technology that deals with data in an abstract way. They deal
with structures and algorithms without regard for the meaning
or importance of the data that is involved. A software
developer can think in terms of graphs and graph algorithms
without attaching concrete meaning to vertices and edges.
Software developers are learning the domain that the clients
work in. They are also learning the values of the client: what
form of data presentation is most useful to the client, what
kinds of data are crucial and require special protective
measures.
If the problem to be solved is complex then it is not reasonable
to assume that the best solution will be worked out in a short
period of time. The clients do, however, want a timely solution.
They want a reasonable solution soon; perfection can come
later. To develop a timely solution, software developers need
to know the requirements: how the software should behave.
The principle of anticipation of change recognizes the
complexity of the learning process for both software
developers and their clients. Preliminary requirements need to
be worked out early, but it should be possible to make changes
in the requirements as learning progresses.
Coupling is a major obstacle to change. If two components are
strongly coupled then it is likely that changing one will not work
without changing the other.
Cohesiveness has a positive effect on ease of change. Cohesive
components are easier to reuse when requirements change. If
a component has several tasks rolled up into one package, it is
likely that it will need to be split up when changes are made.
32
Generality
Fig 27.
33
Fig 28.
34
Fig 29.
Fig 30.
35
Incrementality
In this process, you build the software in small increments; for
example, adding one use case at a time.
An incremental software development process simplifies
verification. If you develop software by adding small increments of
functionality then, for verification, you only need to deal with the
added portion. If there are any errors detected then they are
already partly isolated so they are much easier to correct.
A carefully planned incremental development process can also
ease the handling of changes in requirements. To do this, the
planning must identify use cases that are most likely to be
changed and put them towards the end of the development
process.
Process proceeds in a stepwise fashion (increments)
Examples (process)
• Deliver subsets of a system early to get early feedback from
expected users, and then add new features incrementally
First develop navigation software turn away from obstacles then develop ones
which could overcome simple obstacles (fig 31).
First develop trajectory system with camera then integrate with it the GPS (fig
32).
36
Fig 31.
Fig 32.
37
Conclusion
From the above data we can conclude that the seven software
engineering principles are very much essential in the development of
large and complex software likes that of the robot-navigation.
38
Bibliography
Carlo Ghezzi, Mehdi Jazayeri, Dino Mandrioli Fundamentals of
Software Engineering, second edition, PHI Private Limited, 2008.
Web Pages
• http://www.library.unisa.edu.au
• http://portal.acm.org
• http://www.nptel.iitm.ac.in
• http://portal.acm.org
• http://www.library.unisa.edu.au
• http://www.d.umn.edu
• http://www.pdf-search-engine.com
• http://www.infibeam.com
• http://ecs.victoria.ac.nz
• http://cisnet.mit.edu
• http://www.mouemagazine.com
• http://www.sciencedirect.com
• http://ekalavya.it.iitb.ac.in
• http://www.edutalks.org
• http://ebook30.com
• http://www.nptel.iitm.ac.in
• http://www.wikipedia.org
• http://images.google.com
39