1) What is software engineering?
- “research, design, develop, and test operating systems-level software, compilers, and network distribution software for medical, industrial, military, communications, aerospace, business, scientific, and general computing applications.
- “the systematic application of scientific and technological knowledge, methods, and experience to the design, implementation, testing, and documentation of software”
- “the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance ofsoftware
- “an engineering discipline that is concerned with all aspects of software production “and “the establishment and use of sound engineering principles in order to economically obtain software that is reliable and works efficiently on real machines.”
2) List & Explain characteristics of software engineering ?
- Software is developed or engineered;It is not manufactured in the classical sense.
- Software does not wear-out
- Most software is custom built rather than being assembled from existing component.
- Software cost is concentrated in engineering.
- Software is developed or engineered It is not manufactured in the classical sense.
3) State Fore attributes of good software?
Maintainability: Software should be written in such a way so that it can evolve to meet the changing needs of customers. This is a critical attribute because software change is an inevitable requirement of a changing business environment.
Dependability& Security: Software dependability includes a range of characteristics including reliability, security and safety. Dependable software should not cause physical or economic damage in the event of system failure. Malicious users should not be able to access or damage the system.
Efficiency: Software should not make wasteful use of system resources such as memory and processor cycles. Efficiency therefore includes responsiveness, processing time, memory utilization, etc.
Acceptability: Software must be acceptable to the type of users for which it is designed. This means that it must be understandable, usable and compatible with other systems that they use.
5) What are the categories of software?
5) List any eight categories of software?
System software: provides the basic functions for computer usage and helps run the computer hardware and system. It includes a combination of the following
- device drivers
- operating systems
Application software includes end-user applications of computers such as word processors or video games, and ERP software for groups of users.
- Business Software:- Inventory Management,ERP
- Personal Software:-Word Processor,Notepad,Wordpad
- Embedded software:- matlab,Image processing software
- Artificial Intelligence software:- DNA software,Biometric
- Scientific & Engineering software:-CAD/CAM,catia,Pro-v
- Medical application software:-X-RAY,Ratina,C.T Scan
6) Describe the four layers of software engineering?
6) Explain software engineering is layered technology approach?
Software engineering is totally a layered technology. It means that, to develop a software one will have to go from one layer to another layer. The all layers are related and each layer fulfill the all requirements of the previous layer. This layered technology is consist of four layered which are basically interact each other as bottom to top.
- A Quality Focus
A quality Process:
- Any engineering approach must rest on an quality.
- The “Bed Rock” that supports software Engineering is Quality Focus.
- Foundation for SE is the Process Layer
- SE process is the GLUEthat holds all the technology layers together and enables the timely development of computer software.
- It forms the base for management control of software project.
- SE methods provide the “Technical Questions” for building Software.
- Methods contain a broad array of tasks that include communication requirement analysis, design modeling, program construction testing and support.
- SE tools provide automated or semi-automated support for the “Process” and the “Methods”.
- Tools are integrated so that information created by one tool can be used by another.
7) Explain Waterfall model with neat sketch diagram?
Ans: The Waterfall Model was first Process Model to be introduced. It is also referred to as a linear-sequential life cycle model. It is very simple to understand and use. In a waterfall model, each phase must be completed fully before the next phase can begin. This type of model is basically used for the for the project which is small and there are no uncertain requirements. At the end of each phase, a review takes place to determine if the project is on the right path and whether or not to continue or discard the project. In this model the testing starts only after the development is complete. In waterfall model phases do not overlap.
- Requirement Gathering and analysis:All possible requirements of the system to be developed are captured in this phase and documented in a requirement specification doc.
- System Design:The requirement specifications from first phase are studied in this phase and system design is prepared. System Design helps in specifying hardware and system requirements and also helps in defining overall system architecture.
- Implementation:With inputs from 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 of waterfall model:
- This model is simple and easy to understand and use.
- It is easy to manage due to the rigidity of the model – each phase has specific deliverables and a review process.
- In this model phases are processed and completed one at a time. Phases do not overlap.
- Waterfall model works well for smaller projects where requirements are very well understood.
Disadvantages of waterfall model:
- Once an application is in the testing stage, it is very difficult to go back and change something that was not well-thought out in the concept stage.
- No working software is produced until late during the life cycle.
- High amounts of risk and uncertainty.
- Not a good model for complex and object-oriented projects.
- Poor model for long and ongoing projects.
- Not suitable for the projects where requirements are at a moderate to high risk of changing.
8) Explain Spiral Model with its diagram?
Ans:The spiral model is similar to the incremental model, with more emphasis placed on risk analysis. The spiral model has four phases: Planning, Risk Analysis, Engineering and Evaluation. A software project repeatedly passes through these phases in iterations (called Spirals in this model). The baseline spiral, starting in the planning phase, requirements are gathered and risk is assessed. Each subsequent spirals builds on the baseline spiral.
Phases Of Spiral Model (Tasks Regions):
- Customer communication-tasks required to establish effective communication between developer and customer.
- Planning-tasks required to define resources,timelines and other project related information.
- Risk analysis–tasks required to assess both technical and management risks.
- Engineering-tasks required to build one or more representations of the application.
- Construction and release–tasks required to construct ,test,install,and provide user support.
- Customer evaluation-tasks required to obtain customer feedback based on evaluation of the software representations created during the engineering stage and implemented during the installation stage.
Advantages of Spiral model:
- High amount of risk analysis hence, avoidance of Risk is enhanced.
- Good for large and mission-critical projects.
- Strong approval and documentation control.
- Additional Functionality can be added at a later date.
- Software is produced early in the software life cycle.
Disadvantages of Spiral model:
- Can be a costly model to use.
- Risk analysis requires highly specific expertise.
- Project’s success is highly dependent on the risk analysis phase.
- Doesn’t work well for smaller projects.
9) Explain Incremental Model with neat sketch diagram?
Ans:Incremental model in software engineering is a one which combines the elements of waterfall model which are then applied in an iterative manner. It basically delivers a series of releases called increments which provide progressively more functionality for the client as each increment is delivered.In incremental model of software engineering, waterfall model is repeatedly applied in each increment. The incremental model applies linear sequences in a required pattern as calendar time passes. Each linear sequence produces an increment in the work.
Advantages of Incremental Model:
- Generates working software quickly and early during the software life cycle.
- More flexible – less costly to change scope and requirements.
- Easier to test and debug during a smaller iteration.
- Easier to manage risk because risky pieces are identified and handled during its iteration.
- Each iteration is an easily managed milestone.
Disadvantages of Incremental Model:
- Each phase of an iteration is rigid and do not overlap each other.
- Problems may arise pertaining to system architecture because not all requirements are gathered up front for the entire software life cycle.
10) What is RAD Model? Explain with diagram?
Ans:RAD Model or Rapid Application Development Model is similar to incremental model andwaterfall model. In RAD Model, development should be done in specified time frame. RAD Model is suitable for the small project where all the requirements are gathered before starting development of the project and no any concrete plan required Development starts as soon as requirement gathered and delivered initial working prototype to the client to get the feedback. Once client gives the feedback, based on the client’s feedback other changes are done. This process goes parallel with co-operation with client and developers. Each prototype is delivered to the client with working functionality and changes made based on the client’s feedback. Development moves faster in RAD Model with minimum errors. RAD Model follows the incremental delivery of the modules. The main goal or RAD Model is to make the reusability of the developed components.
Phases in RAD Model:
- Business Modeling
- Data Modeling
- Process Modeling
- Application Modeling
- Testing and Turnover
Communication: is an activity which works to understand the business problem and the information characteristics that should be accommodate by the software.
Planning: In RAD model Planning is required because numerous software teams works in parallel on different system functions.
Business modeling: The information flow is identified between various business functions.
Data modeling: Information gathered from business modeling is used to define data objects that are needed for the business.
Process modeling: Data objects defined in data modeling are converted to achieve the business information flow to achieve some specific business objective. Description are identified and created for CRUD of data objects.
Application generation: Automated tools are used to convert process models into code and the actual system.
Testing and turnover: Test new components and all the interfaces.
Advantages of RAD Model:
- Fast application development and delivery.
- Lest testing activity required.
- Visualization of progress.
- Less resources required.
- Review by the client from the very beginning of development so very less chance to miss the requirements.
- Very flexible if any changes required.
- Cost effective.
- Good for small projects.
Disadvantages of RAD Model:
- High skilled resources required.
- On each development phase client’s feedback required.
- Automated code generation is very costly.
- Difficult to manage.
- Not a good process for long term and big projects.
- Proper modularization of project required.
14) Explain framework activities of PSP?
Ans: Here are five framework activities defined in PSP. These activities are planning , High-level design, high-level design review, development and postmortem
- Planning: Planning activity is useful to isolate requirements of process, and ,based on these requirements it develops both size & resource estimate. In addition, it defect estimate i.e it calculate the number of defects projected for work. All metrics are recorded on worksheet or templates. Finally development task are identified & project schedule is created.
- High level design: External specifications for each components to be constructed are developed & a component design is created. Prototype are built when uncertainty exists. All related issues are recorded and tracked.
- High level design review: Formal verification method are applied to uncover errors in the design . Metrics are maintained for all important task & work result.
- Development: In this phase, the component level design is refined & review. Code is generated , reviewed , compiled and tested. metrics are maintained for all important task & work results.
- Postmortem: Postmortem is an activity, which does significant analysis. using measures and metrics collected from previous phases, the effectiveness of the process is find out. It is necessary that measure & metrics should provide guidelines for updating the process to improve the effectiveness of a process.
PSP is well disciplined & metrics – based approach to software engineering. When software professionals are properly trained for PSP, the result is an improvement in productivity and quality of software engineering products.
The scope of PSP is not wide throughout the industry. The reasons behind this is human nature and organizational inertia.
15) Explain principle of TSP?
Ans:The TSP is based on the following principles:
- The engineers know the most about the job and can make the best plans.
- When engineers plan their own work, they are committed to the plan.
- Precise project tracking requires detailed plans and accurate data.
- Only the people doing the work can collect precise and accurate data.
- To minimize cycle time, the engineers must balance their workload.
- To maximize productivity, focus first on quality.
16) List Advantages & Disadvantages of Agile Model?
Ans:Advantages of Agile model:
- Customer satisfaction by rapid, continuous delivery of useful software.
- People and interactions are emphasized rather than process and tools. Customers, developers and testers constantly interact with each other.
- 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 of Agile model:
- 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.
17) Explain Agile development model with its neat diagram?
Ans: Agile model believes that every project needs to be handled differently and the existing methods need to be tailored to best suit the project requirements. In agile the tasks are divided to time boxes (small time frames) to deliver specific features for a release.
Iterative approach is taken and working software build is delivered after each iteration. Each build is incremental in terms of features; the final build holds all the features required by the customer.
- An agile team is able to respond to changes during project development
- Agile development recognizes that project plans must be flexible
- Agility encourages team structures and attitudes that make communication among developers and customers more facile
- Agility eliminates the separation between customers and developers
- Agility emphasizes the importance of rapid delivery of operational software and de-emphasizes importance of intermediate work products
- Agility can be applied to any software process as long as the project team is allowed to streamline tasks and conduct planning in way that eliminate non-essential work products
Agile Process Models:
- Extreme Programming (XP)
- Adaptive Software Development (ASD)
- Dynamic Systems Development Method (DSDM)
- Feature Driven Development (FDD)
- Agile Modeling (AM)
Principle of Agile Model:
- Individuals and interactions– in agile development, self-organization and motivation are important, as are interactions like co-location and pair programming.
- Working software– Demo working software is considered the best means of communication with the customer to understand their requirement, instead of just depending on documentation.
- Customer collaboration– As the requirements cannot be gathered completely in the beginning of the project due to various factors, continuous customer interaction is very important to get proper product requirements.
- Responding to change– agile development is focused on quick responses to change and continuous development.
18) Write a difference between Pros & Cons?