Department of Computer Science &engg.: Shri Rawatpura Sarkar Institute of Technology - II New Raipur (C.G.)
Department of Computer Science &engg.: Shri Rawatpura Sarkar Institute of Technology - II New Raipur (C.G.)
Experiment No.1
Software Development Project: Phases
Below you will find a brief description of these phases. Later on, we’re going to publish a separate
article on each phase.
This phase begins with analyzing what exactly you want to have done. The system overview helps
you see the big picture of the project and understand which steps need to be carried out. You should
determine and document the vision for the target product or system; the user profile(s); the hardware
and software environment; the most important components, functions, or features the software must
have; the security requirements, etc. To aid in the needs analysis, it is sometimes necessary to have
prototypes created – or to have them created by professionals, for that matter. All this can and often
should be done in cooperation with your vendor.
The product of this stage is the general system requirements (and sometimes, draft user manual).
This document will be modified as the project is undertaken.
Estimation
This is a phase that is usually obscure to customers. Vendors tend to supply you with an estimate
itself, and that’s it. Personally, I believe that customers may and should take more active part in the
estimation process. For example, you have to be able to select from different options discussing the
platforms, technologies, and tools that will be used for the target system. Also, make sure your
vendor does a research of the existing libraries and tools that can be used in the project. Remember
that an estimate should explicitly list what is included in the price, as well as why and how much any
additional features will cost. Never let the vendor baffle you with technical jargon and complex
details. Finally, if you are in doubt about the provided estimate, consult an expert; if the vendor
appears to try to take advantage of you, don’t bargain with such a company – just say “thank you”
and look for another OSP. Outsourcing is risky by nature, so you can’t afford to take chances with a
vendor like that.
The estimate isn’t the only document that results from this phase. The project contract (or project
bid) and rough project schedule usually come into existence at this point, too.
A functional specification determines what exactly the target system must do and the premises for its
implementation. All requirements should be thoroughly defined and documented. The general
system requirements and other documents created in the first phase serve as input here. Depending
on the nature of the system, creating a UI prototype in this phase may be crucially important for the
success of the project.
If your company has appropriate experience, you can have the functional specification and UI
prototype created in-house. However, I recommend ordering the development of the specification
and UI prototype from your OSP. This will help you check the vendor’s expertise; at the same time,
the vendor will have an opportunity to get a better idea of the project and get prepared for its
implementation.
Besides the functional specification and UI prototype, this phase may also result in creating an exact
project plan that contains the project schedule, milestones, and human resources.
In this phase, it is necessary to determine the system components covering your requirements and
the way these components will work together. The software architecture design may be logically
divided into two parts: general design and detailed design. The general design consists of the
structural design, development strategy, and system design documentation. Working out the general
design, developers break the target system into high-level components and describe them in the
context of the whole system. When it comes to the detailed design, specification and documentation
on each component are developed. The general system requirements, functional specification, and
UI prototype serve as input for this phase.
Completing this phase, your vendor should produce the description of the software architecture, the
algorithmic structure of the system components and their specifications, the documentation of all
design decisions, and a thorough test plan.
The goal of this phase is building the target system based on the specifications developed in the
previous phases. Transferring the specification algorithms into a programming language, your
vendor creates and integrates the system components. Performing code reviews and test cases
worked out by the vendor’s QA/QC division, as well as unit, integration, and system tests are other
key activities of this phase. Comprehensive testing and correcting any errors identified ensures that
components function together properly, and that the project implementation meets the system
specification.
Outsourcing a software development project, I advise you to have a project delivered and paid for in
parts. This is one of the best ways to minimize the risk for you and your vendor. If you aren’t satisfied
with the way the project is being implemented, you can take to another vendor the specification and
the code that was previously delivered.
In the release phase, your vendor must transfer the target product or system to you. The key
activities usually include installation and configuration in the operational environment, acceptance
testing, and training of the users if necessary.
A crucial point here is formal acceptance testing which comprises a series of end-to-end tests. It is
performed to confirm that the product or system fulfills the acceptance requirements determined by
the functional specification.
After this phase is complete, the product or system is considered formally delivered and accepted. If
iterative development is used, the next iteration should be commenced.
The Operation and Maintenance phase begins once you have formally accepted the product or
system delivered by the vendor. The task of this phase is the proper functioning of the software. To
improve a product or system, it should be continuously maintained. Software maintenance involves
detecting and correcting errors, as well as extending and improving the software itself.
Conclusion
I’d like to conclude this article with a little advice. You shouldn’t treat the documents resulting from
phases 1, 3, and 4 as a law that can’t be amended. The system requirements, user manual,
functional specification, and even software architecture design often need to be updated and
modified throughout the course of the project implementation. Just be cautious that any changes
introduced in the documentation are consistent with your initial vision for the target product or
system. (Well, let’s face it: the initial vision may eventually change as well.)
Experiment No. 2
Requirements Engineering
• Must be adapted to the needs of a specific process, project, product, or people doing the
work.
• Begins during the software engineering communication activity and continues into the
modeling activity.
• In some cases requirements engineering may be abbreviated, but it is never abandoned.
• It is essential that the software engineering team understand the requirements of a problem
before the team tries to solve the problem.
• Identify stakeholders
• Recognize the existence of multiple stakeholder viewpoints
• Work toward collaboration among stakeholders
• These context-free questions focus on customer, stakeholders, overall goals, and benefits of
the system
o Who is behind the request for work?
o Who will use the solution?
o What will be the economic benefit of a successful solution?
o Is there another source for the solution needed?
• The next set of questions enable developer to better understand the problem and the
customer’s perceptions of the solution
o How would you characterize good output form a successful solution?
o What problem(s) will this solution address?
o Can you describe the business environment in which the solution will be used?
o Will special performance constraints affect the way the solution os approached?
• The final set of questions focuses on communication effectiveness
o Are you the best person to give “official” answers to these questions?
o Are my questions relevant to your problem?
o Am I asking too many questions?
o Can anyone else provide additional information?
o Should I be asking you anything else?
Eliciting Requirements
• Goal is to identify the problem, propose solution elements, negotiate approaches, and
specify preliminary set of solutions requirements
• Collaborative requirements gathering guidelines
o Meetings attended by both developers and customers
o Rules for preparation and participation are established
o Flexible agenda is used
o Facilitator controls the meeting
o Definition mechanism (e.g. stickers, flip sheets, electronic bulletin board) used to
gauge group consensus
• Quality management technique that translates customer needs into technical software
requirements expressed as a customer voice table
• Identifies three types of requirements (normal, expected, exciting)
• In customer meetings function deployment is used to determine value of each function
that is required for the system
• Information deployment identifies both data objects and events that the system must
consume or produce (these are linked to functions)
• Task deployment examines the system behavior in the context of its environment
• Value analysis is conducted to determine relative priority of each requirement generated by
the deployment activities
Elicitation Problems
• Each use-case tells stylized story about how end-users interact with the system under a
specific set of circumstances
• First step is to identify actors (people or devices) that use the system in the context of the
function and behavior of the system to be described
o Who are the primary (interact with each other) or secondary (support system)
actors?
o What are the actor’s goals?
o What preconditions must exist before story begins?
o What are the main tasks or functions performed by each actor?
o What exceptions might be considered as the story is described?
o What variations in actor interactions are possible?
o What system information will the actor acquire, produce, or change?
o Will the actor need to inform the system about external environment changes?
o What information does the actor desire from the system?
o Does the actor need to be informed about unexpected changes?
• Next step is to elaborate the basic use case to provide a more detailed description needed
to populate a use-case template
Analysis Model
Analysis Patterns
• Suggest solutions (a class, a function, or a behavior) that can be reused when modeling
future applications
• Can speed up the development of abstract analysis models by providing reusable analysis
models with their advantages and disadvantages
• Facilitate the transformation of the analysis model into a design model by suggesting design
patterns and reliable solutions to common patterns
Negotiating Requirements
• Intent is to develop a project plan that meets stakeholder needs and real-world constraints
(time, people, budget) placed on the software team
• Negotiation activities
o Identification of system key stakeholders
o Determination of stakeholders’ “win conditions”
o Negotiate to reconcile stakeholders’ win conditions into “win-win” result for all
stakeholders (including developers)
• Goal is to produce a win-win result before proceeding to subsequent software engineering
activities
Experiment No. 3
Procedure:
Step 1:
Introduction:
Purpose
Identify the product whose software requirements are specified in this document, including the revision or
release number. Describe the scope of the product that is covered by this SRS, particularly if this SRS
describes only part of the system or a single subsystem .
Project Scope
Provide a short description of the software being specified and its purpose, including relevant benefits,
objectives, and goals. Relate the software to corporate goals or business strategies. If a separate vision and
scope document is available, refer to it rather than duplicating its contents here. An SRS that specifies the
next release of an evolving product should contain its own scope statement as a subset of the long-term
strategic product vision.
Step 2:
Overall Description
Product Perspective
Describe the context and origin of the product being specified in this SRS. For example, state whether this
product is a follow-on member of a product family, a replacement for certain existing systems, or a new,
self-contained product. If the SRS defines a component of a larger system, relate the requirements of the
larger system to the functionality of this software and identify interfaces between the two. A simple
diagram that shows the major components of the overall system, subsystem interconnections, and external
interfaces can be helpful.
Product Features
Summarize the major features the product contains or the significant functions that it performs or lets the
user perform. Only a high level summary is needed here. Organize the functions to make them
understandable to any reader of the SRS. A picture of the major groups of related requirements and how
they relate, such as a top level data flow diagram or a class diagram, is often effective.
User Classes and Characteristics
Identify the various user classes that you anticipate will use this product. User classes may be
differentiated based on frequency of use, subset of product functions used, technical expertise, security or
privilege levels, educational level, or experience. Describe the pertinent characteristics of each user class.
Certain requirements may pertain only to certain user classes. Distinguish the favored user classes from
those who are less important to satisfy.
Operating Environment
Describe the environment in which the software will operate, including the hardware platform, operating
system and versions, and any other software components or applications with which it must peacefully
coexist.
Step 3:
System Features
This template illustrates organizing the functional requirements for the product by system features, the
major services provided by the product. You may prefer to organize this section by use case, mode of
operation, user class, object class, functional hierarchy, or combinations of these, whatever makes the
most logical sense for your product.
System Feature 1
Don‟t really say “System Feature 1.” State the feature name in just a few words.
1 Description and Priority
Provide a short description of the feature and indicate whether it is of High, Medium, or Low priority.
You could also include specific priority component ratings, such as benefit, penalty, cost, and risk (each
rated on a relative scale from a low of 1 to a high of 9).
Step 4:
Communications Interfaces
Describe the requirements associated with any communications functions required by this product,
including e-mail, web browser, network server communications protocols, electronic forms, and so on.
Define any pertinent message formatting. Identify any communication standards that will be used, such as
FTP or HTTP. Specify any communication security or encryption issues, data transfer rates, and
synchronization mechanisms.
Nonfunctional Requirements
Performance Requirements
If there are performance requirements for the product under various circumstances, state them here and
explain their rationale, to help the developers understand the intent and make suitable design choices.
Specify the timing relationships for real time systems. Make such requirements as specific as possible.
You may need to state performance requirements for individual functional requirements or features.
Safety Requirements
Specify those requirements that are concerned with possible loss, damage, or harm that could result from
the use of the product. Define any safeguards or actions that must be taken, as well as actions that must be
prevented. Refer to any external policies or regulations that state safety issues that affect the product ‟s
design or use. Define any safety certifications that must be satisfied.
Security Requirements
Specify any requirements regarding security or privacy issues surrounding use of the product or
protection of the data used or created by the product. Define any user identity authentication
requirements. Refer to any external policies or regulations containing security issues that affect the
product. Define any security or privacy certifications that must be satisfied.
Other Requirements
Define any other requirements not covered elsewhere in the SRS. This might include database
requirements, internationalization requirements, legal requirements, reuse objectives for the project, and
so on. Add any new sections that are pertinent to the project.
Experiment No. 4
OVERALL DESCRIPTION :
Objective :
To understand the users view of a project using Use case Diagram
Software Required :-
Visual Paradigm for UML 8.2
Procedure :-
You can draw use case diagrams in VP-UML as well as to document the event flows of use cases using
the flow-of-events editor of UML 8.2 .The steps are as follows.
Step 1:
Right click Use Case Diagram on Diagram Navigator and select New Use Case Diagram from the pop-up
menu.
Step 2:-
Enter name for the newly created use case diagram in the text field of pop-up box on the top left corner.
Step 3:
Drawing a system
To create a system, select System on the diagram toolbar and then click it on the diagram pane. Finally,
name the newly created system when it is created .
Step 4:
Drawing an actor
To draw an actor, select Actor on the diagram toolbar and then click it on the diagram pane. Finally,
name the newly created actor when it is created.
Step 7:
Resize a use
case
To create an extend relationship, move the mouse over a use case and press its resource iconExtend ->
Use Case. Drag it to your preferred place and then release the mouse button. The use case with
extension points and a newly created use case are connected. After you name the newly created use
case, a pop- up dialog box will ask whether you want the extension point to follow the name of use
case. Click Yes if you want it to do so; click NO if you want to enter another name for extension point.
Step 9:
Include relationship is created
Structuring use cases with package
You can organize use cases with package when there are many of them on the diagram.
Select Package on the diagram toolbar (under Common category).
Step 10:
Experiment No. 6
Objective:-
To show diagrammatically the objects required and the relationships between them while developing
a software product.
Software Required :-
Visual Paradigm for UML 8.2
Procedure :-
Step 1:-
Right click Class Diagram on Diagram Navigator and select New Class Diagram from the pop-up menu
to create a class diagram
Step 2:-
Creating class
To create class, click Class on the diagram toolbar and then click on the diagram.
Creating association
To create association from class, click the Association -> Class resource beside it and drag.
Drag to empty space of the diagram to create a new class, or drag to an existing class to connect to it.
Release the mouse button to create the association.
To create aggregation, use the Aggregation -> Class resource instead.
Step 3:-
To edit multiplicity of an association end, right-click near the association end, select Multiplicityfrom the
popup menu and then select a multiplicity.
To show the direction of an association, right click on it and select Presentation Options > Show
Direction from the pop-up menu.
Step 4:-
The direction arrow is shown beside the association.
Creating generalization
To create generalization from class, click the Generalization -> Class resource beside it and drag.
Drag to empty space of the diagram to create a new class, or drag to an existing class to connect to it.
Release the mouse button to create the generalization.
Creating attribute
To create attribute, right click the class and select Add > Attribute from the pop-up menu.
An attribute is created.
An attribute is created.
An operation is created.
Similar to creating attribute, you can press the Enter key to create multiple operations continuously.
Drag-and-Drop reordering, copying and moving of class members
To reorder a class member, select it and drag within the compartment, you will see a thick black line
appears indicating where the class member will be placed.
To move a class member, select it and drag to the target class, you will see a thick black line appears
indicating where the class member will be placed. Unlike copy, do not press the Ctrl key when drag, the
mouse cursor without the plus sign indicates this is a move action.
Step 5:-
Continue to complete the diagram.
Generalization set
A generalization set defines a particular set of generalization relationships that describe the way in
which a general classifier (or superclass) may be divided using specific subtypes. To define a
generalization set, select the generalizations to include, right click and select Generalization set > Create
Generalization Set... from the popup menu.
Step 6:-
Name the set in the Manage Generalization Sets dialog box, and confirm by pressing OK.
The selected generalizations are grouped. Adjust the connector to make the diagram tidy .
Software Required :-
Visual Paradigm for UML 8.2
Procedure :-
A sequence diagram is used primarily to show the interactions between objects that are represented
as lifelines in a sequential order.
Step 1:-
Right click Sequence diagram on Diagram Navigator and select New Sequence Diagram from the pop-
up menu to create a sequence diagram.
Step 2:-
Enter name for the newly created sequence diagram in the text field of pop-up box on the top left corner.
Creating actor
To create actor, click Actor on the diagram toolbar and then click on the diagram .
Creating lifeline
To create lifeline, you can click LifeLine on the diagram toolbar and then click on the diagram.
Alternatively, a much quicker and more efficient way is to use the resource-centric interface. Click on
the Message -> LifeLine resource beside an actor/lifeline and drag.
Step 3:-
Move the mouse to empty space of the diagram and then release the mouse button. A new lifeline will
be created and connected to the actor/lifeline with a message.
Step 4:-
Using sweeper and magnet to manage sequence diagram
Sweeper helps you to move shapes aside to make room for new shapes or connectors. To use sweeper,
click Sweeper on the diagram toolbar (under the Tools category).
The picture below shows the message specify visit time is being swept downwards, thus new room is
made for new messages.
Step 5:-
You can also use magnet to pull shapes together. To use magnet, click Magnet on the
diagram toolbar (under the Tools category).
Magnet
Click on empty space of the diagram and drag towards top, right, bottom or left. Shapes affected will be
pulled to the direction you dragged.
The picture below shows when drag the magnet upwards, shapes below dragged position are pulled
upwards.
Step 6:-
Creating combined fragment for messages
To create combined fragment to cover messages, select the messages, right-click on the selection and
select Create Combined Fragment, and then select a combined fragment type (e.g. loop) from the
popup menu.
Step 7:-
A combined fragment of selected type will be created to cover the messages .
Step 8:-
Adding/removing covered lifelines
After you've created a combined fragment on the messages, you can add or remove the covered lifelines.
1. Move the mouse over the combined fragment and select Add/Remove Covered Lifeline... from the
pop-up menu.
In the Add/Remove Covered Lifelines dialog box, check the lifeline(s) you want to cover or uncheck the
lifeline(s) you don't want to cover. Click OK button.
3. As a result, the area of covered lifelines is extended or narrowed down according to your selection.
Managing Operands
After you've created a combined fragment on the messages, you can also add or remove operand(s).
1. Move the mouse over the combined fragment and select Operand > Manage Operands... from the
pop-up menu.
Step 9:-
1. To remove an operand, select the target operand from Operands and click Remove button. ClickOK
button.
2. Otherwise, click Add button to add a new operand and then name it. Click OK button.
Developing sequence diagram with quick editor or keyboard shortcuts
In sequence diagram, an editor appears at the bottom of diagram by default, which enables you to
construct sequence diagram with the buttons there. The shortcut keys assigned to the buttons provide a
way to construct diagram through keyboard. Besides constructing diagram, you can also access diagram
elements listing in the editor.
There are two panes, Lifelines and Messages. The Lifelines pane enables you to create different kinds of
actors and lifelines.
Right click on the diagram's background, select Sequence Number and then either Frame-based Single
Level or Frame-based Nested Level from the pop-up menu.
When you set the way of numbering sequence messages on frame base, the sequence messages in
frame will restart numbering sequence message since they are independent and ignore the way of
numbering sequence message outside the frame.