answersLogoWhite

0

📱

Software Engineering

Software engineering is the process of applying well-developed techniques and practices in order to create new software products. Questions about everything from design patterns to requirements and specification belong here.

1,663 Questions

What are the differences between pass and phase in compiler?

When we talk about the phases we talk about the steps compiler should do in order to finish it job. For example phases could be creating local variables symbol table, generating parsing tree, lexical checking, optimization, etc.

When we talk about passes we talk about times some operation was repeated. For example there are 2-passes Assembler compilers. It means that before giving the results it repeats some steps twice, most of time times optimization step. The more passes you put the better quality result you get. The same applies to music and video encoding.

For example:

Source code:

i++;

i++;

i++;

1st step (pass):

i = i + 1;

i = i + 1;

i = i + 1;

2nd step (pass):

i = i + 3;

Most of compiler before generating results converts source code some kind inner language that is easier to parse, check in later steps.

As you can see two-pass compiler would generate better quality code, than one-pass compiler, but the first one would be faster to compile.

Different between object oriented and function oriented design strategy?

Table 5.2.S. No.Functional-oriented ApproachObject-oriented Approach1.In the functional-oriented design approach, the basic abstractions, which are given to the user, are real-world functions, such as sort, merge, track, display, etc.In the object-oriented design approach, the basic abstractions are not the real-world functions, but are the data abstraction where the real-world entities are represented, such as picture, machine, radar system, customer, student, employee, etc.2.In function-oriented design, functions are grouped together by which a higher-level function is obtained. An example of this technique is SA/SD.In this design, the functions are grouped together on the basis of the data they operate on, such as in class person, function displays are made member functions to operate on its data members such as the person name, age, etc.3.in this approach, the state information is often represented in a centralized shared memory.In this approach, the state information is not represented in a centralized shared memory but is implemented/distributed among the objects of the system.

What is the disadvantage of iterative waterfall model?

Major difference between waterfall and iterative model is that waterfall model has a linear process in which full product is available after the last phase, while incremental model full product is available after several such phases.

waterfall model is good when we have a clear understanding of requirements.

Incremental model is good when we have to deliever the final product wihin certain timeline and we have very less number of programmers available to complete the product in time, so basic idea is to deliever a working partial product within time and provide it's additional functionalities later.

Various steps involved in the software development?

Design is a creative process that occurs in many settings. The steps outlined below offer a structured format for a formal design process based on models from industry.

Analyze the situation

Before beginning the design, sort out what problem you are trying to address.

Write a brief

Write a short statement giving the general outline of the problem to be solved.

Research the problem

Sometimes a problem can be solved "straight out of your head," but in most cases you will need to gain some new information and knowledge.

Write a specification

This detailed description of the problem spells out what the design must achieve and what limitations will affect the final solution.

Work out possible solutions

Combine your ideas with information obtained from your research to suggest several possible design solutions. Sketch several possibilities on paper.

Select a preferred solution

Decide which solution to develop. Although the chosen solution should, ideally, be the one that best satisfies the specifications, other constraints such as time, cost, or skills may limit the decision.

Prepare working drawings and plan ahead

Draw the chosen design including all the details that are important to its construction.

Construct a prototype

Make the product. In industry a model is usually built first and the final product is developed from it, but in most classrooms, the model is the final product.

Test and evaluate the design

Testing is ongoing as the construction progresses, but a final test of the entire system or model proves if the project does the job for which it is designed. Look back at the specifications and check the requirements carefully. Ask such questions as: How well does the design function? Does the design look good? Is the product safe to use? Were suitable materials used? How could I have improved on my design?

Write a report

The report provides evidence of your work in analysis, planning, designing, carrying out the practical work, evaluating, and communicating.

What Does a software engineer do?

A software engineer is a person who builds or designs software.

A software engineer must, of course, be a good programmer, be well versed in data structures and algorithms, and be fluent in one or more programming languages.

What motivates you to apply for this job?

Sales Job: "The money."

HR Job: "I like helping people."

Teaching Job: "I want to give others the same sort of education I had"

Mechanic Job: "I like cars."

Summary: There are as many answers as there are jobs and the answer is always glib and obvious.

Why should you use waterfall model in software projects?

Waterfall model tends to consume a lot more time compared to other software development models though it is able to pinpoint definite starting and ending points for a given project. This model assumes the requirements to remain static during the life of the project, so there is little or no chance of incorporating new changes to the software once work begins. If changes are tried to be incorporated it leads to more confusion and further delays. Its strong points lie in the fact that it is sequential, so there would be no confusion on the steps and the processes are straight down--no need to worry about so many conditions while working on a project. Additionally, this type of model tends to pack up on so much documentation. Therefore, such tends to be useful for future code revisions and reference. However, its drawbacks become apparent in the length of time a project will be developed and the cost it is able to consume.

List out evolutionary software process model in software engineering?

General Software Process Models are

1. Waterfall model: Separate and distinct phases of

specification and development.

2. Prototype model.

3. Rapid application development model (RAD).

4. Evolutionary development: Specification,

development and validation are interleaved.

5. Incremental model.

6. Iterative model.

7. Spiral model.

8. Component-based software engineering

What is it called when a criterion is true if either individual criterion is true?

Criteria is true if either individual criterion is true is called "or" in Logic. (Criteria is plural form of criterion)

Can software be of good quality if it is not reliable?

careful design, proper development process, thorough testing but mostly a programmer who has insight and experience.

What is the difference between system analyst and programmer software engineer?

A title is just a title and what the people do under those titles can differ from company to company, but in general, a computer programmer translates a design into an actual computer program. A computer analyst, or more commonly called a systems analyst or business analyst or software architect will analyze a company process and design a software package that will improve that process. The systems analysts are usually individuals that bridge the gap between the real world and the programming world. They can speak "both languages" by helping the computer programmers understand the business process and by helping the software users understand the computer programming process. The two titles are similar to the difference between a home builder and an architect.

How do you engineer a software?

As simply as possible, developing and testing small pieces over short intervals, getting frequent feedback from the users or the other stakeholders who have envisioned the product, by as small a team as can do the job initially. One or a few talented and probably more expensive resources up front are worth a lot more than many mediocre resources. If you can be flexible, then allow flexible hours, relax the deadline a little, and offer a percentage of the profits. That way you may be able to get someone good who already has a job but wants to get in on the business; i.e. you may be able to get them for a lower price and allow them to work nights and weekends. The average resources can come later when it is time to do more simple maintenance tasks. Upfront you want someone with maturity, development talent, creativity, and the ability to deliver. You want to get a solid technical person with a good reputation (job wise and in general), and then trust them to make the right technical decisions, versus trusting Gartner Group, tech magazines, or what "everyone else seems to be doing." Try to define your product (and sell to your market) in such a way that you are able to get interest in something that you would be able to deliver in the course of 3 months or so -- 6 at most. Try to avoid getting hooked into developing something that takes a year or more to develop unless people have signed on the dotted line already and paid for at least part of its development. Perhaps have those with a vested interest pay when certain development milestones are reached and demoed to them, to show their good faith and true interest in the product. (This is, of course, if your product is for a vertical market versus a horizontal one.)

What are the software engineering project's phases?

A process model for software engineering is chosen based on the nature of the project and application the methods and tools to be used and the controls and deliverables that are required.

All software development can be characterized as a problem solving loop in which four distinct stage are encountered, these are status quo, problem definition, technical development, and solution integration, status quo represents the current state of affairs, problem definition identifies the specific problem to be solved, technical development solves the problem through the application of some technology, and solution integration delivers the result to those who requested the solution in the first place.


Technical development

Status quo

Solution integration



Problem definition

Figure: The phases of a problem solving loop

There are several models used in S.E these are –

i. The linear sequential model.

ii. The prototype model.

iii. The RAD model.

iv. The increment model.

v. The spiral model.

vi. The win win spiral model

vii. The concurrent development model

viii. The component based development model

#The linear sequential model/waterfall model-

The LSM sometime called the classic lifecycle or the waterfall model. This model suggests a systematic sequential approach to software development that designs at the system level and progress through analysis, design, coding, testing and support. The LSM encompasses the following activities-

System /information engineering and modeling .Because software is always part of a larger system the work begins by establishing requirements for all system elements and then allocating some subset of these requirements to software. This system view is essential when software must interact with other elements such as hardware, people and database. System engineering and the analysis encompass requirements gathering at the system level with a small amount of top level design and analysis. Information engineering encompasses requirements gathering at the strategic business level and the business area level.

i.Software requirements analysis-

The requirements gathering process is intensified and focused specially on software. To understand the nature of the problem to be built, the software engineering must understood the information domain for the software as well as required function. Behavior, performance and interface requirements for both the system and the software are documented and received with the customer.

ii.Design-

Software design is actually a multistep process that focuses on four distinct attributes of a program. Data structures, software architecture, interface representation and procedural detail the design process translates requirements into a design which documented and becomes part of the software configuration.

iii.Code generation-

The design must be translated into a machine readable form. The code generation steps perform this task. If design is performed in a detailed manner code generation can be accomplished automatically.

iv.Testing-

Once code has been generated, program begins. The testing process focuses on the logical internals of the software, ensuring that all function externals that is conducting tests to uncover errors and ensure that defined input will produce actual result that agree with required results.

v. Support-


System/information engineering

Analysis

Design

Code

Test
Software will undoubtedly undergo change often it is delivered to the customer change will occur because errors have been encountered because the software must be adapted to accommodate change in its external environment or because the customer requires functional or performance enhancements. Software support maintenance reapplied each of the proceeding phases to an existing program rather than a new one.

What is the definition of milestones in software engineering?

A milestone is a point some way through a project plan that indicates how far the project has progressed. A milestone deliverable refers to a tangible product that is produced signifying the reaching of the milestone.

What is development phase in software engineering?

It could be said that the Requirements specification is most important. If they are not done right then it undermines the rest of the development process. Errors at that point will get into the system and could cause problems and be difficult and costly to fix later on. So getting out as many problems as early as possible, will reduce problems later on.

What is the difference between use case model and use case diagram?

Use Case diagrams are behavior diagrams of UML used to describe a set of actions (Use Cases) that some system or systems (Subject) should or can perform in collaboration with one or more external users of the system (Actors).

Each use case should provide some observable and valuable result to the actors or other stakeholders of the system.

Use case diagrams are a means for specifying:

  • (external) requirements on a system under design, required usages of a system - to capture what a system is supposed to do;
  • the functionality offered by existing system -- what system can do for clients;
  • requirements the specified system poses on its environment - by defining how environment should interact with the system so that it will be able to perform its services.

How do you edit java applications?

You can use any text editor, like NotePad. Although normally, it is easier to use some IDE for Java programming; those IDEs have a built-in editor.

What are the disadvantages and advantages of prototyping over system development life cycle?

Basically speaking, there are five advantages that prtotyping could bring about.

1) Provides functionality and interactions. Static high-fidelity mockup and wireframe are unable to convey animation. But a prototyping with interaction can do it pretty well.

2) Make actual communication with your boss, stockholders and users. The communication is necessary, the more they understand your design, the bigger the chance you can buy them in.

3) Detect errors earlier and save time and money. Trust me, any mistakes cost you less in prototyping stage than to be found in the later development stage.

4) Enhance collaboration within your team members internal. It can improve efficiency largely.

5) Involve user feedback and help to do multiple-test. It’s a key factor to iterate and update.

So, it's necessary to make prototypes before you develop actual products or websites. When it comes to prototyping, I would like to share one tool with you: Mockplus Cloud.

Mockplus Cloud - Connect your entire product design workflow.

As a brand-new collaboration tool for designers and developers, it goes far beyond design and workflow—allowing mobile designers to create masterpieces. It allows you to upload your wireframes and visual designs from Photoshop, AdobeXD, and Sketch, and add them to your project folder.

A full set of features about prototyping, commenting, collaborating and design handoff enable you to create a product from the start to finish.

Hopefully, this helps.

What are the drawbacks of current commercial databases?

With a DBMS, you lose the intrinsic control of data management that exists in an integrated software solution. For instance, if you were to write a program in C++, you have the option to directly control how your program's data is handled by the actual memory on the host computer, how that memory is addressed and allocated and cached stored on the disk, even on a bit by bit level if you so choose.

On the programming layer, you also have direct control over how

different tasks will operate on your data as well. So instead of creating related tables in a relational system and using SQL to manipulate that data you can create routines that will directly manipulate the data to your exact specifications.

So, instead of building tables you may store you data in a linked list or binary tree, which if you're good, could show very, very significant improvements for tasks such as searching and sorting. A DBMS does mostly the same task, however they've devised a very general way of organizing data that works generally for all problems. If you build a custom data solution instead of taking direct routes you can find ways to optimize your code in a way that cuts through the structure and performs tasks just not possible on a DBMS.

However, considering the amount of work that goes into creating an integrated data solution and the strong likelihood that information theory experts/gods who actually work for database companies like Oracle are way, way better programmers then you, there is probably no significant advantage to not using a DBMS unless the ammount of data you are handleing is very small.

PS: I recommend postgresql. People will try to tell you how great mysql is, but its because they're weak. PGSQL is the best DB you can get for nothing in the world. Good luck.

What takes care of the interaction between a program and a computer's hardware freeing application programmers from the task of including such functions in their programs?

OS or Operating System.

I feel that this question is too specific to be of help to people.

1. What function does an Operation System have besides hardware abstraction?

2. Is the Graphical User Interface part of the OS or not?

3. Anyone else have more questions or ways to elaberate?