Showing posts with label software architecture foundations theory and practice. Show all posts
Showing posts with label software architecture foundations theory and practice. Show all posts

Sunday, 5 September 2010

Software Architect

[simpleaffiliate source="chitika" results="0"][/simpleaffiliate]
software architect

Architect Critical Software

Architects




In the early days of software development small thought was given to how the software applications and systems we built had been architected. There had been several reasons for this: firstly, software development being new, the concept hadn't been thought of, and secondly we didn't understand how critical architecture was to the cost of maintaining our applications and systems. Upon sober reflection, we possibly ought to have foreseen the want for planned architecture and architects due to the fact building software isn't radically various from building any other structure, for instance buildings and bridges. We can't go back and undo the damage completed by the lack of foresight that led to badly architected applications and systems but as project managers we can stay away from making this mistake in our next software development project.

These days most organizations whose core competencies consist of software development recognize the significance of architecture to their organization and have satisfied this require by creating the role of architect and making this individual responsible for the architecture of all of the software applications and systems they develop. Even organizations whose core competencies don't include software development, but who have invested heavily in IT, have created this role. These individuals may be referred to as the Chief Architect, Head Architect, or Strategic Architect. Wikipedia identifies 3 diverse categories of architect depending on the scope of their responsibilities: the enterprise architect who is responsible for all an organization's applications and systems, the answer architect who is responsible for the architecture of a system comprised of one or a lot more applications and hardware platforms, along with the application architect whose responsibility is limited to 1 application. The category and number of architects will usually be constrained by the size of the organization and also the number of applications and systems it supports. Regardless of what the organization you work for calls them, the software architect has a key role to play on your Architect software project.

Your job as project Architect manager of a software development project, where a software architect is in place, is to ensure that their work is correctly defined and organized so that your project receives maximum benefit from their expertise. If the organization doesn't have an architect in place you'll have to identify someone on your team to fill that role. What is not acceptable would be to plan the project without any acknowledgment of the need or importance of the architect. This role requires as a lot knowledge of the system components as possible, such as software and hardware knowledge. It also requires deep technical knowledge of the technology being used, both hardware and software and strong analytical abilities. The person (other than a software architect) who most possibly possesses a skill set comparable to this one, is really a company or systems analyst. Depending upon the size and complexity of the existing system, and your project, existing skill sets could not be sufficient to meet your project's needs. You can find ample training opportunities available so pick one that most closely suits your needs and have your candidate attend. If your Architect project has adequate budget to pay for the training, fine. If not, keep in mind that the skill set acquired by the trainee is going to be accessible to the organization after your project is completed and your project really should not need to bear the full price of the training.

Now that you've got a qualified software architect engaged for your project, you need to plan that person's tasks to take maximum advantage of their abilities. I suggest engaging the architect as early on within the project as possible so that they can influence the definition of the application or system being developed. The team that defines the business requirements to your project will likely be from the enterprise side of the organization and have deep knowledge of how the company runs but small knowledge of the existing systems and technical features of the hardware and software that can deliver the answer. Having a software architect obtainable during requirements gathering exercises will aid you define requirements that leverage existing system and answer platform strengths and prevent weaknesses. Leaving their input till a later phase exposes your project to the risk of re-engineering the answer to fit existing architecture or avoid solution weaknesses, after the fact. Involve the software architect in requirements gathering exercises as a consultant or SME (subject matter expert) who can point out risks in defining requirements and supply alternative solutions.

The key deliverable your architect is responsible for is the architectural drawing. This is not actually a drawing but a mix of drawings and text. Architect drawings will represent the numerous components of the system and their relationship to 1 an additional. The text will describe data elements, relations between a variety of architectural elements, and any standards designers should adhere to. The drawing may be a new 1 to represent a new system, or it may be an update of an existing drawing to reflect the changes to an existing system made by your project. The development of the architectural drawing is the initial design activity in your project schedule. The drawing is employed within the same fashion that engineering staff and skilled craftsmen use an architectural drawing of a building or bridge.

Analysts, Architect and programmers will use the Enterprise Requirements Document. Architect (BRD) to tell them what features and functions to design as well as the architectural drawing to tell them how their software should fit together with other software within the system, any constraints the system places on their design, standards the new software must meet, and what critical information elements look like. The data in this drawing will depend on the solution chosen, the hardware chosen, the existing system as well as the complexity of the project. As an example, projects utilizing an Object Oriented answer will have 4 layers: a user interface layer (the layer the user sees), an application layer (where the work is carried out), a domain layer (where organization logic is applied), and an infrastructure layer (for logging messaging, etc.). Other solutions might call for a lot more or fewer layers.

Software Architect development projects which rely on a relational database to store and retrieve big volumes of information will have a database architect who is responsible for the design of the database. The database architect ought to be a member of your project team and their design must be coordinated with the system architecture so that the information elements inside the architectural drawing are defined the exact same way as they're in the database's data dictionary. Database design is critical to system performance. Poor Architect database design, or database design which doesn't support the applications making use of it, will deliver a system with poor performance so database design and architectural design ought to be inputs to one another to yield a well integrated system with the performance characteristics required.

The architectural drawing should be approved by the project sponsor, Architect project steering committee along with the organization's enterprise architect/chief architect/head architect where that individual isn't the architect on your team. In several cases individuals other than another architect won't have the capability to decide regardless of whether the drawing contains all of the info required by the project, or regardless of whether the system design is sound. They'll have the ability to figure out that each category of data has been addressed and that the drawing meets any requirements defined for it within the Project Charter, Statement of Work (SOW), or scope statement. Once the drawing has been approved it needs to be communicated to the analysts who are responsible for producing design specifications.

The software architects role does not end with the production of the architectural drawing, indeed in some software Architect development lifecycle (SDLC) methodologies this drawing is going to be produced iteratively. It might be produced in stages such as the infrastructure layer first, the domain layer next, etc. or it might be produced iteratively, one new version for every iteration. Even projects utilizing Waterfall SDLC methodology will not necessarily produce a final drawing throughout the project planning phase since they do not want to. The designers require to have a drawing that offers them with the details they need when they require it and you could require to start design work with the drawing you've to be able to maintain to schedule.

The architect need to also make sure that the design captured in Functional specifications and detail design documents conforms to the constraints placed upon it by the architectural drawing. To do this they should review the designs to establish compliance. The architect needs to be a member of any peer review teams reviewing design. This might not be achievable, especially in the event you have to share an architect with another project or operations so at minimum the architect really should review every design and ensure compliance with their architectural design, or identify gaps where it does not.

The hardware and operating systems which are components of the system architecture are areas of oversight for the architect. Projects which call for procurement of these items, or outsourcing of the development of any applications, ought to engage the architect to contribute to product and vendor selection criteria. Some architectural drawings may possibly specify hardware and software depending on the solution being implemented, in which case the information ought to be included inside the architectural drawing. Where requirements for these things are less well defined, the architect really should make particular that selection criteria correctly reflect their architectural requirements and that the statement of work for any outsourced software is correctly written. In projects where software development work is outsourced, the architect's role is going to be the exact same as if the work had been being performed in-house. Big projects which need the vendor to staff their team with a software architect really should have their architectural design overseen by the architect for your project.

Finally, the architect ought to also be referred to as upon to analyze any changes to software design or functionality that could trigger a change inside the architecture. Your architect is going to be the appropriate individual to analyze any request to figure out where a change inside the design of one system component would impact on other components of the architecture. Once the architect has determined if a change in other components would be required, and what the nature of that change would be, it's up to your design and build gurus to assess the cost of that change.

The ideas and advice offered in this Architect article are only part of the work you'll be required to do to plan as Architect, monitor, and control the work of the architect for your project. The rest of your work should be guided by the very best practices of project management and I know of no greater single source for these than the PMBOK®. To discover these very best practices and demonstrate to employers or clients that you've mastered them, take a PMP® course or any PMP® exam preparation training and then pass your PMP® certification exam. This internet website contains details on PMP® certification and also provides a product, AceIt©, which has been prosperous in preparing candidates all over the world to pass their certification Architect exam


About the Author

Architect



O'Reilly Webcast: 10 Things Every Software Architect Should Know









[simpleaffiliate source="amazon" results="7"]software architect[/simpleaffiliate]
[simpleaffiliate source="clickbank" results="6"]software architect[/simpleaffiliate]

Friday, 16 January 2009

Software Architecture

[simpleaffiliate source="chitika" results="0"][/simpleaffiliate]
software architecture

4+1" Viewmodel Of Software Architecture With Rational Unified Process (Rup)

The Rational Unified Process (RUP) is an iterative software development process framework created by the Rational Software Corporation, a division of IBM. RUP is not a single concrete prescriptive process, but rather an adaptable process framework, intended to be tailored by the development organizations and software project teams that will select the elements of the process that are appropriate for their needs.




4+1 is a view model designed by Philippe Kruchten for "describing the architecture of software-intensive systems, based on the use of multiple, concurrent views"




The 4+1 View Model of Software Architecture organizes a description of a software architecture using five concurrent views, each of which addresses a specific set of concerns. Developers and Designers capture their design decisions in four views and use the fifth view to illustrate and validate the design. This method helps in multiple views allows to address separately the concerns of the various “stakeholders” of the architecture: end-users, developers, system engineers, process engineers, project managers etc. and to handle separately the functional and nonfunctional requirements.




The 4+1 model consists of the following views:





  • Logical view – presents a system from the point of view of end-user,

  • Development view – description of a system for programmers and managers,

  • rocess view – representation of functionality, performance, scalability and the possibilities for integrating with other systems,

  • Physical view - the product is presented from the point of view of end-user.


The description of software architecture is described using these 4 views and illustrated by scenarios, the fifth view, which interweaves it all together.




Web design with RUP in the “4+1” View Model




Efficient Web site development needs quick and careful planning, in order to model a site that has a reliable architecture in conjunction with flexibility and extendibility. In other words, there has to be a clear and overwhelming vision, so that the problem domain, the system, its main functionality and features could be defined. For Web applications modeling the UML is recommended to use. 




1. The Logical View




As soon as the vision of a future Web application has been reached, the functionality of the system can be described using classes and use-cases.  




The main goal of the logical view is to:





  • Clearly define the task to be solved,

  • In-depth analysis of the problem area, in this case the Web site,

  • Coherently represent the functionality and the users of the system, using use-case diagrams

  • Define the objects and their possible states in the system as classes and states,

  • Develop the user interface Creative Design Brief and navigation map, see the User Interface Development chapter. 


Non-functional requirements and a glossary of terms to be used are also composed in the logical view.  UML Diagrams used to represent the logical view include Class diagram, Communication diagram, Sequence diagram. 




2. The Development View




As the requirements and functionality are already described in the logical view, the organization of actual software modules is represented by module and subsystem. 




The aim of the development view is to specify:





  • The media for the realization – a set of applications that are required to construct a Web application; i.e. WAS6.1 with J2SE5.0 module,

  • Software re-use issues,

  • Constraints to the system further development,

  • Logical data model,

  • The User interface Creative Design Comps and Web Design Elements.


UML Diagrams used to represent the development view include the Package diagram and Component diagrams.




3. The Process View




Concurrently with the development view, issues such as concurrency and distribution, integrity of the system and fault-tolerance are elaborated. 




The scope of the view is to describe:





  • Functionality to be realized – classes and methods that actually realize the specified functionality.

  • Non-functional requirements concerned with the implementation of the functionality,

  • User interface initial prototype, full prototype and full navigation map. 


UML Diagrams to represent process view include the Activity diagram




4. The Physical View




The physical view brings together all the elements from logical, process and development view, taking into account the system's non-functional requirements such as reliability, performance, scalability; several different configurations might be used for the Web application, some for testing, others for system deployment for various customers. The actual realization of data model for a specific database system is also submitted. 




UML Diagrams used to represent physical view include the Deployment diagram. 




5. Scenarios




Scenarios are putting it all together. Interaction between objects in the system is expressed by object interaction and scenario diagrams. 




UML Diagram(s) used to represent the scenario view include the Use case diagram.




REFERENCES




1. Royce, W. Software Project Management: A Unified Framework. Addison-Wesley Professional.




2. Kruchten, P. The 4+1 View Model of architecture 


About the Author

Vamsi Mohan is a certified architect and solution designer. He has good experience in SDLC and Project Management. He worked for complex projects and achieved 100% client satisfaction. His hobbies are delivering technical solutions and mentoring. He has good experience in technical mentoring. As a mentor, he guided more than 100 software engineers. He is also a Sun certified professional. He delivered solutions to multi-national clients. People can reach him on vamsi.technology@yahoo.com for technical queries and solutions.



The role of the software architect (part 1)









[simpleaffiliate source="amazon" results="7"]software architecture[/simpleaffiliate]
[simpleaffiliate source="clickbank" results="6"]software architecture[/simpleaffiliate]