Monday, 26 September 2016

Software Requirement Specification

 Requirement specification is a description of a system that is to be developed, description of the system include user and system requirement.
User requirements are functional and non functional. System requirement is used by engineers for the system design. User requirements are written in natural language, simple table, form and understanding diagram that is easy to use. You should not use structure notation, software jargon that is difficult to understand. Software requirement specify that what a system services provided and what is not provided. Care full assessment of requirement can help in design. Software requirement specification help in design, estimation of product cost and risk arise in development, and should provide complete specification of the entire system.
To achieve the thorough understanding of the product, we have to communicate continuously with project team and customer until the completion of the project. Software requirement specification is a communication tool between end user and designer. Software requirement specification help in describing the scope of the work, providing navigation aids, document structure etc to software designer, linking features to customer requirement and facilitate reviews, providing framework for testing uses cases (primary and secondary),  Providing a platform for refinement.
In requirement document user requirement are written in natural language enlarge by suitable diagram and table. System requirement are also written in natural language but based on other notation such as form, graphical system model and mathematical system models. Notations that can be used for system requirement are
Natural language sentences
Structured natural language
Design description language
Graphical notation
Natural language specification:-
    Natural language is most widely used to specify system and software requirement. Natural language is used in the beginning of software engineering. It is expressive, universal and easy to understand it also ambiguous and vague.
Structured specification:-
                                         In structured specification all requirement are written in standard way where the freedom of the writer is limited. It used templates to specify system requirement. It uses the programming language to show alternatives and highlight important points using different fonts.
               Software requirement specification is a one of deliverable data item description or organization mandated content.

In software requirement specification process we determine the purpose of the system, overall description of the product, end user characteristics, interface of the system, user interface, hardware interface, software interface, communication interface, operation of the system and constrains on operation and design, product functions, performance and functional requirements, reliability, availability, maintainability and flexibility of the purposed system and use standards rule.

Waterfall Model

There are many software process but four activities that are fundamental to software engineering are
1.    Software specification
2.    Software design and implementation
3.    Software validation
4.    Software evolution
These are complex activities and of course include sub activities architecture design, unit testing etc.
Waterfall Model
Waterfall model include fundamental software process specification, design, validation, evolution and represent them as requirement specification, software design, implementation, testing, operation, maintenance. In this model each process phase is complete and then move to another phase, so this model is known as ‘waterfall model’ or ‘software life cycle’. In waterfall model you must specify all the function and constrain on function before starting work on them.
Waterfall model is used when system requirement specified at an early stage of software development process.
Principle stage of waterfall model
Requirement analysis and definition
                                                    Requirements are define according to the need of end user.  System’s function, constrain and goal are define by negotiation with end user in this step. System functions are defined in detail and behave as system specification. System specification document is used in next phase as input.
System and software design
                                             System design process allocates the requirement to either hardware or software system by establishing an overall system architecture. In software design phase interfaces and interactions of the modules are described, as well as their functional contents and other system states like startup, shutdown, error conditions and diagnostic modes have to be considered. The output of this phase is a Software Design Document. 
Implementation and unit testing
                                                 Software design is realized as a program or unit program. Each unit is developed independently. Unit testing check each unit meets it specification.
Integration and system testing
                                                Unit program are integrated and test as whole system to check that the software requirement have been met. After software system is delivered to customer.
Operation and maintenance
                                              This is longest life cycle phase. System is installed and put into practical use. Maintenance involves correcting error, improving the implementation of system unit and enhancing system services as new requirement are discover and ensure software system work properly.




                               Figure:     The Waterfall Model

This software model process is not a simple linear model but involves feedback from one phase to another phase. Changes in the process are also reflected in documentation, which is produced in each phase of process. Iteration can be costly and involve significant work. In final phase the software is implemented to use. After implementation we check software must meet the requirement that is specified and also program and design error are checked and the need of new functionality is identified.

Waterfall model drawback
1.    The major problem is inflexible partition of process stage
2.    Waterfall model is only used when requirement are well understood during the first phase of requirement analysis and unlikely to change radically during system development. If requirement are not specified in initial phase subsequent phase will suffer from it.


Use Case And Example

                              USE CASE
A use case is a methodology used in a requirement engineering process to identified and clarify a system requirement. A use case shows an interaction between end user and system. Use case is a description of how users interact with a system and perform a particular task. Each use case tells that how system should behave in actual environment and show what could go wrong. Each use case shows the goal of the user (what user want to do) the goal of the system help to estimate the overall cost and the complexity of the entire system. How system should behave in a particular task. Use case does not show the user interface or screen and does not specify the implementation language of the system.
Each use cases are represented by using a high level use case diagram. The possible interactions between different elements that will describe in the system requirement are represented as a set of use cases. Use case diagram is a standard notation for the modeling of real word objects and system use case are employed in UML (unified modeling language). Each use case is a sequence of simple step that start with a user’s objective and end when that objective is achieved.
For example use case in a patient information system would include entities such as
·        Register patient
·        View personal info
·        View record
·        Edit record
·        Setup consultation
Each use case diagram has a following element to represent different entities in the system.  These elements are actor in the process may be a human or other system that performs a particular task. Actor can be represented as stick figure. Each class of interaction is represented as ellipse. Lines are used to link actor and classes. Arrow ahead is added to lines to show the initiation of interaction. The boundary is used to define the system of interest according to the world around it. In use case relationship between and among the actor and the use cases is shown. Too much information in to a use case diagram makes this useful technique almost useless.
Each use case should be documented with a textual description. It can help in to link other models in the UML that will develop the scenario in more detail. Use case help in requirement gathering from stakeholder who interact with the system b/c it show interaction with the system.
Use case diagram:-
Online shopping system includes element view item, make purchase, checkout, client register.

 Online shopping


Friday, 23 September 2016

System Development Life Cycle

 System development life cycle
                   System development life cycle is a very important method to develop an informative system. System development life cycle consist of six step and involves different persons. A system development life cycle work as an iterative model. Any change that is required in the system at any stage, the system development life cycle provide this facility to move back at any step to meet the requirements of the user’s. In SDLC model the risk of not meeting user’s requirement is less. The money and time is saved in system development life cycle (SDLC) model.
The steps of system development life cycle are as follow:
1.    Preliminary investigation/ system planning
2.    Requirement analysis
3.    System design
4.    System development   
5.    System testing and integration
6.    System implementation
7.    System maintenance
                             Figure: step of system development life cycle

1.    Preliminary investigation/system planning:-
                                Preliminary investigation is the first step of system development life cycle. In this step we interview the user. The preliminary investigation step involves to finds a user requirement and present problem in the current system. In this step we determine the resources or technologies, the cost of the software. If the proposed system is accepted by the user then next phase is started otherwise repeat this step again and again to meet the user requirement.
2.    Requirement analysis:-
                        In this step, system analyst study the operation of the system and their relationship within an outside the system, and study that where improvement are required and how system work. Requirement specification document is produce in this step.
3.    System design:-
             In this step new system is design to meet the requirements of the user. The design of a new system depends on the requirements indentified in system analysis phase. System design defines the display of the system, the output of system.
4.    Software development:-
                          Actual coding of the program is done in this step. The program is checked by using a dummy data. Documentation is prepared to explain certain procedure.
5.    System testing and integration:-
                                        Program is tested individually to check the develop program work according to the requirement. After individual testing the program module are integrated and then integrated module is tested to check whether system is work according to specification. The system is checked with actual data by real user’s, and the result of the process is examines to ensure that the result is correct or not. If result is not correct or not according to requirement then adjustment is made in the program.
6.    System implementation:-
                                     In this step, the develop system is install and hand over to the user, and system user's are trained to operate the system carefully.
7.    System maintenance:-
                              Maintenance of the system depends upon on modification and enhancements of the system. Maintenance of the system means that the current system working is effective even if system environment such as hardware, software is modified. The current system must up- to- date regularly.
                               


Sequence Diagram

                 The sequence diagram is a diagram that shows the interaction between actors and objects in a system and how object communicate with each other in terms of a sequence and show how process operate with one another and in what order. To model different kind of interaction the UML provide a rich syntax for sequence diagram. The sequence diagram show interaction between objects with respect to time sequence. The sequence diagram concern with objects and classes and exchange of massage between objects needed to carry out functionality of the scenario. In the logical view of the system sequence diagrams are associated with use case under the development. The sequence diagram is a construct of a message sequence chart. The sequence diagrams are sometime called event diagrams or event scenarios.
The object and actors involved are listed in the top of the diagram with parallel vertical dot-ted lines drawn vertically from these. The interactions between objects are indicated by annotated arrows. The rectangle on the dotted lines indicates the lifetime of the object. The sequence of interactions between object and actor or between the object themselves (with each other) are read from top to bottom. The annotations on the arrows indicate the calls to objects, their parameters, and the return value.
If the life line of an object it demonstrate a role. The message name written above the horizontal arrows, the message name is an indication of interaction. The synchronous call is represent by solid arrow heads and asynchronous call (messages) is represent by open arrow heads and dashed lines represent reply of a message. If we send a synchronous message it must wait until the massage response and then continue a process. If a caller send an asynchronous message it doesn’t have to wait for a response and it continue processing.
The asynchronous calls are present in a multithreaded application and in a message-oriented middleware. To represent a process are performed in response to the message are represent by a opaque rectangle, the activation boxes, the method call boxes on the top of a life lines. When an object is destroyed, X is drawn on top of the life line, and drawn dashed line below it, it should be a result of message from the object itself or another object. A message originating from a border of the sequence diagram is a message sent from outside the diagram.
Using sequence diagram for code generation or detailed documentation then don’t have to include every interaction in the diagram.
Here is the diagram of sequence diagrams:-
 Sequence diagram for view patient information

This diagram model the interaction between objects involved in the view patient information use case and medical receptionist can see some patient information.



Reuse-Oriented Software Engineering

             Today some software is reuse able, we use basic architecture of system such as design, code etc and changes are made if required and incorporate into system. When people working on software project if design and code are similar to other software then we use that software and modify them according to our need and include them into their system. Today the use of existing software widely spread. Reusable software models save development time of the project.
Reuse –oriented software base on reusable components and integrated framework for the composition of these components, that components may provide specific function such as word processing and spreadsheet. Type of software components that is used in reuse-oriented software process are
Web services, Services standard are used for development these standard are available for remote.
Objects integrated with component framework, these object is created as a package.
Stand alone software system can be configured. That software is used in particular environment.


                       Diagram of reuse-oriented software

 General process of reuse-oriented model are shown in figure
Requirement specification and system validation stages are general process used in different software process but other stages used in this model are different.
1.    Component Analysis:-
                                     According to given requirement, component is selected to implement that requirement specification. That is not possible the selected component provide the complete functionality, but that is possible the component used provide some of the functionality required.
2.    Requirement Modification:-
                                    Information about component that is selected during component analysis is used to analysis requirement specification. Requirements are modified according to available components. Requirement modification is critical then component analysis activity is reused to find relative solution.
3.    System design with reuse:-
                                    During this stage the design of the system is build.  Designer must consider the reused component and organize the framework. If reused component is not available then new software is develop.
4.    Development and Integration:-
                                         Components and COTS system are integrated to develop new software. Integration in this model is part of development rather than separate activity.
                            Advantages and disadvantages of reuse-oriented model:-
Advantages:-
1.    It can reduce the overall cost of software development as compared to other model.
2.    It can reduce the risk.
3.    It can save the time of software development. b/c testing of component is minimize.
4.    Faster delivery of software.

Disadvantages:-
1.    Reuse-oriented model is not always practical in its pure form.
2.    Compromises in Requirement may lead to a system that does not meet the real requirement of the user.

3.    Organization using the reusable component, are not able to control the new version of component, this may lead to lost control over the system evolution.

Rational Unified Process

           Rational unified process is an object oriented model that has been derived from work on UML so work flow is represented as sequence model, object model. RUP is an iterative software development process. Rational unified process (RUP) combine the element of generic model and other prototyping models such as incremental model. Unified modeling language is used for documentation. Unified process is a component based. Rational method composer (RMC) is used for configuration of RUP, rational unified process is integrated with other rational tools. It provides a specific plan for each step of the development process, it helps prevent resources from being wasted and reduces unexpected development costs.
 Phases of RUP:-
                   Each phase has one key objective and milestone at the end. The visualization of RUP phases and disciplines over time is referred to as the RUP hump chart.
Inception:-
The main goal of this stage is to determine people and system that will interact with system, the estimation of cost, financial report, success factors, possible risk assessment, project plan and description. Using this information we see the software is worth full or not bases on this information, the project is cancelled or repeated.
Elaboration:-
In this phase the analysis of problem domain and project architecture and other required resource list are made. At the end of this phase use case model is set in this use cases and actor have been identified, software architecture description, development plan for the software, prototype that show identified technical risk.
If project is not worth full at that time the project is cancelled or repeated. At this time changes in project is more difficult. The key domain analysis for the elaboration is the system architecture.
Construction:-
Main focus of this phase is to develop a software system. The system is coded and tested in this phase. In this phase operational software is produce and first externally release software.
Transition:-
                    In this phase software is delivered to end user. In transition phase end user is train to use software properly. Adjustments are made in the software according to end user feedback.  product is checked against the quality level set in the Inception phase. If all objectives are met the development cycle is finished.

                          Diagram of rational unified process

Within each iteration, the task is categorized into nine steps.
Six core activities:-
Business modeling
Requirements
Analysis and design
Implementation
Testing
Deployment
Supporting activities:-
Configuration and change management
Project management
environment
  Practices:-
                When software project is design these practices is follow to minimize error and increase productivity. These practices are
1. Develop iteratively
                           It is best to know all requirements of the user in advance. Priorities the user requirement and develop high priority requirement early in development process.
2. Manage requirements
                          Requirement of the user are documented. Any change in requirements are documented and analysis the impact of these changes. Requirements are set by users.
3. Use components
                         Test individual components before they are integrated into a larger system. Through Object oriented programming the reuse of code is easy.
4. Model visually
                        UML is used to represent user and their interaction and important components.
5. Verify quality
                        Test the software to check software meet the end user requirements.
6. Control changes
                        Any change in the software may cause problem so it is important to make sure that changes are verified constantly.
Advantages of RUP
  Separation of phases and workflow
  Phases are dynamic and have milestone
  Workflow are static
  Software development in user’s environment