Posts

Showing posts with the label Software Engineering

What are the main advantages of using an object-oriented design approach over a function-oriented approach? Explain.

 The main advantages of using an object-oriented design approach over a function-oriented approach are:- 1. Simplicity: Software objects model real world objects, so the complexity is reduced and the program structure is very clearly. 2. Code reuse and recycling: Object created for one program can be easily reused in other program. 3. Faster development: Reuse enables faster development. 4. Lower cost of development: The reuse of software also lowers the cost of development. 5. High-quality software: Faster development of software and lower cost of development allows more time and resource to be used in verification of the software. 6. Maintainable: OOP methods make code more maintainable. Objects can be maintained separately, making locating and fixing problems easier.  7. Scalable: As an object's interface provides for reusing the object in new software, it also provides all the information needed to replace the object without affecting other code. This makes it easy to replace o

What is software quality assurance? What are the various quality concepts of SQA? Explain.

Image
Software Quality Assurance    - Software Quality Assurance (SQA) is simply a way to assure quality in the software. It is the set of activities that ensure processes, procedures as well as standards are suitable for the project and implemented correctly.  - Software quality assurance (SQA) is a planned and systematic plan of all actions necessary to provide adequate confidence that an item or product conforms to establish technical requirements. - Software Quality Assurance works parallel to the development of software. It focuses on improving the process of development of software so that problems can be prevented before they become major issues.  - Software Quality Assurance is a kind of Umbrella activity that is applied throughout the software process. Software Quality Assurance has: - A quality management approach - Effective Software engineering technology (methods and tools) - Formal technical reviews that are tested throughout the software process - A multitier testing strategy

Explain maintenance process in detail.

Image
Software Maintenance   - Software Maintenance is the process of modifying a software product after it has been delivered to the customer.  - The main purpose of software maintenance is to modify and update software applications after delivery to correct faults and to improve performance. Software Maintenance processes  Maintenance processes vary considerably depending on the type of system being maintained, the development process used in the organization, and the people involved in the process. However, the maintenance process is triggered by a set of change requests from system users, management, or customers. The cost and impact of these changes are assed to see how much of the system is affected by the change and how much it might costs to implement the change. If the proposed changes are accepted, a new release of the system is planned. During release planning, all the proposed changes are considered. A decision is then made on which changes to implement in the next version of the

Discuss COCOMO model in cost estimation of the software in detail.

Image
  COCOMO Model  The COCOMO (Constructive Cost Model) is one of the most popularly used software cost estimation models i.e. it estimates or predicts the effort required for the project, total project cost, and scheduled time for the project. This model depends on the number of lines of code for software product development.  This model was developed in 1981 by Barry Boehm to estimate the number of man-months it will take to develop a software product. COCOMO predicts the efforts and schedule of a software product based on the size of the software. The COCOMO model has three types: According to Boehm, software cost estimation should be done through three stages: Basic Model Intermediate Model Detailed Model 1. The Basic COCOMO It is the one type of static model to estimate software development effort quickly and roughly. It mainly deals with the number of lines of code and the level of estimation accuracy is less as we don’t consider all parameters belonging to the project. The estimate

Differentiate between structural models and behavioral models.

Image
  The difference between structural models and behavioral models are:-  Structural Models Structural models of software display the organization of a system in terms of the components and their relationships. Structural models may be static models, which show the structure of the system design, or dynamic models, which show the organization of the system when it is executed. Structural models are created when discussing and designing the system architecture. Behavioral Models Behavioral models are models of the dynamic behavior of a system as it is executing. They show what happens or what is supposed to happen when a system responds to a stimulus from its environment. You can think of these stimuli as being of two types: •A. Data Some data arrives that has to be processed by the system. •B. Events Some event happens that triggers system processing. Events may have associated data, although this is not always the case. A sequence diagram and State Transition Diagram may be used for the

What are the drawbacks of software reuse? Explain.

Image
 Software Reuse  - Software reuse is a term used for developing software by using the existing software components. Some of the components that can be reused are as follows; • Source code • Design and interfaces • User manuals • Software Documentation - Software reuse is the process of implementing or updating software systems using existing software assets. - In most engineering disciplines, systems are designed by composing existing components that have been used in other systems. - Software engineering has been more focused on original development but it is now recognized that to achieve better software, more quickly and at a lower cost, we need a design process that is based on systematic software reuse. - There has been a major switch to reuse-based development over the past 10 years. Drawbacks of software reuse The drawbacks of software reuse are described below:- Increased maintenance costs:  If the source code of a reused software system or component is not available, then main

Explain the component base software engineering and its advantages.

Image
Component-based software engineering  - Component-based software engineering is a development of computer-based systems with the help of existing reusable software procedure that accentuates the design and components. It is also known as reuse oriented model.  - In this rather than developing the system from scratch we search for existing reusable components and design the desired system in terms of those components.  - The advantage of the component-based approach is providing the reusability of these components. With component-based software engineering (CBSE), it may be argued that software development risk is reduced, as one is reusing existing tried-and-tested software rather than software developed from scratch.  - Component-based development techniques involve procedures for developing software systems by choosing ideal off-the-shelf components and then assembling them using well-defined software architecture.  - Component-based software engineering is an approach that mainly de

What is software quality assurance? Explain with example.

Image
Software Quality Assurance    - Software Quality Assurance (SQA) is simply a way to assure quality in the software. It is the set of activities that ensure processes, procedures as well as standards are suitable for the project and implemented correctly. - Software quality assurance (SQA) is a planned and systematic plan of all actions necessary to provide adequate confidence that an item or product conforms to establish technical requirements. - Software Quality Assurance is a process that works parallel to the development of software. It focuses on improving the process of development of software so that problems can be prevented before they become a major issues.  - SQA means monitoring the software engineering processes and methods used to ensure quality. - In SQA, software process specialists and auditors are concerned for the software development process rather than just the artifacts such as documentation, code, and systems. - They examine and change the software engineering pro

Difference between V- model and Spiral model

Image
The difference between V- model and the Spiral model is as follows:-  V - MODEL 1. V model is a software development model but development and testing are not concurrent. 2. In V-model testing activities start with the first stage. 3. Cost of the V-model is expensive. 4. Flexibility of the V model is a little flexible. 5. Guarantee of success through the V model is high. 6. User involvement in V-model is also only in beginning. 7. It is not iterative. Spiral Model     1. Spiral model is a software development model and is made with features of incremental, waterfall, or evolutionary prototyping models. 2. Testing is done in the spiral model at the end of the engineering phase. 3. While the cost of the spiral model is also very expensive. 4. Flexibility to change in the spiral model is not that difficult. 5. Guarantee of success through the Spiral model is low. 6. In this user Involvement is only at the beginning. 7. It is iterative.

Difference between Software Engineering and Computer Science.

 The difference between software engineering and computer science are as follows:- KEY DIFFERENCES: - Software engineering is a process of analyzing, designing, building, and testing software applications while Computer science involves the design and understanding of computational processes. - Software Engineering is a study of how software systems are built, whereas Computer Science is the study of how computers perform theoretical and mathematical tasks. - You should select Software Engineering to learn about the overall working of the specific software while you should select Computer Science to learn about AI and machine learning. - Students of software engineering can take courses on project management while it is often included in the computer science curriculum.                                                               OR,  Computer science focuses on theory and fundamentals: software engineering is concerned with the practicalities of developing and delivering useful softw

Short note on Reliability Validation.

Image
Reliability Validation  - Reliability validation involves exercising the program to assess whether or not it has reached the required level of reliability. - This cannot normally be included as part of a normal defect testing process because data for defect testing is (usually) atypical of actual usage data.  - Reliability measurement, therefore, requires a specially designed data set that replicates the pattern of inputs (the operational profile) to be processed by the system. - Reliability validation is the process of measuring the reliability of a system. To validate that the system meets these requirements, we have to measure the reliability of the system as seen by typical system user. Reliability  Validation Activities  Establish the operational profile for the system. Construct test data reflecting the operational profile. Test the system and observe the number of failures and the times of these failures. Compute the reliability after a statistically significant number of failur

Short note on Security Assessment.

Security Assessment  - Security assessment has something in common with a safety assessment. - It is intended to demonstrate that the system cannot enter some state (an unsafe or an insecure state) rather than to demonstrate that the system can do something. - However, there are differences Safety problems are accidental; security problems are deliberate; Security problems are more generic - many systems suffer from the same problems; Safety problems are mostly related to the application domain Security validation Experience-based validation - The system is reviewed and analyzed against the types of attacks that are known to the validation team. Tool-based validation - Various security tools such as password checkers are used to analyze the system in operation. Tiger teams - A team is established whose goal is to breach the security of the system by simulating attacks on the system. Formal verification - The system is verified against a formal security specification.

Characteristics of good SRS( Software Requirement Specification).

Characteristics of good SRS are:-  • Correct: Every requirement given in SRS is a requirement of the software • Unambiguous: Every requirement has exactly one interpretation • Complete: Includes all functional, performance, design, external interface requirements, the definition of the response of the software to all inputs. • Consistent: Internal consistency. Ranked importance: Essential vs. desirable. • Verifiable: A requirement is verifiable if and only if there exists some finite cost-effective process with which a person or machine can check that the SW meets the requirement • • Modifiable: SRS must be structured to permit effective modifications (e.g. don't be redundant, keep requirements separate) • Traceable: The origin of each requirement is clear.

Explain software maintenance activities.

Image
 Maintenance Activities IEEE provides a framework for sequential maintenance process activities. It can be used in an iterative manner and can be extended so that customized items and processes can be included. These activities go hand-in-hand with each of the following phases: • Identification & Tracing - It involves activities pertaining to the identification of requirements of modification or maintenance. It is generated by the user or system may itself report via logs or error messages. Here, the maintenance type is classified also. • Analysis - The modification is analyzed for its impact on the system including safety and security implications. If the probable impact is severe, an alternative solution is looked for. A set of required modifications is then materialized into requirement specifications. The cost of modification/maintenance is analyzed and estimation is concluded. • Design - New modules, which need to be replaced or modified, are designed against requirement sp

Explain Software maintenance and its types.

Software Maintenance - Software maintenance is a natural part of SDLC (software development life cycle).   - Software Maintenance is the process of modifying a software product after it has been delivered to the customer.  - The main purpose of software maintenance is to modify and update software applications after delivery to correct faults and to improve performance. - Software Maintenance is an activity in which a program is modified after it had been put into use. - In Software Maintenance usually, it is not preferred to apply major software changes to the system’s architecture. - Maintenance is a process in which changes are implemented by either modifying the existing system’s architecture p\or by adding new components to the system. - Software Maintenance is an inclusive activity that includes error corrections, enhancement of capabilities, deletion of obsolete capabilities, and optimization. - Software maintenance is the process of changing, modifying, and updating software to

What do you mean by Software project management ? Explain the software project management activities in brief.

  Software project management - Software project management is an art and discipline of planning and supervising software projects. It is a sub-discipline of software project management in which software projects planned, implemented, monitored, and controlled. - It is a procedure of managing, allocating, and timing resources to develop computer software that fulfills requirements. - In software Project Management, the client and the developers need to know the length, period, and cost of the project. Project Management Activities  The project manager's job varies depending on the type of organization and software product being developed. So it is difficult to write a standard job description for a software manager. Some common activities of project managers are as follows: 1 ) Project planning and scheduling - Project planning is concerned with identifying activities, milestones, and deliverables produced by a project. A plan is drawn up to guide the development team towards the p

What is Risk Management ? Explain risk Management process.

Image
Risk Management  - Risk management is a process of identifying risks that might affect the project schedule or quality of the project/software being developed and taking action to avoid these risks.  - Risk management involves identifying and assessing major project risks to establish the probability that they will occur and the consequences for the project if that risk does arise.   Risk Management Process The risk management process like other project-planning is an integrative process that continues throughout the project. The risk management process are:-  1)Risk Identification 2)Risk Analysis 3)Risk Planning 4)Risk Monitoring 1) Risk identification - Risk identification involves brainstorming activities, it is the first stage of risk management. It concerned with discovering possible risks to the project and may be carried out as a team process using past experience. It also involves the preparation of a risk list.  - Brainstorming is a group discussion technique where all the sta

Short note on Reverse Engineering

Reverse Engineering:- - It is a process to achieve system specification by thoroughly analyzing, understanding the existing system. This process can be seen as a reverse SDLC model, i.e. we try to get a higher abstraction level by analyzing lower abstraction levels. - An existing system is a previously implemented design, about which we know nothing. Designers then do reverse engineering by looking at the code and try to get the design. - With design in hand, they try to conclude the specifications. Thus, going in reverse from code to system specification. Reverse engineering, in computer programming, is a technique used to analyze software in order to identify and understand the parts it is composed of. The usual reasons for reverse engineering a piece of software are to recreate the program, to build something similar to it, to exploit its weaknesses, or strengthen its defenses.            OR,     - Reverse Engineering is a process of extracting knowledge or design information from a

Difference between Top down approach and bottom down approach

The difference between the Top-down approach and bottom down approach is:-  Top-down Approach - Top-down estimating method is also called Macro Model. Using the top-down estimating method, overall cost estimation for the project is derived from the global properties of the software project, and then the project is partitioned into various low-level components.  - This method is more applicable to early cost estimation when only global properties are known. In the early phase of software development, It is very useful because there is no detailed information available. This approach starts at a system level. The estimator starts by examining the overall functionality of the product and how that functionality is provided by interacting subsystems.  Advantages It focuses on system-level activities such as integration, documentation configuration management, etc, many of which may be ignored in other estimating methods and it will not miss the cost of system-level functions. It requires mi

Discuss different types of risks which are likely to arise in software projects. Briefly explain risk analysis stage during risk management process.

There are mainly three categories of risks that are likely to arise in software projects. They are described below:-: 1) Product Risk: Product risks are the risks that influence the quality attributes as well as the performance of software being developed. Example: failure of purchase component to perform as expected 2) Project Risk: Project risks are the risks that influence the schedule of a software project and that if occur delay the development process. Example: staff turnover, hardware unavailability, etc. 3) Business Risk: Business risk is a risk that affects the organization's business that is developing or procuring the software. it could be anything that has the potential of threatening the generation of profits at the predetermined target levels. Business risks could be quite dangerous for the long-term sustainability of the business. Example: Technology change, Product completion, etc. Risk Analysis Stage - Risk Analysis in project management is a sequence of process