Q1. Why we need software engineering?
Software engineering is need to make sure
development of software systems (Large Software) that are
- Reliable
- Maintainable
- Efficient
- Meet the needs of customers
Production of system meets
- Schedule
- Budget
Q2. What is difference between Search and Research?
When
someone searches, it finds something and that found something is again
searched, you find something either new or missing or not there at all. So,
searching something from something already searched is research in literally.
Q3. History of Software Engineering?
Mastering
the Machine (1956–1967)
During this session
Software Engineering was not been coined. The main reason of any part of
software was to get exploitation of the limited hardware. First compiler was defined and operating
system was non interactive. These
primitive environments defined first low level CASE tools for editing,
compiling, and debugging. Lack of software development and high risk was easily
noticeable.
Mastering
the Process (1968–1982)
First software crisis
faced in this session and led to the birth of software engineering. Its aim was
to improve productivity, quality and reduce risk. In this stage formal modeling
introduced that enables implementation automation. But for industry, this formal approach was
unfeasible due to a lack of tools and training. Furthermore, formal methods
become unmanageable for large system development. In conclusion, in this stage,
the need to focus on predesign phases and the use of more or less formal models
for software specification began to appear. A number of structured methods,
such as Software Requirement Engineering Methodology (SREM) and the Structured
Analysis and Design Technique (SADT) were developed allowing the development of
specification documents for business management software.
Mastering
the Complexity (1983–1992)
Mastering
the Communications (1993–2001)
The emergence of the
Internet brought with it a new software concept. The decentralization of
functions and data led to the rapid development and expansion of areas of
computing, such as concurrent programming and distributed architectures, which
up to then had been limited to a narrower context. In addition to client/server
applications, and in general, any distributed system development, there was now
a new engineering software discipline called Web engineering. Moreover,
software development was viewed as an industrial process in which quality
should be monitored. This requires an effective separation between process and
product. Some tasks related to managing and improving both the product and
process appeared as new SE components, such as CMM (capability maturity model)
and CMMI (capability maturity model integrated) .
Mastering
the Productivity (2002–2010)
Most software systems
created in this stage are called management information systems. They were
designed to be an important part of business management in large companies.
This has led to a need for the methodologies to be adapted by increasing the
abstraction levels in software engineering tasks up to the abstraction level in
which the problem is described. New tools enabling analysis level programming,
such as Model Driven Architecture (MDA), appeared in this stage. The other
major significant period in this stage was marked by the emergence of agile
methodologies. Agile projects focus on creating the best software to meet
customer needs. This means that the development team focuses only on tasks and
processes that provide the customer with added value in the product being
created, improved, or implemented. The most popular methodologies are Extreme
Programming (XP) and Scrum.
Mastering
the Market (2011–…)
Now, there are new
platforms for integration and interoperability between different information
systems. The concept of Service Oriented Architecture (SOA) coined in the early
decade is widely extended. It is based on the combination of basic services
(own or outside) that provide the functionality at business level for a
specific domain problem. These services are orchestrated to perform more
complex tasks, becoming composite services. These ubiquitous real-time services
can be sold as a product, which is the origin of Cloud computing. On the other
hand, customers demand several applications to be used in their smartphones,
tablets, or laptops. The applications (i.e., apps) are small programs that can
be downloaded and installed on mobile devices that allow users to perform some
tasks at the place that they are in any moment. They are grouped into virtual
stores and many of them are free, so usually they are closer to marketing
challenges than software development challenges. They tend to be more dynamic
than traditional programs and are the ultimate expression of agile methods and
MDA.
Q4. Difference Between computer science and Software Engineering?
Computer ScienceIt is Science of Computers. Everything that is related to computers is covered in CS.CS basically involves research and development of both your hardware, software and different techniques involved with them e.g Networking, Artificial Intelligence and Cryptography. It also involves making NEW tools and technologies in the field of Computers and combination of computers with other subjects i-e Use of computers to solve non-computer problems. Also, an important point to remember is whatever you do as a computer scientist, it becomes a part of your arsenal. You can build upon it in future.
Software engineering SE
It deals with the application of computer science and software; to commerce or industry i-e How software effects the business objectives (Making something within reasonable time with use of reasonable labor and expenses etc). Apart from development it also deals with verification and validation e.g Software Product is according to customer requirements and according to specifications and standards.
0 comments: