Professional Documents
Culture Documents
Chapter 1: Introduction
What is Software Engineering?
Software engineering an engineering approach to develop a
quality software
Software engineering is technological and managerial discipline
concerned with systematic production and maintenance of
software
Software engineering is a discipline which can be described as the
combination of techniques of engineering and all aspects of
software development.
Software engineering is an engineering discipline whose focus is
the cost effective development of high-quality software system
Two Orthogonal view of software.
A software development methodology is a series of
processes like System Analysis, Modeling, Design,
Implementation, Testing and Maintenance that leads to
the development of an application.
reused.
Objects has attribute (data) and methods (functions). Object Oriented systems
are
• Easier to maintain ,
6. Deployment 3. Design
5. Testing 4. Implementation
1. P lanning
• ◦ During the planning phase, the objective of the project is
determined and the requirements to produce the product are
considered.
• ◦ An estimate of resources, such as personnel and costs, is prepared,
along with a concept for the new product.
• ◦ All of the information is analyzed to see if there is an alternative
solution to creating a new product.
• ◦ If there is no other viable alternative, the information is assembled
into a project plan and presented to management for approval.
2. Analysis
• ◦ During the analysis stage the project team determines the end-user
requirements.
• ◦ Often this is done with the assistance of client focus groups, which provide an
explanation of their needs and what their expectations are for the finished
product and how it will perform.
• ◦ The project team documents all of the user requirements and gets a sign-off
from the client and management to move forward with system design.
•◦ The specific requirements of the program are defined.
…Analysis
◦ This step includes collecting maximum information from the client about the
desired product.
◦ All details and specifications of the product must be discussed with the
customer.
◦ The development team analyses the requirements keeping in view the design
and coding of the software.
◦ The requirements so gathered are then analyzed for their validity and
possibility of incorporating them into the software system.
This is the last phase of SDLC before the software is delivered to the
customer.
The job of test team is to test the system against the requirements.
The aim of tester is to find out the gaps or defects within the system
and also to verify that the software works as expected according to
the requirements.
The size of the project will determine the complexity of the deployment.
The users can be trained on, or aided with the documentation on how to
operate the software.
Technology is understood
specification of the software system • Integration and Testing – check that modules
interconnect correctly
• Architecture or High-Level Design –
• Unit testing – check that each module acts as
defines how software functions fulfill
expected
the design
Emphasize planning for verification and validation of the product in early stages
of product development
Easy to use
Higher chance of success over the waterfall model due to the early
development of test plans during the life cycle.
The designer demonstrates the prototype, the user evaluates for problems and
suggests improvements.
This loop continues until the user is satisfied
Evolutionary Models: The Prototyping
Evolutionary Models: The Prototyping
Strengths
Customers can “see” the system requirements as they are being gathered
It provide potential for rapid development of increasingly more complete version of the software.
Divided into framework activities (C,P,M,C,D). Each activity represent one segment.
First circuit around the spiral might result in development of a product specification. Subsequently,
develop a prototype and then progressively more sophisticated version of software.
The customer gets early visibility in the software and can provide
feedback on design, delivery, and other requirements.
RAD Model
RAD Model - Pros and Cons
RAD model enables rapid delivery as it reduces the overall
development time due to the reusability of the components and
parallel development.
The advantages of the RAD Model are as follows −
Reusability of components makes or speeds up the development and
reduces the time that it needs for developing a product.
The modularized way of crafting each function within the system
makes the development task easier.
Large projects can be done easily through the RAD model
RAD Model - Pros and Cons
The disadvantages of the RAD Model are as follows −
A proper time-frame should have to be maintained for both end
customer as well as developers for completing the system.
RAD model-based software development fails because of a lack
of commitment and dedication.
A slight complexity in the modularizing in RAD model can lead to
failure of the entire project.
RAD is based on Object oriented approach and if it is difficult to
modularize the project the RAD may not work well.
5. Agile methods
Businesses now operate in a global, rapidly changing environment.
Change in technologies, markets undergo radical shifts, users
discover new things to do with their money and time.
To survive in these uncertain times, developers, as well as business
owners, needed a more flexible approach to building software.
They have to respond to new opportunities and markets, changing
economic conditions and the emergence of competing products and
services.
Rapid software development and delivery is therefore the most
critical requirement for most business systems.
Rapid software development became known as agile development
or agile methods. The Agile software development model was
mainly intended for helping developers build a project which can
adapt to transforming requests quickly.
Agile methods
Agile methods
An agile philosophy for software engineering stresses four
key issues:
1. The importance of self-organizing teams that have control over the
work they perform:
2. Communication and collaboration between team members and
between practitioners and their customers,
3. A recognition that change represents an opportunity; and
4. An emphasis on rapid delivery of software that satisfies the
customer (an iterative approach) .
These method allows the development team to focus on the software
itself rather than on its design and documentation.
Developers start off with a simplistic project design, and then begin to
work on small modules.
Agile development Techniques
1. User stories
Software requirements always handle these
change. Toagile methods do not have a separate
changes,
requirements engineering activity. Rather, they integrate
requirements elicitation with development. To make this
easier, the idea of “user stories” was developed where a
user story is a scenario of use that might be experienced
by a system user.
2. Refactoring
Refactoring means that the programming team look for
possible improvements to the software and implements
them immediately.
Agile development techniques
3. Test-first development
Testing is automated and is central to the development
process, and development cannot proceed until all tests
have been successfully executed.
4. Pair programming
It supports the idea of collective ownership and responsibility
for the system. The team has collective responsibility for
resolving these problems.
It encourages refactoring to improve the software structure.
Agile method applicability
Agile methods have been particularly successful for two
kinds of system development.
An object is simply a tangible entity in the real world (at the requirement
analysis phase) or represents a system entity (at the design stage).
Objects are responsible for managing their own private states, and for
offering services to other objects when is it requested. Thus, data and
functions are encapsulated within an object.
A compound data type that is often used to model a thing or concept in the
real world.
Cont.
.
96
E.g. A car is an object a real-world entity, identifiably separate from its
surroundings. A car has a well-defined set of attributes in relation to other
object.
Cont.
97
.
Each object is an instance of a class
Objects are classified into classes, and objects belonging to the same class
have common properties, such as attributes and operations.
Main role of a class is to define the properties and procedures (the state &
behavior) and applicability of its instances
Each object is an instance of a class
ATTRIBUTES AND METHODS
98
• Class Color
Food preference
Size
Weigh
Attribute Class
t
Diagra
m
Catch mouse
Metho Eat
d miaow
Cont.
99
.
Attributes:
Data of an object.
Properties of an object.
in an object model, all data is stored as attributes of some
object
the attributes of an object are manipulated by the operations
Methods:
Procedures of an object. Or
Behavior of an object.
Object behavior is described in methods or procedures
Cont.
100
.
The term object means a combination or data and logic that represent some
real-world entity.
When developing an object oriented applications, two basic questions arise
What objects does the application need?
What functionality should those objects have?
Cont’
101
d
A Class defines a template for all objects of class
Attributes
Operations
Cont’d
104
Using classes and objects
105
Understand surroundings
Implementation activities
User Acceptance Tests consist of a set of test steps, which verify if specific
requirements are working for the user. If the customer and the supplier agree
on the product, the software development is done. Legally. And practically
is test against certain criteria and specifications which are predefined and
agreed upon in a contract
Test against governmental and legal regulations.
It also includes operational tests: workflows in place to allow the software or
system to be used. This should include workflows for backup plans, user
training, and various maintenance processes and security checks.
Deploymen
t
Goal: conduct activities to make system operational
Deployment activities
Acquire hardware and system software
Package and install components
Train users
Convert and initialize data
Deployment activities prominent in transition phase
Managing Software Development
123
Configuration and change discipline apply to: Requirements, Design, Source code,
Executables.
Software configuration management is the process that monitors and controls
changes in work products. Requirements change as the client requests new features
and as developers improve their understanding of the application domain. The
hardware/software platform on which the system is built changes as new
technology becomes available.
The two activities in this discipline
Develop change control procedures
Manage models and software components
Environment