Software Process Model (12)

 

What is Software Development Life Cycle? Software Process Model

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. It is a process followed for a software project, within a software organization. It consists of a detailed plan describing how to develop, maintain, replace and alter or enhance specific software. The life cycle defines a methodology for improving the quality of software and the overall development process.

System Development Life Cycle Phases / Stages:

System Study

The Study phase is the most crucial step in creating a successful system. During this phase you decide exactly what you want to do and the problems you’re trying to solve by defining the problems, the objectives and the resources such as personnel and costs.

System Analysis

The end-users requirements should be determined and documented, what their expectations are for the system, and how it will perform. A feasibility study will be made for the project as well, involving determining whether it’s organizationally, economically, socially, technologically feasible. It’s very important to maintain strong communication level with the clients to make sure you have a clear vision of the finished product and its function.

System Design

The design phase comes after a good understanding of customer’s requirements, this phase defines the elements of a system, the components, the security level, modules, architecture and the different interfaces and type of data that goes through the system.

System Development

System Development is the process of defining, designing, testing and implementing a software application. This includes the internal development of customized systems as well as the acquisition of software developed by third parties. System development is also referred to as software development, software engineering or application development. System development includes the management of the entire process of the development of computer software.

System Testing

Bringing different components and subsystems together to create the whole integrated system, and then introducing the system to different inputs to obtain and analyze its outputs and behavior and the way it functions. Testing is becoming more and more important to ensure customer’s satisfaction, and it requires no knowledge in coding, hardware configuration or design.

System Implementation

This phase comes after a complete understanding of system requirements and specifications. It’s the actual construction process after having a complete and illustrated design for the requested system.

System Maintenance

In this phase, periodic maintenance for the system will be carried out to make sure that the system won’t become obsolete, this will include replacing the old hardware and continuously evaluating system’s performance, it also includes providing latest updates for certain components to make sure it meets the right standards and the latest technologies to face current security threats.

Software engineer:

Software engineering is the application of engineering concepts to software development. Its main goal is the creation, improvement, and maintenance of software. Software engineering takes into account engineering aspects like the hardware and software environment when working on a program.

While software engineers’ job descriptions often heavily overlap with software developers, software engineers and software developers are not the same. The main difference is that software engineers apply engineering concepts and principles to software development. Engineers consider beyond the code they’re writing and onto the environment that the program will reside.

What Does a Software Engineer Do?

1.      Updating programs.

2.      Creating new programs.

3.      Analysis.

4.      Keep track of software development.

Types of Software Engineering:

Software Engineer

Software engineers develop software for electronic devices. These developers use programming languages such as C++, Java, and Python to create applications that will run on computers. They work on both the user interface and the back-end, which refer to what the user sees and the mechanics that make a program work, respectively.

2. Embedded Systems Engineer

These engineers are responsible for designing, developing, testing, and maintaining embedded systems. Embedded systems are combinations of hardware and software designed to perform specific tasks. For example, an embedded systems engineer may work on the software which powers ATMs or the program which controls a robot.

3. Security Engineer

A security engineer is responsible for creating systems, methods, and policies to ensure an information system meets certain standards and has no security flaws. Security engineers often operate as “white-hat” ethical hackers and attempt to break into existing systems to determine if any security problems exist.

4. Quality Assurance Engineer

Quality Assurance (QA) engineers write, review, test, and maintain software. These engineers are responsible for ensuring the development team writes a consistent quality of code. They create standards and policies to ensure all code is efficient and works correctly.

 

System Analyst

1. Defining user requirements

A systems analyst has the responsibility of observing users and their requirements from a system. This can be done through conversational interviews with the users and anticipating the new needs of users from already existing systems. This helps in identifying the requirements from new systems via examination of current systems and updating configurations for new systems.

2. Prioritizing requirements

Systems analysts use social and analytical skills in prioritizing system specifications. Most enterprise systems have a lot of requirements but these are frequently constrained due to a lack of resources.

Different users in an organization have different needs from a system, but a systems analyst helps to prioritize the user’s needs in accordance with the available resources. This helps to ensure that maximum productivity is obtained from a working system.

3. Problem analysis

Systems analysts tend to observe data and facts about an operating business. They use technological techniques in identifying problems and removing unnecessary details so as to enable the fulfillment of real needs from a system.

4. Drawing specifications

Systems analysts also assign the relevant responsibilities of managing system requirements to the right individuals and team members. They specify programming tasks to programmers and managerial tasks to managers. They also document these system tasks in detail, using specification documents, and review the output to ensure that it matches the required specification.

5. System design and evaluation

Systems analysts guide the development of every system in an organization, from the specification of requirements to the designing of the system itself. They ensure that the built systems correspond to the system specifications by carrying out system evaluation. They also test the performance of the built system to ensure that it meets the required performance as specified.

6. Keeping up to date with technological advancements

Systems analysts are real agents of change in the use of technology in an organization. They tend to observe the overall use of technology in an organization and work to keep up with evolving technological demands by replacing outdated technologies with the latest ones.

Requirement Collection Methods

Requirement Engineering

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.

It is a four step process, which includes –

 Feasibility Study

 Requirement Gathering

 Software Requirement Specification

 Software Requirement Validation

What Is a Feasibility Study?

A feasibility study is simply an assessment of the practicality of a proposed project plan or method. This is done by analyzing technical, economic, legal, operational and time feasibility factors. Just as the name implies, you’re asking, “Is this feasible?” For example, do you have or can you create the technology to do what you propose? Do you have the people, tools and the resources necessary?

Types of Feasibility Study:

Technical Feasibility

This assessment focuses on the technical resources available to the organization. It helps organizations determine whether the technical resources meet capacity and whether the technical team is capable of converting the ideas into working systems. Technical feasibility also involves the evaluation of the hardware, software, and other technical requirements of the proposed system.

Economic Feasibility

This assessment typically involves a cost/ benefits analysis of the project, helping organizations determine the viability, cost, and benefits associated with a project before financial resources are allocated. It also serves as an independent project assessment and enhances project credibility—helping decision-makers determine the positive economic benefits to the organization that the proposed project will provide.

Legal Feasibility

This assessment investigates whether any aspect of the proposed project conflicts with legal requirements like zoning laws, data protection acts or social media laws.

Operational Feasibility

This assessment involves undertaking a study to analyze and determine whether—and how well—the organization’s needs can be met by completing the project. Operational feasibility studies also examine how a project plan satisfies the requirements identified in the requirements analysis phase of system development.

Scheduling Feasibility (Time Feasibility)

This assessment is the most important for project success; after all, a project will fail if not completed on time. In scheduling feasibility, an organization estimates how much time the project will take to complete.

Importance of Feasibility Study

 Improves project teams’ focus

 Identifies new opportunities

 Provides valuable information for a “go/no-go” decision

 Narrows the business alternatives

 Identifies a valid reason to undertake the project

 Enhances the success rate by evaluating multiple parameters

 Aids decision-making on the project

 Identifies reasons not to proceed

Requirement Gathering

If the feasibility report is positive towards undertaking the project, next phase starts with gathering requirements from the user. Analysts and engineers communicate with the client and end-users to know their ideas on what the software should provide and which features they want the software to include.

Software Requirement Specification

SRS is a document created by system analyst after the requirements are collected from various stakeholders. SRS defines how the intended software will interact with hardware, external interfaces, speed of operation, response time of system, portability of software across various platforms, maintainability, speed of recovery after crashing, Security, Quality, Limitations etc.

 User Requirements are expressed in natural language.

 Technical requirements are expressed in structured language, which is used inside the

organization.

 Design description should be written in Pseudo code.

 Format of Forms and GUI screen prints.

 Conditional and mathematical notations for DFDs etc.

Software Requirement Validation

After requirement specifications are developed, the requirements mentioned in this document are validated. User might ask for illegal, impractical solution or experts may interpret the requirements incorrectly. This results in huge increase in cost if not nipped in the bud. Requirements can be checked against following conditions -

 If they can be practically implemented

 If they are valid and as per functionality and domain of software

 If there are any ambiguities

 If they are complete

 If they can be demonstrated

Software Requirements

Functional Requirements

Requirements, which are related to functional aspect of software fall into this category. They define functions and functionality within and from the software system.

 Search option given to user to search from various invoices.

 User should be able to mail any report to management.

 Users can be divided into groups and groups can be given separate rights.

 Should comply business rules and administrative functions.

 Software is developed keeping downward compatibility intact.

Non-Functional Requirements

Requirements, which are not related to functional aspect of software, fall into this category. They are implicit or expected characteristics of software, which users make

assumption of.

 Security

 Logging

 Storage

 Configuration

 Performance

 Cost

 Interoperability

 Flexibility

 Disaster recovery

 Accessibility

Concept of system design

The process of defining the entire requirements of a system such as the architecture, modules, interface and design is called system design. We can say that system design ranges from discussing about the system requirements to product development. System development creates or alters the system so that the processes, practices and methodologies are changed to develop the system. A systematic approach is needed to manage the system requirements and design methodology. System design can be classified as logical design and physical design. Logical design represents the abstract dataflow while physical design represents the input and output processes in the system.

The various subsets of System Design:

1. Logical Design

It is the abstract representation of the data flow, inputs, and outputs of the system. It explains the sources, destinations, data stores and data flows all in a process that satisfies the user needs. The logical design of a system is prepared while keeping the level of detail that virtually tells the information flow and out of the system in mind. The data flow and ER diagrams are used respectively.

2. Physical Design

The process of actual input and output of the system is related to physical design. The main criteria of physical design are to manage how the data is verified, processed, and displayed as the result. It basically revolves around the interface design, process design, and data design of the user.

3. Architectural Design

It is also called the high level of design that emphasizes the design of system architecture. It explains the nature and root of the system.

4. Detailed Design

It follows the Architectural Design and emphasizes the development of every subject.

Advantages of system design

 It eliminates inconsistencies.

 It speeds up the process.

 It makes the life of the customer easier and simpler.

 It provides a lot of resources.

System Design skills

Reliability

It means the ability of a system to endure faults or problems to prevent failures or complete shutdowns.

Scalability

Scalability is the system’s ability to perform and give a reasonable performance in the situation of heavy load.

Maintainability

This means writing code that simply is understood and upgraded by someone who is not the original author of the code.

Software Quality Measures

1. Portability: A software device is said to be portable, if it can be freely made to work in various operating system environments, in multiple machines, with other software products, etc.

2. Usability: A software product has better usability if various categories of users can easily invoke the functions of the product.

3. Reusability: A software product has excellent reusability if different modules of the product can quickly be reused to develop new products.

4. Correctness: A software product is correct if various requirements as specified in the SRS document have been correctly implemented.

5. Maintainability: A software product is maintainable if bugs can be easily corrected as and when they show up, new tasks can be easily added to the product, and the functionalities of

the product can be easily modified, etc.

6. Functional suitability: A solution must correctly perform functions that will satisfy all customer needs.

7. Performance efficiency: A solution must have enough capacity and computing power to operate correctly and without delays.

8. Compatibility: A solution must provide interoperability, i.e. be compatible with various operating systems, networks or devices.

9. Reliability: A solution must recover from faults without affecting user experience.

10. Security: A solution must provide impeccable data protection.

Software Testing Approaches:

1. White Box Testing:

It is also called Glass Box, Clear Box, and Structural Testing. White Box Testing is based on the application’s internal code structure. In white-box testing, an internal perspective of the system, as well as programming skills, are used to design test cases. This testing is usually done at the unit level.

2. Black Box Testing:

It is also called Behavioral/Specification-Based/Input-Output Testing. Black Box Testing is a software testing method in which testers evaluate the functionality of the software under test without looking at the internal code structure.

Software development models

The software development models are the various processes or methodologies that are being selected for the development of the project depending on the project’s aims and goals. There are many development life cycle models that have been developed in order to achieve different required objectives. The models specify the various stages of the process and the order in which they are carried out.

Waterfall model

Requirement Gathering and analysis − All possible requirements of the system to be developed are captured in this phase and documented in a requirement specification document. System Design − The requirement specifications from first phase are studied in this phase and the system design is prepared. This system design helps in specifying hardware and system requirements and helps in defining the overall system architecture.

Coding and Unit Testing − With inputs from the 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 Testing − All the units developed in the implementation phase are integrated into a system after testing of each unit. Post integration the entire system is tested for any faults and failures.

Deployment of system − Once the functional and non-functional testing is done; the product is deployed in the customer environment or released into the market.

Maintenance − There are some issues which come up in the client environment. To fix those issues, patches are released. Also to enhance the product some better versions are released. Maintenance is done to deliver these changes in the customer environment.

 

Advantages:

 The requirements are simple and explicitly declared; they remain unchanged during the Entire project development.

 The start and end points for each phase is fixed, which makes it easy to cover progress.

 The release date for the complete product, as well as its final cost, can be determined before development.

 It gives easy to control and clarity for the customer due to a strict reporting system.

Disadvantages:

 This model cannot accept the changes in requirements during development.

 It becomes tough to go back to the phase. For example, if the application has now shifted to the coding phase, and there is a change in requirement, It becomes tough to go back and change it.

 Since the testing done at a later stage, it does not allow identifying the challenges and risks in the earlier phase, so the risk reduction strategy is difficult to prepare.

Prototype Model

1. Requirements gathering and analysis

A prototyping model starts with requirement analysis. In this phase, the requirements of the system are defined in detail. During the process, the users of the system are interviewed to know what their expectation from the system is.

2. Quick design

The second phase is a preliminary design or a quick design. In this stage, a simple design of the system is created. However, it is not a complete design. It gives a brief idea of the system to the user. The quick design helps in developing the prototype.

3. Building Prototype

In this phase, an actual prototype is designed based on the information gathered from quick design. It is a small working model of the required system.

4. Customer evaluation

In this stage, the proposed system is presented to the client for an initial evaluation. It helps to find out the strength and weakness of the working model. Comment and suggestion are collected from the customer and provided to the developer.

5. Refining prototype

If the user is not happy with the current prototype, you need to refine the prototype according to the user's feedback and suggestions. This phase will not over until all the requirements specified by the user are met. Once the user is satisfied with the developed prototype, a final system is developed based on the approved final prototype.

6. Engineer product

Once the final system is developed based on the final prototype, it is thoroughly tested and deployed to production. The system undergoes routine maintenance for minimizing downtime and prevents large-scale failures.

Advantages:

 Helps team member to communicate effectively

 User satisfaction exists because the customer can feel the product at a very early stage.

 There will be hardly any chance of software rejection.

 It helps you to find out the missing functionality in the system.

 It also identifies the complex or difficult functions.

 Encourages innovation and flexible designing.

 It is a straightforward model, so it is easy to understand.

 No need for specialized experts to build the model

 The prototype serves as a basis for deriving a system specification.

 The prototype helps to gain a better understanding of the customer's needs.

 Prototypes can be changed and even discarded.

 A prototype also serves as the basis for operational specifications.

 Prototypes may offer early training for future users of the software system.

Disadvantages:

 Prototyping is a slow and time taking process.

 Prototyping may encourage excessive change requests.

 Poor documentation because the requirements of the customers are changing.

 The client may lose interest in the final product when he or she is not happy with the initial prototype.

 Developers who want to build prototypes quickly may end up building sub-standard development solutions.

Agile Model

Phases of Agile Model:

1. Requirements gathering:

In this phase, you must define the requirements. You should explain business opportunities and plan the time and effort needed to build the project. Based on this information, you can evaluate technical and economic feasibility.

2. Design the requirements:

When you have identified the project, work with stakeholders to define requirements. You can use the user flow diagram or the high-level UML diagram to show the work of new features and show how it will apply to your existing system.

3. Construction/ iteration: When the team defines the requirements, the work begins. Designers and developers start working on their project, which aims to deploy a working product. The product will undergo various stages of improvement, so it includes simple, minimal functionality.

4. Testing: In this phase, the Quality Assurance team examines the product's performance and looks for the bug.

5. Deployment: In this phase, the team issues a product for the user's work environment.

6. Feedback: After releasing the product, the last step is feedback. In this, the team receives feedback about the product and works through the feedback.

Advantages:

 Customer satisfaction by rapid, continuous delivery of useful software.

 Working software is delivered frequently (weeks rather than months).

 Face-to-face conversation is the best form of communication.

 Close daily cooperation between business people and developers.

 Continuous attention to technical excellence and good design.

 Regular adaptation to changing circumstances.

 Even late changes in requirements are welcomed

Disadvantages:

 In case of some software deliverables, especially the large ones, it is difficult to assess the effort required at the beginning of the software development life cycle.

 There is lack of emphasis on necessary designing and documentation.

 The project can easily get taken off track if the customer representative is not clear what final outcome that they want.

 Only senior programmers are capable of taking the kind of decisions required during the development process. Hence it has no place for newbie programmers, unless combined with experienced resources.

Comments

Popular posts from this blog

Question Collection-11

Important Questions for XII