As defined by the IEEE, cited by [
Lewis 1994]"Softwareis the sum total of the computer programs, procedures, rules, associated documentation and data pertaining to a computer system."By the same author, "a software product is a product designed for a user".In this context, software engineering (SE of EnglishSoftware Engineering)is a systematic approach to development, operation, maintenance and removal of software, "which in plain words, it is considered that"Software engineeringis the branch of engineering applies the principles of computer science and mathematics to achieving cost-effective solutions (or economic cost-effective) to software development problems, "ie," can consistently produce the right products, usable and cost- effective "[Dimension 1994].
The
software engineering processis defined as "a set of partially ordered steps intended to achieve a goal, in this case, obtaining a quality software product" [Jacobson 1998]. Thesoftware development process" is one in which user needs are translated into software requirements, these requirements changed in design and design implemented in code, the code is tested, documented and certified for operational use. "Specifically "define who is doing what, when, and how to achieve some goal" [Jacobson 1998].
The software development process requires on the one hand a set of concepts, methodology and their own language.
This process is also called thesoftware life cyclethat includes four main phases: design, development, construction and transition.The design scope of the project will define and develop a business case.Developing a project plan defines, specifies the characteristics and underlying architecture.The construction creates the product and the transition transfers the product to users.
It is currently in a stage of maturity Object Oriented approach (OO) as a paradigm of information systems development.
The Object Management Group (OMG) is an international consortium that brings together leading representatives of industry information technology OO.The OMG has the central objective the promotion, strengthening and promoting the industry OO.The OMG proposes and specifications adopted by consensus on OO technology environment.One of the most important specifications is the adoption in 1998 of the Unified Modeling Language orUML(Unified Modeling LanguageEnglish) as a standard, together with the Unified Process are consolidating OO technology.
For more information visit the following websites:
- Carnegie Mellon's Software Engineering Institute (SEI)to find information and documents related to software engineering, analysis and design methodologies, metrics, certification, quality (CMM), security (CERT), and so on.
- The Rational Edge e-Magazineis a monthly electronic magazine which publishes articles on the importance of engineering in the software industry experiences
- Software Engineering ToolsFind information on leading tools that implement the software engineering, from modeling with UML systems to the unified process that has to do with project management.
Before discussing the steps of the software development process shall set forth the fundamental concepts of the paradigm that guides the OO technology.
There are related concepts about the object-oriented technology: the paradigm, principles, analysis and design, same as discussed below.
Object-Oriented Programming
(OOP for short EnglishObject Oriented Programming)as a paradigm "is a way of thinking, a philosophy, which comes a new culture that incorporates techniques and methodologies. But these techniques and methodologies, and the culture itself, from the paradigm, do not. The OOP paradigm is a view as ontological: the computational universe is populated by objects, each taking responsibility for yourself, and communicating with others through messages "[Greiff 1994].
Must be distinguished as the OOP paradigm (approach or way of viewing reality) and as a methodology (collection of features for software engineering) are not the same thing.
However, associating advertising confuses us more OOP methodology, that the paradigm.Then, "the interest in OOP is more in the mechanisms it provides for the construction of programs that take an alternative scheme for modeling computational processes" [Greiff 1994].
Object Oriented Programming from the computational point of view "is a method of implementation in which programs are organized into cooperative groups of objects, each of which represents an instance of some class, and these classes are all members of a hierarchy of classes united via inheritance relationships "[
Greiff 1994].
The OO paradigm is based on the concept of object.
Anobjectis something that has been (over property values), behavior (actions and reactions to messages) and identity (property that distinguishes it from other objects).The structure and behavior of similar objects are defined in their common class, the terms instance and object are interchangeable.Aclassis a set of objects that share a common structure and behavior.
The difference between an object and a class is that an object is a concrete entity that exists in time and space, while a class is an abstraction, the "essence" of an object, such as they are.Hence, an object is not a class, however, a class can be an object.
In the OO approach the object's properties are key.
Theprinciples of OO modelare: abstraction, encapsulation, modularity and hierarchy, basically, and less typing (typing), concurrency, persistence.[Booch 1986] says that if a model is said OO does not contain any of the first four elements, then it is not OO.
- Abstraction.It is a simplified description or specification of a system that emphasizes some of the details or properties of the system, while suppressing others.
- Encapsulation.In the process of hiding all the details of a objetoque not contribute to its essential characteristics.
- Modularity.The property of a system that has been decomposed into a set of consistent and independent modules.
- Hierarchy or inheritance.Is the order of abstractions organized by levels.
- Typing.Is the precise definition of an object so that objects of different types can not be exchanged or, at best, can be exchanged in a very restricted.
- Concurrency.It is the property that distinguishes an active object is one that is not.
- Persistence.The property of an object through which its existence transcends time (ie, the object continues to exist after its creator has ceased to exist) and / or space (ie the location of the object moves from address space was created).
- First,the use of OO model helps us to exploit all the expressive power of programming languages and object-based object-oriented, like Smalltalk, Object Pascal, C + +, CLOS, Ada,[andrecentlyJava].
- Second,the use of OO model not only encourages the reuse of software, but complete designs.
- Third,produces systems that are built on stable intermediate forms and are therefore more resistant to change specifications and technology.
The same author considers that the main benefit of OOD is that it provides a mechanism for formalizing the model of reality.
The relationships between objects define the behavior of the system.
It is said that an object is anactor,if its only function is to operate on other objects.The object is aserverif one is handled by other objects and is anagentif you have both properties.It is said that objects interact with each other throughmessages,ie calling for action in order to run the transmitter receiver object.Depending on the behavior defined for an object, it will take action to implement or not the message, as appropriate.
[
Greiff 1994] comments that theObject-Oriented Analysis(OOA by its English acronym for Object Oriented Analysis) "is amethod of analysis that examines requirementsfrom the perspective of the classes and objects found in the vocabulary of the problem domain ".According to [Booch 1986],Object Oriented Design"is amethod of designencompassing the process ofdecomposition and object-oriented notationto represent both logical and physical models as static and dynamic models of the system under design."
As for OO methodologies, we say that a large number of object-oriented methods today.
Many of the methods can be classified as object-oriented support centrally because the concepts of object orientation.Some of the best known and studied approach to before as UML [Jacobson 1992] are:
- Object-Oriented Design (OOD), Booch.
- Object Modeling Technique (OMT), Rumbaugh.
- Object Oriented Analysis (OOA), Coad / Yourdon.
- Hierarchical Object Oriented Design (HOOD), ESA.
- Structured Object Oriented Design (OOSD) Wasserman.
- Object Oriented Systems Analysis (OOSA), Shaler and Mellor.
- Responsibility Driven Design (RDD), Wirfs-Brock, among others.
Currently the most important methodologies of systems analysis and design have come together in what is the
UML, under the umbrella of the Object Management Group.
The
Unified Process"is a software development process configurable to fit through the projects varied in size and complexity. It is based on many years of experience in the use of object-oriented technology in the development of mission-critical software in a variety of industries for the company Rational "confluence" the three amigos' as they call themselves or the three major OO: Grady Booch, James Rumbaugh and Ivar Jacobson [M & R 1998].
The Unified Process guidance to project teams in managing iterative development in a controlled manner while balancing business requirements, time to market and project risks.
The process describes the various steps involved in the capture of requirements and establishment of an architectural guide as soon, to design and test the system made according to the requirements and architecture.The process describes what deliverables to produce, how to develop and also provides patterns.The Unified Process is supported by tools that automate among other things, visual modeling, change management and testing.
According to [
M & R 1998], "rather than a methodology, Microsoft Solutions Framework (MSF) is a series of flexible models interrelated that guide an organization on how to assemble the resources, personnel and techniques necessary to ensure that their technology infrastructure and solutions meet business objectives. MSF maintains a clear link between business objectives and technology implementations. "
"MSF can be used by itself or with other tools and techniques such as Rational Process [Unified Process] to plan, build and manage the development of business solutions tailored" [
M & R 1998].
"The Unified Process is a software development process configurable to suit projects ranging in size and complexity. It is based on many years of experience in using object technology in the development of mission-critical software in a variety of industries. One of the key components is the
UML"[M & R 1998].
MSF provides techniques related to technology and the Unified Process the detailed guidance for minimizing software development risks.
The Unified Process has adopted an approach that is characterized by:
- Interaction with the user continues from the beginning
- Mitigation of risks before they occur
- Frequent releases
- Quality Assurance
- Team involvement in all project decisions
- Anticipating change requirements
The Unified Process and MSF focuses on architecture as the center of development to ensure that the component-based development is key to a high level of reuse.
MSF believes that there are fourarchitectural perspectivesthat meet the requirements of an enterprise [M & R 1998]:
- Business Architecture- Describes how to operate a business.Develop a clear picture of the workflow processes of the organization and how they are supported by a service-based technology infrastructure.
- Application Architecture- Adopt an application model across the enterprise to design and develop business systems that can share a set of back-end components of high value.
- Information Architecture- Defines what information is needed to support the business process and how to put that information effectively in the hands of those in need without creating islands of inaccessible data or redundant systems.
- Technology Architecture- Defines the standards and guidelines for the acquisition and deployment of tools, building blocks of applications, infrastructure services, network connectivity components and client server platforms.
The MSF Team Model shows how to structure high-performance teams to build solutions faster, better and cheaper.
The MSF Team Model is based on the ways of organizing teams to create their own Microsoft products.Emphasis on clear communications and a team of equals with clear roles and responsibilities throughout the project.Product quality is ensured by each team member.The Unified Process provides more detail and guidance for some of the roles in the project.
An
architectural viewis "a simplified description (an abstraction) of a system from a particular perspective or point of view, covering characteristics and omits entities that are not relevant to this perspective," [Booch 1998].
By the same author, the
key features of the Unified Processare:
- Iterative and incremental
- Architecture-centric
- Use Case Driven
- Comparison of risk
The Unified Process is a process because it "defines who is doing what, when they do and how to achieve a certain goal, in this case the development of software" [
Jacobson 1998].According to [Booch 1998], thekey concepts of the Unified Processare:
Phase and Iterations | When is it done? |
Process workflows (activities and steps) | What are you doing? |
Artifacts (models, reports, documents) | What happened? |
Worker: an architect | Who does?) |
The
phases of software life cycleare: design, development, construction and transition.The concept is to define the project scope and define the use case.The development is to design a plan, define the characteristics and build the architecture.The construction is to create the product and the transition is to transfer the product to their users [Booch 1998
].
Figure 1.
Structure of the Unified Process
According to [
Microsoft 1997], software design is done at three levels: conceptual, logical and physical.
For more information go to the following address:
- Software Engineering ToolsFind information on leading tools that implement the software engineering, from modeling with UML systems to the unified process that has to do with project management.
- SourceForge.netis a database of projects open source software oropen source software.
A software engineer needs tools, including Rational tools are more advanced, but are very expensive.
You can also use the office tools such as a text editor, a data modeler, etc.., Many of them are open source and are still developing.Use the ones you find them useful.
The
conceptual designis considered as an analysis of activities and is the business solution for the user and is expressed with the use cases.The logical design is the solution of business project team, consisting of the following tasks:
- Identify users and their roles
- Get user data
- Evaluate the information
- Document usage scenarios
- Validate with users
- Validate against the enterprise architecture
One way to achieve these requirements is to build a parent-user business activities, conduct interviews, surveys and / or visits to users, so that you get the who, what, when, where and why of the solution.
Logical design
translates usage scenarios created in the conceptual design of a set of business objects and services.The logical design becomes part of the functional specification used in the physical design.The logical design is independent of technology.The logical design refines, organizes and details the business solution and formally define specific policy rules and business.
A
business objectis the encapsulation of a service that abstracts the essential qualities of some interest.
A
serviceis a unit computing capacity.A service must meet the following:
- Be safe, which is equivalent to a proper and authorized
- To be valid, what tasks or rules can be applied
- Handle exceptions, informing the customer
- Having a range of services which is a repository of services.
Business objects should be checked and tested in a way that ensures that the modules operate as a complete unit of work.
The verification tasks include:
- Independent verification:
- Pre and post conditions
- Individual logic and functionality
- A dependent verification:
- Dependency Verification
- Operating as a specific unit of work
The logical design includes the following
tasks:
- Identify and define business objects and services
- Defining the interfaces
- Identify dependencies between objects
- Validate against usage scenarios
- Compare with the enterprise architecture
- Review and refine as necessary
To define business objects and services can use the technique of analysis of noun-verb usage scenarios.
You can also use the technical subject-verb-direct object.In these techniques the subjects and direct objects are candidates for business objects and active verbs are candidates for services.
An
interfacehas the following parts:
- Name
- Preconditions, which must be present before running
- Postconditions, final state
- Capacity or functionality (SQL, pseudocode, math functions)
- Dependencies
The task of
identifying the dependencies between objectsallows you identify events, events or conditions that allow business tasks or transactionally coordinated.This should consider the following:
- Identify trigger events (triggers)
- Determine any dependencies (existential or functional)
- To determine any consistency problem or sequence
- Identify any critical time regulation
- Consider an organizational problem (transactions)
- Identify and audit control requirements
- Determine locations and units through the location
- Determine when the service that controls the transaction is dependent on the services contained on other business objects
The
validation of the logic modelshould be such that it may be:
- Full - must represent all usage scenarios,
- Correct - the logical behavior must correspond to the conceptual behavior, and
- Sure - the business objects and services should not be ambiguous
In the logical design is conceptually divided into three levels of service to the application is flexible to changing requirements and / or technology, changing only the layer or layers required.
The three levels are: user services, business services and data services.
Services
(userservices)control the interaction.A service user are people, applications, other services or a combination thereof.Generally involves a graphical user interface (GUI) or could be non-visual (messages or functions), handles all aspects of the interaction with the application.The main objective is to minimize the effort of knowledge required to interpret information.A service user includes a content (what needs to be communicated to the user) and form (how it communicates the content) when necessary communication.
Business Services
(Business Services)converting data received from data services and user information (data + business rule) and can use business services to complete your task.
The tasks of the business services are:
- Data Format
- Obtain and move data to and from data services
- Transforming data into information
- Validate data in the context immediately or deferred once the transaction.
Data services
(data services) are low-level services that support business services and are of a wide range of categories such as:
- Declaration of the scheme and its evolution (data structures, types, indexed access, SQL, APIs)
- Backup and Recovery (data recovery if an event fails)
- Search and Read (search, compilation, optimization and execution of applications, development of a set of results)
- Insert, update and delete (process modifications consistently transactional).Atransactionis atomic (true or not), consistent (preserving integrity), isolation (other transactions occurring before or after) and durable (once completed, it survives).
- Lock (allows concurrent access to data)
- Data validation (checks domain integrity, triggers and gateways to check the status of the data before accepting, error handling)
- Security (secure access to objects, operations, user and group permissions and services)
- Connection Management (basic mechanisms set a session data services).Establishing a connection involves: identification, placement and provision of data, session time, the type of interaction (conversational, transactional, multi-user, single user).
- Data Distribution (distributes information to multiple recovery units, heterogeneous databases, according to the topology of the network).
Physical design
translates the logical design of a solution implementable and cost-effective or economic.
The component is the basic building unit of the physical design.
Thecharacteristics of a componentare:
- Is defined by how it interacts with other
- Encapsulates data and functions
- It is reusable across applications
- It can be seen as a black box
- It may contain other components
In the physical design should take care of the level of granularity (a component can be as large or as small as its functionality, ie the size that can provide complex functionality but generic control) and aggregation and containment (a component can be reused using aggregation and containment techniques, without duplicating code).
The physical design should involve:
- The design to distribution - should minimize the amount of data passed as parameters between the components and they must be safely sent over the network.
- The design for multitasking - must be designed in terms of the concurrent administration of two or more different tasks by a computer andmultithreadingor multiple threads of a process)
- The design for concurrent use - the performance of a remote component depends on whether you are running as an application.
- The design error handling and testing events:
- Validating the parameters-to the input before proceeding with any process.
- Protecting critical resources, handle exceptions to prevent the failure or termination without closing files, releasing synchronized objects or memory.
- Protecting sensitive data - have an exception to the middle of the action in the databases.
- Debugging - create a clean version errors.
- Comprehensive protection of business transactions - errors should be returned to the calling component.
The physical design includes the following tasks:
- Define the components
- Refine the packaging and distribution of components
- Specify component interfaces
- Distribute the components in the network
- Distribute physical data repositories
- To examine the fault tolerance and error recovery
- Validate the physical design
Of the above tasks the most important is the distribution of data that can be centralized, a partition, an extract or a replica.
Centralized data
equivalent to a master database located in a central location.No copies of the data.
A
data partitionis a segmentation of the master database.This is useful when data can be updated easily fragment at a local site with frequent changes.There is no overlap between partitions.In a horizontal partition each row exists in a single database.In a vertical partition each column is contained in one and only one database.
A
data extractis a copy of all or a portion of the master database.Update not allowed.It uses atimestampor timestamp to indicate how old are the data.
A
replica of datais an excerpt from the master database can be updated.A replica of the data is updated when the site changes to a local site.Updates are not allowed in the database replica and the master database at a time, so there must be synchronization between the two.
The physical design is closely linked to an alternative technology.
Given the rapid evolution of technology is important to consider the standards of the time trends since a bad decision will involve a huge cost (in money and time) to upgrade to different platform.
The current trend in client / server architecture is to create the back-end server as a robust multitasking and
multithreadingand the front-end as a thin client to the server that does not hoard communicating with each other in an internet platform with standard protocols in heterogeneous networks .
Final comment ...
to reflect
All that is expressed in this article shows such as the theory should be encouraged to do things.
In practice, software engineering often underestimates the value of a methodology to create the software.This, in my opinion, is compromising the emerging profession of software engineer in particular, the specialist in Information Technology in general and software consulting firms, and generally yields to "blackmail" or chief professional customer who orders the construction of the software, with arguments like "there is no time for that, get a program".
To reflect, ask the following:
[Booch 1998] | Booch G. 1998. Software Architecture and the UML. Presentation available at:http://www.rational.com/uml as arch.zip. |
Booch, G. 1988. Object Oriented Development. Trans. of Soft. Eng SE-12 Vol. No. 2.Feb. 1986. pp. 211-221. | |
Conallen, J. "Modeling Web Applications with UML" Conallen, Inc. 9-Mar-1999 Disponible en:http://www.conallen.com/whitepapers/webapps/ModelingWebApplications.htm | |
Conallen, J. "UML Extension for Web Applications 0.91" Drafted Conallen, Inc. 22-Mar-1999 Disponible en:http://www.conallen.com/technologyCorner/webextension/WebExtension091.htm | |
Cota A. 1994 "Software Engineering". Advanced Solutions. In July 1994. pp. 5-13. | |
Methodology Paradigm vs. WR Greiff, The Case of OOP (Part II). Advanced Solutions .Jan-Feb 1994. pp. 31-39. | |
Jacobson, I. 1998. "Applying UML in The Unified Process" Presentation. Rational Software. Presentation disponible en http://www.rational.com/uml como UMLconf.zip | |
Jacobson, I. et . to . 1992. Object-Oriented Software Engineering, A Use Case Driven aproach. ACM Press. Addison-Wesley Publishing. Co. USA 524 p. Ilus.pp. 465-493. | |
Lewis G. 1994. "What is Software Engineering?" DataPro (4015). Feb 1994. pp. 1-10. | |
Microsoft 1997. Microsoft Solutions Framework 1.0. Microsoft Corporation. USA. | |
Microsoft y Rational 1998. A White Paper on the Benefits of Integrating Microsoft Solutions Framework and The Rational Process. Rational Software Corporation y Microsoft Corporation. Documento msfratprocs.doc Disponible en http://www.rational.com/uml/papers. | |
Object Management Group. 1999. OMG Unified Modeling Language Specification (Draft). Version 1.3. alfa R5, marzo de 1999. Disponible en:http://www.rational.com/uml | |
R. Zavala 2000. Design of a Geographic Information System on Internet .Master's Thesis in Computer Science. Universidad Autonomic Metropolitana-Azcapotzalco. Mexico, DF In press. |
What if the civil engineer or architect builds a house or a building without making their plans, projects or models? Do you think that the work may be concluded covering the needs of the necessary quality and on time?
Just look at the quality of housing "in perpetual black work" in most of the streets of Mexico.And still further, you allow your own surgeon will intervene without the respective studies to obtain evidence of the health problem afflicts you?Or allow your lawyer to defend you without knowing the evidence and without a plan for your defense?So, why software engineers sometimes give in to "blackmail of the lack of time" and build software without expressed in analysis and design a project beyond existing ideas "in our head"?Why are you trying to do on the fly, but never concluded because there is no time?What happened to professional ethics? ...
I suggest that you check, reference, Code of Ethics in Software Engineering and Professional Practice at the site of the
Association for Computing Machineryhere:http://www.acm.org/serving/ethics.html.
In my research, field and literature, conducted from 2005 to date, have led me to conclude that
software engineering is not one supposed to be, in other words, not what we are institutionally led to believe.Despite the name of engineering, it is far from being such.
Software engineering is not an engineering discipline but a discipline of administration (or management) driven from the outset by the Department of Defense (DoD), as shown by historical research.
The essence of the subject matter of the discipline of software engineering theory and practice, ie, its ontology is of a more organizational engineering, but has a very important technological component.
In other words, software engineering is more than software coding in a programming language, rather than the Unified Modeling Language (UML, Unified Modeling Language) and object-oriented programming, rather than the Rational Unified Process ( RUP, Rational Unified Process), rather than project management (project management), is a social practice an occupation in the process of becoming a profession and one of the few economic activities grow at double-digit annual rate, in any the world.
0 comments:
Post a Comment