Software Engineering questions for Computer Science students.

What is software engineering?

Various definitions of software engineering.
  • Software engineering is a field or application of engineering which is used for design, development, implementation and maintenance of a software in systematic method.
  • Software engineering is the systematic application of scientific, technological knowledge, methods and experience to the design, implementation, operation and maintenance of software.
  • It is the application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software.

What are the characteristics of software?

  • A Software is developed and engineered but it is not manufactured in the classical sense.
  • Impacts on the management of software projects.
  • Software doesn't wear out.
  • Software helps in improving the performance of hardware. Hardware throws failures with the modes like poor quality of fabrication, design, error, overload of component etc.
  • Software is customized because the software are developed according to the specifications of the customers.
  • Versions are created: Various versions of the software are possible. New modification or updation are done in existing software to form a new versions of software.
  • It helps in building the right product at the right time.

  • 1. For building any software product it should have clear goals and objectives.
    2. It helps to analyze the objective, function, goal and performance of the project.

What is a Software Development Life Cycle?

  • Software development life cycle is a process of creating systems, and methodologies and models that people use to develop software.
  • SDLC consists of many kinds of software development methodologies.
SDLC phases are:
  • Requirements analysis and gathering
  • Design
  • Development
  • Testing
  • Implementation
  • Maintenance and support

What are the methodologies in SDLC?

Software development methodologies in software engineering is a framework which is used to structure, plan and control the process of developing an information system.

The following methodologies in SDLC are:
  • Agile software development.
  • Crystal Methods.
  • Dynamic systems Development Model.
  • Extreme Programming.
  • Feature Driven Development.
  • Lean Development.
  • Rapid Application Development.
  • Rational Unified process.
  • Scrum
  • Spiral.
  • Systems Development Life Cycle.
  • Waterfall.

Why is software development life cycle important?

  • SDLC serves as a guide to the project and provides a flexible and consistent medium to accommodate changes, and perform the project to meet client’s objectives.
  • SDLC phases define key schedule and delivery points which ensure timely and correct delivery to the client within budget and other constraints and project requirements.
  • SDLC co-operates project control and management activities as they must be introduced within each phase of SDLC.

What is SDLC model? What are the most well known SDLC models?

  • An SDLC model defines implementation of an approach to the project.
  • It defines the various processes, and phases that would be carried out throughout the project to produce the desired output.
  • There are a variety of SDLC models that exist catering to different needs and characteristics of a project.
  • Some are of iterative nature (Prototyping), whereas some are sequential (waterfall).
Some of the well known SDLC models are:
  • Waterfall model
  • V model
  • Incremental model
  • RAD model
  • Agile model
  • Iterative model
  • Spiral model
  • Prototyping model

Describe waterfall software development life cycle model.

  • Waterfall is a sequential and non iterative SDLC model.
  • This model is useful to measure the progress of project and it is easy to check whether a certain output is delivered exactly on the date when it is expected.
The waterfall model consists of the following phases:
  • Requirements gathering
  • Design
  • Construction
  • Integration
  • Testing
  • Implementation
  • Maintenance
Requirements gathering:
All the requirements are gathered and analysis is performed for the complete system.

Design:
Various design models are created for the complete system after the requirements gathering phase has been completed and ended.

Construction:
The complete system is constructed once the design for the system has been frozen.

Integration:
Various constructed code units are integrated to build the complete system after construction of all units has ended.

Testing:
The complete system is tested after all the construction and integration is completed.

Implementation:
The complete system is implemented in production after testing has finished.

Maintenance:
Post implementation support carries out after implementation of the system.

Explain the strengths of the waterfall model.

Strengths of the waterfall model are:
  • No planning is required.
  • It works well for small projects with fixed and clear requirements.
  • Lesser cost as planning overhead is less.
  • Quickest delivery of the complete system.
  • It is simple to understand and use this model.
  • It is easy to manage.
  • The phases do not overlap as only one phase executes at a time.

Explain the weaknesses of the waterfall model.

Weaknesses of waterfall model are:
  • It is Inflexible.
  • Accommodating changes is very hard.
  • Longest tangible delivery time. The customer does not see anything but the whole product when it's ready.
  • Unsuitable for large projects and where requirements are not clear.
  • Amounts of risk and uncertainty are high.
  • It can be considered as a poor model for the long and on going projects.

Explain when to use the waterfall model.

One should use the waterfall model only when:
  • Requirements are very clear and fixed.
  • There are no ambiguous requirements.
  • Ample resources with required expertise are available freely.
  • The client has high confidence in the organization.
  • The organization has experience of similar projects.
  • The project is short.
  • It is good to use this model when the technology is well understood.

Explain V-Shaped software development life cycle model.

  • The V-shaped SDLC model is an extension of the waterfall model.
  • The typical waterfall moves linearly downwards, whereas, in V-shaped model phases are turned upwards after the coding phase to form the V shape.
  • It demonstrates relationship between each phase of SDLC and its respective testing phase.
  • The V-Shape includes early test planning and it is different from waterfall model.

What are the strengths of V-Shaped model?

  • Simple and easy to use model.
  • Every phase has clear and fixed deliverables.
  • Higher chances of success as test planning starts early in the SDLC cycle.
  • Quickest for project where requirements are fixed and clearly defined.
  • Testing activities such as the planning and designing are done well in advance which helps in saving a lot of time.
  • Some of the defects are found at an early stage.
  • Downward flow of defects are avoided.

Explain the weaknesses of the V-Shaped model?

Weaknesses of V-Shaped model:
  • It is inflexible.
  • Changes in requirements are very hard to accommodate.
  • No early prototypes are available.
  • Needs ample skilled resources.

Explain when to use the V-Shaped model?

  • The V-shaped model should be used for small to medium sized projects where requirements are clearly defined and fixed.
  • The model accommodates more planning for test than waterfall but makes accommodation of changes harder than other models.
  • The V-Shaped model should be chosen when ample technical resources are available with needed technical expertise.
  • Since, no prototypes are produced, there is a very high risk involved in meeting customer expectations, therefore, confidence of customer should be very high in order for choosing the V-Shaped model approach.

Explain incremental model.

  • Incremental SDLC approach suggests construction of a partial system rather than the complete system and then builds more functionality into it.
  • Requirements and features are prioritized and categorized and later implemented in phases, each phase is based on the waterfall model.
  • The process continues till the complete system is achieved.

Explain the Iterative Model.

  • The iterative model approach iterates on steps as the project progresses with requirements.
  • Each release of Iterative Model is developed in a specific, fixed time period called iteration.
  • The advantage is that iterative model can accommodate changes in requirements which are very common in most of the projects.
  • It provides an opportunity to identify and build upon any major requirement or design flaws throughout the process because of its iterative nature.
  • The advantage is that iterative model can accommodate changes in requirements which are very common in most of the projects.

Explain RAD model.

  • RAD involves iterative development along with the creation of prototypes.
  • It uses interactive techniques and prototypes to define user’s requirements and system design clearly.
  • Structured techniques are used to create initial design models based on user input and prototypes are built on top of that.
  • The end users and analysts use the prototypes to validate and enhance the requirements and design models.
  • The process lasts till a set of final technical requirements and design models have been created.

Explain agile process.

  • Agile is a process of combining a set of development guidelines and philosophy as well as the process between developer and customer where both are communicating actively and continuously.
  • According to agile process there is a need to handle every project differently.
  • This process decides which type of existing method is best suited for the project requirements.
  • In this process an iterative approach is taken which delivers a software after each iteration.
  • Reduced overheads in software process is the aim of agile process and gives quick response to changing requirements.
  • In this process face to face conversation is the most efficient method to share information between a developer and customer.
  • According to agile process project developer and business people must work together throughout the project.
  • It gives continuous attention to good design and technical excellence.
  • Agile process tells us how a project is more effective and adjust its behavior.

What is Spiral Model?

  • Spiral model is a risk driven process model.
  • It is used for generating the software projects.
  • In spiral model, an alternate solution is provided if the risk is found in the risk analysis, then these alternate solutions are suggested and implemented.
  • It is a combination of prototype and sequential model.
  • In one iteration all activities are done, for large project's the output is small.

spiral model

Why spiral model is a risk driven model?

  • The risk driven model identifies and prioritizes the risk, and in the spiral model, there is a possibility of various risks occurring while building the software product.
  • The risk driven model selects and applies a set of architecture techniques and evaluates risk reduction.
  • The main purpose of risk driven model is to help the developers to decide how much architecture work is to be done.

Explain prototype model in SDLC.

  • A working model of a software consisting of some limited functionality is known as Prototype.
  • It helps the users to evaluate the developer proposals and try it out before its actual implementation.
  • It gives some time to understand the different requirements of the user which may not be considered earlier.
  • Prototype is defined as first or preliminary form which other forms are copied or derived.
  • Prototype model is a set of general objectives for software.
  • It does not identify the requirements like detailed input, output.
  • This model is an interesting idea for complicated and large systems, because these systems do not have manual processes to determine the requirements of the software product.

prototype model

Explain the concepts of COCOMO estimating model.

  • COCOMO stands for constructive cost model.
  • It is an algorithmic software cost estimation model developed by Barry W. Boehm.
  • It is used for software cost estimation and uses regression formula with parameters based on historic data.
  • COCOMO has a hierarchy of 3 accurate and detail forms, namely: Basic, Intermediate and Detailed.
  • The Basic level is good for a quick and early overall cost estimate for the project but is not accurate enough.
  • The intermediate level considers some of the other project factors that influence the project cost and the detailed level accounts for various project phases that effect the cost of the project.

What is FDD?

  • FDD is a functional Decomposition Diagram.
  • It is the process of breaking a complex entity into smaller sub parts and this complex entity is broken down until the structure of entities are in an understandable structure.
  • It means breakdown of an item into groups on the basis of function of an item perform.
  • A decomposition diagram shows a high level function, process, organization, object that are broken down to lower level.

What is E-R diagram.

  • An entity relationship diagram is a visual representation of data and by using conventions they describe how data are related to each other.
  • For example: Student is an entity and Name, Roll_no., Birth_date are the attributes.
What is entity?
  • An entity can be a person, place, event or object that is related to a given system.
  • Entities are represented in ER diagrams by a rectangle and name as singular nouns.
  • For example, for school system include entities student, teachers, subject, fees, roll number etc.
  • Following figure shows an example of a student. A student is an entity and Name,Roll_no., Birth_date are the attributes of a student.



  • An entity student is represented in the rectangle and attributes are in an ellipse.

What is reverse engineering?

  • Reverse engineering is the process of analysis, design or knowledge information from any human made device.
  • Reverse engineering is a process used to extract information from source code, but the completeness of documentation is in abstraction level.
  • It is also called as back engineering.

What is the process of reverse engineering?

  • Process of reverse engineering follows abstraction, completeness and directionality.
  • In abstraction level of reverse engineering information can be extracted from source code.
  • The abstraction level is high as possible that means this process is capable of deriving procedural design representation or low level abstraction as well as high level abstraction like program and data structure information, object model, control flow model, entity relationship model.
  • The completeness of this process is the level of detail that is provided at an abstraction level.
  • In most of the cases when completeness decreases at that time abstraction level increases.
  • Directionality of reverse engineering process extracts all information from the source code and this information is used during the maintenance activity.

Reverse engi

Explain what is CASE tools.

  • CASE means Computer Aided Software Engineering.
  • It means that the software is used for development activities such as requirement engineering, design, program development and testing.
  • A set of software application program are used to automate software development life cycle activities.
  • To develop a software system, case tools are used by software project manager, analyst and engineers.
  • Case tool include design editors, data dictionaries, compilers, debuggers, system building tools etc.
  • Number of case tools are available to simplify the software development life cycle like analysis tool, design tool, project management tool, database management tool, documentation tool etc.
  • Case tools are used to accelerate the development of a project to form a desired result and help to uncover fault before moving to the next stage.

Explain what is black box, state box and clear box?

Black box
  • The black box specifies the behavior of a system or a part of a system.
  • The system (or part) responds to specific stimuli (events) by applying a set of transition rules that map the stimulus into a response.
State box
  • This box encapsulates state data and services (operations) in a manner that is analogous to objects.
  • In this specification view, inputs to the state box (stimuli) and outputs responses are represented.
  • It also represents the "stimulus history" of the black box, that is the data encapsulated in the state box that must be retained between the transitions implied.
Clear box
  • The transition functions that are implied by the state box are defined in the clear box.
  • Stated simply, a clear box contains the procedural design for the state box.

What are the components of case tools?

Case tool are broadly divided into following categories on the basis of their software development life cycle.

overview of caseTool

1. Central Repository
  • It is a central place of storage where information is stored regarding management, product specifications, requirement documents, related reports and diagrams.
  • Case tools require a central repository.
  • It serves as a source of common, integrated and consistent information.
2. Upper case tools
  • These tools support the early stages of the software development life cycle, such as planning, analysis and design stage.
3. Lower case tools
  • It provides support to the later stages of the software development life cycle, such as implementation, testing and maintenance.
4. Integrated case tools
  • These tools are helpful in all stages of the software development life cycle from requirement gathering to testing and documentation.

Explain web Engineering? What is the need of web engineering?

  • Web engineering is an application of systematic and quantifiable approaches like concept, methods, tools, techniques.
  • Analysis, design, implementation, testing, operation and maintenance of High quality web applications.
  • Web engineering is agile and has a disciplined framework and maintains industry quality.
  • In web engineering stage web technologies constantly develop and make new type of applications.
  • Need of web engineering is the perception of developers and managers, from their experiences they make new technologies which are feasible and complex.
  • It is a fact that good web development needs multidisciplinary effort and it is not exactly same as existing disciplines.