Mostly waterfall model is used for developments of projects. This model
consists of following phases: 1. Requirement Specification and Analysis 2. Design 3. Implementation and Unit Testing 4. Integration and System testing 5. Operation and Maintenance
The requirements gathering process is intensified and focused specifically on software. To understand the nature of the program(s) to be built, the software engineer (analyst) must understand the information domain for the software, as well as required function, behavior, performance, and interfacing. Requirements for both the system and the software are documented and reviewed with the customer.
DESIGN Software design is actually a multi-step process that focuses on four distinct attributes of a program: data structures, software architecture, interface representations, and procedural (algorithm) detail. The design process translates requirement into a representation of the software that can be assessed for quality before code generation begins. Like requirements, the design is documented and becomes part of the software configuration.
CODE GENERATION
The design must be translated in to a machine-readable form. The testing process focuses on the logical internals of the software, assuring that all statements have been tested and on the functional externals that is, conducting tests to uncover errors and ensure that defined inputs will produce actual results that agree with required results.
TESTING
Once code has been generated, program testing begins. The testing process focuses on the logical internals of the software, assuring that all statements have been tested and on the functional externals that is, conducting tests to uncover errors and ensure that defined inputs will produce actual results that agree with required results.
MAINTENANCE:
Software will undoubtedly undergo change after it is delivered to the customer (A possible exception is embedded software).Change will occur because errors have been encountered, because the software must be adapted to accommodate change in its external environment (e.g. A change required because of a new operating system or peripheral device), or because the customer requires functional or performance enhancements. Software maintenance reapplies each of the preceding phases to an existing program rather than a new one.
DEVELOPMENT PROCESS PHASES
Project Startup. Requirement Analysis. High Level Design. Low Level Design. Coding. System & Integration Testing. System Acceptance Testing. Release of Product. Project Windup. Software Warranty Support Maintenance. Review Documents prepared in Software Development Product Feasibility Reviews (PFR). Software Requirement Review (SRR). Preliminary Design Review (PDR). Source Code Review (SCR). Acceptance Test Review (ATR). Product Release Review (PRR). Product Post-Mortem (PPM).
PROJECT STARTUP
A complete understanding of software requirements is essential to the success of a software development effort. No matter how well designed or well coded, a poorly analyzed and specified program will disappoint the user and bring grief to the developer. The requirement analysis task is a process of discovery, refinement, modeling, and specification. The software scope, initially established in the system- engineering step and refined during software project planning, is refined in detail. Models of the required data, information and control flow, and operational behavior are created. Alternative solutions are allocated to various software elements. Actually requirements analysis is a software-engineering task that bridges the gap between system-level software allocation and software designs as shown in figure below:
REQUIREMENT ANALYSIS
Requirement analysis enables the system engineer to specify function and performance, indicate softwares interface with other system elements, and establish constraints that software must meet. Requirements allow the software engineer (often called analyst in this role) to refine the software are allocation and build modules of the data, functional, and behavioral domains that will be treated by software. Analysis provides the software designer with models that can be translated in to data, architectural, interface, and procedural design. Finally, the requirement specification provides the developer and the customer with the means to assess quality once software is built. Developer and the customer with the analysis may be divided into five areas of effort:
Problem Recognition Evaluation and Synthesis Modeling Specification Review Initially, the analyst studies the system specification (if one exists) and the software project plan. It is important to important to understand software in a system context and to review the software scope that was used to generate planning estimates. Next, communication for analysis must be established so that problem recognition is ensured. The goal of the analyst is recognition of the basic problem elements as perceived by the user/customer. Problem evaluation and solution synthesis is the next major area of effort for analysis. The analyst must define all extremely observable data objects, evaluate the flow and content of information; define and elaborate all software function; understand software behavior in the context of events that effects the system; estimate system interface Characteristics and uncover additional design constraints. Each of these tasks serves to describe the problem so that an overall approach or solution may be synthesized. Upon evaluating current problems and desired information (input and output), the analyst begins to synthesize one or more solutions. To begins, the data, processing functions and behaviors of the system are defined in detail. Once this information has been established, basic architecture for implementation is considered. A client/server approach would seem to be appropriate, but does it fall within the scope outlined in the software plan? A database management system (DBMS) would seem to be required, but is the user/clients need for associatively justified? The process of evaluation and synthesis continues until both analyst and customer feels confident that software can be adequately specified for subsequent development steps. Throughout evaluation and solution synthesis, the analysts primary focus is on what, not how. What data does the system produce and consume what constraints apply? During the evaluation and solution synthesis activity, the analyst creates models of the system man effort to better understand the data and control flow, functional processing and behavioral operation, and information content. The model serves as a foundation, for software design and as the basis for the creation of a specification for the software.
ELEMENTS OF ANALYSIS MODEL
The analysis model must achieve three primary objectives: 1. To describe what the customer requires 2. To establish a basis for the creation of software design, 3. To define a set of requirements that can be validated once the software is built.
SOFTWARE DESIGN
Design is the first phase in the development phase for any system. It may be defined as the process of applying various techniques and principles for the purpose of defining a device a process or a system in sufficient detail to permit physical realization. The designers goal is to produce a model or representation of an entity that will later be built. The process by which the model is developed combines intuition and judgment based on experience in building similar entities, a set of principles and/or heuristic that guides the way in which the model evolves, a set of Criteria that enables quality to be judged, and a process of iteration that ultimately leads to a final design representation. Actually software design sites at the technical kernel of the software engineering process and is applied regardless of the software process model that is used. Beginning once software requirements have been analyzed and specified, software design is the first of three technical activity designs, code generation and testing which are required to build and verify the software. Each activity transforms information in a manner that ultimately results in validated computer software. Each of the elements of the analysis model provides information that is required to create a design model. Software requirements manifested by the data, functional and behavioral model feed the design steps. Using one of a number of design methods, the design step produces a data design an architectural design an interface design, and a procedural design.
This data design transforms the information domain model created during analysis into the data structures that will be required to implement the software. The data objects and the relationships defined in the entity-relationship diagram and the detailed design depicted in the data dictionary provides the basis for the data design activity. The architectural design defines the relationship among those major structural elements of the program. This design representation- the modular framework of a computer program- can be derived from the analysis model(s) and the interaction of sub-system defined within the analysis model. The interface design describes how the software communication within itself, to systems that inter-operate with it, and with humans who use it. An interface implies a flow of information (e.g. data and /or control).Therefore, the data and flow diagrams provide the information required for the interface design. The procedural design transforms structural elements of the program architecture into a procedural description of software components. Information obtained from the PSPEC, CSPEC, and STD serves as the basis for procedural design. During design, we make decisions that will ultimately affect the success of software construction, and as important, the ease with which software can be maintained. Actually, the importance of software can be stated in a single word- quality. Design is the place where quality is fostered in software development. Design provides us with representations of software that can be assessed for quality. Design is the only way we can accurately translates a customers requirements into a finished software product or system. Software design serves as the foundation of all the software engineering and software maintenance steps that follow. Without design, we risk building an unstable system-one that will fail when small changes are made; one that may be difficult to test; one whose utility can not be Accessed until the late in the software engineering process, when time is short and many dollars have already been spent.