Software Engineering: Processes, Methodologies, and Best Practices
What is Software Engineering? – What is the difference between Software Engineering and Systems Engineering? – What is a method of software engineering?
An engineering discipline that deals with all aspects of software production. This goes from the initial stages of specification of a system until the proper maintenance for that same system to survive over time.This software construction activities is one of the most complex and vital to the success of a fully computerized system.
Software Engineering just try through the basics of other engineering bring a little more light for this activity complexa.A “recovery” today in the areas of Computing and IT (Information Technology) is to develop systems quickly, with quality and with increasingly lower costs. Only through appropriate technologies and best practices, we can meet these new challenges.
Consists of methodologies (processes), methods (procedures) tools and allow him to specify, design, implement and maintain systems, assessing and ensuring the quality specified by users. The Systems Engineering Systems Engineering is more general and more inclusive than software engineering. In fact, the second part of the first. The Systems Engineering is older than the Software. While the former are more involved with the system as a whole and their details, the Software Engineering is more specific in regard to system components, especially the hardware and software.
Method of Software Engineering
Method of Software Engineering is a “structured approach” to software development.
We can define as “structured approach” strategy of developing something with a structure previously studied, or based on best practices. The ultimate goal of all this is to facilitate the production, in a short time, high quality software, with a cost-interesting.
Methodology, as a recommended set of philosophies, phases, procedures, techniques, procedures, tools documentation, management and training for developing an information system, but also the study of one or more methods.
Structured, Object Oriented. Differences Methodologies
Both the structured approach as object-oriented promote practical solutions. The difference between the two methodologies is the shelf life and ease of maintenance projects. The possible reuse of a structured code is not common, whereas an object-oriented code by having embedded in its own philosophy of reuse and the ease of description, using UML (Unified Modeling Language), naturally increases the lifetime of códigos.Abordando the software under a purely technical point of structured sets up system data in a subsequent sequence of events that will lead the transformation of the sistema.Por other hand, a focused approach to object orientation, are defined as abstract structures, called classes, which will be responsible for parts of the solution. Each class will incorporate data (shape) and methods (behaviors). Projects using the object-oriented modeling language (UML Unified Modeling Language). This language is the result of efforts of all of the authors Booch, Rumbaugh and Jacobson.
Systems Theory –
A System of Systems Interdependence is a significant collection of interrelated component parts that work together to achieve some goals (Sommerville). It is organized to perform a certain method, procedure or control to process information. Automates or supports the achievement of human activities through information processing. The complex relationships between the components of a system means that the system itself is more than simply the sum of its parts. The system architectures are usually described using block diagrams showing the major subsystems and their relationships.What are the attributes of good software? – What are the challenges facing software engineering? Attributes of good software reflect their behavior when in operation, structure and organization of the program source, and also the associated documentation (Sommerville). Examples are response time of the software to a user’s query and ease of understanding of program code. These same examples also can be called non-functional attributes. Briefly, the software should provide the user functionality and performance required and must be maintainable, reliable, efficient and easy to use.
Attributes of a good Software: F acylated Maintenance
Software must be written so that it can evolve to meet changing needs of clients. This is a crucial attribute, because the changes in software are an inevitable consequence of a business environment in constant mutation.
Level of Confidence
The confidence level of the software has a range of features including reliability, safety and security. The reliable software should not cause physical harm or economic, in the case of a defect in the system.
Efficiency
The software should not waste system resources such as memory and processor cycles. The efficiency therefore includes the speed of response, processing time, memory usage, among others.
Ease of Use
The software should be usable, without undue effort, the type of user for whom it was designed. That means he must have a proper interface with the user and appropriate documentation.
Software Crisis and the beginning of the Software Engineering
Crisis (problems associated with development) software, a term used in the 70’s, referred to the difficulties software development at the time. Because there is a rapidly growing demand for software, we imagined that with all the complexity in development, there would be a severe crisis. With the lack of Software Engineering at that time, there was no established techniques for developing systems that function properly or they could be validated. In 1988, AMBLER said: “Developing software is not only to model and write code. You create applications that solve users’ problems. You do this on time, accurately and with high quality. ” Soon, with the software crisis, the challenges for the creation of the discipline of Software Engineering grandes.Alguns were very typical of this new discipline problems faced were: To identify adequately the requirements of the system, ie to know what the software should do. What tools, language, operating system use. How to reduce time and development costs. Predict failures before final delivery. How to maintain and monitor releases. Difficulty of predicting the progress during development. No history or documentation in the development of systems. Poor communication with users. Quantitative concepts exist such as reliability, quality and reusability. Maintenance in existing software, with hard running. This difficult beginning of Software Engineering, with so many challenges, spawned several paradigms and models of development.
Challenges of Software Engineering The challenge of the great legacy still existing software systems were developed in the past, and major corporate functions. The challenge is to maintain and update such software at low cost and quality.
The challenge of heterogeneous systems in environments requiring distributed by networks of different types of computers and support systems. The challenge is to develop techniques for building software flexible enough to deal with heterogeneity.The challenge of providing Nowadays there is a huge demand for systems that are developed in the shortest possible time and adaptability. The challenge is to provide systems increasingly large and complex of the desired quality and in short time.
Concepts in Software Engineering – What is Software? The Importance of Software – SWEBOK
Software Engineering basically tries to present processes, tools and methods to develop in a rational and manageable Computer System. The entire focus is on quality, using an effective method and the use of appropriate tools.
Characteristics of the software is developed / designed by engineering, it is not manufactured, not “wear” but deteriorates even today most are made to order in Instead of being assembled from components.
Types of Software:
System software, information system, embedded, technical experts, decision support kits and support (word processor)
Myths of Software
1 – “We have a full manual standards and procedures for building software. That is enough for staff development “.2 -” My staff has tools of last generation, after all buy the latest computers “3 -” If we are delayed in time, we can add more programmers and catch up “4 -” A general statement of goals is enough to start writing programs, we can fill in the details later “5 -” The project requirements change continuously, but the changes can be easily accommodated because software is flexible “6 -” So we write the program and put into operation, our work will be complete “7 -” While you do not have the program, ‘working’, I will not have really no way to assess its quality “8 – “The only thing to be delivered in a successful project is the program working.” Importance of Software:
One of the fundamental importance of software is by its daily use, where virtually the modern world does not exist the possibility of not using it. And the other point is the manipulation of information (data – information – knowledge.)
SWEBOK (Guide to the Software Engineering Body of Knowledge)
is the technical document developed with the support of the IEEE (Institute of Electrical and Electronics Engineers, also popularly called I3E). The document provides a ranking of the topics covered by the Software Engineering, where the highest level are the areas of Knowledge. The ten areas of knowledge are addressed by the SWEBOK: Software Requirements, Software Design, Construction Software, Software Testing, Software Maintenance, Configuration Management, Software Management Software Engineering, Software Engineering Process, Tools and Methods of Software Engineering and Software Quality. Importantly, the differences between the PMBOK and SWEBOK, while SWEBOK is directed specifically to software engineering, the PMBOK is generalized as the Project Management as a whole.
Models of Software Process
Software development paradigms – Template Shambles – The Cascade Model of Software Process Models describe basically the main stages of software development, from manufacturing their own maintenance. There are several software process models, but virtually all of them follow the principle of the three major macro-steps:
Requirements –
the analyst must obtain answers to several questions from the users: What exactly is supposed to be done? What is the scope of the software? What are the limits or the scope of the system? Why does it that way? What are the restrictions that exist in the procedures and data used? And many others.Design / Development – the analyst’s technical specifications detailing the solution designed to meet the user requirements as above. Programmers encode the programs in any programming language. It should test the programs thoroughly to achieve a high quality level, and after that release them for use.
Implantation / Maintenance –
deployment of software can occur several issues not covered in the earlier stages. And the maintenance will remain throughout his life and can occur driven by 03 factors: the correction of any problem in the software, its adaptation due to new requirements (internal or external company) and some functional improvement that is built into the software. It is worth mentioning that there is no consensus about the most appropriate name for Software Process Models.
The main authors refer to this same concept with the following names: Models of Software Life Cycle, Prescriptive Process Models, Paradigms Life Cycle, Paradigms of Software Development and Modeling Life Cycle.
Shambles Model
As mentioned earlier at the beginning of computing, few developers were following some kind of methodology based mostly on their own experience. It was what today we call Model shambles, informal systems developed without any design or documentation. In this model, the software tends to enter a cycle of only two phases: the implementation and deployment. And the adjustments to the software to meet the new requirements, are always in a climate of urgency and stress, motivated by several factors, mainly by political pressure. So there was a need to create a “Life Cycle” smarter for developing software. That is, a “Life Cycle” similar to nature, with a beginning, middle and end are well defined.
Waterfall Model
This was the proposal of the Cascade Model (Waterfall or English) of the 70’s. Where each stage of the life cycle involves activities that must be completed before the next step. Or, basically a model of systematic and sequential activities where each step fulfilled, it follows immediately after the stage, like a cascade. “Waterfall Model is very classic and old, so it is also called the Cycle Life Classic. It originated from the old models in preparation of engineering projects. And indeed, today, is only a great reference. We live in a world of parallel activities, and this model of sequential activities, would cause excessive delays, unwanted delays and problems when we needed to return in stages anteriores.Embora being classical, for each author there is an interpretation of each step and created a distinct name . Pressman himself, another pope of Software Engineering, in the latest edition of his famous book on software engineering, changed the names of the fifth, putting the name of these phases respectively: Communication Planning, Modeling, Construction and Implementation.
Paradigms of Software Development (cont’d) – Incremental Model – Prototyping: Incremental Model
As we have seen the traditional waterfall model is more a theoretical than practical. In practice the user always wants the system to yesterday, and with quality. For that, the Incremental Model assumes that it is preferable to the user receive the system into pieces, enabling these resources are already used, whereas the others are being developed. Model Incremental or Iterative, is developed with the concept of versions.In this model the system will be specified in the documentation requirements, and “broken” into subsystems by functionality. The versions are set, beginning with a small functional subsystem and then added more features to each version. You can then say that the incremental model comes slowly to the full functionality, through these new versõesImportante observe the difference between iterative interactive. The two words away with writing very similar, and many used in computer, have distinct meanings. As for the word iterative means, by the Aurelius, “it says the procedure (as an algorithm, program, etc..) Based on the use or application of the iteration.” In turn iteration has the meaning of “resolution process (of an equation, a problem) by a finite sequence of operations where the object of each is the result of the foregoing.” Even the very Aurelio can extract the definition of interest “of or relating to systems or computational procedures, programs, etc.. In which the user can (and sometimes need) continuously intervene and control the course of computer activity, providing new entries (data or commands) as the effects of previous notes. ” Therefore, in our case we use the iterative process, not ITERATIVO.A Prototyping has the same goal as a model for an architect. Before the final delivery of the system develops rapidly an outline for improving the understanding of developers and customers about all the problematic issues. Within this vision, the project goes through several investigations to ensure that the developer, user and client to reach a consensus on what is needed and what must be proposed. How many users do not have a broad view on technology, this method of development is quite interesting, allowing the user to interact significantly in the system. Prototyping is a procedure that enables the developer and users to consider in advance the requirements. With that reduces the risks and uncertainties desenvolvimento.Basicamente the development stages of this model are: 1. Start with a simple set of requirements provided by clients and users 2. Customers and users do tests and trials, and so they decide what they want, the requirements are reviewed, revised, detailed, documented and the system will be coded 3. Again, the alternatives are presented and discussed with users, and return to step 2 until the final delivery of Sistema.Logo, this model offers two major advantages: speed of development in order to provide the user a more realistic view of software it is designed (the user can “see” the screens and reports resulting from the software) and the direct involvement of the user in that software development is evolving, user becomes a co-author of the development.
Paradigms of development Software (cont’d) – Spiral Model – Mixed models and generic characteristics Spiral Model
This model is indistinguishable from that of prototyping. But in principle is more suitable for more complex systems and require a high level of interaction with users to allow the approach to all problems of this system. Was created by Barry W. Boehm, even in 1988, and instead of representing the software process as a sequence of activities, such as the Waterfall model, it is represented by a spiral (see figure below). Each cycle of the spiral represents a phase of software. In the innermost part relates to the early vision of the viability of the system. And each cycle, passing through several stages, evolves the visibility of the system as a todo.O Spiral Model is basically divided into four sectors:Activation is defined specific objectives, identifies the constraints to the process and is preparing a detailed management plan. It also identifies risks without analyzing them thoroughly (focus of the next phase.)
Risk analysis, based on risks identified in the previous phase are analyzed in detail, and taken steps to mitigate those risks. It creates multiple versions of prototypes to support this phase.
DEVELOPMENT
Founded by previous phases, you select the most appropriate model for developing the system. Baggage and professional experience of the developer on other systems, are strategic to that stage. Depending on the complexity of the system sometimes requires the presence of a consultant specialist.
PLANNING
The project is reviewed at that stage, and a decision is made to hold a new round in the spiral or not. If you continue with the improvement of the system, is outlined a plan for the next phase of the project. A gap in this model compared to others is the explicit consideration of riscosDentro the project as a whole. To do so, created a specific phase of risk analysis in this model.
Mixed Models and more models out there are other classics that we saw earlier. Some do not stop being a mix of these models. Mix two or more concepts of the models estudados.Mas like to focus on more current models and that are applied today. One is the Model RAD (Rapid Application Development). In opposed to classical models which were in an attempt to try to address all the main topics, focused on the RAD tempo.Ele variable is an incremental software process that emphasizes a short development cycle (Pressman). The strategy for this approach is the use of component-based construction. Thus the development of a complete system of relative complexity, it reaches 60-90 days.This points to be emphasized in this model is that if the system can not be properly modularized, building components necessary for RAD will be problematic. And another point is that the RAD may not be appropriate when technical risks are high, for example if there is a need for implementing new technologies not enjoy equipe.Um dominated by the other model is the Rational Unified Process, RUP in English, which uses massively UML (Unified Modeling Language). Using methods and programming languages object-oriented model enhances the RAD. The emphasis of this model is the software architecture.
Paradigms in Software Engineering: Process, Methods and Tools
Software Engineering is a technology layers (Pressman). As the following figure, we observe that the entire focus of this course is the quality that is the basis of all layers. The foundation of Software Engineering, for such is the PROCESS being, where from there we have the methods to be applied, and tools to support the whole scheme. The framework of this set is known paradigm of software engineering. The Process Software Process is a set of activities, methods, practices and ordered changes intended to achieve software quality. His ultimate goal is to give, efficiently and predictably a software product capable of meeting business needs as defined by the analysis of requirements of users. It can also define briefly as a full set of activities needed to transform user requirements into a product of software quality. A process defines Who is doing WHAT, WHEN and HOW to achieve that goal.
Methods
Method is a word that comes from the Greek method, which means “way to come to an end.”The term methodology is quite controversial in the sciences in general and in software engineering in particular. Many authors seem to treat method and methodology as synonyms, but it would be more appropriate to say that a methodology involves philosophical principles that guide a range of methods that use different tools and practices to achieve algo.As Software Engineering methodologies aim to teach how-to building software. Such methods include modeling activities, program construction, testing and maintenance. In Software Engineering Methodologies main approaches are: Structured Methodology: the more classical approaches. Uses as a tool
Data Dictionary, Data Flow Diagrams (DFD) and Entity Model Relations (MER). Object Oriented Methodology: Example RUP.Metodologias Agile Development: There are several methodologies that can be considered as agile approaches: XP ASD, DSDM, Scrum, Crystal, FDD, AM and others.
Tools
Tool is a word that comes from the Latin meaning ferramentum “any utensil used in the arts and crafts” (Aurelius). The tools provide software engineering support automated or semi-automated the process and for métodos.Quando tools are integrated so that information created by a tool can be used for another, a system to support software development called “software engineering computer-aided (CASE), is established (Pressman).
Characteristics of a good process – Characteristics of a good development environment Processes in Software Engineering
Process software, or software engineering process, is a coherent sequence of practices, which aims at the development or evolution of software systems. These practices encompass the activities of specification, design, implementation, testing, and are characterized by the interaction of tools, people and métodos.As main characteristics of a good process are configurable for different organizações.Adaptável for different sizes and types of projetos.Bem defined, manageable and repetível.Com universal nomenclature and metrics for planning and management projeto.Integrado with tools that support it.
Characteristics of a good development environment development process definido.Integração between process and ferramentas.Gerenciamento of configuração.Gerenciamento changes . Projetos.Automação Management of functional tests and desempenho.Documentação consistent.
Introduction to the RUP (Rational Unified Process) – Features – Phases and Workflows
RUP (Rational Unified Process) uses the approach of object orientation in its conception and is designed and documented using UML (Unified Modeling Language) to illustrate the processes at work. Uses techniques and practices adopted by mercado.Atualmente RUP is a product developed and maintained by Rational Software (IBM Division). Systems designed by this process are usually developed a programming language object-oriented as Java or C + +. The main features RUP are: Iterative Development, Requirements Management, Use of component-based architecture, visual modeling, continuous quality control, management of change. The iterative solution requires a growing understanding of the problem through successive refinements and incremental development in several cycles.
Modeling
Abstraction of the software system through models that describe a powerful tool for understanding and communication of the final product to be developed . The greatest difficulty in this activity is in the balance between simplicity (enhancing communication among users) and complexity (favoring the accuracy with details) of the model. It is common to use modeling languages as UML.Phases Design a project with the time dimension involves adopting the following steps based on time:
Initiation (Inception) establishes the vision, scope and initial plan for the project.
Drafting (Elaboration) Designs, implements and tests the system architecture and Fulfil the project plan.
Building (Construction) develop the first version of the system. Transition (Transition) Deploy the product in a production environment.
Workflow Process
Design a project with the scale of process component includes the following activities: Describes business modeling business through use cases of business. Narrative Requirements vision system. Description of system functions.
Analysis and Design
Description of how the system will be held at the implementation stage.
P roduction Implementation of the Code will result in an executable system.
Tests verify the integration of all software components, identify and correct implementation errors .
Distribution generate a product release. Delivery of the product and user training.
Project Management specifies a set of principles to be applied in project management at the level of resource allocation, planning, identification and risk management, etc..
Configuration Management and Change
Controls and maintains the changes integrity of project artifacts.
Definition of Environment covers the infrastructure needed to develop a system (selection of tools, definition of business rules, interface, testing, etc.)
Maturity Model – CMM (Capability Maturity Model) Maturity Model concept of Capability Maturity Model for Software, which is a metamodel PROCESS, was developed by Carnegie Mellon University through its body SEI (Software Engineering Institute). The SEI is a research and development created in 1984 by the Department of Defense Unidos.Podemos define “Training for Software” by the qualification that the organization has to systematically produce software possessing the quality expected within the time agreed and the resources allocated. The higher the qualification, the lower the variation of the errors of estimate (of cost, time, etc..) Around the average.
CMM (Capability Maturity Model) is the most famous representative of that concept. He is basically a method of diagnosis and assessment of the maturity of software development capabilities in an organization (company or institution). The ultimate goal of CMM is to determine at what stage of maturity a firm is in its cycle of software development. Arose from the need of the U.S. Defense Department on how to evaluate the outsourced companies that developed software for use mongers strategy process improvement through continuous assessment, identifying problems and their proper corrective action allows for five levels of maturidade.CMMi ( Model Integration Capability Maturity) is the model of maturity emerged recently in order to unify and combine the various usability of CMM and other models of corporate improvement processes. Just out of curiosity, very few companies in the world who can reach level 5, the vast majority is in its early stages. In Brazil, until the year 2007, there were four companies that had reached Level 5 of CMMi.
Internship Description Level 1 – Initial
Chaotic, stage where the majority of software companies are.
Level 2 – Repeatable
Ability to repeat past successes by tracking costs, schedules and features.
Level 3 – Defined
The software process is well defined, documented and standardized.
Level 4 – Managed
Perform a quantitative and qualitative management of the software process and product.
Level 5 – On Optimization uses quantitative information to continuously improve and manage the process of software.Para we can get better, graphically, all levels of maturity and their interaction, we see the figure below:
Paradigms of Software Engineering: Process, Methods and Tools
Software Engineering is a technology layers (Pressman). As the following figure, we observe that the entire focus of this course is the quality that is the basis of all layers. The foundation of Software Engineering, for such is the PROCESS being, where from there we have the methods to be applied, and tools to support the whole scheme. The framework of this set is known paradigm of software engineering. The Process Software Process is a set of activities, methods, practices and ordered changes intended to achieve software quality. His ultimate goal is to give, efficiently and predictably a software product capable of meeting business needs as defined by the analysis of requirements of users. It can also define briefly as a full set of activities needed to transform user requirements into a product of software quality. A process defines Who is doing WHAT, WHEN and HOW to achieve that goal.
Methods
Method is a word that comes from the Greek method, which means “way to come to an end.” The term methodology is quite controversial in the sciences in general and in software engineering in particular. Many authors seem to treat method and methodology as synonyms, but it would be more appropriate to say that a methodology involves philosophical principles that guide a range of methods that use different tools and practices to achieve algo.As Software Engineering methodologies aim to teach how-to building software. Such methods include modeling activities, program construction, testing and maintenance. In Software Engineering Methodologies main approaches are: Structured Methodology: the more classical approaches. Uses as a tool Data Dictionary, Data Flow Diagrams (DFD) and Entity Model Relations (MER). Object Oriented Methodology: Example RUP.Metodologias Agile Development: There are several methodologies that can be considered as agile approaches: XP ASD, DSDM, Scrum, Crystal, FDD, AM and others.
Tools
Tool is a word that comes from the Latin meaning ferramentum “any utensil used in the arts and crafts” (Aurelius). The tools provide software engineering support automated or semi-automated the process and for métodos.Quando tools are integrated so that information created by a tool can be used for another, a system to support software development called “software engineering computer-aided (CASE), is established (Pressman).
Characteristics of a good process – Characteristics of a good development environment Processes in Software Engineering
Process software, or software engineering process, is a coherent sequence of practices, which aims at the development or evolution of software systems. These practices encompass the activities of specification, design, implementation, testing, and are characterized by the interaction of tools, personnel and major métodos.Ascharacteristics of a good process are configurable for different organizações.Adaptável for different sizes and types of projetos.Bem defined, manageable and repetível.Com universal nomenclature and metrics for planning and management projeto.Integrado with tools that support it.
Characteristics of a good development environment development process definido.Integração between process and ferramentas.Gerenciamento of configuração.Gerenciamento of mudanças.Gerenciamento projetos.Automação of functional testing and desempenho.Documentação consistent.
Introduction to the RUP (Rational Unified Process) – Features – Phases Workflows and
RUP (Rational Unified Process) uses the approach of object orientation in its conception and is designed and documented using UML (Unified Modeling Language) to illustrate the processes at work. Uses techniques and practices adopted by mercado.Atualmente RUP is a product developed and maintained by Rational Software (IBM Division). Systems designed by this process are usually developed a programming language object-oriented as Java or C + +. The main features RUP are: Iterative Development, Requirements Management, Use of component-based architecture, visual modeling, continuous quality control, management of change. The iterative solution requires a growing understanding of the problem through successive refinements and incremental development in several cycles.
Modeling
Abstraction of the software system through models that describe a powerful tool for understanding and communication of the final product to be developed . The greatest difficulty in this activity is in the balance between simplicity (enhancing communication among users) and complexity (favoring the accuracy with details) of the model. It is common to use modeling languages as UML.
Phases
Design a project with the time dimension involves the adoption of the following steps based on time:
Initiation (Inception) establishes the vision, scope and initial plan for the project.
Drafting (Elaboration ) designs, implements and tests the system architecture and Fulfil the project plan.
Building (Construction) develop the first version of the system. Transition (Transition) Deploy the product in a production environment.
Workflow Process
Design a project along with the size of component process includes the following activities:
Modeling business
Describes the business through business use cases. Narrative Requirements vision system. Description of system functions.
Analysis and Design
Description of how the system will be held at the implementation stage.
P roduction Implementation of the Code will result in an executable system.
Tests verify the integration of all software components, identify and correct implementation errors .
Distribution generate a product release. Delivery of the product and user training.
Project Management specifies a set of principles to be applied in project management in terms of allocating resources, planning, identification and management of risks, etc..
Configuration Management and Change
Control changes and keeps integrity of project artifacts.
Definition of Environment covers the infrastructure needed to develop a system (selection of tools, definition of business rules, interface, testing, etc.)
Maturity Model – CMM (Capability Maturity Model)
Maturity Models
The concept of a Maturity Model for Software Training, which is a metamodel PROCESS, developed by Carnegie Mellon University through its agency SEI (Software Engineering Institute). The SEI is a research and development created in 1984 by the Department of Defense Unidos.Podemos define “Training for Software” by the qualification that the organization has to systematically produce software possessing the quality expected within the time agreed and the resources allocated. The higher the qualification, the lower the variation of the errors of estimate (of cost, time, etc..) Around the average. CMM (Capability Maturity Model) is the most famous representative of that concept. He is basically a method of diagnosis and assessment of the maturity of software development capabilities in an organization (company or institution). The ultimate goal of CMM is to determine at what stage of maturity a firm is in its cycle of software development. Arose from the need of the U.S. Defense Department on how to evaluate the outsourced companies that developed software for use mongers strategy process improvement through continuous assessment, identifying problems and their proper corrective action allows for five levels of maturidade.CMMi ( Model Integration Capability Maturity) is the model of maturity emerged recently in order to unify and combine the various usability of CMM and other models of corporate improvement processes. Just out of curiosity, very few companies in the world who can reach level 5, the vast majority is in its early stages. In Brazil, until the year 2007, there were four companies that had achieved level 5 of CMMi.
Internship Description Level 1 – Initial
Chaotic, stage where the majority of software companies are.
Level 2 – Repeatable
Ability to repeat earlier successes by monitoring of costs, schedules and features.
Level 3 – Defined
The software process is well defined, documented and standardized.
Level 4 – Managed held a management process of quantitative and qualitative software and product.
Level 5 –
Use In Optimization quantitative information to continuously improve and manage the process of software.Para we can get better, graphically, at all levels of maturity and their interaction, we see the figure below:
