Software Engineering (Se-207) : 1) Analysis
Software Engineering (Se-207) : 1) Analysis
Software Engineering (Se-207) : 1) Analysis
DEFINITION
The application of a systematic, disciplined, quantifiable approach to the
development, operation, and maintenance of software and the application of
engineering to the development of software in a systematic method is called software
engineering.
COMMON ISSUES
Doesn’t fulfil need of customer
Hard to extend and improve: a programmer leaves a trap hole for the purpose
of extension and improvement. They are hidden and only visible to
programmer.
Bad documentation: If not properly documented, others can continue that
project.
Bad quality: Features are not according to the user’s requirements.
More time and cost than expected
SE LAYERED TECHNOLOGY
Software development is totally a layered technology. That means, to develop
software one will have to go from one layer to another. The layers are related and
each layer demands the fulfillment of the previous layer. Figure below is the upward
flowchart of the layers of software development.
Quality focus
Any engineering approach must rest on an quality. Software engineering must rest on
an organizational commitment to quality. Total quality management and similar
philosophies foster a continuous process improvement culture, and this culture
ultimately leads to the development of increasingly more mature approaches to
software engineering. The bedrock that supports software engineering is a quality
focus.
Process models
SE process is the glue that holds all the technology layers together and enables the
timely development of computer software. It forms the base for management control
of software project.
Methods
SE methods provide the "Technical Questions" for building Software. Methods
contain a broad array of tasks that include communication requirement analysis,
design modeling, program construction testing and support.
Tools
SE tools provide automated or semi-automated support for the "Process" and the
"Methods". Tools are integrated so that information created by one tool can be used
by another.
GENERIC VIEW
Definition phase
The definition phase focuses on “what”. That is, during definition, the software
engineer attempts to identify what information is to be processed, what function and
performance are desired, what system behavior can be expected, what interfaces are
to be established, what design constraints exist, and what validation criteria are
required to define a successful system. During this, three major tasks will occur in
some form:
System and information engineering
Software project plan
Requirement analysis
Development
The development phase focuses on “how”. That is, during development a software
engineer attempts to define how data are to be structured, how function is to be
implemented within a software architecture, how interfaces are to be characterized,
how the design will be translated into a programming language, and how testing will
be performed. During this, three specific technical tasks should always occur:
Software design
Code generation
Software testing
Support phase
The support phase focuses on “change” associated with error correction, adaptations
required as the software's environment evolves, and changes due to enhancements
brought about by changing customer requirements. Four types of change are
encountered during the support phase:
Correction of the bugs and errors
Adaptation: To adapt or embed already existing features in your system
Enhancement: Keeping in view the future requirements or extensions, the
software should be made powerful as to improve the previous features or add
some new according to the user needs.
Prevention: Computer software declines due to change, and because of this,
preventive maintenance, often called software re-engineering, must be conducted
to enable the software to serve the needs of its end users.
After successful testing the product is delivered / deployed to the customer for their
use. As soon as the product is given to the customers they will first do the beta
testing. If any changes are required or if any bugs are caught, then they will report it
to the engineering team. Once those changes are made or the bugs are fixed then the
final deployment will happen.
PERSPECTIVE PROCESS MODEL
It defines a distinct set of activities, actions, tasks, milestones and work products that
are required to engineer high quality software.
The activities may be:
Linear
It is a step by step approach. Activity of one phase is completed before going to the
next.
Incremental
The incremental build model is a method of software development where the product
is designed, implemented and tested incrementally (a little more is added each time)
until the product is finished.
Evolutionary
They are iterative. They are characterized in a manner that enables software
engineers to develop increasingly more complete version of the software.
WATERFALL MODEL
CHARACTERISTICS
Each phase of development is completed before going to the other.
Linear, sequential model.
Overlapping is not allowed, can’t execute two phases parallel.
Output of one phase is the input of the other.
ADVANTAGES
This model is used only when the requirements are very well known, clear and
fixed.
Product definition is stable.
Technology is understood.
There are no ambiguous requirements
Ample resources with required expertise are available freely
The project is short.
PROTOTYPING MODEL
Prototype: Prototype is a working model of software with some limited
functionality.
The basic idea in Prototype model is that instead of freezing the requirements before
a design or coding can proceed, a throwaway prototype is built to understand the
requirements. This prototype is developed based on the currently known
requirements. By using this prototype, the client can get an “actual feel” of the
system.
Horizontal Prototype:
Horizontal provides a broad view of an entire system focusing on user interaction.
Clarify scope and requirements. Demonstrates outer layer of human interface only,
such as windows, menus, and screens
Vertical Prototype:
Vertical demonstrate the exact functionality of a small section of the entire product.
ADVANTAGES
Increased user involvement in the product even before its implementation.
Since a working model of the system is displayed, the users get a better
understanding of the system being developed.
Reduces time and cost as the defects can be detected much earlier.
Quicker user feedback is available leading to better solutions.
Missing functionality can be identified easily.
Confusing or difficult functions can be identified.
DISADVANTAGES
Risk of insufficient requirement analysis owing to too much dependency on the
prototype.
Users may get confused in the prototypes and actual systems.
Practically, this methodology may increase the complexity of the system as
scope of the system may expand beyond original plans.
Developers may try to reuse the existing prototypes to build the actual system,
even when it is not technically feasible.
The effort invested in building prototypes may be too much if it is not monitored
properly.
WHEN TO USE
Prototype model should be used when the desired system needs to have a lot of
interaction with the end users.
Typically, online systems, web interfaces have a very high amount of interaction
with end users, are best suited for Prototype model. It might take a while for a
system to be built that allows ease of use and needs minimal training for the end
user.
Prototyping ensures that the end users constantly work with the system and
provide a feedback which is incorporated in the prototype to result in a useable
system. They are excellent for designing good human computer interface
systems.
ITERATIVE MODEL
CHARACTERISTICS
It focuses on initial, simplified implementation which then progressively gains
more complexity.
At each iteration, design modifications are made and new functional capabilities
are added.
The basic idea behind this method is to develop a system through repeated cycles
and in smaller portion of time.
Requirements are divided into various builds. During each iteration, the model
goes through design, implementation and testing phase until the complete system
is ready as per the requirement.
ADVANTAGES
Some working functionality can be developed quickly and early in the life cycle.
Results are obtained early and periodically.
Parallel development can be planned.
Progress can be measured.
Less costly to change the scope/requirements.
Testing and debugging during smaller iteration is easy.
Risks are identified and resolved during iteration; and each iteration is an easily
managed milestone.
Easier to manage risk - High risk part is done first.
With every increment, operational product is delivered.
Issues, challenges and risks identified from each increment can be
utilized/applied to the next increment.
It supports changing requirements.
Initial Operating time is less.
Better suited for large and mission-critical projects.
During the life cycle, software is produced early which facilitates customer
evaluation and feedback.
DISADVANTAGES
SPIRAL MODEL
Planning Phase: Requirements are gathered during the planning phase. Requirements
like ‘BRS’ that is ‘Bussiness Requirement Specifications’ and ‘SRS’ that is ‘System
Requirement specifications’.
Risk Analysis: In the risk analysis phase, a process is undertaken to identify risk and
alternate solutions. A prototype is produced at the end of the risk analysis phase. If
any risk is found during the risk analysis then alternate solutions are suggested and
implemented.
Engineering Phase: In this phase software is developed, along with testing at the end
of the phase. Hence in this phase the development and testing is done.
Evaluation phase: This phase allows the customer to evaluate the output of the project
to date before the project continues to the next spiral.
CHARACTERISTICS
none
associated states.
Under review
The concurrent model is often more Under
Release planning: Requirements are gathered and commitments are done regarding
project
Iteration planning: The developers are involved to plan the activities and tasks for
iteration.
Test Driven Development: unit testing is done; each small chunk is tested at every
phase.
Whole Team: Customer and end-users are involved in tem.
Continuous process
Sustainable Pace: XP emphasizes on the limited no. of hours a week for every
member, based on their sustainability.
APPLICATION
Involve new or prototype technology, where the requirements change rapidly, or
some development is required to discover unforeseen implementation problem.
Are research projects, where the resulting work is not the software product itself,
but domain knowledge.
Are small and more easily managed through informal method.
ADVANTAGES
Extreme programming methodologies emphasis on customer involvement
This model helps to establish rational plans and schedules and to get the developers
personally committed to their schedules which are surely a big advantage in the XP
model
This model is consistent with most modern development methods so, developers are
able to produce quality software
DISADVANTAGES
This methodology is only as effective as the people involved, Agile does not solve
this issue
This kind of software development model requires meetings at frequent intervals at
enormous expense to customers
It requires too much development changes which are really very difficult to adopt
every time for the software developer
In this methodology, it tends to impossible to be known exact estimates of work
effort needed to provide a quote, because at the starting of the project nobody aware
about the entire scope and requirements of the project
FEATURE DRIVEN DEVELOPMENT
Feature: It is the functionality which must contain action, result and object. Like on
clicking button, whatever happens is a feature.
Feature Driven Development is an iterative software development methodology
intended for use by large teams working on a project using object-oriented
technology. This type of model is good for organizations that are transitioning from a
phase-based approach to an iterative approach, this methodology also known as
an FDD methodology.
Domain and the development team members work together to create an object model
of the domain problem. Their goal is to propose the model for the domain area. They
are always under the watchful eye of a Chief Architect who also gives them
guidance. After the teams have proposed their own models, one of the proposed
models or a merge of models is selected and it becomes the model for that domain
area. This helps the team have a clear overview of the entire project.
Once your team has developed an object model, the next step is to identify the
features that are valuable to the client. The features are the building blocks of the
project and help the team navigate the processes.
Plan by feature
After the feature list is completed, the next step is to produce the development plan
and assign ownership of features (or feature sets) as classes to programmers.
Design by feature
A design package is produced for each feature. A chief programmer selects a small
group of features that are to be developed within two weeks. Together with the
corresponding class owners, the chief programmer works out detailed sequence
diagrams for each feature and refines the overall model. Next, the class and method
prologues are written and finally a design inspection is held.
Build by feature
After a successful design inspection for each activity to produce a feature is planned,
the class owners develop code for their classes. After unit testing and successful code
inspection, the completed feature is promoted to the main build.
PRIMARY ROLES
DISADVANTAGES
Success in the software development depends on how disciplined the team members
are and how to advance their technical skills
The role of a business analyst is vital to ensure the business requirements
documentation is understood properly. If any organization doesn't have a person with
the right business analyst then this method may not be useful for them
In this development model, great flexibility is given to developer which is surely
great, but too much of it will quickly lead to a development team who lost focus on
its original objectives thus, it hearts the flow of entire project development work
SCRUM
Scrum is a framework within which people can address complex adaptive problems,
while productively and creatively delivering products of the highest possible value. It
is used in the following cases:
Aggressive deadlines
Complex requirements
Design of uniqueness
In scrum, project moves forward in a series of iterations called Sprints (2-4 weeks).
SCRUM ROLES
Team: It comprises of 5-9 people.
Product owner: They are the stakeholders who create a prioritized wish list called
product backlog.
Scrum master: He is the one who leads the project and keeps the team focused on
its goals.
SCRUM EVENTS
Product Backlog
The prioritized wish list created by the product owner in document form.
Sprint Planning
What can be delivered in the Increment resulting from the upcoming Sprint?
How will the work needed to deliver the Increment be achieved?
Daily Scrum
Sprint Review
Sprint Review is held at the end of the Sprint to inspect the Increment and adapt the
Product Backlog if needed. There could have been a single deployment or many
deployments during a Sprint which lead up to that Increment to be inspected.
Sprint Retrospective
The whole work is presented to the Product owner and is asked for feedback. During
the Sprint Retrospective, the team discusses:
Requirement Engineering
The process to gather the software requirements from client, analyze and document
them is known as requirement engineering.
Feasibility Study
Requirement Gathering
Feasibility study
When the client approaches the organization for getting the desired product
developed, it comes up with rough idea about what all functions the software must
perform and which all features are expected from the software.
Referencing to this information, the analysts does a detailed study about whether the
desired system and its functionality are feasible to develop.
This feasibility study is focused towards goal of the organization. This study analyzes
whether the software product can be practically materialized in terms of
implementation, contribution of project to organization, cost constraints and as per
values and objectives of the organization. It explores technical aspects of the project
and product such as usability, maintainability, productivity and integration ability.
The output of this phase should be a feasibility study report that should contain
adequate comments and recommendations for management about whether or not the
project should be undertaken.
Requirement Gathering
If the feasibility report is positive towards undertaking the project, next phase starts
with gathering requirements from the user. Analysts and engineers communicate with
the client and end-users to know their ideas on what the software should provide and
which features they want the software to include.
SRS is a document created by system analyst after the requirements are collected from
various stakeholders.
SRS defines how the intended software will interact with hardware, external
interfaces, speed of operation, response time of system, portability of software across
various platforms, maintainability, speed of recovery after crashing, Security, Quality,
Limitations etc.
The requirements received from client are written in natural language. It is the
responsibility of system analyst to document the requirements in technical language
so that they can be comprehended and useful by the software development team.
Requirements gathering - The developers discuss with the client and end
users and know their expectations from the software.
Requirements Elicitation is the process to find out the requirements for an intended
software system by communicating with client, end users, system users and others
who have a stake in the software system development.
Interviews
Oral interviews
Written interviews
One-to-one interviews which are held between two persons across the table.
Group interviews which are held between groups of participants. They help to
uncover any missing requirement as numerous people are involved.
Surveys
Questionnaires
A shortcoming of this technique is, if an option for some issue is not mentioned in the
questionnaire, the issue might be left unattended.
Task analysis
Team of engineers and developers may analyze the operation for which the new
system is required. If the client already has some software to perform certain
operation, it is studied and requirements of proposed system are collected.
Domain Analysis
Every software falls into some domain category. The expert people in the domain can
be a great help to analyze general and specific requirements.
Brainstorming
An informal debate is held among various stakeholders and all their inputs are
recorded for further requirements analysis.
Prototyping
Prototyping is building user interface without adding detail functionality for user to
interpret the features of intended software product. It helps giving better idea of
requirements. If there is no software installed at client’s end for developer’s reference
and the client is not aware of its own requirements, the developer creates a prototype
based on initially mentioned requirements. The prototype is shown to the client and
the feedback is noted. The client feedback serves as an input for requirement
gathering.
Observation
Team of experts visit the client’s organization or workplace. They observe the actual
working of the existing installed systems. They observe the workflow at client’s end
and how execution problems are dealt. The team itself draws some conclusions which
aid to form requirements expected from the software.
Functional Requirements
Requirements, which are related to functional aspect of software fall into this
category.
They define functions and functionality within and from the software system.
EXAMPLES -
Users can be divided into groups and groups can be given separate rights.
Non-Functional Requirements
Requirements, which are not related to functional aspect of software, fall into this
category. They are implicit or expected characteristics of software, which users make
assumption of.
Security
Logging
Storage
Configuration
Performance
Cost
Interoperability
Flexibility
Disaster recovery
Accessibility
Could have: Software can still properly function with these requirements.
easy to operate
quick in response
User acceptance majorly depends upon how user can use the software. UI is the only
way for users to perceive the system. A well performing software system must also
be equipped with attractive, clear, consistent and responsive user interface. Otherwise
the functionalities of software system cannot be used in convenient way. A system is
said be good if it provides means to use it efficiently. User interface requirements are
briefly mentioned below -
Content presentation
Easy Navigation
Simple interface
Responsive
Consistent UI elements
Feedback mechanism
Default settings
Purposeful layout
SOFTWARE TESTING
RISK MANAGEMENT