IEEE Software Model
IEEE Software Model
Throughout the history of software engineering , a set of fundamental software design concepts has evolved.
Although the degree of interest in each concept has varied over the years, they have stood the test of time, each
offering the software engineer fundamentals. on which more elaborate design methods can be applied.
Software design plays an important role in software development which allows the software engineer to produce
several models of the system or product that is going to be built that form a kind of application solution plan . These
models can be evaluated for quality and improved before code is generated, tested , and end users are involved at
scale . Design is where the quality of the software is established.
Design is defined as: "The process of defining the architecture , components, interfaces and other
characteristics of a system or component that results from this process" [IEEE610.12-90].
Keywords
Definition of Software Documents (IEEE)
SQAP : Software Quality Assurance Plan IEEE 730
SCMP : Software Configuration Management Plan IEEE 828
STD: Software Test Documentation IEEE 829
SRS: Software Requirements Specification IEEE 830
SVVP : Software Validation & Verification Plan IEEE 1012
SDD: Software Design Description IEEE 1016
SPMP: Software Project Management Plan IEEE 1058
http://www.ieee.org.ar/downloads/2006-montilva-productos.pdf
http://laboratorios.fi.uba.ar/lsi/scalone-tesis-maestria-ingenieria-en-calidad.pdf
http://www.ieee.org.ar/downloads/2006-montilva-productos.pdf
01/11/011
http://iidia.com.ar/rgm/comunicaciones/c-icie99-ingenieriasoftwareeducativo.pdf
book: http://www.unach.edu.ec/Virtualizacion/Ing_Software/CAP%C3%8DTULO_2.htm
Software engineering is the area of engineering that provides methods and techniques for developing and
maintaining software .
This engineering deals with very diverse areas of computing and computer science , such as construction of
compilers, operating systems, or Intranet/Internet developments, addressing all phases of the life cycle of the
development of any type of information systems. and applicable to countless areas: business, scientific research,
medicine, production, logistics, banking, traffic control, meteorology, law, Internet, Intranet, etc.
A precise definition has not yet been included in dictionaries, however those stated by some of the most
prestigious authors can be cited:
Software engineering is the study of the principles and methodologies for the development and maintenance of
software systems (Zelkovitz, 1978)
Software engineering is the practical application of scientific knowledge to the design and construction of
computer programs and the associated documentation required to develop, operate and maintain them. It is
also known as software development or software production (Bohem, 1976).
Software engineering deals with the establishment of engineering principles and methods in order to obtain
software that is cost-effective, reliable, and works on real machines (Bauer, 1972).
It is the application of a systematic, disciplined and quantifiable approach to the development, operation and
maintenance of software; that is, the application of engineering to software (IEEE, 1993).
In 2004 , in the United States , the Bureau of Labor Statistics (U. S. Bureau of Labor Statistics) counted 760,840
computer software engineers. [1] The term "software engineer", however, is used generically in the business
environment, and not all software engineers actually possess engineering degrees from recognized universities.
Some authors consider "software development" to be a more appropriate term than "software engineering" for
the process of creating software. People like Pete McBreen (author of "Software Craftmanship") believe that the
term IS implies levels of rigor and process testing that are not appropriate for all types of software development.
The terms " software engineering" or " software engineering" are used interchangeably. In Latin America the
term normally used is the first of them.
The creation of software is an intrinsically creative process and software engineering tries to systematize this
process in order to limit the risk of failure in achieving the creative objective through various techniques that
have been proven appropriate based on previous experience. .
SI can be considered as engineering applied to software, that is, by systematized means and with pre-established
tools, the application of them in the most efficient way to obtain optimal results; objectives that engineering
always seeks. It is not just about problem solving, but rather taking into account the different solutions,
choosing the most appropriate one.
Content
[ disguise ]
1 Socioeconomic implications
o 1.1 Economically
o 1.2 Socially
2 Methodology
o 2.1 Stages of the process
2.1.1 Requirements analysis
2.1.2 Specification
2.1.3 Architecture
2.1.4 Programming
2.1.5 Proof
2.1.6 Documentation
2.1.7 Maintenance
3 Software development models
o 3.1 Nature of the SI
3.1.1 Math
3.1.2 Creation
3.1.3 Project management
3.1.4 Art
4 Responsibility
5 Ethical education
o 5.1 Organizations
6 See also
7 References
8 Bibliography
9 external links
[ edit ] Socioeconomic implications
Software engineering affects the economy and societies in various ways.
[ edit ] Economically
In the United States, software contributed to one-eighth of all GDP growth during the 1990s (about $90 billion
per year), and one-ninth of all productivity growth during the latter years of the decade. (about 33 billion US
dollars per year). Software engineering contributed to US$1 trillion of economic growth and productivity in that
decade. Around the globe, software contributes to economic growth in similar ways, although reliable statistics
are hard to find. [ citation needed ]
Furthermore, with the language industry it is finding more and more fields of application on a global scale.
[ edit ] Socially
Software engineering changes the culture of the world due to the widespread use of the computer. Electronic
mail (E-mail), the WWW , and instant messaging allow people to interact in new ways. The software lowers the
cost and improves the quality of health services, fire departments, government agencies and other social
services. Successful projects where software engineering methods have been used include GNU/Linux , the
space shuttle software, ATMs , and many others.
[ edit ] Methodology
An objective for decades has been to find processes and methodologies that are systematic, predictable and
repeatable, in order to improve productivity in the development and quality of the software product.
Software engineering requires carrying out numerous tasks, within stages such as the following:
Extracting the requirements and requirements of a software product is the first stage of creating it. While
customers think they know what the software has to do, it requires software engineering skill and experience to
recognize incomplete, ambiguous, or contradictory requirements. The result of the requirements analysis with
the client is reflected in the ERS document, System Requirements Specification , whose structure can be defined
by various standards, such as CMMI . Likewise, an Entity/Relationship diagram is defined, which shows the
main entities that will participate in the development of the software.
The capture, analysis and specification of requirements (including testing them) is a crucial part; The
achievement of the final objectives largely depends on this stage. Models and various work processes have been
devised for these purposes. Although it is not yet formalized, Requirements Engineering is already discussed,
for example in two chapters of Sommerville's book "Software Engineering" entitled "Software Requirements"
and "Processes of Requirements Engineering".
The IEEE Std. 830-1998 standardizes the creation of software requirements specifications (Software
Requirements Specification).
[ edit ] Specification
The requirements specification describes the expected behavior of the software once developed. Much of the
success of a software project will lie in the identification of business needs (defined by senior management), as
well as the interaction with functional users to collect, classify, identify, prioritize and specify software
requirements. .
Case of use ,
User Stories ,
The former being more rigorous and formal, the latter more agile and informal.
[ edit ] Architecture
The integration of infrastructure, application development, databases and management tools require capacity
and leadership to be conceptualized and projected into the future, solving today's problems. The role to which
all these activities are delegated is that of the Architect.
The software architect is the person who adds value to business processes thanks to their valuable contribution
of technological solutions.
Systems architecture in general is a planning activity, whether at the network and hardware infrastructure, or
software level.
Software architecture consists of the design of application components (business entities), generally using
architectural patterns. The architectural design must allow the interaction between business entities to be
visualized and also be able to be validated, for example through sequence diagrams. An architectural design
generally describes how a software application will be built. This is documented using diagrams, for example:
Class diagrams
Database diagrams
Folded deployment diagrams
Multidirectional sequence diagrams
The first two being the minimum necessary to describe the architecture of a project that will begin to be coded.
Depending on the scope of the project, complexity and needs, the architect chooses which diagrams to prepare.
Among the tools to design software architectures are:
Enterprise Architect
Microsoft Visio for Enterprise Architects
[ edit ] Programming
Reducing a design to code may be the most obvious part of the software engineering job, but it is not
necessarily the most labor-intensive or the most complicated. The complexity and duration of this stage is
closely related to the programming language(s) used, as well as the design previously carried out.
[ edit ] Test
It consists of checking that the software correctly performs the tasks indicated in the problem specification. One
testing technique is to test each software module separately, and then test it comprehensively, in order to reach
the objective. It is considered good practice for testing to be carried out by someone other than the developer
who programmed it, ideally a testing area; Without prejudice to the above, the programmer must do his own
tests. In general there are two main ways to organize a testing area, the first is that it is made up of
inexperienced personnel who do not know the subject of testing, in this way it is evaluated that the
documentation delivered is of quality, that the processes described are as clear that anyone can understand them
and the software does things exactly as described. The second approach is to have a testing area made up of
experienced programmers, people who know without further indication under which conditions an application
can fail and who can pay attention to details that inexperienced personnel would not consider.
[ edit ] Documentation
Everything related to the documentation of the software development itself and project management, including
modeling ( UML ), use case diagrams, tests, user manuals, technical manuals, etc.; all for the purpose of
eventual corrections, usability, future maintenance and expansions to the system.
[ edit ] Maintenance
Maintain and improve the software to address discovered bugs and new requirements. This can take even longer
than the initial development of the software. About 2/3 [ citation needed ] of all software engineering has to do with
maintenance. A small part of this work consists of fixing errors, or bugs . Most of it is extending the system to
do new things. Similarly, about 2/3 of all civil engineering, architecture, and construction work is maintenance [
citation needed ]
.
[ edit ] Mathematics
Programs have many mathematical properties. For example, the correctness and complexity of many algorithms
are mathematical concepts that can be rigorously tested. The use of mathematics in SI is called formal methods .
[ edit ] Creation
Programs are built in a sequence of steps. Properly defining and carrying out these steps, as on an assembly line,
is necessary to improve developer productivity and the final quality of the programs. This point of view inspires
the different processes and methodologies that we find in the SI.
[ edit ] Project Management
Commercial (and much non-commercial) software requires project management. There are budgets and setting
times. People to lead. Resources (office space, computers) to be acquired. All of this fits appropriately with the
vision of Project Management.
[ edit ] Art
The programs contain many artistic elements. User interfaces, coding, etc. Even the decision for a name of a
variable or a class. Donald Knuth is famous because he has argued that programming is an art.
[ edit ] Responsibility
Responsibility in software engineering is a complex concept, especially because since computer systems are
strongly characterized by their complexity, it is difficult to appreciate its consequences.
In software engineering, responsibility will be shared by a large group of people, ranging from the requirements
engineer to the software architect, and including the designer or the person in charge of carrying out the tests.
Above all of them, the project director stands out. The software demands a clear distribution of responsibility
between the different roles that occur in the production process.
The software engineer has a moral and legal responsibility limited to direct consequences.
IEEE (read ie-cubo in Spain and i-triple-e in Latin America) corresponds to the acronym of (Institute of
Electrical and Electronics Engineers) in Spanish Institute of Electrical and Electronic Engineers , a global
technical-professional association dedicated to standardization , among other things. With nearly 400,000
members and volunteers in 180 countries, it is the largest international non-profit association formed by
professionals in new technologies, such as electrical engineers , electronics engineers , computer scientists ,
computer engineers, biomedical engineers, engineers in telecommunications and mechatronics engineers.
Its creation dates back to 1884 , with among its founders such personalities as Thomas Alva Edison , Alexander
Graham Bell and Franklin Leonard Pope . In 1963 it adopted the name IEEE when associations such as the
AIEE ( American Institute of Electrical Engineers ) and the IRE ( Institute of Radio Engineers ) merged.
According to the IEEE itself, its job is to promote creativity, development and integration, share and apply
advances in information technologies, electronics and sciences in general for the benefit of humanity and the
professionals themselves. Some of its standards are:
VHDL
POSIX
IEEE 1394
IEEE 488
IEEE 802
IEEE 802.11
IEEE 754
Through its technical publishing activities, conferences, and consensus-based standards, the IEEE produces
more than 30% of the world's published literature [ citation needed ] in electrical engineering, computing,
telecommunications, and control technology, and organizes more than 1,000 conferences. per year worldwide, [
citation needed ]
and has nearly 900 active standards, with another 700 under development
Source: http://es.wikipedia.org/wiki/IEEE_Computer_Society