Module 2 Mss
Module 2 Mss
REQUIREMENTS
FUNCTIONAL REQUIREMENTS
NON-FUNCTIONAL REQUIREMENTS
Classification
• Product requirements: Requirements which specify that the delivered product must behave in a
particular way e.g. execution speed, reliability, etc.
• Organizational requirements: Requirements which are a consequence of organizational policies
and procedures e.g. process standards used, implementation requirements, etc.
• External requirements: Requirements which arise from factors which are external to the system
and its development process e.g. interoperability requirements, legislative requirements, etc.
• Formal or informal interviews with system stakeholders are part of most requirements engineering
processes.
• In these interviews, the requirements engineering team puts questions to stakeholders about the
system that they currently use and the system to be developed.
• Requirements are derived from the answers to these questions.
• A social scientist spends a considerable time observing and analyzing how people actually work.
• People do not have to explain their work.
• Social and organizational factors of importance may be observed.
• Ethnographic studies have shown that work is usually richer and more complex than suggested by
simple system models.
• Requirements are derived from cooperation and awareness of other people’s activities.
• Ethnography is effective for understanding existing processes but cannot identify new features.
• Social scientist stays with stakeholders and analyzes how the work is done manually, what is the
objective of the work, what is the requirement.
• After analyzing the work it is discussed with the entire software development team.
II. REQUIREMENTS SPECIFICATION
• The process of writing the user and system requirements in a requirements document.
• User requirements have to be understandable by end-users and customers who do not have a
technical background.
• System requirements are more detailed requirements and may include more technical
information.
Notation Description
Natural language The requirements are written using numbered sentences
Each sentence should express one requirement.
Structured natural language Requirements are written in natural language on a standard form/template.
Each field provides information about an aspect of the requirement.
Design description languages This approach uses a language like a programming language
Graphical notations Graphical models, supplemented by text annotations, are used
UML use case and sequence diagrams are commonly used.
Mathematical specifications These notations are based on mathematical concepts such as
finite-state machines or sets.
• Checks whether the requirements define the system that the customer really wants.
• Requirements error costs are high so validation is very important.
• Fixing a requirements error after delivery may cost up to 100 times the cost of fixing an
implementation error.
Requirement checking
• Validity. Does the system provide the functions which best support the customer’s needs?
• Consistency. Are there any requirements conflicts?
• Completeness. Are all functions required by the customer included?
• Realism. Can the requirements be implemented given available budget and technology ?
• Verifiability. Can the requirements be checked?
1. Requirements reviews
• Systematic manual analysis of the requirements.
• Requirements are analyzed systematically by a team of reviewers who check for errors and
inconsistencies.
2. Prototyping
• Using an executable model of the system to check requirements.
3. Test-case generation
• Developing tests for requirements to check testability.
• The business and technical environment of the system always changes after installation.
• The people who pay for a system and the users of that system are rarely the same people.
• Large systems usually have a diverse user community, with many users having different
requirements and priorities that may be conflicting or contradictory.
TRACEABILITY MATRIX
• A table type document i.e. used in the development of software application to trace requirements.
• It can be used for both forward (from Requirements to Design or Coding) and backward (from
Coding to Requirements) tracing.
• It is also known as Requirement Traceability Matrix (RTM) or Cross Reference Matrix (CRM).
• It is prepared before the test execution process to ensure that every requirement is covered in the
form of a Test case so that we don't miss out any testing.
• We map all the requirements and corresponding test cases to ensure that we have written all the
test cases for each condition.
The traceability matrix can be classified into three different types which are as follows:
1.Forward traceability
2.Backward or reverse traceability
3.Bi-directional traceability
• It helps in tracing the documents that are developed during various phases of SDLC.
• It ensures that the software completely meets the customer's requirements.
• It helps in detecting the root cause of any bug.
Advantages of RTM:
• Display the complete test execution and bugs status based on requirements.
• It is used to show the missing requirements or conflicts in documents.
• We can ensure the complete test coverage, which means all the modules are tested.
• Consider the efforts of the testing teamwork towards reworking
• The first step in writing a use case is to define the set of “actors” that will be involved in the story.
• Actors are the different people (or devices) that use the system or product
• Actors represent the roles that people (or devices) play as the system operates.
• An actor is anything that communicates with the system or product and that is external to the
system itself.
• Every actor has one or more goals when using the system
• Primary actors interact to
achieve required system function
derive the intended benefit from the system.
They work directly and frequently with the software.
Secondary actors support the system so that primary actors can do their work.
PERSONAS
• Personas are ‘imagined users’ where you create a character portrait of a type of user that you think
might use your product.
• Eg: if your product is aimed at managing appointments for dentists - create a dentist persona, a
receptionist persona and a patient persona.
• Personas of different types of user help you imagine what these users may want to do with your
software and how it might be used.
• They help you find difficulties that they might have in understanding and using product
features.
• A persona should ‘paint a picture’ of a type of product user.
• They should be relatively short and easy-to read.
1. Personalization
You should give them a name and say something about their personal circumstances.
You shouldn’t think of a persona as a role but as an individual.
Use an appropriate stock photograph to represent the person in the persona.
Some studies suggest that this helps project teams use personas more effectively.
2. Job-related
If your product is targeted at business, you should say something about their job
For some jobs, such as a teacher where readers are likely to be familiar with the job, this
may not be necessary.
3. Education - You should describe their educational background and their level of technical
skills and experience.
4. Relevance - If you can, you should say why they might be interested in using the product and what
they might want to do with it.
Persona Benefits
SCENARIOS
• A scenario is a narrative that describes how a user, or a group of users, might use your system.
• There is no need to include everything in a scenario – the scenario isn’t a system specification.
• It is simply a description of a situation where a user is using your product’s features to do
something that they want to do.
• Scenario descriptions may vary in length from two to three paragraphs up to a page of text.
Writing Scenarios
• Scenarios should always be written from the user’s perspective and based on identified personas
or real users.
• Your starting point for scenario writing should be the personas that you have created.
• You should normally try to imagine several scenarios from each persona.
• Ideally, scenarios should be general and should not include implementation information.
• It is important to ensure that you have coverage of all of the potential user roles when describing
a system.
USER STORIES
• User stories are finer-grain narratives that set out in a more detailed and structured way a single
thing that a user wants from a software system.
• An important use of user stories is in planning.
• Many users of the Scrum method represent the product backlog as a set of user stories.
• User stories should focus on a clearly defined system feature
• If the story is about a more complex feature that might take several sprints to implement
• Then it is called an epic.
FEATURE IDENTIFICATION
• Your aim in the initial stage of product design should be to create a list of features that define
your product.
• A feature is a way of allowing users to access and use your product’s functionality
• So the feature list defines the overall functionality of the system.
• Features should be independent, coherent and relevant:
• Independence - Features should not depend on how other system features are implemented and
should not be affected by the order of activation of other features.
• Coherence - Features should be linked to a single item of functionality. They should not do more
than one thing and they should never have side-effects.
• Relevance - Features should reflect the way that users normally carry out some task. They
should not provide obscure functionality that is hardly ever required.
• User knowledge - You can use user scenarios and user stories to inform the team of what users
want and how they might use it the software features.
• Product knowledge - You may have experience of existing products or decide to research what
these products do as part of your development process. Sometimes, your features have to
replicate existing features in these products because they provide fundamental functionality that
is always required.
• Domain knowledge - This is knowledge of the domain or work area(e.g. finance, event booking)
that your product aims to support. By understanding the domain, you can think of new
innovative ways of helping users do what they want to do.
• Technology knowledge - New products often emerge to take advantage of technological
developments since their competitors were launched. If you understand the latest technology,
you can design features to make use of it.
2. Architectural Design
Defines the relationship between
major structural elements of the software
Architectural styles & patterns that are used to achieve the requirements
the constraints that affect the way in which architecture can be
implemented.
3. Interface Design
Describes how the software communicates with systems that interoperate with it, and
with humans who use it.
An interface implies a flow of information (e.g., data and/or control)
4. Component-Level Design
Transforms structural elements of the software architecture into a procedural description of
software components.
Information obtained from the class-based models and behavioral models serve as the basis
for component design.
DESIGN PROCESS
• Software design is an iterative process through which requirements are translated into a
“blueprint” for constructing the software.
• Initially, the blueprint depicts a view of software.
• That is, the design is represented at a high level of abstraction—a level that can be directly traced
to the specific system objective and more detailed data, functional, and behavioral
requirements.
• As design iterations occur, subsequent refinement leads to design representations at much lower
levels of abstraction.
• These can still be traced to requirements, but the connection is more subtle.
DESIGN CONCEPTS
8. Separation of Concerns:
Separation of concerns is a design concept that suggests that any complex problem
can be more easily handled if it is subdivided into pieces that can each be solved
and/or optimized independently.
By separating concerns into smaller, and therefore more manageable pieces, a
problem takes less effort and time to solve.
DESIGN MODEL
• The software architecture is the structure or structures of the system, which comprise
software components, the externally visible properties of those components, and the
relationships among them.
• The architecture is not the operational software.
ARCHITECTURAL STYLES
• The software exhibits one of many architectural styles.
• Each style describes a system category that encompasses
(1) a set of components that perform a function required by a system,
(2) a set of connectors that enable “communication, coordination and cooperation”
(3) constraints that define how components can be integrated to form the system
This architecture is applied when input data are to be transformed through a series of
computational or manipulative components into output data.
A pipe-and-filter pattern has a set of components, called filters , connected by pipes that
transmit data from one component to the next.
Each filter works independently of those components upstream and downstream, is
designed to expect data input of a certain form, and produces data output (to the next
filter) of a specified form.
However, the filter does not require knowledge of the workings of its neighboring
filters
If the data flow degenerates into a single line of transforms, it is termed batch
sequential .
This architectural style enables you to achieve a program structure that is relatively easy
to modify and scale.
A number of substyles exist within this category
1. Main program/subprogram architectures - Here a “main” program invokes a
number of program components, which in turn may invoke still other
components.
2. Remote procedure call architectures. The components of a main program/
subprogram architecture are distributed across multiple computers on a
network.
4. OBJECT ORIENTED ARCHITECTURE:
The components of a system encapsulate data and the operations that must be applied to
manipulate the data.
Communication and coordination between components are accomplished via message
passing.
5. LAYERED ARCHITECTURE
To create designs that are more amenable to change and to reduce the propagation of
side effects when changes do occur
4. The Interface Segregation Principle (ISP). “Many client-specific interfaces are better than one
general purpose interface”
5. The Release Reuse Equivalency Principle (REP). “The granule of reuse is the granule of
release”.
6. The Common Closure Principle (CCP). “ Classes that change together belong together.”
Classes should be packaged cohesively. That is, when classes are packaged as part of a design,
they should address the same functional or behavioural area.
7. The Common Reuse Principle (CRP). “ Classes that aren’t reused together should not be
grouped together” . When one or more classes with a package changes, the release number of the
package changes
Components.
• Naming conventions should be established for components that are specifi ed as part of the
architectural model and then refined and elaborated as part of the component-level model.
• Architectural component names should be drawn from the problem domain and should have
meaning to all stakeholders who view the architectural model
Interfaces. Interfaces provide important information about communication and collaboration .
Dependencies and Inheritance. For improved readability, it is a good idea to model dependencies from
left to right and inheritance from bottom (derived classes) to top (base classes).
• In addition, components’ interdependencies should be represented via interfaces, rather than by
representation of a component-to- component dependency
• Step 1. Identify all design classes that correspond to the problem domain.
• Step 2. Identify all design classes that correspond to the infrastructure domain.
• Step 3. Elaborate all design classes that are not acquired as reusable components.
• Step 3a. Specify message details when classes or components collaborate.
• Step 3b. Identify appropriate interfaces for each component.
• Step 3c. Elaborate attributes and define data types and data structures required to implement them.
• Step 3d. Describe processing flow within each operation in detail.
• Step 4. Describe persistent data sources (databases and files) and identify the classes required to
manage them.
• Step 5. Develop and elaborate behavioral representations for a class or component.
• Step 6. Elaborate deployment diagrams to provide additional implementation detail.
• Step 7. Refactor every component-level design representation and always consider alternatives.
• WebApp component is
• (1) a well-defined cohesive function that manipulates content or provides computational or
data processing for an end user or
• (2) a cohesive package of content and functionality that provides the end user with some
required capability
• Content design at the component level focuses on content objects and the manner in which they
may be packaged for presentation to a WebApp end user.
• In many cases, content objects need not be organized as components and can be manipulated
individually