Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Software product: Software products are nothing but software systems delivered to customer
with the customer with the documentation that describes how to install and use the system.
Software process can be defend as the structured set of activates that are required to develop
the software system.
Software Process is a set of activities, together with ordering constraints among them, such
that if the activities are performed properly and in accordance with the ordering constraints,
the desired result is produced. The desired result is high-quality software at low cost.
Life cycle model of software development specifies the different activities that need to be
performed to develop a software product and the sequencing of these activities .
Software Development Life Cycle (SDLC) is a process used by the software industry to design,
develop and test high quality softwares. The SDLC aims to produce a high-quality software that
meets or exceeds customer expectations, reaches completion within times and cost estimates.
SDLC is the acronym of Software Development Life Cycle.
It is also called as Software Development Process.
SDLC is a framework defining tasks performed at each step in the software development
process.
Explain the problems that might be faced by an organization if it does not follow any
software life cycle model.
Ans.: - The development team must identify a suitable life cycle model for the particular project
and then adhere to it. Without using of a particular life cycle model the development of a
software product would not be in a systematic and disciplined manner. When a software
product is being developed by a team there must be a clear understanding among team
members about when and what to do. Otherwise it would lead to chaos and project failure.
This problem can be illustrated by using an example. Suppose a software development problem
is divided into several parts and the parts are assigned to the team members. From then on,
suppose the team members are allowed the freedom to develop the parts assigned to them in
whatever way they like. It is possible that one member might start writing the code for his part,
another might decide to prepare the test documents first, and some other engineer might
begin with the design phase of the parts assigned to him. This would be one of the perfect
recipes for project failure.
A software life cycle model defines entry and exit criteria for every phase. A
phase can start only if its phase-entry criteria have been satisfied. So without software life cycle
model the entry and exit criteria for a phase cannot be recognized. Without software life cycle
models (such as classical waterfall model, iterative waterfall model, prototyping model,
evolutionary model, spiral model etc.) it becomes difficult for software project managers to
monitor the progress of the project.
Requirements and definations: The first phase involves understanding what need to be
design and what is its function, purpose etc. Here, the specifications of the input and
output or the final product are studied and marked.
System Design and software design: The requirement specifications from first phase
are studied in this phase and system design is prepared. System Design helps in
specifying hardware and system requirements and also helps in defining overall system
architecture. The software code to be written in the next stage is created now.
Implementation and unit testing: With inputs from system design, the system is first
developed in small programs called units, which are integrated in the next phase. Each
unit is developed and tested for its functionality which is referred to as Unit Testing.
Integration and system Testing: All the units developed in the implementation phase
are integrated into a system after testing of each unit. The software designed, needs to
go through constant software testing to find out if there are any flaw or errors. Testing
is done so that the client does not face any problem during the installation of the
software.
Maintenance: It is the longest life cycle phase. This step occurs after installation.
Maintenance includes correcting errors which were not found in earlier stages of the life
cycle, enhancing the implementation of system units and improving the system’s
services as new requirements are found.
Prototyping model
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, since the interactions with prototype can
enable the client to better understand the requirements of the desired system.
Prototyping is an attractive idea for complicated and large systems for which there is no manual
process or existing system to help determining the requirements.
The prototyping model is applied when detailed information related to input and output
requirements of the system is not available.
Prototype model should be used when the desired system needs to have a lot of interaction
with the end users.
1. Requirements gathering and analysis: A prototyping model begins with requirements
analysis and the requirements of the system are defined in detail. The user is interviewed in
order to know the requirements of the system.
2. Quick design: When requirements are known, a preliminary design or quick design for the
system is created. It is not a detailed design and includes only the important aspects of the
system, which gives an idea of the system to the user. A quick design helps in developing the
prototype.
3. Build prototype: Information gathered from quick design is modified to form the first
prototype, which represents the working model of the required system.
4.Customer evaluation: Next, the proposed system is presented to the user/customer for
thorough evaluation of the prototype to recognize its strengths and weaknesses such as what is
to be added or removed. Comments and suggestions are collected from the users and provided
to the developer.
5. Refining prototype: Once the user evaluates the prototype and if he is not satisfied, the
current prototype is refined according to the requirements. That is, a new prototype is
developed with the additional information provided by the user. The new prototype is
evaluated just like the previous prototype. This process continues until all the requirements
specified by the user are met. Once the user is satisfied with the developed prototype, a final
system is developed on the basis of the final prototype.
6. Engineer product: Once the requirements are completely met, the user accepts the final
prototype. The final system is evaluated thoroughly followed by the routine maintenance on
regular basis for preventing large-scale failures and minimizing downtime.
RAD model
RAD model is Rapid Application Development model. It is a type of incremental model. In RAD
model the components or functions are developed in parallel as if they were mini projects. The
developments are time boxed, delivered and then assembled into a working prototype. This
can quickly give the customer something to see and use and to provide feedback regarding the
delivery and their requirements.
Evolutionary software models are iterative. They are characterized in manner that enables the
software engineers to develop increasingly more complete version of a software. That is,
initially a rapid version of the product is being developed and then the product is developed to
more accurate version with the help of the reviewers who review the product after each
release and submit improvements.
The incremental model (also known as iterative enhancement model) comprises the features
of waterfall model in an iterative manner. In an Iterative Incremental model, initially, a partial
implementation of a total system is constructed so that it will be in a deliverable state.
Increased functionality is added. Defects, if any, from the prior delivery are fixed and the
working product is delivered. The process is repeated until the entire product development is
completed. The repetitions of these processes are called iterations. At the end of every
iteration, a product increment is delivered. Each stage of incremental model adds some
functionality to the product and passes it on to the next stage.
Why programs that are developed using evolutionary development are likely to be difficult to
maintain.
The specifications of evolutionary development projects are often abstract and as the project
continues the development and validation portions of software engineering overlap one
another. This usually results in the systems being poorly constructed due to a good initial
specification. and on large projects make it more difficult to integrate new systems into the
evolutionary design, Lastly, the documentation for such projects is often lacking, as the designs
are constantly rebuilt to the customer's specifications.
The spiral model is similar to the incremental model, with more emphasis placed on risk
analysis. The spiral model has four phases: Planning, Risk Analysis, Engineering and
Evaluation. A software project repeatedly passes through these phases in iterations (called
Spirals in this model). The baseline spiral, starting in the planning phase, requirements are
gathered and risk is assessed. Each subsequent spirals builds on the baseline spiral. Its one of
the software development models like Waterfall, Agile, V-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.
Diagram of Spiral model:
Spiral model is called meta model because it encompasses all other life cycle models. It
is called so also because of of the way it comprises of other models of SDLC. Both waterfall and
prototype models are used in it. For example: a single loop spiral actually represents the
waterfall model.
1] Spiral model is not suitable for small 1] Waterfall model is suitable for small
projects. projects.
5] This model is suitable for long and 5] This model is not suitable for long
ongoing projects. and ongoing projects.
Agile Unified Process (AUP) is a simplified version of the Rational Unified Process (RUP)
developed by Scott Ambler.[1] It describes a simple, easy to understand approach to developing
business application software using agile techniques and concepts yet still remaining true to the
RUP. The AUP applies agile techniques including test-driven development (TDD), agile
modeling (AM), agile change management, and database refactoring to improve productivity.
1. Model. Understand the business of the organization, the problem domain being
addressed by the project, and identify a viable solution to address the problem domain.
2. Implementation. Transform model(s) into executable code and perform a basic level of
testing, in particular unit testing.
3. Test. Perform an objective evaluation to ensure quality. This includes finding defects,
validating that the system works as designed, and verifying that the requirements are
met.
4. Deployment. Plan for the delivery of the system and to execute the plan to make the
system available to end users.
The Capability Maturity Model (CMM) is a methodology used to develop and refine an
organization's software development process. CMM was developed at the Software
engineering institute in late 80's. Capability Maturity Model is used as a benchmark to measure
the maturity of an organization's software process. CMM can be used to assess an organization
against a scale of five process maturity levels.
Maturity Level 1 – Initial: Organization has no standard process for software development. Nor
does it have a project-tracking system that enables developers to predict costs or finish dates
with any accuracy. At maturity level 1, processes are usually ad hoc and chaotic.
Maturity Level 2 – Managed: Organization has installed basic software management processes
and controls. But there is no consistency or coordination among different groups.
Maturity Level 3 – Defined: Organization has pulled together a standard set of processes and
controls for the entire organization so that developers can move between projects more easily
and customers can begin to get consistency from different groups.
Maturity Level 4 – Quantitatively Managed: In addition to implementing standard processes,
Organization has installed systems to measure the quality of those processes across all projects.
Maturity Level 5 – Optimizing: Organization has accomplished all of the above and can now
begin to see patterns in performance over time, so it can tweak its processes in order to
improve productivity and reduce defects in software development across the entire
organization.
Process metrics are collected across all projects and over long periods of time. They are used
for making strategic decisions.
Process metrics: describe the effectiveness and quality of the processes that produce the
software product.
Process metrics can be used to improve efficiency of an existing process used in software
development and maintenance.
Process metrics are short-term metrics
Examples are:
Product metrics: describe the characteristics of the product such as size, complexity, design
features, performance, efficiency, reliability, portability, etc.
Product Metrics :Focus on the quality of deliverables . Product metrics are combined across
several projects to produce process metrics.
These are metrics that pertain to Product Quality. They are used to measure cost, quality and
the product’s time-to-market.
product metrics are those metrics which has more meaning in the perspective of the software
product being developed
Unit-2
Functional requirements
The functional requirements for a system describes what the system should do(defines a
function of a system or its component). Functional requirements may be calculations, technical
details, data manipulation and processing and other specific functionality that define what a
system is supposed to accomplish. These requirements depend on the type of software being
developed, the expected users of the software and the general approach taken by the
organization when writing requirements. When expressed as user requirements, the
requirements described in a fairly abstract way. However, functional system requirements
describe the system function in detail, its inputs, expectations, behavior and outputs.
Non-functional requirements
Non Functional requirements are mostly quality requirements. That stipulate how well the
software does, what it has to do.
Non-functional requirements are not directly concerned with the specific functions delivered by
the system. It is a requirement that specifies criteria that can be used to judge the operation of
a system, rather than specific behaviors. It defines system properties and constraints like,
reliability, response time and storage requirements. Constraints are I/O device capability,
system representations, etc.
It is concerned with specifying system performance, security, availability, and other emergent
properties. This means they are often more critical than individual functional requirements.
These requirements are not just concerned with the software system to be developed. Some
non-functional requirements may constrain (restrict) the process that should be used to
develop the system.
Requirements Elicitation: the process through which the customers, buyers, or users of a
software system discover, reveal, articulate, and understand their requirements.
Requirements analysis: the process of reasoning about the requirements that have been
elicited; it involves activities such as examining requirements for conflicts or inconsistencies,
combining related requirements, and identifying missing requirements.
Requirements specification: the process of recording the requirements in one or more forms,
including natural language and formal, symbolic, or graphical representations; also, the product
that is the document produced by that process.
Requirements validation: the process of confirming with the customer or user of the software
that the specified requirements are valid, correct, and complete.
Requirement analysis: The process of studying and refining system, hardware or software
requirements.' Requirements analysis helps to understand, interpret, classify, and organize the
software requirements in order to assess the feasibility, completeness, and consistency of the
requirements.
Requirement analysis is a Software engineering task bridging the gap between system
requirements engineering and software design.
After requirement gathering, requirement analysis is done to check on why the product is
needed. Requirement analysis includes:
Necessity checking – requirements that don’t contribute to the business goals of the
organization or specific problem that has to be addressed by the system are checked for
necessity for the development of the system.
Consistency and completeness checking – no contradictions and feasibility checking in terms
of budget and schedule.
Requirement discussion – highlight the requirement and discussion of problematic elements
through introspection and interviews.
Requirement prioritization – requirements are prioritized based on criticality and the highly
complex and critical activities are identified for risk plot and low level activities are considered
for easy implementation.
Requirement agreement – compromised set of requirements based on feasibility checking.
The process to gather the software requirements from client, analyze and document them is
known as requirement engineering.
The goal of requirement engineering is to develop and maintain sophisticated and descriptive
‘System Requirements Specification’ document.
Scenarios: These are descriptions of a sequence of events, which help to determine possible
future outcomes before software is developed or implemented. Scenarios are used
to test whether the software will accomplish user requirements. It also helps to provide a
framework for questions to software engineers about users' tasks. These questions are asked
from users about future conditions (what-if) and procedures (how) in which they think tasks
can be completed. Generally, a scenario includes the following information.
1. Description of what users expect when the scenario starts
2. Description of how to handle the situation when the software is not functioning
properly
3. Description of the state of the software when the scenario ends.
Questionnaires
A document with pre-defined set of objective questions and respective options is handed over
to all stakeholders to answer, which are collected and compiled.
A shortcoming of this technique is, if an option for some issue is not mentioned in the
questionnaire, the issue might be left unattended.
Prototyping
Prototyping is building user interface without adding detail functionality for user to interpret
the features of intended software product. Prototypes help to clarify unclear requirements.
Quality function deployment (QFD): This deployment translates user requirements into
technical requirements for the software. For this, QFD facilitates the development team to
understand what is valuable to users so that quality can be maintained throughout software
development. QFD identifies the following user requirements.
1. General requirements: These requirements describe the system objectives, which are
determined by various requirements elicitation techniques. Examples of general
requirements are graphical displays requested by users, specific software functions, and
so on.
2. Expected requirements: These requirements are implicit to software as users consider
them to be fundamental requirements, which will be accomplished in the software and
hence do not express them. Examples of expected requirements are ease of software
installation, ease of software and user interaction, and so on.
3. Unexpected requirements: These requirements specify the requirements that are
beyond user expectations. These requirements are not requested by the user but if
added to the software, they become an additional feature of the software. An example
of unexpected requirements is to have word processing software with additional
capabilities such as page layout capabilities along with the earlier features.
Analysis model operates as a link between the 'system description' and the 'design model'.
In the analysis model, information, functions and the behaviour of the system is defined and
these are translated into the architecture, interface and component level design in the 'design
modeling'.
1.FOD: The basic abstractions, which are given to the user, are real world functions.
OOD: The basic abstractions are not the real world functions but are the data abstraction where
the real world entities are represented.
2.FOD: Functions are grouped together by which a higher level function is Page on
obtained.an eg of this technique isSA/SD.
OOD: Functions are grouped together on the basis of the data they operate since the classes
are associated with their methods.
3.FOD: In this appproach the state information is often represented in a centralized shared
memory.
OOD: In this approach the state information is not represented in a centralized memory but is
implemented or distributed among the objects of the system.
Software requirement specification (SRS) is a document that completely describes what the
proposed software should do without describing how software will do it. The basic goal of the
requirement phase is to produce the SRS, Which describes the complete behavior of the
proposed software. SRS is also helping the clients to understand their own needs.
Advantages
Software SRS establishes the basic for agreement between the client and the supplier on what
the software product will do.
• A SRS provides a reference for validation of the final product.
• A high-quality SRS is a prerequisite to high-quality software.
• A high-quality SRS reduces the development cost.
An SRS is correct if every requirement if every requirement included in the SRS represents
something required in the final system.
2). Complete
An SRS is complete if every this software is supposed to do the responses of the software to all
classes of input data are specified data into SRS. Correctness ensure that what is specified is
done correctly, completeness ensures that everything is indeed specified.
An SRS is unambiguous if and only is every requirements stated or return has one and only one
interpretation.
4).
Verifiable. All requirements of the system as documented in the SRS document should be
verifiable. This means that it should be possible to determine whether or not requirements
have been met in an implementation.
5). Consistent
An SRS is consistent if there is no requirement that conflict with another terminology can cause
in consistency. Ex Different requirements may use different terms to refer to the same object.
There may be logical conflict may be requirement causing inconsistency. Ex A requirements
stays that an event F but than other set of requirement stays that and event F should occur
before event E. In consistency in SRS can be a reflection of major problem.
An SRS is ranked for an importance a stable if for each requirement the importance and stability
of a requirements reflect a terms of expected change stability of a requirement reflects in
futures. Writing and SRS is an interactive process, when the requirement systems are specified.
7). Modifiable
They are later modified as the needs of the clients change. SRS should be easy to modify. SRS is
modifiable if its structures and style are such that any necessary change can be made easily
while continuing completeness and consistency.
8). Traceable
An SRS is traceable if the origin of each of its requirement is clear and if it fulfill the reference in
of each requirement in feature development should be traceable to some design and code
element and back word traceability requirement. If be possible to trace design and code
element to the requirement. They support traceability aids verification and validation from all
this characteristics completeness is the most important requirement. One of the most common
problem is requirement specification is when some of the requirement of the client are to
specify.
9. Valid
To validate a requirements specification all the project participants, managers, engineers and
customer representatives, must be able to understand, analyze and accept or approve it. This is
the primary reason that most specifications are expressed in natural language.
10. Testable
A requirement specification must be stated in such as manner that one can test it against
pass/fail or quantitative assessment criteria, all derived from the specification itself and/or
referenced information. Requiring that a system must be “easy” to use is subjective and
therefore is not testable.
Black-box view. It should only specify what the system should do and refrain from stating how
to do these. This means that the SRS document should specify the external behavior of the
system and not discuss the implementation issues. The SRS document should view the system
to be developed as black box, and should specify the externally visible behavior of the system.
For this reason, the SRS document is also called the black-box specification of a system.
The development of software begins once the requirements document is 'ready'. One of the
objectives of this document is to check whether the delivered software system is acceptable.
For this, it is necessary to ensure that the requirements specification contains no errors and
that it specifies the user's requirements correctly. Also, errors present in the SRS will adversely
affect the cost if they are detected later in the development process or when the software is
delivered to the user. Hence, it is desirable to detect errors in the requirements before the
design and development of the software begins. To check all the issues related to
requirements, requirements validation is performed.
In the validation phase, the work products produced as a consequence of requirements
engineering are examined for consistency, omissions, and ambiguity. The basic objective is to
ensure that the SRS reflects the actual requirements accurately and clearly. Other objectives of
the requirements document are listed below.
1. To certify that the SRS contains an acceptable description of the system to be
implemented
2. To ensure that the actual requirements of the system are reflected in the SRS
3. To check the requirements document for completeness, accuracy, consistency,
requirement conflict', conformance to standards and technical errors.